RDMessage.asn 80.8 KB
Newer Older
RDMessage {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) retainedData(3) rdHeader(0) version20(20)}

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

-- =============================
-- Object Identifier definitions
-- =============================

retainedDataDomainId OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) retainedData(3)}

rdHeaderId OBJECT IDENTIFIER ::= {retainedDataDomainId rdHeader(0) version20(20)}

-- ======================================
-- Top level definitions for RDHI wrapper
-- ======================================

RetainedDataMessage ::= SEQUENCE
{
	retainedDataHeader		[1] RetainedDataHeader,
	retainedDataPayload		[2] RetainedDataPayload,
	retainedDataDigest		[3] OCTET STRING OPTIONAL,
		-- The digitally signed hash of the combined fields above (retainedDataHeader and
		-- retainedDataPayload)
-- ==========================================================================
-- Definitions for Retained Data header information, present in every message
-- ==========================================================================

RetainedDataHeader ::= SEQUENCE
{
	requestID		[1] RequestID,
	cSPID			[2] CSPID,
	timeStamp		[3] GeneralizedTime,
	thirdPartyCSPID	[4] CSPID OPTIONAL,
	requestType		[5] RequestType OPTIONAL,
	requestFlag		[6] RequestFlag OPTIONAL
		-- Optional parameter specifying additional information associated with the request.

}

CSPID ::= UTF8String
	-- Unique identifier for the CSP that issued the request

RequestType ::= UTF8String
-- Description or reference of the type of Retained Data request

RequestFlag ::= UTF8String
	-- Configuration information associated with the request

	countryCode				[1] CountryCode,
	authorisedOrganisationID		[2] AuthorisedOrganisationID,
	requestNumber				[3] RequestNumber OPTIONAL,
		-- all messages except GetStatusMessage and StatusMessage have a request number
		-- (see clause 6.1.2)
	...,
	externalIdentifier			[4]	ExternalIdentifier OPTIONAL
		-- Optional identifier for the request, for correlation with warrant management systems.
}

CountryCode ::= UTF8String (SIZE(2))
-- A country code as per ISO 3166-1 [4]

AuthorisedOrganisationID::= UTF8String
-- A unique identifier for an Authorized Organization issuing a Retained Data request

RequestNumber ::= UTF8String
-- Unique within a given country and Authorized Organization

-- =================================================
-- Definitions for Retained Data payload information
-- =================================================

RetainedDataPayload ::= CHOICE
	-- Payload can be a request, response, error or acknowledgement
{
	requestMessage				[1] RequestMessage,
	requestAcknowledgement		[2] RequestAcknowledgement,
	responseMessage				[3] ResponseMessage,
	responseAcknowledgement		[4] ResponseAcknowledgement,
	errorMessage				[5] FurtherInformation,
	cancelMessage				[6] CancelMessage,
	cancelAcknowledgement		[7] CancelAcknowledgement,
	getstatusMessage			[8] GetStatusMessage,
	statusMessage				[9] StatusMessage,
	getResultsMessage			[10] GetResultsMessage,
	...,
	supplementaryRequest		[11] SupplementaryRequest,
	supplementaryResponse		[12] SupplementaryResponse
}

-- ==================================================
-- Definitions of Request message and acknowledgement
-- ==================================================

RequestMessage ::= SEQUENCE
{
	requestPriority				[1] RequestPriority OPTIONAL,
	requestParameters			[2] RequestConstraints OPTIONAL,
		-- Optional only in case a warrant is transmitted independently of a request
	deliveryPointHIB			[3] DeliveryPointHIB OPTIONAL,
		-- pre-arranged set of delivery address(es) of that specific Authorized Organization
	maxHits						[4] INTEGER OPTIONAL,
		-- Maximum number of records to be returned.
		-- On a national basis maximum numbers could be considered
		-- In case of maxHit a responseFailed message is sent and no data is sent
		-- This parameter shall not be used simultaneously with the numberOfRecordsLimit parameter.
	nationalRequestParameters	[5] NationalRequestParameters OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	maxRecordsPerBatch			[6] INTEGER OPTIONAL,
		-- Indicates that multi-part delivery shall be used and each ResponseMessage shall not
		-- contain more records than specified. (see clause 6.3.3.3)
	requestedData				[7] SEQUENCE OF UTF8String OPTIONAL,
		-- only to use in case of selective requests, it contains
		-- the path to the selected parameter in XPATH notation
	numberOfRecordsLimit		[8] INTEGER OPTIONAL
		-- Indicates the upper limit on the number of records to be provided by the CSP.
		-- This parameter shall not be used simultaneously with the maxHits parameter.
		-- (see clause 6.3.3.4)
}

DeliveryPointHIB ::= UTF8String

RequestConstraints ::= SEQUENCE
{
	equals					[1] RetainedDataRecord OPTIONAL,
	notEqualTo				[2] RetainedDataRecord OPTIONAL,
	lessThan				[3] RetainedDataRecord OPTIONAL,
		-- For numerical values
	lessThanOrEqualTo		[4] RetainedDataRecord OPTIONAL,
		-- For numerical values
	greaterThan				[5] RetainedDataRecord OPTIONAL,
		-- For numerical values
	greaterThanOrEqualTo	[6] RetainedDataRecord OPTIONAL,
		-- For numerical values
	startsWith				[7] RetainedDataRecord OPTIONAL,
		-- For strings
	endsWith				[8] RetainedDataRecord OPTIONAL,
		-- For strings
	isAMemberOf				[9] SEQUENCE OF RetainedDataRecord OPTIONAL,
	...
}

RequestPriority ::= OCTET STRING
	-- Priority considerations are a matter for national implementation
	-- This standard makes no statement regarding how such priorities are represented or used

RequestAcknowledgement ::= SEQUENCE
{
	suggestedCompletionTime		[1] GeneralizedTime OPTIONAL,
		-- Indicative time that results will be ready
		-- Purely informational, not binding for either party
	...
}

-- ===================================================
-- Definitions of Response message and acknowledgement
-- ===================================================

{
	responseStatus				[1] ResponseStatus,
	responsePayload				[2] SEQUENCE OF ResponseRecord OPTIONAL,
		-- Clause 6 explains use of this field
		-- A responseUnavailable message shall not have a responsePayload (see clause 5.3.1)
		-- The responseComplete and responseIncomplete message shall have a responsePayload
		-- If there are no responses, the responsePayload is present but has zero entries
	nationalResponsePayload		[3] NationalResponsePayload OPTIONAL,
		-- to be defined on a national basis
		-- only to be used in case the present document cannot fulfil the national requirements
		-- number to identify partial results within parallel multi-part delivery
	numberOfRecordsFound			[5] INTEGER OPTIONAL
		-- Indicates the total number of records found by the CSP when the value set in the 
		-- numberOfRecordsLimit has been reached or exceeded.
		-- (see clause 6.3.3.4)
		-- There will be at least one further response message to come
	responseFailed			[4] FurtherInformation,
		-- See clauses 6.2.2.2 and 6.3.3.2
	...
}

ResponseRecord	::= SEQUENCE
{
	recordNumber				[1] INTEGER,
	recordPayload				[2] RetainedDataRecord,
	additionalInformation		[3] AdditionalInformation OPTIONAL,
	nationalRecordPayload		[4] NationalRecordPayload OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	...
}

AdditionalInformation ::= SEQUENCE
{
	contactInformation		[1] UTF8String OPTIONAL,
		-- Name or address of operator or person who may have further information
	otherInformation		[2] UTF8String OPTIONAL,
	...
}

RetainedDataRecord ::= CHOICE
{
	telephonyRecord		[1] TelephonyRecord,
		-- Details are defined in Annex B
	messageRecord		[2] MessageRecord,
		-- Details are defined in Annex C
	networkAccess		[3] NetworkAccessRecord,
		-- Details are defined in Annex E
	...,
	multimediaRecord	[4] MultimediaRecord
		-- Details are defined in Annex D
		-- Other services will be included (as they are implemented)
	-- Acknowledges a response has been sent
	acknowledgeCompleteResults			[1] NULL,
	acknowledgePartialResults			[2] NULL,
	acknowledgePartialResultsNumber		[3] INTEGER
		-- number to acknowledge a specific resultMessage within parallel multi-part delivery
}

-- ==================================================
-- Definitions of an error message and acknowledgment
-- ==================================================

FurtherInformation ::= SEQUENCE
{
	information					[1] UTF8String,
	contactInformation			[2] UTF8String OPTIONAL,
	...,
	categorisedErrorDescription [3] CategorisedErrorDescription OPTIONAL -- see 6.4
}

CategorisedErrorDescription ::= SEQUENCE
{
	value				[1] INTEGER,
	description			[2] UTF8String OPTIONAL,
	...
}

-- ===================================================
-- Definitions of a cancel message and acknowledgement
-- ===================================================

CancelMessage ::= NULL
	-- Cancels an active request

CancelAcknowledgement ::= NULL
	-- Acknowledges the receipt of a cancel message (no other information required)

-- ===================================================
-- Definitions of status request and response messages
-- ===================================================

GetStatusMessage ::= SEQUENCE
{
	requestNumbers		[1] SEQUENCE OF RequestNumber,
	...
}

StatusMessage ::= SEQUENCE
{
	statusResponse		[1] SEQUENCE OF StatusResponse,
	...
}

StatusResponse ::= SEQUENCE
{
	requestNumber		[1] RequestNumber,
	requestStatus		[2] RequestStatus,
	...
}

RequestStatus ::= CHOICE
{
	ready						[1] NULL,
	incompleteResultsReady		[2] NULL,
	failureResponseReady		[3] NULL,
	notReady					[4] NULL,
	error						[5] FurtherInformation,
	inDelivery					[6] NULL,
	invalidRequestID			[7] NULL,
	...
}

-- ==========================================
-- Definitions of status get results messages
-- ==========================================

GetResultsMessage ::= NULL
	-- No further information required (the RequestID is given in the header)

-- ===================
-- National parameters
-- ===================

NationalRequestParameters ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- Country Code according to ISO 3166-1 [4],
		-- the country to which the parameters inserted after the extension marker apply.
	...
		-- In case a given country wants to use additional national parameters according to its law,
		-- these national parameters should be defined using the ASN.1 syntax and added after the
		-- extension marker (...).
		-- It is recommended that an version indicator is included in the national parameters
		-- definition.
}

NationalResponsePayload ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalRecordPayload ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}
	nationalSupplementaryRequest		[1] NationalSupplementaryRequest,
	nationalSupplementaryResponse		[1] NationalSupplementaryResponse,
	...
}

NationalSupplementaryRequest ::= SEQUENCE
{
	countryCode [1] UTF8String (SIZE (2)),
		-- Country Code according to ISO 3166-1 [4],
		-- the country to which the parameters inserted after the extension marker apply.
	...
		-- In case a given country wants to use additional national parameters according to its law,
		-- these national parameters should be defined using the ASN.1 syntax and added after the
		-- extension marker (...).
		-- It is recommended that a version indicator is included.
}

NationalSupplementaryResponse ::= SEQUENCE
{
	countryCode [1] UTF8String (SIZE (2)),
		-- Country Code according to ISO 3166-1 [4],
		-- the country to which the parameters inserted after the extension marker apply.
	...
		-- In case a given country wants to use additional national parameters according to its law,
		-- these national parameters should be defined using the ASN.1 syntax and added after the
		-- extension marker (...).
		-- It is recommended that a version indicator is included.
}
TimeSpan ::= SEQUENCE
{
	startTime		[1] GeneralizedTime OPTIONAL,
	endTime			[2] GeneralizedTime OPTIONAL,
	...,
	durationTime	[3] INTEGER OPTIONAL
		-- duration in seconds
}

-- ==============================================
-- Definitions for Generic Subscriber Information
-- ==============================================

GenericSubscriberInfo ::= SEQUENCE
{
	organizationInfo	[1] OrganizationInfo OPTIONAL,
	individualInfo		[2] IndividualInfo OPTIONAL,
	...
}

OrganizationInfo ::= SEQUENCE
{
	name					[1] UTF8String OPTIONAL,
		-- name of the organization
	contactDetails			[2] ContactDetails OPTIONAL,
		-- address, and name/phone number of a point of contact
	nationalRegistrationID	[3] UTF8String OPTIONAL,
		-- e.g. social security number
	...,
	registeredAddress		[4] AddressInformation OPTIONAL,
	tradingAddress			[5] AddressInformation OPTIONAL,
	otherAddresses			[6] SEQUENCE OF OtherAddress OPTIONAL,
	groupID					[7] UTF8String OPTIONAL,
		-- identity of organization group
	groupAdministrator		[8] UTF8String OPTIONAL,
		-- identity of organization administrator
	companyType				[9] UTF8String OPTIONAL,
		-- type of company
	vatEnabled				[10] BOOLEAN OPTIONAL,
		-- VAT enabled or not
	vatNumber				[11] UTF8String OPTIONAL,
		-- VAT number
	createIP				[12] IPAddress OPTIONAL,
		-- IP used to create the subscriber account
	createTime				[13] GeneralizedTime OPTIONAL,
		-- time that subscriber account was created
	modifiedDate			[14] GeneralizedTime OPTIONAL
		-- date that subscriber account was modified
}

IndividualInfo ::= SEQUENCE
{
	name					[1] PersonName OPTIONAL,
	contactAddress			[2] ContactDetails OPTIONAL,
	dateOfBirth				[3] GeneralizedTime OPTIONAL,
	gender					[4] ENUMERATED
	{
		male(0),
		female(1),
		...
	} OPTIONAL,
	identificationNumber	[5] UTF8String OPTIONAL,
	authenticationInfo		[6] AuthenticationInfo OPTIONAL,
	...,
	profession				[7] UTF8String OPTIONAL,
	otherAddresses			[8] SEQUENCE OF OtherAddress OPTIONAL,
	createTime				[9] GeneralizedTime OPTIONAL
		-- time that subscriber account was created
	salutation				[1] UTF8String OPTIONAL,
	surname					[2] UTF8String OPTIONAL,
		-- the non-chosen or inherited name of an individual, e.g. "Arend"
	surnamePrefix			[3] UTF8String OPTIONAL,
		-- any prefix before the surname, e.g. "von", "van der"
	surnameSuffix			[4] UTF8String OPTIONAL,
		-- any suffix after the surname, e.g. "Jr", "III"
	middleNames				[5] UTF8String OPTIONAL,
		-- that part of the name excluding forename, separable and preceding the surname
	firstname				[6] UTF8String OPTIONAL,
		-- the first name or initials, e.g. "Peter"
	...,
	secondsurname			[7] UTF8String OPTIONAL,
		-- a second surname is used in several countries
	secondsurnamePrefix		[8] UTF8String OPTIONAL,
	secondsurnameSuffix		[9] UTF8String OPTIONAL
	address						[1] AddressInformation OPTIONAL,
	emailAddress				[2] UTF8String OPTIONAL,
	contactNumber				[3] SEQUENCE OF PartyNumber OPTIONAL,
		-- several numbers (work, home, mobile) may be given for a single subscriber
	...,
	additionalEmailAddresses	[4] SEQUENCE OF UTF8String OPTIONAL
		-- several email addresses may be given for a single subscriber
AddressInformation ::= SEQUENCE
	flatNumber				[1] UTF8String OPTIONAL,
	buildingName			[2] UTF8String OPTIONAL,
	buildingNumber			[3] UTF8String OPTIONAL,
	streetName				[4] UTF8String OPTIONAL,
	poBox					[5] UTF8String OPTIONAL,
	postalCode				[6] UTF8String OPTIONAL,
		-- Postal code. Example: 2289AC
	region					[7] UTF8String OPTIONAL,
	province				[8] UTF8String OPTIONAL,
	language				[9] UTF8String OPTIONAL,
	city					[10] UTF8String OPTIONAL,
	country					[11] CountryCode OPTIONAL,
		-- Country code as defined in ISO 3166-1 [4]
	validity				[12] TimeSpan OPTIONAL,
		-- time from which the address was registered
	...,
	relatedOrganizationInfo	[13] OrganizationInfo OPTIONAL,
	relatedPersonName		[14] PersonName OPTIONAL,
	otherInformation		[15] UTF8String OPTIONAL
		-- additional information in cases of divergent addresses
OtherAddress ::= SEQUENCE
{
	address			[1] AddressInformation OPTIONAL,
	addressType		[2] UTF8String OPTIONAL,
		-- Description of the type of address that has been given in the address field
	addressComments	[3] UTF8String OPTIONAL,
		-- Any extra information to aid the understanding of the address given
	...
}

AuthenticationInfo ::= SEQUENCE
{
	authenticationType		[1] UTF8String OPTIONAL,
	authenticationNumber		[2] UTF8String OPTIONAL,
	...,
	issuingCountry			[3] UTF8String (SIZE (2)) OPTIONAL,
	issuingOrganization		[4] UTF8String OPTIONAL,
	nationality			[5] UTF8String OPTIONAL
	billingMethod			[1] BillingMethod OPTIONAL,
	bankAccount			[2] BankAccount OPTIONAL,
	billingAddress			[3] ContactDetails OPTIONAL,
	...,
	billingIdentifier		[4] BillingIdentifier OPTIONAL
}

BankAccount ::= SEQUENCE
{
	iBAN								[1] IBAN OPTIONAL,
	bIC									[2] BIC OPTIONAL,
	accountHolder						[3] UTF8String OPTIONAL,
	nationalAccountNumber				[4] UTF8String OPTIONAL,
		-- To be used in case that the account holding bank has no IBAN
	nationalBankNumber					[5] UTF8String OPTIONAL,
		-- To be used in case that the account holding bank has neither IBAN nor BIC
	bankName							[6] UTF8String OPTIONAL,
	...,
	sepaRefNumber						[7] UTF8String OPTIONAL
		-- To be used for referenceNumber of a SEPA direct debit mandate
	-- International Banking Account Number
	-- format as per ISO 13616-1:2007 [28]

	-- Business Identifier Code
	-- format as per ISO 9362:2009 [29]

BillingMethod ::= ENUMERATED
{
	debit(0),
	transfer(1),
	prepaid(2),
	...
}
	telephonySubscriber		[1] TelephonySubscriber,
	telephonyBillingDetails		[2] TelephonyBillingDetails,
	telephonyServiceUsage		[3] TelephonyServiceUsage,
	telephonyDevice			[4] TelephonyDevice,
	telephonyNetworkElement		[5] TelephonyNetworkElement,
	...
}

-- ==============================
-- Definitions of Subscriber Data
-- ==============================

TelephonySubscriber ::= SEQUENCE
{
	subscriberID					[1] TelephonySubscriberId OPTIONAL,
		-- unique identifier for this subscriber, e.g. account number
	genericSubscriberInfo			[2] GenericSubscriberInfo OPTIONAL,
		-- generic personal information about this subscriber
	telephonySubscriberInfo			[3] TelephonySubscriberInfo OPTIONAL,
		-- service-specific information about this subscriber
	subscribedTelephonyServices		[4] SEQUENCE OF SubscribedTelephonyServices OPTIONAL,
		-- a subscriber (or account) may have more than one service listed against them
	...,
	nationalTelephonySubscriberInfo	[5] NationalTelephonySubscriberInfo OPTIONAL
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
}

NationalTelephonySubscriberInfo ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

TelephonySubscriberId ::= UTF8String
	-- unique identifier for this subscriber, e.g. account number

TelephonySubscriberInfo ::= NULL
	-- Reserved

PartyNumberInfo ::= SEQUENCE
{
	partyNumber							[1] PartyNumber OPTIONAL,
		-- referenced partyNumber for the additional information in this type
	timeSpan							[2] TimeSpan OPTIONAL,
		-- start and end date if applicable in which the number was active
	disableReason						[3] UTF8String OPTIONAL,
		-- reason of temporarily disable procedure - if applicable
	...
}

ICCIDInfo ::= SEQUENCE
{
	iCCID								[1] UTF8String OPTIONAL,
	timeSpan							[2] TimeSpan OPTIONAL,
		-- activation- and deactivation-date if applicable in which the ICCID was active
	...,
	pUK								[3] UTF8String OPTIONAL,
		-- PUK code associated with the ICCID
	pUK2								[4] UTF8String OPTIONAL,
		-- PUK2 code associated with the ICCID
	iMSI								[5] IMSI OPTIONAL
}

LoginInfo ::= SEQUENCE
{
	login								[1] UTF8String OPTIONAL,
		-- login used for authentication, usually a username or email address
	password							[2] UTF8String OPTIONAL,
	serviceName							[3] UTF8String OPTIONAL,
		-- short description of the kind of service the login / password is used for
	needsAdditionalAuthentication		[4] BOOLEAN OPTIONAL,
		-- true if additional authentication methods are required, like security questions or
		-- e-tokens
	timeSpan							[5] TimeSpan OPTIONAL,
		-- timespan when the login / password was valid
	...
}

SubscribedTelephonyServices ::= SEQUENCE
{
	serviceID							[1] UTF8String OPTIONAL,
		-- Unique identifier for this service within the operator
	providerID							[2] UTF8String OPTIONAL,
		-- Unique identifier for the service provider
		-- Start and end data, if applicable, of the subscription
	registeredNumbers					[4] SEQUENCE OF PartyNumber OPTIONAL,
		-- The set of telephone numbers registered for this service
	registeredICCID						[5] UTF8String OPTIONAL,
	serviceType							[6] TelephonyServiceType OPTIONAL,
	installationAddress					[7] AddressInformation OPTIONAL,
		-- installation address, if different from the registered address
	connectionDate						[8] GeneralizedTime OPTIONAL,
		-- Date the subscriber was actually connected
		-- (May differ from the start of subscription)
	iMSI								[9] IMSI OPTIONAL,
	carrierPreselect					[10] BOOLEAN OPTIONAL,
	lineStatus							[11] UTF8String OPTIONAL,
		-- CSP-specific description of current line status, e.g. "Active", "Ceased", etc.
	...,
	allocatedDeviceIDs					[12] SEQUENCE OF TelephonyDeviceID OPTIONAL,
	pUKCode								[13] UTF8String OPTIONAL,
	pUK2Code							[14] UTF8String OPTIONAL,
	iMEI								[15] SEQUENCE OF IMEI OPTIONAL,
	nationalTelephonySubscriptionInfo	[16] NationalTelephonySubscriptionInfo OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	paymentDetails						[17] PaymentDetails OPTIONAL,
	subscriptionType					[18] SubscriptionType OPTIONAL,
		-- Describes the nature of the subscription
	deliveryAddress						[19] AddressInformation OPTIONAL,
	resellerAddress						[20] AddressInformation OPTIONAL,
	otherAddresses						[21] SEQUENCE OF OtherAddress OPTIONAL,
	registeredNumbersInfo				[22] SEQUENCE OF PartyNumberInfo OPTIONAL,
		-- information about timespan of the active number and deactivation events
	registeredICCIDs					[23] SEQUENCE OF ICCIDInfo OPTIONAL,
		-- in cases of MultiSIM card contracts
	loginInfos							[24] SEQUENCE OF LoginInfo OPTIONAL
		-- e.g. login information according a VMS/UMS account
}
SubscriptionType  ::= ENUMERATED
{
	unknown(0),
	postpay(1),
	prepay(2),
	other(3),
	...
	-- Describes the nature of the subscription

NationalTelephonySubscriptionInfo ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	subscriberID						[1] TelephonySubscriberId OPTIONAL,
	serviceID							[2] UTF8String OPTIONAL,
	billingAddress						[3] ContactDetails OPTIONAL,
	billingIdentifier					[4] BillingIdentifier OPTIONAL,
	billingRecords						[5] SEQUENCE OF BillingRecords OPTIONAL,
	nationalTelephonyBillingDetails		[6] NationalTelephonyBillingDetails OPTIONAL
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
}

NationalTelephonyBillingDetails ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

BillingIdentifier ::= OCTET STRING
	-- Used to correlate billing information
	-- useful if the bill-payer is not the subscriber, e.g. company mobiles

BillingRecords ::= SEQUENCE
{
	time								[1] GeneralizedTime OPTIONAL,
	place								[2] UTF8String OPTIONAL,
	amount								[3] REAL OPTIONAL,
	currency							[4] UTF8String (SIZE(3)) OPTIONAL,
	nationalTelephonyBillingRecords		[6] NationalTelephonyBillingRecords OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	transactionID						[7] UTF8String OPTIONAL,
		-- Unique reference for this transaction/billing record
		-- Details to be defined on a national basis
	transactionStatus					[8] UTF8String OPTIONAL
		-- Status of the transaction (i.e. "declined", "succeeded", etc.)
		-- Details to be defined on a national bases
}

NationalTelephonyBillingRecords ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

TelephonyServiceType ::= ENUMERATED
{
	private(0),
	privatePABX(1),
	publicPayphone(2),
	...
}

-- =================================
-- Definitions of Service Usage Data
-- =================================

TelephonyServiceUsage ::= SEQUENCE
{
	partyInformation				[1] SEQUENCE OF TelephonyPartyInformation OPTIONAL,
		-- This parameter provides the concerned party (Originating, Terminating or
		-- forwarded party), the identity(ies) of the party and all the information
		-- provided by the party
	communicationTime				[2] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	eventInformation				[3] SEQUENCE OF TelephonyEventInformation OPTIONAL,
		-- A list of events that occurred during this service usage
		-- Q.850 cause code for call termination
	communicationType				[5] TelephonyCommunicationType OPTIONAL,
	bearerService					[6] TelephonyBearerService OPTIONAL,
	smsInformation					[7] SmsInformation OPTIONAL,
	ringDuration					[8] INTEGER OPTIONAL,
	...,
	mmsInformation					[9] MmsInformation OPTIONAL,
	nationalTelephonyServiceUsage	[10] NationalTelephonyServiceUsage OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	operatorSpecificCallDetails		[11] UTF8String OPTIONAL
		-- CSP specific value which indicates the nature of a call
		-- (e.g. "CallIndicator: GPR, CallActionCode: 2")
}

NationalTelephonyServiceUsage ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	partyRole							[1] TelephonyPartyRole OPTIONAL,
	partyNumber							[2] PartyNumber OPTIONAL,
	subscriberID						[3] TelephonySubscriberId OPTIONAL,
	deviceID							[4] TelephonyDeviceID OPTIONAL,
	locations							[5] SEQUENCE OF TelephonyLocation OPTIONAL,
		-- List of cell locations used by this party during the service usage
	communicationTime					[6] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	iMSI								[8] IMSI OPTIONAL,
	natureOfAddress						[9] UTF8String OPTIONAL,
		-- Nature of address indicator, e.g. "National", "International"
	forwardedTransferredNumber			[10] PartyNumber OPTIONAL,
	terminatingTransferredNumber		[11] PartyNumber OPTIONAL,
	...,
	emailAddress						[12] UTF8String  OPTIONAL,
		-- used for MMS that supports also the use of E-Mail addresses (RFC 5322 [24])
	iMEI								[13] IMEI OPTIONAL,
	detailedLocation					[14] TelephonyNetworkElement OPTIONAL,
		-- In the case detailed location information per call and party is available
		-- (e.g. the geoCoordinates for this partyNumber)
	nationalTelephonyPartyInformation	[15] NationalTelephonyPartyInformation OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	partyType							[16] TelephonyPartyType OPTIONAL,
	dialledDigits						[17] UTF8String OPTIONAL
}

NationalTelephonyPartyInformation ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
TelephonyPartyType ::= CHOICE
{
	voicemail		[1] NULL,
	smsServer		[2] NULL,
	other			[3] UTF8String,
	...
}

TelephonyCommunicationType ::= ENUMERATED
{
	telephonyFixedCS(0),
	telephonyWirelessCS(1),
	sMS(2),
TelephonyBearerService ::= ENUMERATED
{
	speech(0),
	data(1),
	fax(2),
	...
}

SmsInformation ::= SEQUENCE
{
	smsEvent		[1] ENUMERATED
	{
		shortMessage(1),
		shortPartMessage(2),
		compositeMessage(3),
		notificationMessage(4),
		...
	} OPTIONAL,
	smsType			[2] ENUMERATED
	{
		deliverSCtoMS(1),
		deliverReportMStoSC(2),
		statusReportSCtoMS(3),
		commandMStoSC(4),
		submitMStoSC(5),
		submitReportSCtoMS(6),
		reservedMTIValue(7),
		...
	} OPTIONAL,
	smsStatus		[3] ENUMERATED
	{
		delivered(0),
		expired(1),
		deleted(2),
		replaced(3),
		submitted(4),
		incomplete-submission(5),
		incomplete-delivery(6),
		undeliverable(7),
		passed-on(8),
		...
	} OPTIONAL,
	smsCmRefNr		[4] OCTET STRING (SIZE(1..2)) OPTIONAL,
		-- format as per 3GPP TS 23.040 [16]
	smsNumOfSM		[5] INTEGER (0..65535) OPTIONAL,
	smsNotifyInd	[6] BOOLEAN OPTIONAL,
	smsProtocolId	[7] OCTET STRING (SIZE(1)) OPTIONAL,
		-- format as per 3GPP TS 23.040 [16]
MmsInformation	::= SEQUENCE
{
	mmsEvent		[1] ENUMERATED
	{
		message(1),
		notificationMessage(2),
		deliveryReportMessage(3),
		readReplyMessage(4),
		...
	} OPTIONAL,
		-- type of message exchanged
	mmsStatus		[2] ENUMERATED
	{
		delivered(0),
		expired(1),
		deleted(2),
		replaced(3),
		submitted(4),
		undeliverable(5),
		passed-on(6),
		delivery-rejection(7),
		delivery-forward(8),
		delivery-copy(9),
		submission-rejection(10),
		submission-failure(11),
		...,
		delivered-application(12)
		-- optional flag indicating MMS was retrieved using
		-- something other than mobile deivce e.g. web browser
	} OPTIONAL,
	mmsNotifInd		[3] BOOLEAN OPTIONAL,
		-- indication that a delivery notification has been generated
	mmsMsgMod		[4] ENUMERATED
	{
		none(1),
		modified(2),
		stripped(3),
		...
	} OPTIONAL,
		-- message modification indication for MMS
	...
}

TelephonyEventInformation ::= SEQUENCE
{
	time		[1] GeneralizedTime OPTIONAL,
		-- time when the event occurred
	type		[2] TelephonyEventType OPTIONAL,
	party		[3] TelephonyPartyRole OPTIONAL,
		-- party to which the event is related
	location	[4] TelephonyLocation OPTIONAL,
	...
}

TelephonyEventType ::= CHOICE
{
	basicEventType				[1] BasicEventType,
	callConferenceEventType		[2] CallConferenceEventType,
	callForwardingEventType		[3] CallForwardingEventType,
	messagingEventType			[4] MessagingEventType,
	prepayServiceEventType		[5] PrepayServiceEventType,
	...,
	nationalTelephonyEventType	[6] NationalTelephonyEventType
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
}

NationalTelephonyEventType ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

BasicEventType ::= ENUMERATED
{
	handover(1),
	hold(2),
	retrieve(3),
	suspend(4),