-- Module UPT-DataModel (Q.1551:06/1997)
-- See also ITU-T Q.1551 (06/1997)
-- See also the index of all ASN.1 assignments needed in this document

UPT-DataModel
-- this modules contains the ASN.1 Information Object Notation
-- for defining the contents of an SDF for the UPT service.
DEFINITIONS ::=
BEGIN

IMPORTS
  informationFramework, upperBounds
    FROM UsefulDefinitions {joint-iso-itu-t ds(5) module(1)
      usefulDefinitions(0) 3
      } -- {joint-iso-itu-t ds (5) module (1) usefulDefinitions (0)}
  OBJECT-CLASS, ATTRIBUTE, NAME-FORM, STRUCTURE-RULE, alias
    FROM InformationFramework {joint-iso-itu-t ds(5) module(1)
      informationFramework(1) 3}
  organization, organizationalUnit, countryNameForm
    FROM SelectedObjectClasses {joint-iso-itu-t ds(5) module(1)
      selectedObjectClasses(6) 3}
  description, integerMatch, numericStringMatch, commonName, surname,
    octetStringMatch, integerOrderingMatch, name, seeAlso,
    organizationalUnitName, storedPrefixMatch
    FROM SelectedAttributeTypes {joint-iso-itu-t ds(5) module(1)
      selectedAttributeTypes(5) 3
      } -- {joint-iso-itu-t ds (5) module (1)selectedAttributeTypes (5) 2}
  userPassword
    FROM AuthenticationFramework {joint-iso-itu-t ds(5) module(1)
      authenticationFramework(7) 3
      } -- {joint-iso-itu-t ds (5) module (1) authenticationFramework (7) 2}
  ub-international-isdn-number
    FROM UpperBounds {joint-iso-itu-t ds(5) module(1) upperBounds(10) 3};

uptProvider OBJECT-CLASS ::= {
  SUBCLASS OF   {organization}
  MUST CONTAIN  {providerId}
  MAY CONTAIN   {description}
  ID            id-oc-uptProvider
}

providerId ATTRIBUTE ::= {
  WITH SYNTAX               AddressString {ub-providerId}
  EQUALITY MATCHING RULE    numericStringMatch
  SUBSTRINGS MATCHING RULE  storedPrefixMatch
  SINGLE VALUE              TRUE
  ID                        id-at-providerId
}

ub-providerId INTEGER ::= 3

AddressString{INTEGER:ub-max-value} ::= NumericString(SIZE (1..ub-max-value))

partner OBJECT-CLASS ::= {
  MUST CONTAIN  {providerId}
  MAY CONTAIN   {description}
  ID            id-oc-partner
}

agreedService OBJECT-CLASS ::= {
  MUST CONTAIN  {providedServiceId}
  MAY CONTAIN   {providedLocations | description}
  ID            id-oc-agreement
}

providedServiceId ATTRIBUTE ::= {
  WITH SYNTAX             Service
  EQUALITY MATCHING RULE  integerMatch
  SINGLE VALUE            TRUE
  ID                      id-at-providedServiceId
}

Service ::= INTEGER {
  --basic services 0-9
  isdnTelephony(0),
  -- registration service 10-19
  icRegistration(10),
  --profile service 20-29
  serviceProfileModification(20),
  -- charging service 30-39
  standard(30),
  -- routing service 40-49
  callForwardingUnconditional(40), callForwardingOnNoReply(41),
  callForwardingOnBusy(42), variableRoutingOnTime(43),
  variableRoutingOnCallingLine(44)}

providedLocations ATTRIBUTE ::= {
  WITH SYNTAX               AddressString {ub-international-isdn-number}
  EQUALITY MATCHING RULE    numericStringMatch
  SUBSTRINGS MATCHING RULE  storedPrefixMatch
  ID                        id-at-providedLocations
}

administrativeUnit OBJECT-CLASS ::= {
  SUBCLASS OF  {organizationalUnit}
  ID           id-oc-administrativeUnit
}

userProfile OBJECT-CLASS ::= {
  MUST CONTAIN  {pui}
  MAY CONTAIN
    {description | commonName | surname | seeAlso | userCredit | userPassword
      | --as defined in Recommendation X.509
       specialPassword | variablePassword | allowedServiceFeatures |
      callInfoRecords | activeChargingService | nbOfFailedAuthentications}
  ID            id-oc-userProfile
}

pui ATTRIBUTE ::= {
  WITH SYNTAX             AddressString {ub-pui}
  EQUALITY MATCHING RULE  numericStringMatch
  SINGLE VALUE            TRUE
  ID                      id-at-pui
}

ub-pui INTEGER ::= 15

specialPassword ATTRIBUTE ::= {
  WITH SYNTAX             OCTET STRING(SIZE (0..ub-special-password))
  EQUALITY MATCHING RULE  octetStringMatch
  ID                      id-at-specialPassword
}

ub-special-password INTEGER ::= 8

variablePassword ATTRIBUTE ::= {
  WITH SYNTAX             OCTET STRING(SIZE (0..ub-variable-password))
  EQUALITY MATCHING RULE  octetStringMatch
  ID                      id-at-variablePassword
}

ub-variable-password INTEGER ::= 15

nbOfFailedAuthentications ATTRIBUTE ::= {
  WITH SYNTAX             INTEGER(1..ub-max-nbOfFailedAuthentications)
  ORDERING MATCHING RULE  integerOrderingMatch
  SINGLE VALUE            TRUE
  ID                      id-at-nbOfFailedAuthentications
}

ub-max-nbOfFailedAuthentications INTEGER ::= 6

userCredit ATTRIBUTE ::= {
  WITH SYNTAX             INTEGER(1..ub-maxUserCredit)
  ORDERING MATCHING RULE  integerOrderingMatch
  SINGLE VALUE            TRUE
  ID                      id-at-userCredit
}

ub-maxUserCredit INTEGER ::= 10000

callInfoRecords ATTRIBUTE ::= {
  WITH SYNTAX  CallInfoRecord
  ID           id-at-callInfoRecords
}

CallInfoRecord ::= SEQUENCE {
  authenticationTime            [0]  UTCTime,
  callStopTimeValue             [1]  UTCTime,
  callStartTimeValue            [2]  UTCTime,
  callingAddressValue           [3]  IsdnAddress,
  calledNumber                  [4]  IsdnAddress,
  duration                      [5]  INTEGER(0..2147483647) OPTIONAL,
  routingAddress                [6]  IsdnAddress OPTIONAL,
  forwardedToAddress            [7]  IsdnAddress OPTIONAL,
  invokedSupplementaryServices  [8]  CFServices OPTIONAL,
  visitedNetwork                [9]  NetworkCode OPTIONAL,
  callCost                      [10]  Cost OPTIONAL,
  surcharges                    [11]  Cost OPTIONAL,
  releaseCause                  [12]  Cause OPTIONAL
}

Cost ::= CHOICE {pulse  [0]  INTEGER(1..ub-pulse),
                 cost   [1]  CurrencyValue
}

NetworkCode ::= NumericString(SIZE (1..ub-networkCode))

ub-networkCode INTEGER ::= 3

ub-pulse INTEGER ::= 10000

CurrencyValue ::= CHOICE {
  usDollar        [0]  Currency,
  frenchFranc     [1]  Currency,
  germanMark      [2]  Currency,
  dutchGuilder    [3]  Currency,
  italianLira     [4]  Currency,
  englishPound    [5]  Currency,
  spanishPeseta   [6]  Currency,
  swedishKrone    [7]  Currency,
  norwegianKrone  [8]  Currency,
  japaneseYen     [9]  Currency
}

Currency ::= REAL

CFServices ::= SET OF Service(40..49)

Cause ::= OCTET STRING(SIZE (minCauseLength..maxCauseLength))

minCauseLength INTEGER ::= 2

maxCauseLength INTEGER ::= 20

activeChargingService ATTRIBUTE ::= {
  WITH SYNTAX             Service(30..39)
  EQUALITY MATCHING RULE  integerMatch
  SINGLE VALUE            TRUE
  ID                      id-at-activeChargingService
}

allowedServiceFeatures ATTRIBUTE ::= {
  WITH SYNTAX             Service
  EQUALITY MATCHING RULE  integerMatch
  ID                      id-at-allowedServiceFeatures
}

userProfileAlias OBJECT-CLASS ::= {
  SUBCLASS OF   {alias}
  MUST CONTAIN  {uptNumber}
  MAY CONTAIN   {description}
  ID            id-oc-userProfileAlias
}

uptNumber ATTRIBUTE ::= {
  WITH SYNTAX               IsdnAddress
  EQUALITY MATCHING RULE    numericStringMatch
  SUBSTRINGS MATCHING RULE  storedPrefixMatch
  SINGLE VALUE              TRUE
  ID                        id-at-uptNumber
}

calledUptUser OBJECT-CLASS ::= {
  MUST CONTAIN  {name}
  MAY CONTAIN
    {description | icRegistrationAddress | allowedRegistrationAddress |
      defaultChargingReference}
  ID            id-oc-calledUptUser
}

defaultChargingReference ATTRIBUTE ::= {
  WITH SYNTAX               IsdnAddress
  EQUALITY MATCHING RULE    numericStringMatch
  SUBSTRINGS MATCHING RULE  storedPrefixMatch
  SINGLE VALUE              TRUE
  ID                        id-at-defaultChargingReference
}

IsdnAddress ::= AddressString{ub-international-isdn-number}

icRegistrationAddress ATTRIBUTE ::= {
  WITH SYNTAX               IsdnAddress
  EQUALITY MATCHING RULE    numericStringMatch
  SUBSTRINGS MATCHING RULE  storedPrefixMatch
  ID                        id-at-icRegistrationAddress
}

allowedRegistrationAddress ATTRIBUTE ::= {
  WITH SYNTAX               AddressString {ub-international-isdn-number}
  EQUALITY MATCHING RULE    numericStringMatch
  SUBSTRINGS MATCHING RULE  storedPrefixMatch
  ID                        id-at-allowedRegistrationAddress
}

callingUptUser OBJECT-CLASS ::= {
  MUST CONTAIN  {name | allowedDestinations
                  -- callRecords??--}
  MAY CONTAIN   {description}
  ID            id-oc-callingUptUser
}

allowedDestinations ATTRIBUTE ::= {
  WITH SYNTAX               AddressString {ub-international-isdn-number}
  EQUALITY MATCHING RULE    numericStringMatch
  SUBSTRINGS MATCHING RULE  storedPrefixMatch
  ID                        id-at-allowedDestinations
}

supplementaryService OBJECT-CLASS ::= {
  KIND          abstract
  MUST CONTAIN  {supplServId | supplServiceStatus}
  MAY CONTAIN   {name | description}
  ID            id-ao-supplementaryService
}

supplServId ATTRIBUTE ::= {
  WITH SYNTAX             SS-Code
  EQUALITY MATCHING RULE  integerMatch
  SINGLE VALUE            TRUE
  ID                      id-at-supplServId
}

supplServiceStatus ATTRIBUTE ::= {
  WITH SYNTAX   SupplServiceStatus
  SINGLE VALUE  TRUE
  ID            id-at-supplServiceStatus
}

SupplServiceStatus ::= BIT STRING {provisioned(0), registered(1), activated(2)}

SS-Code ::= INTEGER {
  clip(11), clir(12), colp(13), colr(14), mci(15), cfu(16), cfb(17), 
  cfna(18), cfnr(25), civr(26), tvr(27)}

callForwarding OBJECT-CLASS ::= {
  SUBCLASS OF   {supplementaryService}
  MUST CONTAIN  {forwardedToNumber | typesOfNotification}
  MAY CONTAIN   {noReplyConditionTimer}
  ID            id-oc-callForwarding
}

forwardedToNumber ATTRIBUTE ::= {
  WITH SYNTAX               IsdnAddress
  EQUALITY MATCHING RULE    numericStringMatch
  SUBSTRINGS MATCHING RULE  storedPrefixMatch
  ID                        id-at-forwardedToNumber
}

typesOfNotification ATTRIBUTE ::= {
  WITH SYNTAX   TypesOfNotification
  SINGLE VALUE  TRUE
  ID            id-at-typesOfNotification
}

TypesOfNotification ::= BIT STRING {
  servedUserForwardedCall(0), callingUserWithForwardedToNumber(1),
  callingUserWithoutForwardedToNumber(2), servedUserForwardingActivation(3)
}

noReplyConditionTimer ATTRIBUTE ::= {
  WITH SYNTAX             INTEGER(1..ub-noReplyConditionTimer)
  EQUALITY MATCHING RULE  integerMatch
  SINGLE VALUE            TRUE
  ID                      id-at-noReplyConditionTimer
}

ub-noReplyConditionTimer INTEGER ::= 10000

-- name forms
uptProviderNameForm NAME-FORM ::= {
  NAMES            uptProvider
  WITH ATTRIBUTES  {providerId}
  ID               id-nf-uptProviderNameForm
}

partnerNameForm NAME-FORM ::= {
  NAMES            partner
  WITH ATTRIBUTES  {providerId}
  ID               id-nf-partnerNameForm
}

adminUnitNameForm NAME-FORM ::= {
  NAMES            administrativeUnit
  WITH ATTRIBUTES  {organizationalUnitName}
  ID               id-nf-adminUnitNameForm
}

agreedServiceNameForm NAME-FORM ::= {
  NAMES            agreedService
  WITH ATTRIBUTES  {providedServiceId}
  ID               id-nf-agreedServiceNameForm
}

userProfileNameForm NAME-FORM ::= {
  NAMES            userProfile
  WITH ATTRIBUTES  {pui}
  ID               id-nf-userProfileNameForm
}

userProfileAliasNameForm NAME-FORM ::= {
  NAMES            userProfileAlias
  WITH ATTRIBUTES  {uptNumber}
  ID               id-nf-userProfileAliasNameForm
}

calledUptUserNameForm NAME-FORM ::= {
  NAMES            calledUptUser
  WITH ATTRIBUTES  {name}
  ID               id-nf-calledUptUserNameForm
}

callingUptUserNameForm NAME-FORM ::= {
  NAMES            callingUptUser
  WITH ATTRIBUTES  {name}
  ID               id-nf-callingUptUserNameForm
}

callForwardingNameForm NAME-FORM ::= {
  NAMES            callForwarding
  WITH ATTRIBUTES  {supplServId}
  ID               id-nf-callForwardingNameForm
}

-- structure rules
sr0 STRUCTURE-RULE ::= {NAME FORM  countryNameForm
                        ID         0
}

sr1 STRUCTURE-RULE ::= {
  NAME FORM       uptProviderNameForm
  SUPERIOR RULES  {sr0}
  ID              1
}

sr2 STRUCTURE-RULE ::= {
  NAME FORM       adminUnitNameForm
  SUPERIOR RULES  {sr1}
  ID              2
}

sr3 STRUCTURE-RULE ::= {
  NAME FORM       partnerNameForm
  SUPERIOR RULES  {sr1}
  ID              3
}

sr4 STRUCTURE-RULE ::= {
  NAME FORM       userProfileNameForm
  SUPERIOR RULES  {sr2}
  ID              4
}

sr5 STRUCTURE-RULE ::= {
  NAME FORM       userProfileAliasNameForm
  SUPERIOR RULES  {sr2}
  ID              5
}

sr6 STRUCTURE-RULE ::= {
  NAME FORM       agreedServiceNameForm
  SUPERIOR RULES  {sr3}
  ID              6
}

sr7 STRUCTURE-RULE ::= {
  NAME FORM       calledUptUserNameForm
  SUPERIOR RULES  {sr4}
  ID              7
}

sr8 STRUCTURE-RULE ::= {
  NAME FORM       callingUptUserNameForm
  SUPERIOR RULES  {sr4}
  ID              8
}

sr9 STRUCTURE-RULE ::= {
  NAME FORM       callForwardingNameForm
  SUPERIOR RULES  {sr7}
  ID              9
}

-- object-identifiers assignment
id-oc OBJECT IDENTIFIER ::=
  {itu-t recommendation q 1551 --upt-- module(0) uptUsefulDefinitions(0)
   objectClasses(0) version1(0)}

id-ao OBJECT IDENTIFIER ::=
  {itu-t recommendation q 1551 --upt-- module(0) uptUsefulDefinitions(0)
   abstractObjectClasses(1) version1(0)}

id-at OBJECT IDENTIFIER ::=
  {itu-t recommendation q 1551 --upt-- module(0) uptUsefulDefinitions(0)
   attributeTypes(2) version1(0)}

id-nf OBJECT IDENTIFIER ::=
  {itu-t recommendation q 1551 --upt-- module(0) uptUsefulDefinitions(0)
   nameForms(3) version1(0)}

id-oc-uptProvider OBJECT IDENTIFIER ::= {id-oc 1}

id-oc-partner OBJECT IDENTIFIER ::= {id-oc 2}

id-oc-agreement OBJECT IDENTIFIER ::= {id-oc 3}

id-oc-administrativeUnit OBJECT IDENTIFIER ::= {id-oc 4}

id-oc-userProfile OBJECT IDENTIFIER ::= {id-oc 5}

id-oc-userProfileAlias OBJECT IDENTIFIER ::= {id-oc 6}

id-oc-calledUptUser OBJECT IDENTIFIER ::= {id-oc 7}

id-oc-callingUptUser OBJECT IDENTIFIER ::= {id-oc 8}

id-oc-callForwarding OBJECT IDENTIFIER ::= {id-oc 9}

id-ao-supplementaryService OBJECT IDENTIFIER ::= {id-ao 1}

id-at-providerId OBJECT IDENTIFIER ::= {id-at 1}

id-at-providedServiceId OBJECT IDENTIFIER ::= {id-at 2}

id-at-providedLocations OBJECT IDENTIFIER ::= {id-at 3}

id-at-pui OBJECT IDENTIFIER ::= {id-at 4}

id-at-specialPassword OBJECT IDENTIFIER ::= {id-at 5}

id-at-variablePassword OBJECT IDENTIFIER ::= {id-at 6}

id-at-nbOfFailedAuthentications OBJECT IDENTIFIER ::= {id-at 7}

id-at-userCredit OBJECT IDENTIFIER ::= {id-at 8}

id-at-callInfoRecords OBJECT IDENTIFIER ::= {id-at 9}

id-at-activeChargingService OBJECT IDENTIFIER ::= {id-at 10}

id-at-allowedServiceFeatures OBJECT IDENTIFIER ::= {id-at 11}

id-at-uptNumber OBJECT IDENTIFIER ::= {id-at 12}

id-at-defaultChargingReference OBJECT IDENTIFIER ::= {id-at 13}

id-at-icRegistrationAddress OBJECT IDENTIFIER ::= {id-at 14}

id-at-allowedRegistrationAddress OBJECT IDENTIFIER ::= {id-at 15}

id-at-supplServId OBJECT IDENTIFIER ::= {id-at 16}

id-at-supplServiceStatus OBJECT IDENTIFIER ::= {id-at 17}

id-at-forwardedToNumber OBJECT IDENTIFIER ::= {id-at 18}

id-at-typesOfNotification OBJECT IDENTIFIER ::= {id-at 19}

id-at-noReplyConditionTimer OBJECT IDENTIFIER ::= {id-at 20}

id-at-allowedDestinations OBJECT IDENTIFIER ::= {id-at 21}

id-nf-uptProviderNameForm OBJECT IDENTIFIER ::= {id-nf 1}

id-nf-partnerNameForm OBJECT IDENTIFIER ::= {id-nf 2}

id-nf-adminUnitNameForm OBJECT IDENTIFIER ::= {id-nf 3}

id-nf-agreedServiceNameForm OBJECT IDENTIFIER ::= {id-nf 4}

id-nf-userProfileNameForm OBJECT IDENTIFIER ::= {id-nf 5}

id-nf-userProfileAliasNameForm OBJECT IDENTIFIER ::= {id-nf 6}

id-nf-calledUptUserNameForm OBJECT IDENTIFIER ::= {id-nf 7}

id-nf-callingUptUserNameForm OBJECT IDENTIFIER ::= {id-nf 8}

id-nf-callForwardingNameForm OBJECT IDENTIFIER ::= {id-nf 9}

END
-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D