-- Module Uds (F.515:04/2003)
-- See also ITU-T F.515 (04/2003)
-- See also the index of all ASN.1 assignments needed in this document

Uds DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

IMPORTS
  Lang
    FROM Xml
  Decimal, DateTime, Language, NMTOKEN, NCName
    FROM XSD; -- The XSD module is defined in the ASN.1 standards.

PagedResults ::= SEQUENCE {
  pageSize        INTEGER(1..MAX) OPTIONAL,
  pageNumber      INTEGER(1..MAX) OPTIONAL,
  queryReference  OCTET STRING OPTIONAL
}

-- Unified Directory Search Request 
SearchRequest ::= SEQUENCE {
  entryLimit     INTEGER(1..MAX) OPTIONAL,
  extendedArea   INTEGER(0..MAX) DEFAULT 0,
  searchOptions  SearchOptions OPTIONAL,
  hierSelect     HierarchySelections DEFAULT {self},
  base           SEQUENCE {entryIdentifier  OCTET STRING OPTIONAL} OPTIONAL,
  filter         Filter OPTIONAL,
  infoSelect
    SEQUENCE {attrTypes  AttributeTypes OPTIONAL,
              family     SEQUENCE OF Family} OPTIONAL,
  pagedResults   PagedResults OPTIONAL
}

ReqHead ::= SEQUENCE {
  requestRef  INTEGER,
  searchType  SearchType,
  userClass   ENUMERATED {operator, publicUser} DEFAULT operator
}

ProviderId ::= SEQUENCE {country  Country,
                         dmdName  DmdName OPTIONAL
}

NumericString-1 ::= IA5String(FROM ("0".."9"))(PATTERN "[0-9]")

Ub16NumericString ::= IA5String(FROM ("0".."9"))(SIZE (0..16))(PATTERN "[0-9]")

Ub32 ::= UTF8String(SIZE (0..32))

Ub40 ::= UTF8String(SIZE (0..40))

Ub64 ::= UTF8String(SIZE (0..64))

Ub128 ::= UTF8String(SIZE (0..128))

Ub256 ::= UTF8String(SIZE (0..256))

Ub512 ::= UTF8String(SIZE (0..512))

Ub1024 ::= UTF8String(SIZE (0..1024))

AttributeType ::= ENUMERATED {
  country, locality, stateOrProvince, streetAddress, houseId, givenName, 
  title, description, businessCategory, postalCode, postOfficeBox, dmdName,
  localityCode, localityNDC, subscriberName, subscriberType, secondFamilyName,
  profession, language, telephone, orAddress, mail, url, commService,
  commNetwork, addrValidFrom, addrValidUntil, addrValidity, addrCoverage,
  addrTariff, addrRestriction}

AttributeTypes ::= SEQUENCE OF AttributeType

SearchType ::= ENUMERATED {
  searchForStateOrProvince, searchForLocality, subscriberWithinLocality,
  subscriberByEntryIdentifier, subscriberWithinStateOrProvince,
  subscriberWithinCountry, searchForStreetAddress, subscriberByStreetAddress,
  subscriberByCommunicationsAddress, subscriberByBusinessCategory}

HierarchySelection ::= ENUMERATED {
  self, children, parent, hierarchy, top, subtree, all}

HierarchySelections ::= SEQUENCE OF HierarchySelection

SearchOption ::= ENUMERATED {performExactly, includeAllAreas}

SearchOptions ::= SEQUENCE OF SearchOption

Filter ::=
  SEQUENCE (SIZE (1..MAX)) OF
    CHOICE {assertion   Assertion,
            substrings  Substrings}

Attribute ::= CHOICE {
  country           Country,
  locality          Locality,
  stateOrProvince   StateOrProvince,
  streetAddress     StreetAddress,
  houseId           HouseId,
  givenName         GivenName,
  title             Title,
  description       Description,
  businessCategory  BusinessCategory,
  postalCode        PostalCode,
  postOfficeBox     PostOfficeBox,
  dmdName           DmdName,
  localityCode      LocalityCode,
  localityNDC       LocalityNDC,
  subscriberName    SubscriberName,
  subscriberType    SubscriberType,
  secondFamilyName  SecondFamilyName,
  profession        Profession,
  language          Language,
  telephone         Telephone,
  orAddress         OrAddress,
  mail              Mail,
  url               Url,
  commService       CommService,
  commNetwork       CommNetwork,
  addrValidFrom     AddrValidFrom,
  addrValidUntil    AddrValidUntil,
  addrValidity      AddrValidity,
  addrCoverage      AddrCoverage,
  addrTariff        AddrTariff,
  addrRestriction   AddrRestriction
}

Family ::= CHOICE {commsAddress  CommsAddress
}

Assertion ::= CHOICE {
  countryAs          CountryAs,
  localityCodeAs     LocalityCodeAs,
  localityNDCAs      LocalityNDCAs,
  subscriberTypeAs   SubscriberTypeAs,
  languageAs         LanguageAs,
  commServiceAs      CommServiceAs,
  addrValidityAs     AddrValidityAs,
  addrCoverageAs     AddrCoverageAs,
  addrTariffAs       AddrTariffAs,
  addrRestrictionAs  AddrRestrictionAs
}

AssertionAttr ::= SEQUENCE {weight  ENUMERATED {low, high} DEFAULT high
}

Substrings ::= CHOICE {
  localitySub          LocalitySub,
  stateOrProvinceSub   StateOrProvinceSub,
  streetAddressSub     StreetAddressSub,
  houseIdSub           HouseIdSub,
  givenNameSub         GivenNameSub,
  titleSub             TitleSub,
  businessCategorySub  BusinessCategorySub,
  postalCodeSub        PostalCodeSub,
  postOfficeBoxSub     PostOfficeBoxSub,
  dmdNameSub           DmdNameSub,
  subscriberNameSub    SubscriberNameSub,
  secondFamilyNameSub  SecondFamilyNameSub,
  professionSub        ProfessionSub,
  telephoneSub         TelephoneSub,
  orAddressSub         OrAddressSub,
  mailSub              MailSub,
  urlSub               UrlSub
}

SubstringAttr ::= SEQUENCE {
  string
    ENUMERATED {exact, deletion, restrDeletion, permutation,
                permutationAndDeletion, providerDefined} DEFAULT exact,
  weight  ENUMERATED {low, high} DEFAULT high
}

SubstringValueAttr ::= SEQUENCE {
  wordMatch       ENUMERATED {exact, truncated, phonetic} DEFAULT exact,
  characterMatch  ENUMERATED {exact, caseIgnore, mapped} DEFAULT caseIgnore
}

CommsAddress ::= SEQUENCE {attribute  SEQUENCE (SIZE (1..MAX)) OF Attribute
}

Country ::= NMTOKEN

CountryAs ::= SEQUENCE {COMPONENTS OF AssertionAttr,
                        base  NMTOKEN
}

Locality ::= Ub128

LocalitySub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value  SEQUENCE (SIZE (1..MAX)) OF Ub128
}

StateOrProvince ::= Ub128

StateOrProvinceSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub128}
}

StreetAddress ::= Ub128

StreetAddressSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub128}
}

HouseId ::= Ub64

HouseIdSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub64}
}

GivenName ::= Ub64

GivenNameSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub64}
}

Title ::= SEQUENCE {lang  Lang OPTIONAL,
                    base  Ub64
}

TitleSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub64}
}

Description ::= SEQUENCE {lang  Lang OPTIONAL,
                          base  Ub1024
}

BusinessCategory ::= SEQUENCE {lang  Lang OPTIONAL,
                               base  Ub128
}

BusinessCategorySub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub128}
}

PostalCode ::= Ub40

PostalCodeSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub40}
}

PostOfficeBox ::= Ub40

PostOfficeBoxSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF SEQUENCE {COMPONENTS OF SubstringValueAttr}
}

DmdName ::= Ub64

DmdNameSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub64}
}

LocalityCode ::= Ub64

LocalityCodeAs ::= SEQUENCE {COMPONENTS OF AssertionAttr,
                             base  Ub64
}

LocalityNDC ::= Ub16NumericString

LocalityNDCAs ::= SEQUENCE {
  COMPONENTS OF AssertionAttr,
  base  Ub16NumericString
}

SubscriberName ::= SEQUENCE {lang  Lang OPTIONAL,
                             base  Ub64
}

SubscriberNameSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub64}
}

SubscrType ::= ENUMERATED {residential, organization, government}

SubscrTypes ::= SEQUENCE OF SubscrType

SubscriberType ::= SubscrTypes

SubscriberTypeAs ::= SEQUENCE {COMPONENTS OF AssertionAttr,
                               base  SubscrType
}

SecondFamilyName ::= Ub128

SecondFamilyNameSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub128}
}

Profession ::= SEQUENCE {lang  Lang OPTIONAL,
                         base  Ub128
}

ProfessionSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub128}
}

Language ::= XSD.Language

LanguageAs ::= SEQUENCE {COMPONENTS OF AssertionAttr,
                         base  Language
}

Telephone ::= Ub32

TelephoneSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub32}
}

OrAddress ::= Ub1024

OrAddressSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub1024}
}

Mail ::= Ub256

MailSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub256}
}

Url ::= Ub1024

UrlSub ::= SEQUENCE {
  COMPONENTS OF SubstringAttr,
  value
    SEQUENCE (SIZE (1..MAX)) OF
      SEQUENCE {COMPONENTS OF SubstringValueAttr,
                base  Ub1024}
}

ComServiceType ::= ENUMERATED {
  voice, fax, textPhone, videoPhone, publicPhoneBox, switchBoard, pager, 
  data, e-mail, web}

ComServiceTypes ::= SEQUENCE OF ComServiceType

CommService ::= ComServiceTypes

CommServiceAs ::= SEQUENCE {COMPONENTS OF AssertionAttr,
                            base  ComServiceType
}

NetworkType ::= ENUMERATED {pstn, isdn, gsm, umts, internet}

CommNetwork ::= NetworkType

CommNetworkAs ::= SEQUENCE {COMPONENTS OF AssertionAttr,
                            base  NetworkType
}

AddrValidFrom ::= DateTime

AddrValidUntil ::= DateTime

AddrValidityType ::= ENUMERATED {current, old, future, temporary}

AddrValidity ::= AddrValidityType

AddrValidityAs ::= SEQUENCE {
  COMPONENTS OF AssertionAttr,
  base  AddrValidityType
}

AddrCoverageType ::= ENUMERATED {
  international, national, stateOrProvince, locality}

AddrCoverage ::= AddrCoverageType

AddrCoverageAs ::= SEQUENCE {
  COMPONENTS OF AssertionAttr,
  base  AddrCoverageType
}

AddrTariffType ::= ENUMERATED {normal, premium, toll-free}

AddrTariff ::= AddrTariffType

AddrTariffAs ::= SEQUENCE {COMPONENTS OF AssertionAttr,
                           base  AddrTariffType
}

AddrRestrictionType ::= ENUMERATED {
  public, secret, call-screen, no-marketing, complete-only}

AddrRestriction ::= AddrRestrictionType

AddrRestrictionAs ::= SEQUENCE {
  COMPONENTS OF AssertionAttr,
  base  AddrRestrictionType
}

Notification ::= CHOICE {
  limitProblem              LimitProblem,
  serviceProblem            ServiceProblem,
  searchType                SearchType,
  attributeTypeList         AttributeTypeList,
  filterNot                 FilterNot,
  filterItem                FilterItem,
  providerName              ProviderName,
  hierarchySelectList       HierarchySelectList,
  searchControlOptionsList  SearchControlOptionsList,
  attributeCombinations     AttributeCombinations,
  wordRestriction           WordRestriction,
  notSupported              NotSupported
}

LimitProblem ::= ENUMERATED {adminLimit, permanentRestriction}

ServiceProblem ::= ENUMERATED {
  hierSelectForbidden, hierSelectNotAvailableForService, hierSelectNotSupported
}

AttributeTypeList ::= AttributeTypes

FilterNot ::= Filter

FilterItem ::=
  SEQUENCE (SIZE (1..MAX)) OF
    CHOICE {assertion   Assertion,
            substrings  Substrings}

ProviderName ::= ProviderId

HierarchySelectList ::= HierarchySelections

SearchControlOptionsList ::= SearchOptions

AttributeCombinations ::=
  SEQUENCE (SIZE (1..MAX)) OF
    CHOICE {attributeType  AttributeType,
            or             Cor,
            not            AttributeCombinations}

Cor ::=
  SEQUENCE (SIZE (1..MAX)) OF
    CHOICE {attributeType  AttributeType,
            and            Cand,
            not            AttributeCombinations}

Cand ::=
  SEQUENCE (SIZE (1..MAX)) OF
    CHOICE {attributeType  AttributeType,
            or             Cor,
            not            AttributeCombinations}

StringMatchType ::= ENUMERATED {
  exact, deletion, restrictedDeletion, permutation, permutationAndDeletion,
  providerDefined}

StringMatchTypes ::= SEQUENCE OF StringMatchType

WordMatchType ::= ENUMERATED {exact, truncated, phonetic}

WordMatchTypes ::= SEQUENCE OF WordMatchType

CharacterMatchType ::= ENUMERATED {exact, caseIgnore, mapped}

CharacterMatchTypes ::= SEQUENCE OF CharacterMatchType

WordRestriction ::= SEQUENCE {
  attributeType        AttributeType OPTIONAL,
  initialMinimum       INTEGER(1..MAX) OPTIONAL,
  otherMinimum         INTEGER(1..MAX) OPTIONAL,
  stringMatchTypes     StringMatchTypes OPTIONAL,
  wordMatchTypes       WordMatchTypes OPTIONAL,
  characterMatchTypes  CharacterMatchTypes OPTIONAL
}

Option ::= ENUMERATED {paging, weighting}

Options ::= SEQUENCE OF Option

NotSupported ::= Options

/*

ENCODING-CONTROL XER
    ELEMENT-LIST ALL.value, SearchRequest.infoSelect.family, 
         CommsAddress.attribute
    TEXT ENUMERATED
    NAME SearchRequest, ReqHead, CommsAddress, Country, CountryAs,
         Locality, LocalitySub, StateOrProvince, StateOrProvinceSub,
         StreetAddress, StreetAddressSub, HouseId, HouseIdSub, GivenName,
         GivenNameSub, Title, TitleSub, Description, BusinessCategory, 
         BusinessCategorySub, PostalCode, PostalCodeSub, PostOfficeBox,
         PostOfficeBoxSub, DmdName, DmdNameSub, LocalityCode,
         LocalityCodeAs, LocalityNDC, LocalityNDCAs, SubscriberName, 
         SubscriberNameSub, SubscriberType, SubscriberTypeAs, 
         SecondFamilyName, SecondFamilyNameSub, Profession, ProfessionSub, 
         Language, LanguageAs, Telephone, TelephoneSub, OrAddress, 
         OrAddressSub, Mail, MailSub, Url, UrlSub, CommService, 
         CommServiceAs, CommNetwork, CommNetworkAs, AddrValidFrom, 
         AddrValidUntil, AddrValidity, AddrValidityAs, AddrCoverage,   
         AddrCoverageAs, AddrTariff, AddrTariffAs, AddrRestriction, 
         AddrRestrictionAs, LimitProblem, ServiceProblem, 
         AttributeTypeList, FilterNot, FilterItem, ProviderName, 
         HierarchySelectList, SearchControlOptionsList, WordRestriction,  
         NotSupported AS UNCAPITALIZED
    LIST AttributeTypes, HierarchySelections, SearchOptions, SubscrTypes,
         ComServiceTypes, StringMatchTypes, WordMatchTypes, 
         CharacterMatchTypes, Options
    UNTAGGED ALL.base IN ALL
    NAME SearchRequest.infoSelect.family, AttributeType.localityCode,
         CommsAddress.attribute, FilterItem.assertion, 
         FilterItem.substrings, ALL IN Filter AS CAPITALIZED
    NAME NumericString-1 AS "NumericString"
    ATTRIBUTE ALL IN PagedResults, SearchRequest.entryLimit, 
         SearchRequest.hierSelect, SearchRequest.searchOptions, 
         SearchRequest.extendedArea, SearchRequest.base.entryIdentifier, 
         ALL IN AssertionAttr, ALL IN SubstringAttr, ALL IN      
         SubstringValueAttr, Title.lang, Description.lang, 
         BusinessCategory.lang, SubscriberName.lang, Profession.lang, 
         WordRestriction.otherMinimum, WordRestriction.initialMinimum, 
         WordRestriction.attributeType

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