ASN.1 Schema Documentation

Summary Tables

This section contains a set of tables presenting summary information about the ASN.1 schema.

Schema Files
File nameModules
Module nameModule OIDDescription
uicBarcodeHeader_v3.0.0_draft.asnASN-Module-Header{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) header (1) v3 (3) 0}
uicDynamicContentData_v2.0.0_draft.asnASN-Module-DynamicContentData{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) dcd (3) v2 (2) 0}
uicFixedPointData_v1.0.0_draft.asnASN-Module-FixedPointData{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) fpd (6) v1 (1) 0}
uicGeneralData_v1.0.0_draft.asnASN-Module-GeneralData{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) general (5) v1 (1) 0}
uicMultiModalTicketData_v1.0.0_draft.asnASN-Module-MultiModalTicketData{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) mmtd (4) v1 (1) 0}
Modules
Module nameModule OIDDescriptionNumber
of
assignments
Incoming referencesOutgoing references
Module nameNumberModule nameNumber
ASN-Module-DynamicContentData{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) dcd (3) v2 (2) 0}1ASN-Module-GeneralData3
ASN-Module-FixedPointData{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) fpd (6) v1 (1) 0}7ASN-Module-GeneralData18
ASN-Module-GeneralData{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) general (5) v1 (1) 0}27ASN-Module-DynamicContentData3
ASN-Module-FixedPointData18
ASN-Module-Header4
ASN-Module-MultiModalTicketData99
ASN-Module-Header{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) header (1) v3 (3) 0}36ASN-Module-GeneralData4
ASN-Module-MultiModalTicketData{iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb (1) modules (0) mmtd (4) v1 (1) 0}76ASN-Module-GeneralData99
PDU Types
Module nameType nameDescription
ASN-Module-HeaderBarcodeData
ASN-Module-HeaderBarcodeTBSData
ASN-Module-HeaderCompanyKeyReference
ASN-Module-MultiModalTicketDataCompartmentPositionType
ASN-Module-HeaderEndEntityCertificate
ASN-Module-HeaderEndEntityCertificateTBSData
ASN-Module-FixedPointDataFixedPointData
ASN-Module-HeaderLevel2Data
ASN-Module-HeaderUICBarcodeHeader
ASN-Module-DynamicContentDataUICDynamicContentData
ASN-Module-MultiModalTicketDataUniversalTicketData
Type Assignments
Module nameType nameDescriptionNumber of
incoming
references
Number of
outgoing
references
ASN-Module-GeneralDataAreaSet12
ASN-Module-MultiModalTicketDataAreaType13
ASN-Module-MultiModalTicketDataArrivalDateTimeType2
ASN-Module-HeaderBarcodeData23
ASN-Module-HeaderBarcodeTBSData3
ASN-Module-MultiModalTicketDataBerthDetailData12
ASN-Module-MultiModalTicketDataBerthTypeType1
ASN-Module-MultiModalTicketDataCardIdFormatType2
ASN-Module-MultiModalTicketDataCardReferenceType23
ASN-Module-MultiModalTicketDataCarType15
ASN-Module-GeneralDataCoachPlaces23
ASN-Module-GeneralDataCompanyCode14
ASN-Module-HeaderCompanyKeyReference31
ASN-Module-MultiModalTicketDataCompartmentGenderType1
ASN-Module-MultiModalTicketDataCompartmentPositionType
ASN-Module-MultiModalTicketDataComplexRouteType21
ASN-Module-MultiModalTicketDataConditionsType116
ASN-Module-MultiModalTicketDataConfirmationType1
ASN-Module-MultiModalTicketDataControlData25
ASN-Module-MultiModalTicketDataCountryValidityType1
ASN-Module-MultiModalTicketDataCustomerCardData17
ASN-Module-MultiModalTicketDataCustomerStatusType11
ASN-Module-GeneralDataData19
ASN-Module-MultiModalTicketDataDateType1
ASN-Module-MultiModalTicketDataDelayConfirmation17
ASN-Module-MultiModalTicketDataDepartureDateTimeType2
ASN-Module-MultiModalTicketDataDocumentData18
ASN-Module-HeaderEndEntityCertificate2
ASN-Module-HeaderEndEntityCertificateTBSData3
ASN-Module-MultiModalTicketDataExtendedValidUntilType1
ASN-Module-FixedPointDataFixedPointData5
ASN-Module-GeneralDataGenericId21
ASN-Module-GeneralDataGeoCoordinate23
ASN-Module-GeneralDataGeoCoordinateSystem1
ASN-Module-GeneralDataGeoUnit2
ASN-Module-GeneralDataGeoUnitType1
ASN-Module-MultiModalTicketDataGeoValidity19
ASN-Module-MultiModalTicketDataGeoValiditySegment12
ASN-Module-MultiModalTicketDataGroupDetailsType11
ASN-Module-MultiModalTicketDataIdentificationDocumentCategoryType1
ASN-Module-MultiModalTicketDataIdentificationDocumentType12
ASN-Module-MultiModalTicketDataIncludedTimeRangesType13
ASN-Module-MultiModalTicketDataIssuingData18
ASN-Module-HeaderLevel1Data14
ASN-Module-HeaderLevel2Data12
ASN-Module-MultiModalTicketDataLineCodeType1
ASN-Module-GeneralDataLineId22
ASN-Module-MultiModalTicketDataLineIdType12
ASN-Module-MultiModalTicketDataLineType12
ASN-Module-MultiModalTicketDataLinkModeType1
ASN-Module-MultiModalTicketDataLoadingDeckType1
ASN-Module-MultiModalTicketDataLuggageRestrictionType11
ASN-Module-HeaderMessageRecoverySignature1
ASN-Module-GeneralDataNUTSArea2
ASN-Module-FixedPointDataObject15
ASN-Module-MultiModalTicketDataOnlineValidationStatus1
ASN-Module-MultiModalTicketDataOnlineValidationType11
ASN-Module-MultiModalTicketDataOriginDestinationType11
ASN-Module-MultiModalTicketDataParkingGroundData15
ASN-Module-MultiModalTicketDataParkingType23
ASN-Module-MultiModalTicketDataPassengerType2
ASN-Module-GeneralDataPlaceDetails11
ASN-Module-GeneralDataPlaceNumber1
ASN-Module-MultiModalTicketDataPolygoneType12
ASN-Module-MultiModalTicketDataProductIdType1
ASN-Module-MultiModalTicketDataProductRetailData13
ASN-Module-MultiModalTicketDataProductType73
ASN-Module-MultiModalTicketDataProductVarietyType21
ASN-Module-HeaderPublicKey11
ASN-Module-MultiModalTicketDataRareDetailsType16
ASN-Module-MultiModalTicketDataRareTimingConditionsType13
ASN-Module-MultiModalTicketDataRareTravelerDetailsType15
ASN-Module-MultiModalTicketDataRegisteredLuggageType11
ASN-Module-MultiModalTicketDataReservationSegmentType110
ASN-Module-MultiModalTicketDataRetailChannelType1
ASN-Module-MultiModalTicketDataRoofRackType1
ASN-Module-MultiModalTicketDataRouteItemType13
ASN-Module-MultiModalTicketDataSecurePaperTicket1
ASN-Module-MultiModalTicketDataServiceBrandType41
ASN-Module-MultiModalTicketDataServiceType1
ASN-Module-FixedPointDataSharedVehicle14
ASN-Module-MultiModalTicketDataSharedVehicle14
ASN-Module-GeneralDataSharedVehiclePropulsionType2
ASN-Module-GeneralDataSharedVehicleReturnConstraint2
ASN-Module-MultiModalTicketDataSharedVehicleType13
ASN-Module-GeneralDataSharedVehicleVariety2
ASN-Module-HeaderSignature11
ASN-Module-MultiModalTicketDataSpecialDaysType1
ASN-Module-GeneralDataStation103
ASN-Module-MultiModalTicketDataStationPassageData17
ASN-Module-FixedPointDataStationPoint12
ASN-Module-GeneralDataStationSet42
ASN-Module-MultiModalTicketDataTariffType15
ASN-Module-MultiModalTicketDataTicketCategoryType1
ASN-Module-MultiModalTicketDataTicketDetailsType11
ASN-Module-MultiModalTicketDataTicketLinkType26
ASN-Module-MultiModalTicketDataTimeRangeType1
ASN-Module-GeneralDataTimestamp3
ASN-Module-MultiModalTicketDataTokenCategoryType1
ASN-Module-MultiModalTicketDataTokenType22
ASN-Module-GeneralDataTransportId52
ASN-Module-MultiModalTicketDataTransportLinkType16
ASN-Module-MultiModalTicketDataTransportProductData13
ASN-Module-MultiModalTicketDataTravelClassType4
ASN-Module-MultiModalTicketDataTravelerType23
ASN-Module-HeaderUICBarcodeHeader2
ASN-Module-DynamicContentDataUICDynamicContentData3
ASN-Module-GeneralDataUnicodeText20
ASN-Module-MultiModalTicketDataUniversalTicketData6
ASN-Module-MultiModalTicketDataValidFromType6
ASN-Module-MultiModalTicketDataValidUntilType5
ASN-Module-FixedPointDataVehicle13
ASN-Module-FixedPointDataVehicleDynamic14
ASN-Module-FixedPointDataVehicleIdentifier21
ASN-Module-MultiModalTicketDataVoucherData14
ASN-Module-MultiModalTicketDataWeekdaysType1
Parameterized Type Assignments
Module nameType nameDescriptionParametersNumber of
incoming
references
Number of
outgoing
references
NameType or ClassDescription
ASN-Module-HeaderDSSSignaturelenINTEGER1
ASN-Module-HeaderECPublicKeylenINTEGER1
ASN-Module-GeneralDataGenericCodeIdType51
ASN-Module-HeaderSignedDataDataType12
KeyReference
ASN-Module-HeaderStandardSignedDataDataType21
KeyReference
ASN-Module-HeaderStandardTBSDataDataType2
KeyReference
Type Assignments Cross Reference
Module nameType nameIncoming referencesOutgoing references
Module nameEntity nameNumberModule nameEntity nameNumber
ASN-Module-GeneralDataAreaSetASN-Module-MultiModalTicketDataAreaType4ASN-Module-GeneralDataGenericCode1
ASN-Module-GeneralDataNUTSArea1
ASN-Module-MultiModalTicketDataAreaTypeASN-Module-MultiModalTicketDataGeoValidity1ASN-Module-GeneralDataAreaSet4
ASN-Module-GeneralDataStationSet2
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataArrivalDateTimeTypeASN-Module-MultiModalTicketDataReservationSegmentType1
ASN-Module-MultiModalTicketDataTransportLinkType1
ASN-Module-HeaderBarcodeDataASN-Module-HeaderBarcodeTBSData1ASN-Module-GeneralDataData1
ASN-Module-HeaderLevel1Data2ASN-Module-HeaderPublicKey1
ASN-Module-GeneralDataTimestamp1
ASN-Module-HeaderBarcodeTBSDataASN-Module-HeaderBarcodeData1
ASN-Module-HeaderCompanyKeyReference1
ASN-Module-HeaderStandardTBSData1
ASN-Module-MultiModalTicketDataBerthDetailDataASN-Module-MultiModalTicketDataReservationSegmentType1ASN-Module-MultiModalTicketDataBerthTypeType1
ASN-Module-MultiModalTicketDataCompartmentGenderType1
ASN-Module-MultiModalTicketDataBerthTypeTypeASN-Module-MultiModalTicketDataBerthDetailData1
ASN-Module-MultiModalTicketDataCardIdFormatTypeASN-Module-MultiModalTicketDataCardReferenceType1
ASN-Module-MultiModalTicketDataIdentificationDocumentType1
ASN-Module-MultiModalTicketDataCardReferenceTypeASN-Module-MultiModalTicketDataRareTravelerDetailsType1ASN-Module-MultiModalTicketDataCardIdFormatType1
ASN-Module-MultiModalTicketDataTariffType1ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-MultiModalTicketDataCarTypeASN-Module-MultiModalTicketDataReservationSegmentType1ASN-Module-MultiModalTicketDataLoadingDeckType1
ASN-Module-MultiModalTicketDataRoofRackType1
ASN-Module-GeneralDataUnicodeText2
ASN-Module-MultiModalTicketDataValidFromType1
ASN-Module-MultiModalTicketDataValidUntilType1
ASN-Module-GeneralDataCoachPlacesASN-Module-MultiModalTicketDataReservationSegmentType1ASN-Module-GeneralDataPlaceDetails1
ASN-Module-FixedPointDataVehicle1ASN-Module-GeneralDataPlaceNumber1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-GeneralDataCompanyCodeASN-Module-HeaderCompanyKeyReference1
ASN-Module-MultiModalTicketDataConditionsType2
ASN-Module-MultiModalTicketDataCustomerStatusType1
ASN-Module-FixedPointDataFixedPointData1
ASN-Module-GeneralDataGenericCode6
ASN-Module-MultiModalTicketDataGeoValidity1
ASN-Module-MultiModalTicketDataIssuingData1
ASN-Module-MultiModalTicketDataOnlineValidationType1
ASN-Module-MultiModalTicketDataProductRetailData1
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-MultiModalTicketDataRareDetailsType1
ASN-Module-MultiModalTicketDataSharedVehicle1
ASN-Module-MultiModalTicketDataTicketLinkType1
ASN-Module-MultiModalTicketDataTokenType1
ASN-Module-HeaderCompanyKeyReferenceASN-Module-HeaderBarcodeTBSData1ASN-Module-GeneralDataCompanyCode1
ASN-Module-HeaderEndEntityCertificateTBSData1
ASN-Module-HeaderLevel1Data2
ASN-Module-MultiModalTicketDataCompartmentGenderTypeASN-Module-MultiModalTicketDataBerthDetailData1
ASN-Module-MultiModalTicketDataCompartmentPositionType
ASN-Module-MultiModalTicketDataComplexRouteTypeASN-Module-MultiModalTicketDataGeoValidity1ASN-Module-MultiModalTicketDataRouteItemType1
ASN-Module-MultiModalTicketDataRouteItemType2
ASN-Module-MultiModalTicketDataConditionsTypeASN-Module-MultiModalTicketDataTransportProductData2ASN-Module-GeneralDataCompanyCode2
ASN-Module-MultiModalTicketDataControlData1
ASN-Module-GeneralDataGenericCode1
ASN-Module-GeneralDataGenericId2
ASN-Module-GeneralDataNUTSArea1
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-MultiModalTicketDataProductVarietyType1
ASN-Module-MultiModalTicketDataRareDetailsType1
ASN-Module-MultiModalTicketDataRareTimingConditionsType1
ASN-Module-MultiModalTicketDataReservationSegmentType1
ASN-Module-MultiModalTicketDataServiceBrandType1
ASN-Module-MultiModalTicketDataTariffType1
ASN-Module-MultiModalTicketDataTransportLinkType1
ASN-Module-MultiModalTicketDataTravelClassType1
ASN-Module-MultiModalTicketDataValidFromType1
ASN-Module-MultiModalTicketDataValidUntilType1
ASN-Module-MultiModalTicketDataConfirmationTypeASN-Module-MultiModalTicketDataDelayConfirmation1
ASN-Module-MultiModalTicketDataControlDataASN-Module-MultiModalTicketDataConditionsType1ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataUniversalTicketData1ASN-Module-MultiModalTicketDataOnlineValidationStatus1
ASN-Module-MultiModalTicketDataOnlineValidationType1
ASN-Module-MultiModalTicketDataTicketLinkType1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataCountryValidityTypeASN-Module-MultiModalTicketDataTariffType1
ASN-Module-MultiModalTicketDataCustomerCardDataASN-Module-MultiModalTicketDataDocumentData1ASN-Module-GeneralDataData1
ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-MultiModalTicketDataTravelClassType1
ASN-Module-MultiModalTicketDataTravelerType1
ASN-Module-MultiModalTicketDataValidFromType1
ASN-Module-MultiModalTicketDataValidUntilType1
ASN-Module-MultiModalTicketDataCustomerStatusTypeASN-Module-MultiModalTicketDataRareTravelerDetailsType1ASN-Module-GeneralDataCompanyCode1
ASN-Module-GeneralDataDataASN-Module-HeaderBarcodeData1
ASN-Module-MultiModalTicketDataControlData1
ASN-Module-MultiModalTicketDataCustomerCardData1
ASN-Module-MultiModalTicketDataDelayConfirmation1
ASN-Module-MultiModalTicketDataDocumentData1
ASN-Module-FixedPointDataFixedPointData1
ASN-Module-MultiModalTicketDataGeoValidity1
ASN-Module-MultiModalTicketDataIssuingData1
ASN-Module-HeaderLevel2Data1
ASN-Module-MultiModalTicketDataParkingType1
ASN-Module-MultiModalTicketDataRareDetailsType1
ASN-Module-MultiModalTicketDataRareTimingConditionsType1
ASN-Module-MultiModalTicketDataRareTravelerDetailsType1
ASN-Module-MultiModalTicketDataSharedVehicle1
ASN-Module-MultiModalTicketDataStationPassageData1
ASN-Module-MultiModalTicketDataTransportProductData1
ASN-Module-DynamicContentDataUICDynamicContentData1
ASN-Module-MultiModalTicketDataUniversalTicketData1
ASN-Module-MultiModalTicketDataVoucherData1
ASN-Module-MultiModalTicketDataDateTypeASN-Module-MultiModalTicketDataTravelerType1
ASN-Module-MultiModalTicketDataDelayConfirmationASN-Module-MultiModalTicketDataDocumentData1ASN-Module-MultiModalTicketDataConfirmationType1
ASN-Module-GeneralDataData1
ASN-Module-GeneralDataStation1
ASN-Module-MultiModalTicketDataTicketLinkType1
ASN-Module-GeneralDataTransportId1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataValidFromType1
ASN-Module-MultiModalTicketDataDepartureDateTimeTypeASN-Module-MultiModalTicketDataReservationSegmentType1
ASN-Module-MultiModalTicketDataTransportLinkType1
ASN-Module-MultiModalTicketDataDocumentDataASN-Module-MultiModalTicketDataUniversalTicketData1ASN-Module-MultiModalTicketDataCustomerCardData1
ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataDelayConfirmation1
ASN-Module-MultiModalTicketDataParkingGroundData1
ASN-Module-MultiModalTicketDataStationPassageData1
ASN-Module-MultiModalTicketDataTokenType1
ASN-Module-MultiModalTicketDataTransportProductData1
ASN-Module-MultiModalTicketDataVoucherData1
ASN-Module-HeaderEndEntityCertificateASN-Module-HeaderEndEntityCertificateTBSData1
ASN-Module-HeaderLevel1Data1
ASN-Module-HeaderEndEntityCertificateTBSDataASN-Module-HeaderCompanyKeyReference1
ASN-Module-HeaderEndEntityCertificate1
ASN-Module-HeaderStandardTBSData1
ASN-Module-MultiModalTicketDataExtendedValidUntilTypeASN-Module-MultiModalTicketDataRareTimingConditionsType1
ASN-Module-FixedPointDataFixedPointDataASN-Module-GeneralDataCompanyCode1
ASN-Module-GeneralDataData1
ASN-Module-GeneralDataGenericId1
ASN-Module-FixedPointDataObject1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-GeneralDataGenericIdASN-Module-MultiModalTicketDataCardReferenceType1
ASN-Module-MultiModalTicketDataConditionsType2
ASN-Module-MultiModalTicketDataCustomerCardData1
ASN-Module-FixedPointDataFixedPointData1
ASN-Module-MultiModalTicketDataIssuingData1
ASN-Module-GeneralDataLineId1
ASN-Module-FixedPointDataObject1
ASN-Module-MultiModalTicketDataParkingGroundData1
ASN-Module-MultiModalTicketDataProductRetailData4
ASN-Module-MultiModalTicketDataRareTravelerDetailsType1
ASN-Module-MultiModalTicketDataRegisteredLuggageType1
ASN-Module-FixedPointDataSharedVehicle1
ASN-Module-GeneralDataStation1
ASN-Module-MultiModalTicketDataStationPassageData2
ASN-Module-FixedPointDataStationPoint1
ASN-Module-MultiModalTicketDataTariffType1
ASN-Module-MultiModalTicketDataTicketLinkType1
ASN-Module-GeneralDataTransportId1
ASN-Module-FixedPointDataVehicle1
ASN-Module-FixedPointDataVehicleIdentifier1
ASN-Module-MultiModalTicketDataVoucherData1
ASN-Module-GeneralDataGeoCoordinateASN-Module-MultiModalTicketDataPolygoneType1ASN-Module-GeneralDataGeoCoordinateSystem1
ASN-Module-DynamicContentDataUICDynamicContentData1ASN-Module-GeneralDataGeoUnit1
ASN-Module-GeneralDataGeoUnitType1
ASN-Module-GeneralDataGeoCoordinateSystemASN-Module-GeneralDataGeoCoordinate1
ASN-Module-GeneralDataGeoUnitASN-Module-GeneralDataGeoCoordinate1
ASN-Module-MultiModalTicketDataPolygoneType1
ASN-Module-GeneralDataGeoUnitTypeASN-Module-GeneralDataGeoCoordinate1
ASN-Module-MultiModalTicketDataGeoValidityASN-Module-MultiModalTicketDataGeoValiditySegment1ASN-Module-MultiModalTicketDataAreaType1
ASN-Module-GeneralDataCompanyCode1
ASN-Module-MultiModalTicketDataComplexRouteType1
ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataLineType1
ASN-Module-MultiModalTicketDataOriginDestinationType1
ASN-Module-MultiModalTicketDataParkingType1
ASN-Module-MultiModalTicketDataPolygoneType1
ASN-Module-MultiModalTicketDataSharedVehicle1
ASN-Module-MultiModalTicketDataGeoValiditySegmentASN-Module-MultiModalTicketDataTransportProductData2ASN-Module-MultiModalTicketDataGeoValidity1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataGroupDetailsTypeASN-Module-MultiModalTicketDataUniversalTicketData1ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataIdentificationDocumentCategoryTypeASN-Module-MultiModalTicketDataIdentificationDocumentType1
ASN-Module-MultiModalTicketDataIdentificationDocumentTypeASN-Module-MultiModalTicketDataRareTravelerDetailsType1ASN-Module-MultiModalTicketDataCardIdFormatType1
ASN-Module-MultiModalTicketDataIdentificationDocumentCategoryType1
ASN-Module-MultiModalTicketDataIncludedTimeRangesTypeASN-Module-MultiModalTicketDataRareTimingConditionsType1ASN-Module-MultiModalTicketDataSpecialDaysType1
ASN-Module-MultiModalTicketDataTimeRangeType1
ASN-Module-MultiModalTicketDataWeekdaysType1
ASN-Module-MultiModalTicketDataIssuingDataASN-Module-MultiModalTicketDataUniversalTicketData1ASN-Module-GeneralDataCompanyCode1
ASN-Module-GeneralDataData1
ASN-Module-GeneralDataGenericId1
ASN-Module-GeneralDataLineId1
ASN-Module-MultiModalTicketDataProductRetailData1
ASN-Module-MultiModalTicketDataSecurePaperTicket1
ASN-Module-GeneralDataTimestamp1
ASN-Module-GeneralDataTransportId1
ASN-Module-HeaderLevel1DataASN-Module-HeaderLevel2Data1ASN-Module-HeaderBarcodeData2
ASN-Module-HeaderCompanyKeyReference2
ASN-Module-HeaderEndEntityCertificate1
ASN-Module-HeaderSignedData3
ASN-Module-HeaderLevel2DataASN-Module-HeaderUICBarcodeHeader1ASN-Module-GeneralDataData1
ASN-Module-HeaderLevel1Data1
ASN-Module-MultiModalTicketDataLineCodeTypeASN-Module-MultiModalTicketDataLineIdType1
ASN-Module-GeneralDataLineIdASN-Module-MultiModalTicketDataIssuingData1ASN-Module-GeneralDataGenericCode1
ASN-Module-FixedPointDataVehicleDynamic1ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataLineIdTypeASN-Module-MultiModalTicketDataLineType2ASN-Module-MultiModalTicketDataLineCodeType1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataLineTypeASN-Module-MultiModalTicketDataGeoValidity1ASN-Module-MultiModalTicketDataLineIdType2
ASN-Module-GeneralDataStationSet2
ASN-Module-MultiModalTicketDataLinkModeTypeASN-Module-MultiModalTicketDataTicketLinkType1
ASN-Module-MultiModalTicketDataLoadingDeckTypeASN-Module-MultiModalTicketDataCarType1
ASN-Module-MultiModalTicketDataLuggageRestrictionTypeASN-Module-MultiModalTicketDataRareDetailsType1ASN-Module-MultiModalTicketDataRegisteredLuggageType1
ASN-Module-HeaderMessageRecoverySignatureASN-Module-HeaderSignedData4
ASN-Module-GeneralDataNUTSAreaASN-Module-GeneralDataAreaSet1
ASN-Module-MultiModalTicketDataConditionsType1
ASN-Module-FixedPointDataObjectASN-Module-FixedPointDataFixedPointData1ASN-Module-GeneralDataGenericId1
ASN-Module-FixedPointDataSharedVehicle1
ASN-Module-FixedPointDataStationPoint1
ASN-Module-FixedPointDataVehicle1
ASN-Module-FixedPointDataVehicleDynamic1
ASN-Module-MultiModalTicketDataOnlineValidationStatusASN-Module-MultiModalTicketDataControlData1
ASN-Module-MultiModalTicketDataOnlineValidationTypeASN-Module-MultiModalTicketDataControlData1ASN-Module-GeneralDataCompanyCode1
ASN-Module-MultiModalTicketDataOriginDestinationTypeASN-Module-MultiModalTicketDataGeoValidity1ASN-Module-GeneralDataStation3
ASN-Module-MultiModalTicketDataParkingGroundDataASN-Module-MultiModalTicketDataDocumentData1ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataParkingType1
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-MultiModalTicketDataValidFromType1
ASN-Module-MultiModalTicketDataValidUntilType1
ASN-Module-MultiModalTicketDataParkingTypeASN-Module-MultiModalTicketDataGeoValidity1ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataParkingGroundData1ASN-Module-GeneralDataStation1
ASN-Module-GeneralDataUnicodeText4
ASN-Module-MultiModalTicketDataPassengerTypeASN-Module-MultiModalTicketDataTariffType1
ASN-Module-MultiModalTicketDataTravelerType1
ASN-Module-GeneralDataPlaceDetailsASN-Module-GeneralDataCoachPlaces1ASN-Module-GeneralDataUnicodeText1
ASN-Module-GeneralDataPlaceNumberASN-Module-GeneralDataCoachPlaces1
ASN-Module-MultiModalTicketDataPolygoneTypeASN-Module-MultiModalTicketDataGeoValidity1ASN-Module-GeneralDataGeoCoordinate1
ASN-Module-GeneralDataGeoUnit1
ASN-Module-MultiModalTicketDataProductIdTypeASN-Module-MultiModalTicketDataProductType1
ASN-Module-MultiModalTicketDataProductRetailDataASN-Module-MultiModalTicketDataIssuingData1ASN-Module-GeneralDataCompanyCode1
ASN-Module-GeneralDataGenericId4
ASN-Module-MultiModalTicketDataRetailChannelType1
ASN-Module-MultiModalTicketDataProductTypeASN-Module-MultiModalTicketDataCardReferenceType1ASN-Module-GeneralDataCompanyCode1
ASN-Module-MultiModalTicketDataConditionsType1ASN-Module-MultiModalTicketDataProductIdType1
ASN-Module-MultiModalTicketDataCustomerCardData1ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataParkingGroundData1
ASN-Module-MultiModalTicketDataStationPassageData1
ASN-Module-MultiModalTicketDataTicketLinkType1
ASN-Module-MultiModalTicketDataVoucherData1
ASN-Module-MultiModalTicketDataProductVarietyTypeASN-Module-MultiModalTicketDataConditionsType1ASN-Module-MultiModalTicketDataTicketDetailsType1
ASN-Module-MultiModalTicketDataTicketLinkType1
ASN-Module-HeaderPublicKeyASN-Module-HeaderBarcodeData1ASN-Module-HeaderECPublicKey4
ASN-Module-MultiModalTicketDataRareDetailsTypeASN-Module-MultiModalTicketDataConditionsType1ASN-Module-GeneralDataCompanyCode1
ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataLuggageRestrictionType1
ASN-Module-MultiModalTicketDataServiceBrandType1
ASN-Module-MultiModalTicketDataTokenType1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataRareTimingConditionsTypeASN-Module-MultiModalTicketDataConditionsType1ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataExtendedValidUntilType1
ASN-Module-MultiModalTicketDataIncludedTimeRangesType1
ASN-Module-MultiModalTicketDataRareTravelerDetailsTypeASN-Module-MultiModalTicketDataTravelerType1ASN-Module-MultiModalTicketDataCardReferenceType1
ASN-Module-MultiModalTicketDataCustomerStatusType1
ASN-Module-GeneralDataData1
ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataIdentificationDocumentType1
ASN-Module-MultiModalTicketDataRegisteredLuggageTypeASN-Module-MultiModalTicketDataLuggageRestrictionType1ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataReservationSegmentTypeASN-Module-MultiModalTicketDataConditionsType1ASN-Module-MultiModalTicketDataArrivalDateTimeType1
ASN-Module-MultiModalTicketDataBerthDetailData1
ASN-Module-MultiModalTicketDataCarType1
ASN-Module-GeneralDataCoachPlaces1
ASN-Module-MultiModalTicketDataDepartureDateTimeType1
ASN-Module-MultiModalTicketDataServiceBrandType1
ASN-Module-MultiModalTicketDataServiceType1
ASN-Module-GeneralDataStation2
ASN-Module-GeneralDataTransportId1
ASN-Module-MultiModalTicketDataTravelClassType1
ASN-Module-MultiModalTicketDataRetailChannelTypeASN-Module-MultiModalTicketDataProductRetailData1
ASN-Module-MultiModalTicketDataRoofRackTypeASN-Module-MultiModalTicketDataCarType1
ASN-Module-MultiModalTicketDataRouteItemTypeASN-Module-MultiModalTicketDataComplexRouteType1ASN-Module-MultiModalTicketDataComplexRouteType2
ASN-Module-GeneralDataStation1
ASN-Module-GeneralDataStationSet1
ASN-Module-MultiModalTicketDataSecurePaperTicketASN-Module-MultiModalTicketDataIssuingData1
ASN-Module-MultiModalTicketDataServiceBrandTypeASN-Module-MultiModalTicketDataConditionsType1ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataRareDetailsType1
ASN-Module-MultiModalTicketDataReservationSegmentType1
ASN-Module-MultiModalTicketDataTransportLinkType1
ASN-Module-MultiModalTicketDataServiceTypeASN-Module-MultiModalTicketDataReservationSegmentType1
ASN-Module-FixedPointDataSharedVehicleASN-Module-FixedPointDataObject1ASN-Module-GeneralDataGenericId1
ASN-Module-GeneralDataSharedVehiclePropulsionType1
ASN-Module-GeneralDataSharedVehicleReturnConstraint1
ASN-Module-GeneralDataSharedVehicleVariety1
ASN-Module-MultiModalTicketDataSharedVehicleASN-Module-MultiModalTicketDataGeoValidity1ASN-Module-GeneralDataCompanyCode1
ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataSharedVehicleType1
ASN-Module-GeneralDataStation2
ASN-Module-GeneralDataSharedVehiclePropulsionTypeASN-Module-FixedPointDataSharedVehicle1
ASN-Module-MultiModalTicketDataSharedVehicleType1
ASN-Module-GeneralDataSharedVehicleReturnConstraintASN-Module-FixedPointDataSharedVehicle1
ASN-Module-MultiModalTicketDataSharedVehicleType1
ASN-Module-MultiModalTicketDataSharedVehicleTypeASN-Module-MultiModalTicketDataSharedVehicle1ASN-Module-GeneralDataSharedVehiclePropulsionType1
ASN-Module-GeneralDataSharedVehicleReturnConstraint1
ASN-Module-GeneralDataSharedVehicleVariety1
ASN-Module-GeneralDataSharedVehicleVarietyASN-Module-FixedPointDataSharedVehicle1
ASN-Module-MultiModalTicketDataSharedVehicleType1
ASN-Module-HeaderSignatureASN-Module-HeaderStandardSignedData5ASN-Module-HeaderDSSSignature7
ASN-Module-MultiModalTicketDataSpecialDaysTypeASN-Module-MultiModalTicketDataIncludedTimeRangesType1
ASN-Module-GeneralDataStationASN-Module-MultiModalTicketDataDelayConfirmation1ASN-Module-GeneralDataGenericCode1
ASN-Module-MultiModalTicketDataOriginDestinationType3ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataParkingType1ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataReservationSegmentType2
ASN-Module-MultiModalTicketDataRouteItemType1
ASN-Module-MultiModalTicketDataSharedVehicle2
ASN-Module-FixedPointDataStationPoint1
ASN-Module-GeneralDataStationSet2
ASN-Module-MultiModalTicketDataTransportLinkType2
ASN-Module-FixedPointDataVehicleDynamic2
ASN-Module-MultiModalTicketDataStationPassageDataASN-Module-MultiModalTicketDataDocumentData1ASN-Module-GeneralDataData1
ASN-Module-GeneralDataGenericId2
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-GeneralDataStationSet1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataValidFromType1
ASN-Module-MultiModalTicketDataValidUntilType1
ASN-Module-FixedPointDataStationPointASN-Module-FixedPointDataObject1ASN-Module-GeneralDataGenericId1
ASN-Module-GeneralDataStation1
ASN-Module-GeneralDataStationSetASN-Module-MultiModalTicketDataAreaType2ASN-Module-GeneralDataStation2
ASN-Module-MultiModalTicketDataLineType2ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataRouteItemType1
ASN-Module-MultiModalTicketDataStationPassageData1
ASN-Module-MultiModalTicketDataTariffTypeASN-Module-MultiModalTicketDataConditionsType1ASN-Module-MultiModalTicketDataCardReferenceType1
ASN-Module-MultiModalTicketDataCountryValidityType1
ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataPassengerType1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataTicketCategoryTypeASN-Module-MultiModalTicketDataTicketDetailsType1
ASN-Module-MultiModalTicketDataTicketDetailsTypeASN-Module-MultiModalTicketDataProductVarietyType1ASN-Module-MultiModalTicketDataTicketCategoryType1
ASN-Module-MultiModalTicketDataTicketLinkTypeASN-Module-MultiModalTicketDataControlData1ASN-Module-GeneralDataCompanyCode1
ASN-Module-MultiModalTicketDataDelayConfirmation1ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataLinkModeType1
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-MultiModalTicketDataProductVarietyType1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataTimeRangeTypeASN-Module-MultiModalTicketDataIncludedTimeRangesType1
ASN-Module-GeneralDataTimestampASN-Module-HeaderBarcodeData1
ASN-Module-MultiModalTicketDataIssuingData1
ASN-Module-DynamicContentDataUICDynamicContentData1
ASN-Module-MultiModalTicketDataTokenCategoryTypeASN-Module-MultiModalTicketDataTokenType1
ASN-Module-MultiModalTicketDataTokenTypeASN-Module-MultiModalTicketDataDocumentData1ASN-Module-GeneralDataCompanyCode1
ASN-Module-MultiModalTicketDataRareDetailsType1ASN-Module-MultiModalTicketDataTokenCategoryType1
ASN-Module-GeneralDataTransportIdASN-Module-MultiModalTicketDataDelayConfirmation1ASN-Module-GeneralDataGenericCode1
ASN-Module-MultiModalTicketDataIssuingData1ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataReservationSegmentType1
ASN-Module-MultiModalTicketDataTransportLinkType1
ASN-Module-FixedPointDataVehicleDynamic1
ASN-Module-MultiModalTicketDataTransportLinkTypeASN-Module-MultiModalTicketDataConditionsType1ASN-Module-MultiModalTicketDataArrivalDateTimeType1
ASN-Module-MultiModalTicketDataDepartureDateTimeType1
ASN-Module-MultiModalTicketDataServiceBrandType1
ASN-Module-GeneralDataStation2
ASN-Module-GeneralDataTransportId1
ASN-Module-MultiModalTicketDataTravelClassType1
ASN-Module-MultiModalTicketDataTransportProductDataASN-Module-MultiModalTicketDataDocumentData1ASN-Module-MultiModalTicketDataConditionsType2
ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataGeoValiditySegment2
ASN-Module-MultiModalTicketDataTravelClassTypeASN-Module-MultiModalTicketDataConditionsType1
ASN-Module-MultiModalTicketDataCustomerCardData1
ASN-Module-MultiModalTicketDataReservationSegmentType1
ASN-Module-MultiModalTicketDataTransportLinkType1
ASN-Module-MultiModalTicketDataTravelerTypeASN-Module-MultiModalTicketDataCustomerCardData1ASN-Module-MultiModalTicketDataDateType1
ASN-Module-MultiModalTicketDataUniversalTicketData1ASN-Module-MultiModalTicketDataPassengerType1
ASN-Module-MultiModalTicketDataRareTravelerDetailsType1
ASN-Module-HeaderUICBarcodeHeaderASN-Module-HeaderLevel2Data1
ASN-Module-HeaderStandardSignedData1
ASN-Module-DynamicContentDataUICDynamicContentDataASN-Module-GeneralDataData1
ASN-Module-GeneralDataGeoCoordinate1
ASN-Module-GeneralDataTimestamp1
ASN-Module-GeneralDataUnicodeTextASN-Module-MultiModalTicketDataAreaType1
ASN-Module-MultiModalTicketDataCarType2
ASN-Module-GeneralDataCoachPlaces1
ASN-Module-MultiModalTicketDataControlData1
ASN-Module-MultiModalTicketDataDelayConfirmation1
ASN-Module-FixedPointDataFixedPointData1
ASN-Module-MultiModalTicketDataGeoValiditySegment1
ASN-Module-MultiModalTicketDataGroupDetailsType1
ASN-Module-MultiModalTicketDataLineIdType1
ASN-Module-MultiModalTicketDataParkingType4
ASN-Module-GeneralDataPlaceDetails1
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-MultiModalTicketDataRareDetailsType1
ASN-Module-MultiModalTicketDataServiceBrandType1
ASN-Module-GeneralDataStation1
ASN-Module-MultiModalTicketDataStationPassageData1
ASN-Module-GeneralDataStationSet1
ASN-Module-MultiModalTicketDataTariffType1
ASN-Module-MultiModalTicketDataTicketLinkType1
ASN-Module-MultiModalTicketDataVoucherData1
ASN-Module-MultiModalTicketDataUniversalTicketDataASN-Module-MultiModalTicketDataControlData1
ASN-Module-GeneralDataData1
ASN-Module-MultiModalTicketDataDocumentData1
ASN-Module-MultiModalTicketDataGroupDetailsType1
ASN-Module-MultiModalTicketDataIssuingData1
ASN-Module-MultiModalTicketDataTravelerType1
ASN-Module-MultiModalTicketDataValidFromTypeASN-Module-MultiModalTicketDataCarType1
ASN-Module-MultiModalTicketDataConditionsType1
ASN-Module-MultiModalTicketDataCustomerCardData1
ASN-Module-MultiModalTicketDataDelayConfirmation1
ASN-Module-MultiModalTicketDataParkingGroundData1
ASN-Module-MultiModalTicketDataStationPassageData1
ASN-Module-MultiModalTicketDataValidUntilTypeASN-Module-MultiModalTicketDataCarType1
ASN-Module-MultiModalTicketDataConditionsType1
ASN-Module-MultiModalTicketDataCustomerCardData1
ASN-Module-MultiModalTicketDataParkingGroundData1
ASN-Module-MultiModalTicketDataStationPassageData1
ASN-Module-FixedPointDataVehicleASN-Module-FixedPointDataObject1ASN-Module-GeneralDataCoachPlaces1
ASN-Module-GeneralDataGenericId1
ASN-Module-FixedPointDataVehicleIdentifier1
ASN-Module-FixedPointDataVehicleDynamicASN-Module-FixedPointDataObject1ASN-Module-GeneralDataLineId1
ASN-Module-GeneralDataStation2
ASN-Module-GeneralDataTransportId1
ASN-Module-FixedPointDataVehicleIdentifier1
ASN-Module-FixedPointDataVehicleIdentifierASN-Module-FixedPointDataVehicle1ASN-Module-GeneralDataGenericId1
ASN-Module-FixedPointDataVehicleDynamic1
ASN-Module-MultiModalTicketDataVoucherDataASN-Module-MultiModalTicketDataDocumentData1ASN-Module-GeneralDataData1
ASN-Module-GeneralDataGenericId1
ASN-Module-MultiModalTicketDataProductType1
ASN-Module-GeneralDataUnicodeText1
ASN-Module-MultiModalTicketDataWeekdaysTypeASN-Module-MultiModalTicketDataIncludedTimeRangesType1
Parameterized Type Assignments Cross Reference
Module nameType nameParametersIncoming referencesOutgoing references
NameType or ClassModule nameEntity nameNumberModule nameEntity nameNumber
ASN-Module-HeaderDSSSignaturelenINTEGERASN-Module-HeaderSignature7
ASN-Module-HeaderECPublicKeylenINTEGERASN-Module-HeaderPublicKey4
ASN-Module-GeneralDataGenericCodeIdTypeASN-Module-GeneralDataAreaSet1ASN-Module-GeneralDataCompanyCode6
ASN-Module-MultiModalTicketDataConditionsType1
ASN-Module-GeneralDataLineId1
ASN-Module-GeneralDataStation1
ASN-Module-GeneralDataTransportId1
ASN-Module-HeaderSignedDataDataTypeASN-Module-HeaderLevel1Data3ASN-Module-HeaderMessageRecoverySignature4
KeyReferenceASN-Module-HeaderStandardSignedData4
ASN-Module-HeaderStandardSignedDataDataTypeASN-Module-HeaderSignedData4ASN-Module-HeaderSignature5
KeyReferenceASN-Module-HeaderUICBarcodeHeader1
ASN-Module-HeaderStandardTBSDataDataTypeASN-Module-HeaderBarcodeTBSData1
KeyReferenceASN-Module-HeaderEndEntityCertificateTBSData1

Schema Files

This section contains the schema files that constitute the ASN.1 schema.

Schema File uicBarcodeHeader_v3.0.0_draft.asn

ASN-Module-Header {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218) fcb

(1) modules (0) header (1) v3 (3) 0}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

-- imports and exports

-- EXPORTS ALL;

IMPORTS

CompanyCode, Data, Timestamp

FROM ASN-Module-GeneralData {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise

(1) uic (17218) fcb (1) modules (0) general (5) v1 (1) 0};

-- ##############################################################################################

-- # UIC barcode header - version 3.0.0

-- #

-- # Naming and encoding conventions

-- # - A bar code which is only static (printed on a paper), and for which the security is in the system,

-- # does not need any of these elements.

-- # - A bar code which is only static, and includes its own security, needs:

-- # level1Signature

-- # level1KeyAlg and level1SigningAlg if the associated key does not make this evident

-- # - A dynamic bar code including static and dynamic signatures needs the same elements as a static bar code, plus:

-- # level2PublicKey, and level2Signature

-- # level2SigningAlg and level2keyAlg if not evident

-- #

-- # The maximum size of a barcode is, per the Aztec specification ISO 24778, limited to 1914 bytes.

-- ##############################################################################################

-- The basic entry point of the barcode

UICBarcodeHeader ::= SEQUENCE {

-- This field SHALL be set to the byte string "U3".

-- This results in the version 3 header being prefixed with U3 at the start, allowing identification of this

-- format of barcode header.

format OCTET STRING (SIZE (2)),

contents StandardSignedData {Level2Data, NULL}

}

Level2Data ::= SEQUENCE {

level1Data Level1Data,

-- Dynamic Content Data goes here

data SEQUENCE SIZE (1..8) OF Data OPTIONAL

}

-- Provider of the level 1 signature

CompanyKeyReference ::= SEQUENCE {

securityProvider CompanyCode,

keyId INTEGER (0..99999)

}

Level1Data ::= CHOICE {

-- Must use the standard variety, message recovery format to be decided upon at a later date

-- Standard variety signature calculated over BarcodeTBSData

directlyIssued SignedData {BarcodeData, CompanyKeyReference},

-- Must not be used, format to be decided upon at a later date

subIssued SEQUENCE {

-- Standard variety signature calculated over EndEntityCertificateTBSData

endEntityCertificate SignedData {EndEntityCertificate, CompanyKeyReference},

barcodeData SignedData {BarcodeData, NULL}

}

}

BarcodeTBSData ::= StandardTBSData {BarcodeData, CompanyKeyReference}

EndEntityCertificateTBSData ::= StandardTBSData {EndEntityCertificate, CompanyKeyReference}

SignedData {DataType, KeyReference} ::= CHOICE {

standard StandardSignedData {DataType, KeyReference},

messageRecovery MessageRecoverySignature

}

StandardSignedData {DataType, KeyReference} ::= SEQUENCE {

tbs DataType,

-- The signature is calculated over the canonical unaligned PER (CUPER) encoding of StandardTBSData{DataType, KeyReference}

-- Note: when KeyReference is NULL this is equivalent to the CUPER encoding of DataType

signature SEQUENCE {

keyReference KeyReference,

data Signature

} OPTIONAL -- Being unset only permitted when no security is required

}

StandardTBSData {DataType, KeyReference} ::= SEQUENCE {

keyReference KeyReference,

tbs DataType

}

-- Values taken from the JSON Web Signature and Encryption Algorithm registry

-- https://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms

Signature ::= CHOICE {

es256 DSSSignature {32}, -- ECDSA using P-256 and SHA-256

es256k DSSSignature {32}, -- ECDSA using secp256k1 curve and SHA-256

es384 DSSSignature {48}, -- ECDSA using P-384 and SHA-384

es512 DSSSignature {66}, -- ECDSA using P-521 and SHA-512

ed25519 OCTET STRING (SIZE (64)),

ed448 OCTET STRING (SIZE (114)),

hs256 OCTET STRING (SIZE (32)),

-- HMAC using SHA-256, not permitted except by bilateral agreement

hs384 OCTET STRING (SIZE (48)),

-- HMAC using SHA-384, not permitted except by bilateral agreement

hs512 OCTET STRING (SIZE (64)),

-- HMAC using SHA-512, not permitted except by bilateral agreement

dsa1 DSSSignature {20},

-- DSA-1024 using SHA-1, not recommended for new deployments

dsa224 DSSSignature {32},

-- DSA-2048 using SHA-224, not recommended for new deployments

dsa256 DSSSignature {32},

-- DSA-2048 using SHA-256, not recommended for new deployments

reserved1 NULL, -- Space for future signature modes, e.g. Post-Quantum Cryptography

reserved2 NULL,

reserved3 NULL,

other SEQUENCE {

algId OBJECT IDENTIFIER,

signature OCTET STRING

}

}

DSSSignature {INTEGER: len} ::= SEQUENCE {

r OCTET STRING (SIZE (len)),

s OCTET STRING (SIZE (len))

}

PublicKey ::= CHOICE {

nistP256 ECPublicKey {32},

secp256K1 ECPublicKey {32},

nistP384 ECPublicKey {48},

nistP521 ECPublicKey {66},

ed25519 OCTET STRING (SIZE (32)),

ed448 OCTET STRING (SIZE (57)),

reserved NULL, -- Space for future public key formats, e.g. Post-Quantum Cryptography

other OCTET STRING -- DER encoded SubjectPublicKeyInfo

}

ECPublicKey {INTEGER: len} ::= SEQUENCE {

x OCTET STRING (SIZE (len)),

yIsOdd BOOLEAN

}

-- Purposefully left blank, format to be decided upon at a later date

MessageRecoverySignature ::= NULL

-- Purposefully left blank, format to be decided upon at a later date

EndEntityCertificate ::= NULL

BarcodeData ::= SEQUENCE {

-- This field MUST contain at most one well-known UIC data type (e.g. FCBn)

data SEQUENCE SIZE (1..16) OF Data,

level2PublicKey PublicKey OPTIONAL,

-- End of the validity of the barcode.

-- After this date and time the bar code needs to be regenerated by the provider of the ticket.

-- The provider of the bar code should ensure that the endOfValidity given here does not exceed the validity of the key pair used on level 2.

endOfValidity Timestamp OPTIONAL,

-- Validity duration in seconds of the barcode with reference to the time stamp in the dynamic content data

validityDuration INTEGER (1..3600) OPTIONAL,

...

}

END

Schema File uicDynamicContentData_v2.0.0_draft.asn

ASN-Module-DynamicContentData {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic

(17218) fcb (1) modules (0) dcd (3) v2 (2) 0}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

-- imports and exports

-- EXPORTS ALL;

IMPORTS

Timestamp, GeoCoordinate, Data

FROM ASN-Module-GeneralData {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise

(1) uic (17218) fcb (1) modules (0) general (5) v1 (1) 0};

-- ############################################################################

-- # #

-- # Version 2.0.0 - Value "FDC4" in element dataFormat of UicBarcodeHeader #

-- # #

-- ############################################################################

UICDynamicContentData ::= SEQUENCE {

-- Identification of the mobile application that generated the barcode and filled in the dynamic part.

-- Values as defined by the security provider.

dynamicContentMobileAppId VisibleString OPTIONAL,

-- Generation of the dynamic content

dynamicContentTimeStamp Timestamp OPTIONAL,

-- Coordinates of the location where the dynamic content was been generated

dynamicContentGeoCoordinate GeoCoordinate OPTIONAL,

-- Format of the data identifier:

-- "+" + [2-letters uppercase ISO 3166 country code] + [addon, chosen by the national standards body of that country]

-- "_" + [RICS or ERA company code] + [addon, chosen by this company]

-- "*" + [addon] - private use, not guaranteed to avoid clashes

-- Compressed company form (i.e. "!I", "!C", "!P") are not permitted here.

-- Any other value only after registration in the challenge_response.csv registry

-- The use of unregistered values (outside of the national, company, and private use ranges) is strictly forbidden.

-- All values should be registered via the UIC Github repository.

dynamicContentResponseToChallenge SEQUENCE OF Data,

...

}

END

Schema File uicFixedPointData_v1.0.0_draft.asn

ASN-Module-FixedPointData {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic

(17218) fcb (1) modules (0) fpd (6) v1 (1) 0}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS

GenericId, CompanyCode, Station, CoachPlaces, Data, SharedVehicleVariety, SharedVehiclePropulsionType,

SharedVehicleReturnConstraint, TransportId, LineId, UnicodeText

FROM ASN-Module-GeneralData {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise

(1) uic (17218) fcb (1) modules (0) general (5) v1 (1) 0};

-- ##############################################################################################

-- # UIC Fixed Point Data - version 1.0.0

-- # Value "FPD1" in element dataFormat of the UICBarcodeHeader.

-- #

-- # The UICBarcodeHeader need not be signed (i.e. level1Signature unset), if the situation does not require it.

-- #

-- # Optional format for combining a FixedPointData structure with a URL for inclusion in a QR code.

-- # This is useful, for example, in the case of customer feedback barcodes that should link to the operator's website

-- # for reporting faults, or for directing users to download an app to access a shared vehicle.

-- # (1) Encode this structure in the DOSIPAS format in the usual way, optionally signed

-- # (2) Base-41 encode the resultant binary data, with the alphabet "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$*-.:"; see here: https://github.com/sveljko/base41

-- # (3) Append it to the end of a URL with the prefix "$UIC:"

-- # Example: "HTTPS://RAIL.EXAMPLE/QRFB/$UIC:A2I9..."

-- # n.b. uppercase should be used in the whole URL, as this is much more efficient to encode in a QR code

-- #

-- # Encoding in an NFC tag

-- # (1) Encode this structure in the DOSIPAS format in the usual way, optionally signed

-- # (2) Place the encoded DOSIPAS in an NDEF record of the format 0x02 (IANA Media Type),

-- # with the media type application/vnd.uic.dosipas.v2 or application/vnd.uic.dosipas.v1, as appropriate

-- # (3) Write the NDEF record to an NDEF formatted NFC tag

-- # Other records may exist in the same NDEF message. Readers MUST be prepared to look beyond the

-- # first record to find a UIC DOSIPAS record.

-- ##############################################################################################

FixedPointData ::= SEQUENCE {

-- The ID should be eternally unique per issuer

id GenericId,

-- If different from the security provider

-- Required to be set if the barcode is unsigned (i.e. no security provider)

issuer CompanyCode OPTIONAL,

specimen BOOLEAN,

affixedTo Object OPTIONAL,

-- Additional important information about this fixed point

infoText UnicodeText OPTIONAL,

extension SEQUENCE OF Data OPTIONAL,

...

}

Object ::= CHOICE {

station StationPoint, -- for check-in/check-out by scanning

vehicle Vehicle,

-- e.g. for at-seat ordering, customer reporting of vehicle defects, vehicle based check-in

sharedVehicle SharedVehicle, -- e.g. bike, e-scooter, car sharing

proprietary GenericId, -- defined by the issuer

vehicleDynamic VehicleDynamic,

...

}

StationPoint ::= SEQUENCE {

station Station,

platform VisibleString OPTIONAL,

subLocationProprietary GenericId OPTIONAL, -- defined by the issuer

...

}

Vehicle ::= SEQUENCE {

id VehicleIdentifier,

place CoachPlaces OPTIONAL,

-- for identifying at which carriage and seat/compartment this barcode is placed, if at a seat

subLocationProprietary GenericId OPTIONAL,

-- when affixed non-seat items or sub-items within a compartment, defined by the issuer

...

}

-- Representing a barcode/tag that is updated as the vehicle progresses along its route

VehicleDynamic ::= SEQUENCE {

vehicleId VehicleIdentifier,

currentStop Station,

transport TransportId OPTIONAL,

line LineId OPTIONAL,

terminusStop Station,

...

}

VehicleIdentifier ::= CHOICE {

evn INTEGER (0..999999999999),

-- ERA European Vehicle Number, including the check digit

vin VisibleString (SIZE (17) ^ FROM ("A".."Z" | "0".."9")), -- VIN per ISO 3779

proprietary GenericId, -- defined by the issuer

...

}

-- Built upon GBFSv3.0

-- Reference: https://github.com/MobilityData/gbfs-json-schema/blob/master/v3.0/vehicle_types.json

SharedVehicle ::= SEQUENCE {

id GenericId, -- defined by the issuer

variety SharedVehicleVariety,

propulsion SharedVehiclePropulsionType,

returnConstraint SharedVehicleReturnConstraint,

...

}

END

Schema File uicGeneralData_v1.0.0_draft.asn

ASN-Module-GeneralData {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic (17218)

fcb (1) modules (0) general (5) v1 (1) 0}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

-- ##############################################################################################

-- # Generic definitions for common elements shared across many UIC ASN.1 modules.

-- # Version 1.0.0

-- #

-- # ISO Country codes are used to code countries.

-- # As Kosovo does not have an official ISO Country Code the following codes are used:

-- # 926 for Kosovo as numeric ISO Country Code

-- # XK for Kosovo as alphanumeric 2-character ISO Country Code

-- #

-- # Encoding and handling of text:

-- # Text fields in this specification are OCTET STRINGS.

-- # The contents of these fields MUST be encoded according to the Standard Compression Scheme for Unicode (SCSU, https://www.unicode.org/reports/tr6/tr6-4.html).

-- # For encoders than only ever output US-ASCII and ISO 8859-1 (Latin-1) between U+0020 and U+00FF, no special handling is required to generate SCSU data,

-- # the Latin-1 encoding is already valid SCSU.

-- # All decoders MUST be able to handle the full SCSU specification on reading and parsing data.

-- # The International Components for Unicode (https://icu.unicode.org/) is the recommended implementation of SCSU,

-- # if you are unsure which implementation to use, although it is by no means required.

-- #

-- # Systems dealing with the contained data MUST be compliant to DIN 91379.

-- # That is, they can handle (store, transfer, recall, and represent) all characters as specified in DIN 91379 without error.

-- # Additionally, all Unicode text, before being fed into the SCSU compressor, MUST be in Normalisation Form C.

-- # When comparing names with identity documents, or when a Latinized representation of a name is required,

-- # the system MUST transliterate according to ICAO 9303 Part 3, specifically sections 4.6 and 6.

-- # The text stored in the ticket SHOULD be in its original script, with transliteration performed by the reading device.

-- # The reading device SHOULD show both the original script, and the Latinized form.

-- #

-- # The "language" field, if present, MUST be used to select to correct Latinization of Cyrillic characters.

-- # The relevant languages for special considerations in ICAO 9303 Latinization are:

-- # - be: Belarusian

-- # - bg: Bulgarian

-- # - uk: Ukrainian

-- # - mk: Macedonian

-- # - sr: Serbian

-- #

-- # Encoding of time:

-- # Time is encoded as the number of minutes of the day from 0 = 00:00 to 1439 = 23:59.

-- # Time data elements end with "time" in their name.

-- ##############################################################################################

EXPORTS

ALL;

-- Identification of any element using a numerical, alphanumerical or binary ID, according to the code list defined in the container object.

GenericId ::= CHOICE {

idNum INTEGER, -- for numerical IDs

idIA5 VisibleString, -- for alphanumerical IDs

idOct OCTET STRING -- for binary IDs such as UUIDs

}

GenericCode {IdType} ::= SEQUENCE {

codeTable CHOICE {

issuer NULL,

-- Bilaterally agreed code table of the 'issuer' defined in issuingDetail.

productOwner NULL, -- Bilaterally agreed code table provided by the product owner.

carrier NULL,

-- Bilaterally agreed code table provided by the carrier(s) participating in the related route segment.

area NULL,

-- Bilaterally agreed code table for the area defined by the element 'concernedArea' defined in the container object.

national INTEGER (0..999),

-- National code list of the national authority the country defined by its ISO 3166-1 numeric code.

company CompanyCode

-- Bilaterally agreed code table provided by the company defined according to its CompanyCodeType.

},

codeTableVersion INTEGER (0..255) OPTIONAL,

id IdType

}

-- A STOP PLACE in Transmodel (EN 12896-2:2016 § 5.4.3)

Station ::= SEQUENCE {

station CHOICE {

-- ERA TEL TSI Primary Location Code, as per https://teleref.era.europa.eu

-- A 7 digit code (country code + 5 digit local code) rail station codes.

-- A 9 digit code (2-digit scope code + country code + 5 digit local code) equates to non-rail station codes.

era INTEGER (1..999999999),

generic GenericCode {GenericId}

},

stationNameUTF8 UnicodeText OPTIONAL

}

StationSet ::= SEQUENCE {

set CHOICE {

-- Where a station group is defined a number of stations grouped together with a primary station

groupPrimary Station,

-- Explicitly listing all stations in a group

list SEQUENCE OF Station

},

setNameUTF8 UnicodeText OPTIONAL

}

-- A LINE in Transmodel (EN 12896-2:2016 § 5.3.7.4)

LineId ::= CHOICE {

publicIdentifier VisibleString (FROM ("A".."Z" | "0".."9")), -- e.g. "RE1"

generic GenericCode {GenericId}

}

-- A SERVICE JOURNEY in Transmodel (EN 12896-3:2016 § 5.3.2)

TransportId ::= CHOICE {

publicIdentifier VisibleString (FROM ("A".."Z" | "0".."9")), -- e.g. "ICE107"

generic GenericCode {GenericId}

}

-- A geographic area defined under the Nomenclature of Territorial Units for Statistics (Regulation EC 1059/2003).

-- Divisions all the way down to the Local Administrative Unit are permitted.

-- NUTS codes are only defined for members of the EU, the EFTA, and EU candidate countries.

-- FAUs are permitted standalone, e.g. DE025F (Freiburg im Breisgau) is coded with the subdivision "025F".

-- LAUs must be appended to their NUTS3 code, e.g. DE13308316011 for Emmendingen, Stadt.

-- For those countries outside the NUTS system:

-- - the UK maintains a compatible system since Brexit called the International Territorial Level;

-- - otherwise, use the the OECD Territorial Region codes (http://oe.cd/geostats).

-- - if none of the above applies for a country, a choice of suitable system MUST be defined by UIC,

-- users MUST NOT define bilateral subdivisions.

NUTSArea ::= SEQUENCE {

-- ISO 3166-1 numeric code

country INTEGER (0..999),

subdivision VisibleString (FROM ("A".."Z" | "1".."9")) OPTIONAL

}

-- One or more areas of geographic validity

AreaSet ::= CHOICE {

-- European NUTS code.

nuts SEQUENCE OF NUTSArea,

generic GenericCode {

CHOICE {

-- Sequence of area/zone identifiers

idNum SEQUENCE OF INTEGER,

-- e.g. sequence of allowed area/zone numbers such as {1,5,23}

idIA5 SEQUENCE OF VisibleString,

-- e.g. areas/zones described with text such as {"M","1-3"}

idOct SEQUENCE OF OCTET STRING,

-- e.g. sequence of Calypso NetworkIds such as {'250901'H,'250072'H}

-- Bit representation of areas/zones.

-- Recommended encoding if applicable: bit n (considering that bit 0 = right-most bit) encodes area/zone n+1, bit value 1 = area/zone is allowed, bit value 0 = area/zone is forbidden.

idBit BIT STRING

-- e.g. bitmap of allowed areas/zones such as '10101110010'B for areas/zones 2, 5, 6, 7, 9 and 11

}

}

}

-- Place data according to TEL TSI B.5

-- placeString = place number ranges in case of groups

CoachPlaces ::= SEQUENCE {

coach VisibleString OPTIONAL,

-- Printable place string (e.g. "15-18, 21, 22")

placeString VisibleString OPTIONAL,

-- Printable place description

placeDescription UnicodeText OPTIONAL,

-- Individual places

placeNumber SEQUENCE OF PlaceNumber OPTIONAL,

details PlaceDetails OPTIONAL

}

-- Identification of an individual place

PlaceNumber ::= CHOICE {

placeNum INTEGER (1..999),

placeIA5 VisibleString

}

-- Compartment details according to TEL TSI B.5

PlaceDetails ::= SEQUENCE {

-- Per TEL TSI Code List B.5.51.1

coachType INTEGER (0..99),

-- Per TEL TSI Code List B.5.51.2

compartmentType INTEGER (0..99),

-- Per TEL TSI Code List B.5.51.3

specialOffers INTEGER (0..99),

description UnicodeText OPTIONAL

}

-- A TRANSPORT ORGANIZATION in Transmodel (EN 12896-1:2016 § 5.6.8)

CompanyCode ::= CHOICE {

-- For companies within the EU this field SHALL be their ERA assigned Organisation Code.

-- For others this field SHALL be their UIC assed RICS Code.

-- If a company has no such code, otherCode MAY be used.

-- ERA Organisation Codes are available from https://teleref.era.europa.eu/

-- UIC RICS Codes are available from https://uic.org/support-activities/it/rics

orgCode VisibleString (SIZE (4) ^ FROM ("A".."Z" | "0".."9")),

otherCode SEQUENCE {

-- The value of 'codeTable' identifies the company identifier format according to the following:

-- "+" + [2-letter uppercase ISO 3166 country code] + [addon, chosen by the national standards body of that country]

-- "_" + [RICS or ERA Organisation Code] + [addon, chosen by this company]

-- "*" + [addon] - private use, not guaranteed to avoid clashes

-- Compressed company form (i.e. "!I", "!C", "!P") are not permitted here.

-- Any other value only after registration in the company_code.csv registry.

-- The use of unregistered values (outside of the national, company, and private use ranges) is strictly forbidden.

-- All values should be registered via the UIC Github repository.

codeTable VisibleString (SIZE (1..16)),

code VisibleString

}

}

-- Compressed Unicode text

UnicodeText ::= SEQUENCE {

-- SCSU encoding of the textual data

text OCTET STRING,

-- ISO 639-1 coding (lower case) of the text's language

language VisibleString (SIZE (2) ^ FROM ("a".."z")) OPTIONAL

}

-- Generic types for geo coordinates

GeoCoordinate ::= SEQUENCE {

position GeoUnit,

coordinateSystem GeoCoordinateSystem DEFAULT wgs84,

accuracy GeoUnitType OPTIONAL

-- If omitted the accuracy is unknown

}

GeoCoordinateSystem ::= ENUMERATED {

wgs84 (0), -- WGS 84 standard system

grs80 (1) -- (outdated) GRS 80 coordinate system

}

GeoUnitType ::= ENUMERATED {

tenthMilliDegree (0),

-- 1 / 10000 degree is approx. 11 meter on earth surface

milliDegree (1), -- approx 110 meter on earth surface

centiDegree (2), deciDegree (3)

}

GeoUnit ::= CHOICE {

tenthMilliDegree SEQUENCE {

longitude INTEGER (-1800000..1800000),

latitude INTEGER (-900000..900000)

},

milliDegree SEQUENCE {

longitude INTEGER (-180000..180000),

latitude INTEGER (-90000..90000)

},

centiDegree SEQUENCE {

longitude INTEGER (-18000..18000),

latitude INTEGER (-9000..9000)

},

deciDegree SEQUENCE {

longitude INTEGER (-1800..1800),

latitude INTEGER (-900..900)

}

}

-- Generic timestamp, expressed in UTC

Timestamp ::= SEQUENCE {

year INTEGER (2016..2269),

-- The number of the day in the year (1st Jan = 1)

day INTEGER (1..366),

-- The number of the minutes of the day

time INTEGER (0..1439)

}

-- Generic data container.

--

-- The value of 'dataFormat' identifies how 'data' is encoded:

-- "+" + [2-letters uppercase ISO 3166 country code] + [addon, chosen by the national standards body of that country]

-- "_" + [RICS or ERA Organisation Code] + [addon, chosen by this company]

-- "!I" + [addon, chosen by the issuer] - equivalent to the _RICS format, without repetition of the issuer's code

-- "!C" + [addon, chosen by the carrier] - equivalent to the _RICS format, without repetition of the carriers's code

-- "!P" + [addon, chosen by the product owner] - equivalent to the _RICS format, without repetition of the product owner's code

-- "*" + [addon] - private use, not guaranteed to avoid clashes

-- Any other value only after registration in the extension_data.csv registry

-- The use of unregistered values (outside of the national, company, and private use ranges) is strictly forbidden.

-- All values should be registered via the UIC Github repository.

Data ::= SEQUENCE {

dataFormat VisibleString (SIZE (1..16)),

data OCTET STRING

}

-- Per NeTEx PersonalVehicleCategory (CEN/TS 16614-5:2022 § 10.1.4.3.4.2)

SharedVehicleVariety ::= ENUMERATED {

scooter (0), -- Scooter - small wheeled low mobile platform

bicycle (1), -- Bicycle.

tricycle (2), -- Tricycle.

tandem (3), -- Tandem bicycle.

moped (4), -- Moped (Small motorbike).

motorcycle (5), -- Motorcycle.

quadbike (6), -- Motorcycle.

car (7), -- Car of any size.

microCar (8), -- Extremely small vehicle.

miniCar (9), -- Very small vehicle.

smallCar (10), -- Small vehicle.

mediumCar (11), -- Compact vehicle.

largeCar (12), -- Large vehicle.

minivan (13), -- Minivan.

transporter (14), -- Large people transporter / minibus.

snowmobile (15), -- Snowmobile.

other (16), -- Other category.

...

}

-- Per NeTEx PropulsionType (CEN/TS 16614-5:2022 § 10.1.4.3.2.2)

SharedVehiclePropulsionType ::= ENUMERATED {

combustion (0), -- Combustion of any sort

hybrid (1), -- Electric/Combustion Hybrid

human (2), -- Human powered (pedal, scoot etc)

electricAssist (3), -- Human power with electric assistance.

other (4), -- Other power

...

}

-- As per GBFSv3.0, to be replaced by a NeTEx mapping once standardised

SharedVehicleReturnConstraint ::= ENUMERATED {freeFloating (0), roundtripStation (1), anyStation (2), hybrid (3),

...}

END

Schema File uicMultiModalTicketData_v1.0.0_draft.asn

-- Creator: ASN.1 Editor (http://asneditor.sourceforge.net)

-- Author: ClemensGantert

-- Created: Mon Jun 28 14:14:28 CEST 2021

-- Last modification: Fri Oct 27 CEST 18:00:00 CEST 2025

-- Copyright UIC 2026

ASN-Module-MultiModalTicketData {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise (1) uic

(17218) fcb (1) modules (0) mmtd (4) v1 (1) 0}

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

-- imports and exports

-- EXPORTS ALL;

IMPORTS

GenericId, GenericCode, CompanyCode, Station, StationSet, AreaSet, NUTSArea, LineId, TransportId, GeoCoordinate,

GeoUnit, CoachPlaces, Data, UnicodeText, Timestamp, SharedVehicleVariety, SharedVehiclePropulsionType,

SharedVehicleReturnConstraint

FROM ASN-Module-GeneralData {iso (1) identified-organization (3) dod (6) internet (1) private (4) enterprise

(1) uic (17218) fcb (1) modules (0) general (5) v1 (1) 0};

-- ##############################################################################################

-- #

-- # version 1.0.0 - Value "MMT1" in element dataFormat of the UICBarcodeHeader

-- #

-- ##############################################################################################

-- ##############################################################################################

-- #

-- # Stations can be coded using the UIC and upcoming ERA code lists. Proprietary codes are

-- # possible based on bilateral agreements. Format: 1..9999999 or alphanumeric without

-- # special character (VisibleString).

-- #

-- # ! INTEGERS must not exceed the value of 9,223,372,036,854,775,807 (64 bit) even in case

-- # ! they are unrestricted!!!

-- # !

-- # ! Some elements like 'reference' or 'cardId' are defined as an unrestricted INTEGER.

-- # ! Unlike other numerical values 'cardId' and 'reference' can be larger than a usual 32 bit INTEGER.

-- # ! Some ASN.1 implementation tools are limited to 32 bit integers which is too small.

-- # ! Please ensure to use a tool capable of dealing with larger numbers.

-- #

-- # Optional BOOLEANs have three values: TRUE, FALSE, "unknown" = the boolean is absent from the data.

-- #

-- # Encoding of date:

-- # The issuing date is given in UTC, but some other date values are given in local time where the exact time zone is not known.

-- #

-- # For local dates the date is associated with the corresponding location. E.g.:

-- # 'validFrom' date -> location where the journey starts

-- # 'validUntil' date -> location where the journey covered by the ticket ends

-- #

-- # There could be rare cases where this does not provide a unique interpretation:

-- # e.g. open ticket or pass without start and end location for a collection of areas/zones or countries with different time zones.

-- # In these cases the fare conditions must clarify the rules for these cases (e.g. by allowing to use the

-- # ticket a few hours after the end of validity).

-- #

-- # The difference in days is calculated from dates only, ignoring the time and time zone information.

-- #

-- # Example 1: (31.12.2017 23:05 UTC == 01.01.2018 00:05 CET) :

-- # issuing date (UTC): 31.12.2017 23:05 == 01.01.2018 00:05 CET

-- # issuingYear = 2017

-- # issuingDay = 365

-- # issuingTime = 1385

-- # local departure date (CET): 01.01.2018 00:15 == 31.12.2017 23:15 UTC

-- # departureDate = 1 (= 01.01.2018 - 31.12.2017)

-- # departureTime = 15

-- # departureUTCOffset = -4 (UTC = local + offset * 15 Minutes)

-- #

-- #

-- # Example 2: (01.01.2018 00:05 UTC == 31.12.2017 20:05 AST)

-- # issuing date (UTC): 01.01.2018 00:05 UTC == 31.12.2017 20:05 AST

-- # issuingYear = 2018

-- # issuingDay = 1

-- # issuingTime = 5

-- # local departure date (AST): 31.12.2017 22:05 AST == 1.1.2018 02:05 UTC

-- # departureDate = -1 (= 31.12.2017 - 01.01.2018)

-- # departureTime = 1325

-- # departureUTCOffset = 16 (UTC = local + offset * 15 Minutes)

-- #

-- # departureDate can become -1 with a departure west of the GMT zone only

-- #

-- #

-- # Tickets might cover multiple time zones where 'validFrom' and 'validUntil' is not linked to a specific time zone (e.g. Eurail Pass valid for whole Europe).

-- # In this case the date times are to be interpreted as local at the actual place where the traveler is and the ticket is checked. The utcOffset must not be

-- # provided for these local date times.

-- #

-- # !!In general the issuing date and time is always UTC whereas the other dates and times are always local!!

-- #

-- # It is RECOMMENDED not to use the utcOffset until there is a need to do so.

-- #

-- # ASN.1 Extensions:

-- # The specification makes use of the ASN.1 extension marker ("...").

-- # Extensions might be defined in future versions of this specification.

-- # Implementations must support this extension feature of ASN.1, at least they must be able to ignore extensions while decoding the data.

-- # ASN.1 extensions will be defined by standards action. It is not allowed to define bilateral extensions.

-- #

-- # Bilateral Extensions:

-- # Bilateral extensions can be included in the data element "Data".

-- # They should only be used:

-- # - to add elements that are not present in the current ASN.1 file (but not to replace them).

-- # - to add elements that are truly specific. If these elements could be useful to others

-- # by being integrated into the current ASN.1 file, it is recommended to contact the

-- # UIC "FCB User Group" to propose their integration into the standard.

-- # - through a bilateral agreement if they are to be used by others.

-- # It is also recommended to manage these extensions as with the rest of the standard, i.e.

-- # by defining them in ASN.1 and storing in 'extensionData' their encoding using

-- # ASN.1 Canonical Unaligned Packed Encoding Rules.

-- #

-- ##############################################################################################

-- ##############################################################################################

-- Type assignments

-- ##############################################################################################

-- ##############################################################################################

-- UniversalTicketData is the basic entry point of the data structure.

-- Its data include:

-- - issuer information (this is the only mandatory information)

-- - information on the travelers independent from the transport document

-- - information on the group

-- - the details of the transport document

-- - information required for the control process

-- - proprietary extensions

-- ##############################################################################################

UniversalTicketData ::= SEQUENCE {

-- Data specific to the issuer

issuingDetail IssuingData,

-- Traveler data. Present if personal data about the travelers are needed and legally allowed,

-- otherwise omitted.

-- These data do not include tariff details of the booked tariffs.

-- Tariff data are included in the transport document details and might

-- have a reference to the traveler defined here.

-- The index of the sequence can be used to identify the

-- traveler within other contexts (e.g. in assigned tariffs).

traveler SEQUENCE OF TravelerType OPTIONAL,

-- Group details. Present if the traveler is a member of a group, otherwise omitted.

groupDetails GroupDetailsType OPTIONAL,

-- Data of the transport documents.

-- Only one element should be a transportProduct, the others being associated documents.

-- (e.g. associated commercial card, associated tokens, associated carCarriage, vouchers...)

transportDocument SEQUENCE SIZE (1..16) OF DocumentData OPTIONAL,

-- Data specific to support the ticket control process.

-- If TransportProduct is used, the control data should be defined in its conditions

-- and this global controlDetail element should be omitted.

controlDetail ControlData OPTIONAL,

-- Proprietary data defined bilaterally.

extension SEQUENCE OF Data OPTIONAL,

...

}

-- ##############################################################################################

-- The choice on the different transport documents that can be included in the bar code data:

-- - universal transport product

-- - reservation of car carriage (VET)

-- - voucher

-- - customer card (including bonus cards and reduction cards)

-- - parking ground tickets

-- - station access / station passage tickets

-- - delay confirmation

-- - token

-- - proprietary documents as an extension

-- #############################################################################################

DocumentData ::= CHOICE {

-- Universal transport product.

-- Can be used for tickets (incl. FIP), passes, reservations, countermarks.

transportProduct TransportProductData,

-- Voucher.

voucher VoucherData,

-- Simple customer card either to identify a customer and / or to provide reductions or loyalty.

-- For detailed or complex commercial cards (e.g. valid only on a specific OD), use transportProduct instead.

customerCard CustomerCardData,

-- Standalone car parking slot.

-- For parking as a part of a more global journey, use transportProduct instead.

parkingGround ParkingGroundData,

-- Ticket to pass the gates at a station.

stationPassage StationPassageData,

-- Delay confirmation.

delayConfirmation DelayConfirmation,

-- Token (specific id linked to the ticket).

token TokenType,

-- Proprietary data defined bilaterally.

extension Data,

...

}

-- ##############################################################################################

-- Confirmation of the delay of a transport

-- ##############################################################################################

DelayConfirmation ::= SEQUENCE {

-- Transport number of the delayed transport.

transportNumber TransportId OPTIONAL,

-- Planned departure date and time of the delayed transport in local time at the station where

-- delay became relevant (see below).

departure ValidFromType OPTIONAL,

-- Station where the delay became relevant.

station Station OPTIONAL,

-- Indication if the transport has been delayed (and how long) or canceled

delayOrCancellation CHOICE {

-- Indication that the transport was delayed, and delay in minutes at the mentioned station.

-- The delay is negative if the transport left earlier than scheduled.

delay INTEGER (-1439..1439),

-- Indication that the transport was cancelled.

transportCancelled NULL

},

-- Type of confirmation provided.

confirmationType ConfirmationType DEFAULT travelerDelayConfirmation,

-- Affected original ticket(s).

affectedTickets SEQUENCE OF TicketLinkType OPTIONAL,

-- Additional readable information that cannot be described using the other elements.

infoText UnicodeText OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

-- ##############################################################################################

-- Details of the issuer and the issue of the ticket

-- - details on the issuer

-- - indication of test tickets (specimen)

-- - payment details: method of payment, currency

-- - proprietary id & booking id of the issuer to be used to identify the sale within his ecosystem

-- - web link to display more information for the customer

-- - retail information

-- - proprietary extension data

-- ##############################################################################################

IssuingData ::= SEQUENCE {

-- Issuer of the binary content of the transport document, if different from the security provider as encoded in the barcode header.

issuer CompanyCode OPTIONAL,

issuedAt Timestamp,

-- Specimen indicates a test specimen not valid for traveling.

specimen BOOLEAN,

securePaperTicket SecurePaperTicket,

-- Currency of the price - ISO 4217 numeric currency code.

currency INTEGER (0..999) DEFAULT 978, -- 978 = Euro

-- Fraction of the prices included.

currencyFract INTEGER (0..3) DEFAULT 2,

-- ID to uniquely identify this barcode within the context of the issuer and an appropriate time range.

-- This can be used to query the ticket in the eTCD.

ticketControlNumber GenericId,

-- Location of sale (transport number and/or line number) in case of a sale on board of a transport.

issuedOnBoard SEQUENCE {

-- Identifier of a specific journey, e.g. the running number of an individual train service

transport TransportId OPTIONAL,

-- Identifier of the general route, e.g. a train running as an RE1 service

line LineId OPTIONAL

} OPTIONAL,

-- Retail information.

productRetail ProductRetailData OPTIONAL,

-- ISO 639-1 coding (lower case) of the language preferred for the traveler / ticket holder.

preferredLanguage VisibleString (SIZE (2) ^ FROM ("a".."z")) OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

-- Secure paper indicates that this barcode is issued with a secure paper ticket

-- to ensure the uniqueness of the ticket. This allows to use the same control

-- procedure as for e-tickets also for anonymous tickets.

-- The double use of the ticket is in this case excluded by the secure paper.

SecurePaperTicket ::= ENUMERATED {

notOnSecurePaper (0), onSecurePaper (1),

-- The ticket is only valid if additionally physically stamped (DE: Entwerten)

onSecurePaperValidationStampRequired (2)

}

-- ##############################################################################################

-- Data allowing to describe all possible information about product retail

-- ##############################################################################################

ProductRetailData ::= SEQUENCE {

-- Identifier of the company that is the retailer for this contract of carriage, as per the definition of a retailer in ISO 24014-1.

retailerId CompanyCode OPTIONAL,

-- Retailer specific identifier of the server that sold the contract of carriage.

retailServerId GenericId OPTIONAL,

-- Retailer specific identifier of the ticket generation platform.

-- If omitted, identical to retailServerId

retailGeneratorId GenericId OPTIONAL,

-- Channel through which the traveler requested the contract / the barcode.

retailChannel RetailChannelType OPTIONAL,

-- Type of equipment that distributed the contract / the barcode

-- (code table of the product retailer).

retailEquipmentType GenericId OPTIONAL,

-- Identifier of the final distribution point of the barcode

-- (code table of the product retailer).

retailPointId GenericId OPTIONAL,

-- Traceability information linked to the barcode or contract generation

-- (e.g. name and version of the generation software)

-- (code table of the product retailer).

retailTraceability VisibleString OPTIONAL,

...

}

-- ##############################################################################################

-- Data supporting the control process, whether it is an automatic check carried out by a gate,

-- or a manuel check carried out by an inspector:

-- - List of items which the traveler can use to identify himself or the unique

-- usage of the ticket

-- (card ids, parts of identity card numbers, credit card numbers...)

-- - Instructions on the inspection to be made on board

-- ##############################################################################################

ControlData ::= SEQUENCE {

-- Indicator of whether online validation of the ticket is required, and how it may be performed.

onlineValidationRequired OnlineValidationStatus DEFAULT notPossible,

onlineValidationType OnlineValidationType OPTIONAL,

-- Indicator of whether ID must be checked to identify the traveler.

-- Field meaning:

-- FALSE: don’t check ID documents at all, regardless of contents of the traveler's identificationDocument field

-- TRUE, but with an empty identificationDocument field: check the traveler's identity, using whatever document is acceptable to the carrier

-- TRUE, with an identificationDocument field: check the traveler's identity, using the identification document specified

identificationRequired BOOLEAN,

-- Indicator of whether validation of the traveler age is required (e.g. in case of reductions).

ageCheckRequired BOOLEAN,

-- Indicator of whether validation of the travelers reduction card is required (e.g. in case of reductions).

reductionCardCheckRequired BOOLEAN,

-- Tickets, that are not encoded in this ticket, which need to be controlled together with this ticket to form

-- a valid ticket.

linkedTickets SEQUENCE OF TicketLinkType OPTIONAL,

-- Free text instructions for specific control instructions to be presented to the ticket controller where these

-- instructions can't be expressed in structured data, e.g. "Verify no more than two people over 18" on a family group ticket.

infoText UnicodeText OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

OnlineValidationStatus ::= ENUMERATED {

notPossible (1),

-- no information is available online so it is useless to check.

optional (2),

-- the ticket can be fully validated and checked offline, i.e. if the ticket

-- contains all the information necessary for validation and inspection and is therefore self-sufficient,

-- but some operators, in an interoperability scenario, nevertheless choose to operate this ticket in ABT mode and validate it online.

mandatory (3)

-- online operations must be performed to validate or check this ticket. E.g.:

-- - For a Pay-as-you-go ticket, check during inspection that it has been validated.

-- - For a ticket valid for 3 hours from the first validation, check when this first validation took place.

-- - For a fully ABT (Account Based Ticketing) document: check the details of the ticket in the ABT account (whose ID may be specified in 'token').

-- - For a ticket authorizing a limited number of trips: check how many trips have already been made.

-- - For a ticket that can be refunded until the last moment: check if the ticket has been cancelled and refunded.

}

OnlineValidationType ::= CHOICE {

eTCD NULL, -- The ticket may be checked against the UIC's eTCD

securityProviderProprietary NULL,

-- The ticket may be checked against a proprietary platform of the security provider; e.g. the Deutschlandtarifverbund's security portal.

issuerProprietary NULL,

-- The ticket may be checked against a proprietary platform of the issuer; e.g. bwegt check-in check-out (Baden-Württemberg).

external CompanyCode,

-- The ticket may be checked against the platform operated by the specified company; e.g. Entur

other VisibleString,

-- The ticket may be checked against some other external platform, as identified by the string

...

}

-- ##############################################################################################

-- Description of a transport product, which may be:

-- - A 'ticket' (allowing the use of a transportation service).

-- - A 'reservation' (assigning a place in a transport, but not allowing travel unless accompanied by a ticket).

-- - A 'commercialCard' (granting benefits when purchasing a ticket).

-- - A 'proprietary' product (very specific product, in case none of the above choices apply).

-- The type of the product is indicated by generalConditions.productType.

-- ##############################################################################################

TransportProductData ::= SEQUENCE {

-- Geographical validity of the transport product.

-- This validity is described through successive segments that make up the route.

-- Omitted if the transport product is a 'reservation' (the concerned segment or transport being described by generalConditions.transportService.reservation)

geoValidity SEQUENCE SIZE (1..16) OF GeoValiditySegment OPTIONAL,

-- To be provided in case the return route differs.

-- Omitted if the transport product is a 'reservation'.

returnGeoValidity SEQUENCE SIZE (1..16) OF GeoValiditySegment OPTIONAL,

-- General conditions that apply to all segments of the route.

-- Mandatory if the transport product is a 'reservation' (this reservation being described through this 'generalConditions' element).

generalConditions ConditionsType OPTIONAL,

-- Specific conditions that can be applied to segments of the route.

-- When a segment refers to specific conditions, these are added to the general conditions.

-- If a particular condition is defined in both the general and then specific conditions,

-- the one in specific conditions overrules the one in the general conditions.

-- Omitted if the transport product is a 'reservation'.

specificConditions SEQUENCE SIZE (1..32) OF ConditionsType OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

-- ##############################################################################################

-- Information for linking a car to a reservation

-- ##############################################################################################

CarType ::= SEQUENCE {

-- Unless spaces form an integral part of identifying a plate, the must not be included.

-- E.g. a German car with the plate SB[TÜV Sticker]A 123 is to be encoded as "SB-A123".

-- Dutch duplicate codes are not encoded, i.e. the small number above the first dash does not

-- form part of the plate.

--

-- The plate should be represented in the Latin alphabet and Arabic numerals where possible,

-- but not that this isn't always possible, e.g. the registration district of a Chinese plate.

--

-- The country of registration must not be encoded in the plate.

vehiclePlate UnicodeText,

trailerPlate UnicodeText OPTIONAL,

-- Per TEL TSI Code List B.5.29

carCategory INTEGER (1..8),

-- Per TEL TSI Code List B.5.29

boatCategory INTEGER (1..8) OPTIONAL,

textileRoof BOOLEAN,

roofRack RoofRackType DEFAULT norack,

-- Height of a roof rack in cm.

roofRackHeight INTEGER (0..99) OPTIONAL,

-- Number of boats on a rack.

attachedBoats INTEGER (0..2) OPTIONAL,

-- Number of bicycles on a rack.

attachedBicycles INTEGER (0..4) OPTIONAL,

-- Number of surf boards on a rack.

attachedSurfboards INTEGER (0..5) OPTIONAL,

-- Reference to an entry on the loading list.

loadingListEntry INTEGER (0..999) OPTIONAL,

loadingDeck LoadingDeckType OPTIONAL,

-- Loading of the car in local date and time at the loading station.

-- Number of the days calculated from the issuing date.

beginLoading ValidFromType,

endLoading ValidUntilType OPTIONAL,

...

}

-- ----------------------------------------------------------------------------------------------

-- Type definitions used in TransportLinkType and ReservationSegmentType

-- ----------------------------------------------------------------------------------------------

DepartureDateTimeType ::= SEQUENCE {

-- Departure date and time in local time at the departure station.

-- Number of days counted from the issuing date.

departureDate INTEGER (-1..500) DEFAULT 0,

departureTime INTEGER (0..1439),

-- Offset in units of 15 minutes from local time to UTC

-- (UTC = local + offset * 15 minutes).

-- The UTC offset can be used to calculate the duration of the travel.

-- Times to be shown on a ticket should always be the local times.

departureUTCOffset INTEGER (-60..60) OPTIONAL

}

ArrivalDateTimeType ::= SEQUENCE {

-- Arrival date and time in local time at the arrival station.

-- Number of days counted from the departure date.

arrivalDate INTEGER (-1..30) DEFAULT 0,

arrivalTime INTEGER (0..1439) OPTIONAL,

-- Offset in units of 15 minutes from local time to UTC

-- (UTC = local + offset * 15 minutes).

-- Should be omitted in case it is the same as for departure.

-- The UTC offset can be used to calculate the duration of the travel.

-- Times to be shown on a ticket should always be the local times.

arrivalUTCOffset INTEGER (-60..60) OPTIONAL

}

-- ##############################################################################################

-- Transport link data.

-- Describes a transport link associated to a route or to a part of a route.

-- Quite similar to ReservationSegmentType but without assigned place(s).

-- ##############################################################################################

TransportLinkType ::= SEQUENCE {

-- Station where the transport link begins.

-- Omitted if it is the same station as the origin station of the associated segment.

originStation Station OPTIONAL,

-- Station where the transport link ends.

-- Omitted if it is the same station as the destination station of the associated segment.

destinationStation Station OPTIONAL,

-- Transport numbers (= service number, train number) allowed for the transport link.

-- Multiple numbers are allowed (e.g. two trains coupled together, each of them having its own train number).

transportNumber SEQUENCE OF TransportId OPTIONAL,

-- Departure date and time in local time at the departure station of the transport link.

-- If omitted, departureDateTime is assumed to be equal to validFrom and validFromUTCOffset of the container object.

departureDateTime DepartureDateTimeType OPTIONAL,

-- Arrival date time in local time at the arrival station of the transport link.

arrivalDateTime ArrivalDateTimeType OPTIONAL,

-- Travel class.

-- For transport modes where the concept of class does not exist, must be set to notApplicable.

-- Omitted if the class is the same as the class of the associated leg.

classCode TravelClassType DEFAULT second,

-- Service brand

-- Omitted if this specific service brand is already specified in the associated leg, and is the only one that is specified for this leg

-- (a leg can allow many service brands, but a transport link only specifies one).

serviceBrand ServiceBrandType OPTIONAL,

-- Per TEL TSI Code List B.5.308

-- Omitted if the same service level is already specified in the description of the associated leg.

serviceLevel VisibleString (SIZE (1..2) ^ FROM ("A".."Z" | "0".."9")) OPTIONAL,

...

}

-- ##############################################################################################

-- Reservation data.

-- Describes a reservation associated to a route, or to a part of a route.

-- Usable for a standalone reservation and for a reservation linked to a leg.

-- ##############################################################################################

ReservationSegmentType ::= SEQUENCE {

-- TRUE if using this transport service is mandatory.

-- FALSE if the traveler can use another transport service

mandatoryService BOOLEAN DEFAULT TRUE,

-- Station where the reservation begins.

-- Omitted if it is the same station as the origin station of the associated segment.

originStation Station OPTIONAL,

-- Station where the reservation ends.

-- Omitted if it is the same station as the destination station of the associated segment.

destinationStation Station OPTIONAL,

-- Transport number (=service number, train number).

transportNumber TransportId OPTIONAL,

-- Departure date and time in local time at the departure station.

-- If omitted, departureDateTime is assumed to be equal to validFrom and validFromUTCOffset of the container object.

departureDateTime DepartureDateTimeType OPTIONAL,

-- Arrival date time in local time at the arrival station.

arrivalDateTime ArrivalDateTimeType OPTIONAL,

-- Travel class.

-- For transport modes where the concept of class does not exist, must be set to notApplicable.

-- Omitted if the class is the same as the class of the associated leg.

classCode TravelClassType DEFAULT second,

-- Service brand

-- Omitted if this specific service brand is already specified in the associated leg, and is the only one that is specified for this leg.

-- (a leg can allow many service brands, but a reservation only specifies one).

serviceBrand ServiceBrandType OPTIONAL,

-- Per TEL TSI Code List B.5.308

-- Omitted if the same service level is already specified in the description of the associated leg.

serviceLevel VisibleString (SIZE (1..2) ^ FROM ("A".."Z" | "0".."9")) OPTIONAL,

-- Per TEL TSI B.5

service ServiceType DEFAULT seat,

-- Reserved places

coachPlaces SEQUENCE OF CoachPlaces OPTIONAL,

-- Number of persons on the ticket having a reservation without assigned places

numberOfOverbooked INTEGER (0..200) DEFAULT 0,

-- Description of berths

berth SEQUENCE OF BerthDetailData OPTIONAL,

-- When a reservation includes transportation of a car, this field is used

-- include details of the book car or cars.

cars SEQUENCE OF CarType OPTIONAL,

...

}

-- ##############################################################################################

-- Data for vouchers

-- /!\ included are quite basic, further study is required (e.g. through a meeting with people knowing vouchers).

-- ##############################################################################################

VoucherData ::= SEQUENCE {

-- Identification of the product (owner, id, textual description).

product ProductType,

-- Internal reference of the voucher.

reference GenericId OPTIONAL,

-- Begin / end of validity in local date wherever the traveler is located.

-- Valid from 00:00 to 23:59.

-- Number of year.

validFromYear INTEGER (2016..2269),

-- Number of the day in the year (1.1. = 1).

validFromDay INTEGER (0..500),

-- Number of year.

validUntilYear INTEGER (2016..2269),

-- Number of the day in the year (1.1. = 1).

validUntilDay INTEGER (0..500),

-- Value of the voucher, in the currency and fraction defined in IssuingData.

value INTEGER DEFAULT 0,

-- Additional readable information that cannot be described using the other elements.

infoText UnicodeText OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

-- ##############################################################################################

-- Data for groups of travelers

-- ##############################################################################################

GroupDetailsType ::= SEQUENCE {

-- TRUE if this ticket is the participant card (= countermark) only, not valid without the real ticket of the ticket holder.

-- In case participant cards are used, all members of the group except the ticket holder (group leader) will have isGroupParticipantCard: TRUE.

-- Additionally, linkedTickets SHOULD be set to the ticket of the group leader.

-- FALSE if this ticket is the real ticket from the group leader.

isGroupParticipantCard BOOLEAN,

-- Readable name of the group in case of a group ticket.

groupName UnicodeText OPTIONAL,

...

}

-- ----------------------------------------------------------------------------------------------

-- Types describing temporal conditions, used in several other type definitions

-- ----------------------------------------------------------------------------------------------

ValidFromType ::= SEQUENCE {

-- Date/time validity in local time of the location where the journey starts.

-- Number of days from issuing date (-398 allows reissuing the ticket up to 13 months after the start of its validity, 800 allows issuing the ticket up to 2 years in advance).

validFromDay INTEGER (-398..800) DEFAULT 0,

-- In case UTC offset is provided (NOT RECOMMENDED) the local date time is the time zone of validity region. The region where the ticket is valid must not cover more than one time zone.

-- In case no UTC offset is provided (RECOMMENDED) the local date time is the time zone of the current location of the traveler.

validFromTime INTEGER (0..1439) DEFAULT 0

}

ValidUntilType ::= SEQUENCE {

-- Date/time validity in local time of the location where the journey ends.

-- Number of days from validFrom date, 0 = validUntilDay is equal to the first day of validity.

validUntilDay INTEGER (-1..500) DEFAULT 0,

validUntilTime INTEGER (0..1439) DEFAULT 1439

}

ExtendedValidUntilType ::= SEQUENCE {

-- Extended date/time validity (up to just over 5 years) in local time of the location where the journey ends.

-- Number of days from validFrom date.

validUntilDay INTEGER (501..2000),

validUntilTime INTEGER (0..1439) DEFAULT 1439

}

-- ----------------------------------------------------------------------------------------------

-- Time range when a product can be used.

-- Use case examples:

-- - School transport pass valid Monday through Friday, between 07:00 and 19:00, whether it is a pollution day or not, but not on public holidays:

-- { allowedWeekdays { monday TRUE, tuesday TRUE, wednesday TRUE, thursday TRUE, friday TRUE, saturday FALSE, sunday FALSE },

-- specialDays { nationalHolidays FALSE, stateHolidays FALSE, countyHolidays FALSE, localHolidays FALSE },

-- includedTimeRange { { fromTime 420, untilTime 1440 } } }

-- - Tourist week-end pass valid every Friday-Saturday-Sunday, whether it is a special day or not:

-- { allowedWeekdays { monday FALSE, tuesday FALSE, wednesday FALSE, thursday FALSE, friday TRUE, saturday TRUE, sunday TRUE } }

-- - Pollution ticket valid only on pollution days:

-- { specialDays { pollutionDay TRUE } }

-- ----------------------------------------------------------------------------------------------

IncludedTimeRangesType ::= SEQUENCE {

-- Days of the week when the product can be used. For each day of the week:

-- - TRUE means the corresponding day is allowed.

-- - FALSE means the corresponding day is forbidden.

-- However, this authorization must take specialDays into account, if this element is also present.

-- If allowedWeekDays is omitted, the product validity does not depend on the day of the week.

allowedWeekdays WeekdaysType OPTIONAL,

-- Impact of special days on product validity. This impact takes precedence over valid weekdays. For each special day:

-- - TRUE means the product can be used on this special day (even if the weekday is not allowed by allowedWeekdays).

-- - FALSE means the product can NOT be used on this special day (even if the weekday is allowed by allowedWeekdays).

-- - Omitted means that this special day does not affect the validity defined by allowedWeekdays.

-- If specialDays is omitted, the product validity does not depend on any special day.

specialDays SpecialDaysType OPTIONAL,

-- Time ranges when the product can be used, during the days described above.

-- Omitted if the product validity does not depend on any time (but is defined for the entire days).

includedTimeRange SEQUENCE OF TimeRangeType OPTIONAL

}

WeekdaysType ::= SEQUENCE {

monday BOOLEAN,

tuesday BOOLEAN,

wednesday BOOLEAN,

thursday BOOLEAN,

friday BOOLEAN,

saturday BOOLEAN,

sunday BOOLEAN

}

-- The definition of what is a national, state, county, etc. holiday is per the tariff conditions of the product owner.

SpecialDaysType ::= SEQUENCE {

nationalHolidays BOOLEAN OPTIONAL,

-- National holiday (e.g. Christmas in France, as it is a public holiday throughout the whole country)

stateHolidays BOOLEAN OPTIONAL,

-- State holiday (e.g. Buss- und Bettag in the German Bundesland of Sachsen)

countyHolidays BOOLEAN OPTIONAL,

-- County holiday (e.g. Corpus Christi)

localHolidays BOOLEAN OPTIONAL,

-- Local holiday (e.g. Friedensfest in the German city of Augsburg)

pollutionDay BOOLEAN OPTIONAL,

-- Days when pollution levels exceed the threshold

...

}

TimeRangeType ::= SEQUENCE {

fromTime INTEGER (0..1439), -- Local time

untilTime INTEGER (0..1439) -- Local time

}

-- ##############################################################################################

-- Conditions that apply:

-- - if used for generalConditions: to the entire transport product.

-- - if used for specificConditions: to the associated leg.

-- ##############################################################################################

ConditionsType ::= SEQUENCE {

-- Detailed type of the transport product (ticket, reservation, commercial card...).

-- MUST either be present in the generalConditions, or present in all specificConditions.

productVariety ProductVarietyType OPTIONAL,

-- NUTS codes covering the whole area of validity of the ticket.

-- This does not mean that the ticket valid everywhere inside such areas, but that it definitely

-- is NOT valid outside the covering area.

-- Each GeoValiditySegment MUST have a set coveringArea, either through the genericConditions or a referenced

-- specificConditions. Tickets without a coveringArea on every segment MUST be rejected as malformed tickets.

-- Validity to specific services, transport modes, etc., may be further constrained by other conditions.

-- Examples:

-- - An international ticket from Munich to Vienna has the covering areas of "DE" and "AT"

-- - A ticket valid on buses in the Saarland has a covering area of "DEC"

-- - A ticket valid on the tram in Kehl and Strasbourg has the covering areas of "DE134" (Ortenaukreis) and "FRF11" (Bas-Rhin)

-- n.b. a NUTS Local Administrative Units (LAU) could be further appended, e.g. "DE13408317057" for Kehl, Stadt.

coveringArea SEQUENCE OF NUTSArea OPTIONAL,

-- Once a validator narrowed down the possibly valid geographic segments it MAY further narrow down segments

-- by using the coveringNetwork field.

-- This encodes the IDs of transport networks that COULD be involved in the fulfillment of transport contract.

-- There is no requirement to use this field if the coveringArea adequately narrows down the possibly valid segments.

-- Examples:

-- - In France, the codeTable of national can be used to refer to an Afnor network/region ID, e.g. to refer to the

-- Maconnais Beaujolais Agglomération: { codeTable national : 250, id idNum : 145 }

coveringNetwork SEQUENCE OF GenericCode {GenericId} OPTIONAL,

-- Identification of the product (owner, id, textual description).

product ProductType OPTIONAL,

-- Internal reference to the document (e.g. serial number of the document)

reference GenericId OPTIONAL,

-- The company that defined the above reference, if different from the document issuer.

referenceCompany CompanyCode OPTIONAL,

-- Time validity

-- Having no validFrom is allowed (e.g. ticket not yet activated, which will be reissued with an explict validFrom upon activation).

-- Having no validUntil is allowed (e.g. ticket with unlimited validity - which should nevertheless have a security expiry date in the header requiring regular reissue).

validFrom ValidFromType OPTIONAL,

validUntil ValidUntilType OPTIONAL,

rareTimingConditions RareTimingConditionsType OPTIONAL,

-- TRUE if the direction of travel must be followed as described:

-- - in generalConditions: the traveler must pass the sequence of segments in the provided order

-- (but some segments may be skipped, e.g. if 2 segments are 2 allowed alternatives for the same journey).

-- - in specificConditions: the traveler must take the transport in the direction indicated by the segment (e.g. from O to D).

-- FALSE if the direction of travel is not mandatory:

-- - in generalConditions: the traveler can travel through the described segments in any order.

-- - in specificConditions: the traveler can take the transport indicated by the segment in any direction (e.g. from O to D or from D to O).

-- omitted if the concept of direction is not relevant (e.g. for geographical validity as unordered areas).

directionIsMandatory BOOLEAN OPTIONAL,

-- Link to a specific transport services

-- Note that for a return ticket where the outbound and inbound geographic validates are the same, and thus the

-- returnGeoValidity is not encoded, this field encodes linked transport services for both the outbound and

-- inbound directions.

transportService CHOICE {

-- Link to a specific transport service without reservation

-- If present, using this transport service is mandatory

transportLink SEQUENCE OF TransportLinkType,

-- Link to a specific transport service with reservation

reservation SEQUENCE OF ReservationSegmentType

} OPTIONAL,

-- Included carriers responsible for the transport

includedCarrier SEQUENCE OF CompanyCode OPTIONAL,

-- Included transport modes. Code list: EN 1545-1 (transport type code)

includedTransportType SEQUENCE OF INTEGER (0..31) OPTIONAL,

-- Service brands valid for the route.

-- In case this list is provided the ticket is invalid on all other service brands

includedServiceBrand SEQUENCE OF ServiceBrandType OPTIONAL,

-- Travel class

-- For transport modes where the concept of class does not exist, must be set to notApplicable

classCode TravelClassType DEFAULT second,

-- Per TEL TSI Code List B.5.308

serviceLevel VisibleString (SIZE (1..2) ^ FROM ("A".."Z" | "0".."9")) OPTIONAL,

-- Tariff data (allowed passengers characteristics, discount cards used...)

-- If omitted, the ticket is valid:

-- - for all of the travelers described in the 'traveler' section if this section is present,

-- - for one passenger (without any further information) if the 'traveler' section is absent.

tariff SEQUENCE OF TariffType OPTIONAL,

-- Specific data to support the ticket inspection process

controlDetail ControlData OPTIONAL,

rareDetails RareDetailsType OPTIONAL,

...

}

-- ----------------------------------------------------------------------------------------------

-- Rare temporal details and conditions.

-- ----------------------------------------------------------------------------------------------

RareTimingConditionsType ::= SEQUENCE {

-- Extended validity for tickets valid up to just over 5 years.

-- If this element is used, the eponymous element in ConditionsType shall not be used.

-- For security reasons, such a long lasting ticket should:

-- - either have a shorter security expiry date set in the header and be regularly reissued,

-- - or integrate other countermeasures such a Security In Paper and/or the use a dedicated key.

validUntil ExtendedValidUntilType OPTIONAL,

-- Offset in units of 15 minutes from local time to UTC

-- (UTC = local + offset * 15 Minutes).

-- The UTC offset can be used to calculate the duration of the travel.

-- If UTC offset is used in control devices the usage of UTC offset has to be agreed bilateral to be mandatory.

-- Times to be shown on a ticket should always be the local times.

validFromUTCOffset INTEGER (-60..60) OPTIONAL,

-- Offset in units of 15 minutes from local time to UTC

-- (UTC = local + offset * 15 Minutes).

-- The UTC offset can be used to calculate the duration of the travel.

-- If UTC offset is used in control devices the usage of UTC offset has to be agreed bilateral to be mandatory.

-- Times to be shown on a ticket should always be the local times.

-- Omitted in case it is the same as validFromUTCOffset.

validUntilUTCOffset INTEGER (-60..60) OPTIONAL,

-- In case included time ranges are defined, the validity is restricted to these ranges.

includedTimeRanges SEQUENCE OF IncludedTimeRangesType OPTIONAL,

-- List of activated days in case the entire ticket is not activated.

-- The ticket can only be used on the days it is activated.

-- If the ticket is a return ticket, activatedDay only applies to the outward journey (use activatedReturnDay for the return journey).

-- Each day is given by the number of days from the first day of validity (validFrom) (0 = first day of validity).

-- For day that the ticket is activated, the activation is valid from 00:00 to 23:59 in the time zone of the traveler's current location,

-- thereby the activation might include more or less that 24 hours in case time zone borders are crossed.

-- Travel days of a ticket might be subject to a separate activation to be valid for traveling.

-- Omitted if there are no restrictions on days of use between validFrom and validUntil.

activatedDay SEQUENCE OF INTEGER (0..500) OPTIONAL,

-- In case of a return ticket only: list of activated days for the return journey.

-- Same use as activatedDay but for the return journey

-- Omitted if there are no restrictions on days of use between validFrom and validUntil for the return journey.

activatedReturnDay SEQUENCE OF INTEGER (0..500) OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

-- ----------------------------------------------------------------------------------------------

-- Rare non-temporal details and conditions.

-- ----------------------------------------------------------------------------------------------

RareDetailsType ::= SEQUENCE {

-- Associated online identifier (e.g. Account Based Ticketing identifier)

token TokenType OPTIONAL,

-- Family of the product, allowing to process the product according to its family.

-- Value according to the product owner.

productFamily VisibleString OPTIONAL,

-- Excluded carriers responsible for the transport starting at this station.

-- In case this list is provided, the ticket is valid on all other carriers,

-- and includedCarrier (in ConditionsType) shall not be used.

excludedCarrier SEQUENCE OF CompanyCode OPTIONAL,

-- Excluded transport modes. Code list: EN 1545-1 (transport type code).

-- In case this list is provided, the ticket is valid on all other transport modes,

-- and includedTransportType (in ConditionsType) shall not be used.

excludedTransportType SEQUENCE OF INTEGER (0..31) OPTIONAL,

-- Excluded service brands for the route.

-- In case this list is provided, the ticket is valid on all other service brands,

-- and includedServiceBrand (in ConditionsType) shall not be used.

excludedServiceBrand SEQUENCE OF ServiceBrandType OPTIONAL,

-- Price of the transport product (if in generalConditions) or of the segment (if in specificConditions),

-- in the currency and fraction defined in IssuingData.

price INTEGER OPTIONAL,

-- To be used in case of special conditions that can only be provided as a readable text, e.g. that Interrail

-- is valid on a night train continuing into the following day.

-- For specific control instructions that should be brought to the attention of the ticket checker,

-- use ControlData.infoText.

conditionText UnicodeText OPTIONAL,

-- In case the luggage restrictions are general and do not depend

-- on the ticket type they should not be included

luggage LuggageRestrictionType OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

-- ##############################################################################################

-- Data for station passage and access.

-- Ticket used to enter, exit or pass a station without traveling.

-- E.g. for staff working in a station.

-- ##############################################################################################

StationPassageData ::= SEQUENCE {

-- Identification of the product (owner, id, textual description).

product ProductType,

-- Internal reference to the document.

reference GenericId OPTIONAL,

-- Station(s) concerned.

station StationSet OPTIONAL,

-- List of areas in a station where the access is allowed.

-- The code table used to identify the areas depends on the station.

area SEQUENCE OF GenericId OPTIONAL,

-- Readable area names.

areaNameUTF8 SEQUENCE OF UnicodeText OPTIONAL,

-- Period of validity of the right of passage.

validFrom ValidFromType OPTIONAL,

validUntil ValidUntilType OPTIONAL,

-- Number of days for station passage in case the number of days

-- is limited and less than the validity period.

-- If present, the count of the remaining number of valid days is centrally held in a back office,

-- that must be queried to verify whether the traveler still has a right of passage.

numberOfDaysValid INTEGER OPTIONAL,

-- Proprietary data defined bilaterally

extension Data OPTIONAL,

...

}

-- ##############################################################################################

-- Data for simple customer cards.

-- For detailed or complex cards (e.g. valid only on a specific OD), use transportProduct instead.

-- Included are data from:

-- - OEBB requirements on card data

-- - DB Bahncard as HandyTicket

-- Note: customer data are included in the traveler data structure

-- ##############################################################################################

CustomerCardData ::= SEQUENCE {

-- Customer details.

-- Optional, as there might be anonymous cards.

customer TravelerType OPTIONAL,

-- The ID identifying this specific card. The ID identifying the card product goes into ProductType.

individualCardId GenericId OPTIONAL,

-- Begin / end of validity in local date wherever the traveler is located.

validFrom ValidFromType OPTIONAL,

validUntil ValidUntilType OPTIONAL,

-- Travel class in case card usage is limited to a travel class.

-- For transport modes where the concept of class does not exist, must be set to notApplicable.

classCode TravelClassType OPTIONAL,

-- Identification of what variety of customer card it is

product ProductType OPTIONAL,

-- Customer status code

-- 1 = basic

-- 2 = premium

-- 3 = silver

-- 4 = gold

-- 5 = platinum

-- 6 = senator

-- > 50 - code table of the card product owner

customerStatus INTEGER OPTIONAL,

-- Readable customer status, e.g. "gold",

customerStatusDescr VisibleString OPTIONAL,

-- List of included services,

-- 1 = Rail Plus

-- 2 = access to lounge

-- > 50 code list of the product owner

includedServices SEQUENCE OF INTEGER OPTIONAL,

-- Proprietary data defined bilaterally

extension Data OPTIONAL,

...

}

-- ##############################################################################################

-- Data for parking as a standalone document.

-- Included are data from:

-- - DB parking ground reservation

-- ##############################################################################################

ParkingGroundData ::= SEQUENCE {

-- Identification of the product (owner, id, textual description).

product ProductType,

-- Internal reference to the document

reference GenericId OPTIONAL,

-- Start and end of validity of parking entitlement. Date and time in time zone of the parking.

-- When validFromTime == 0, validity is the whole day depending on opening hours of the parking facility.

validFrom ValidFromType,

validUntil ValidUntilType,

parkingDetails ParkingType,

...

}

-- ##############################################################################################

-- Data for parking as a leg of a global transport document.

--- Suitable for cars but also for motorbikes, bikes...

-- ##############################################################################################

ParkingType ::= SEQUENCE {

-- Code provided by the product.productOwner.

parkingGroundId VisibleString,

-- Code needed to access the parking lot.

accessCode VisibleString OPTIONAL,

-- Readable name of the parking location.

-- Omitted if the vehicle can park anywhere in the parking ground.

location UnicodeText OPTIONAL,

-- In case the parking ground is associated with a station.

station Station OPTIONAL,

-- In case a special entry can or must be taken (e.g. VIP entry), readable name of this entry.

entryTrack UnicodeText OPTIONAL,

-- Number plate of the car parked.

-- See note in CarCarriageReservationData on the meaning of this field.

vehiclePlate UnicodeText OPTIONAL,

-- Number of days or hours of allowed parking in case this number is limited and less than the validity period.

-- If present, the count of the remaining number of allowed days or hours is centrally held in a back office,

-- that must be queried to verify whether the traveler still has a right of parking.

numberAllowed CHOICE {

days INTEGER,

minutes INTEGER (1..1439)

} OPTIONAL,

-- Additional readable information that cannot be described using the other elements.

infoText UnicodeText OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

-- ##############################################################################################

-- Product identification

--

-- FIP products shall be coded under the product owner of RICS 3011 and product IDs of the

-- variant IA5 with said value starting with "FIP-". The exact product IDs are left to be

-- defined by the FIP working group.

-- ##############################################################################################

ProductType ::= SEQUENCE {

-- Organization responsible for the product definition.

-- If omitted in specificConditions, productOwner is the one described in generalConditions.

-- If omitted in generalConditions, productOwner is the 'issuer' element in issuingDetail.

productOwner CompanyCode OPTIONAL,

-- Product id to identify the issued product codelist defined by the product owner.

productId ProductIdType OPTIONAL,

-- Short readable description of the product.

productDescription UnicodeText OPTIONAL

}

-- ##############################################################################################

-- Tariff data for transport products.

-- Information included are:

-- - number, type and characteristics of allowed passengers, incl. applied reduction cards,

-- - optionally a link to the traveler data.

-- ##############################################################################################

TariffType ::= SEQUENCE {

-- Number of passengers using the tariff.

numberOfPassengers INTEGER (1..200) DEFAULT 1,

-- Type indication (youth, adult, senior... but also pet, bicycle).

-- The definition of which passenger is which type in this field is per the product owner.

-- Omitted if the ticket has no restrictions regarding the type of passenger,

-- or if the restriction is based on the product type and not on this element.

passengerType PassengerType OPTIONAL,

-- Age restrictions of the tariff.

age CHOICE {

specificAge INTEGER (0..127),

ageRange SEQUENCE {

ageBelow INTEGER (1..128) OPTIONAL,

-- 'below' is to be understood as 'strictly less than'

ageAbove INTEGER (0..127) OPTIONAL

-- 'above' is to be understood as 'strictly greater than'

}

} OPTIONAL,

-- Named traveler list.

-- Link to the traveler in case the travelers have to be named (e.g. Eurail passes).

-- The number indicates the position in the traveler sequence starting from 1.

travelerId SEQUENCE OF INTEGER (1..254) OPTIONAL,

-- Validity restriction based on the traveler's country of residence.

-- (e.g. for Eurail tickets that are not valid in the country of residence).

-- This field does not indicate a global geographic validity, but only a possible

-- restriction of this geographic validity related to the country of residence.

-- Omitted if there is no restriction related to the traveler's country of residence.

countryValidity CountryValidityType OPTIONAL,

-- Tariff code.

tariffId GenericId OPTIONAL,

-- Readable tariff description.

tariffDesc UnicodeText OPTIONAL,

-- Reduction cards applied (incl. discount cards, loyalty cards relevant for the tariff).

-- To require verification of these cards during an inspection, use ControlData.reductionCardCheckRequired.

-- Omitted if these cards have already been verified at the time of purchase,

-- and if their verification is not requested during inspection.

reductionCard SEQUENCE OF CardReferenceType OPTIONAL,

...

}

-- ##############################################################################################

-- Card reference (for any kind of card: customer card, loyalty card, reduction card...)

-- ##############################################################################################

CardReferenceType ::= SEQUENCE {

-- Issuer and type of the card

product ProductType,

-- Card ID

-- According to cardIdFormat, the ID is full, limited to the leading part, or limited to the trailing part.

id GenericId OPTIONAL,

-- Indication whether the full or only the leading or trailing part of the ID is provided.

format CardIdFormatType DEFAULT full,

...

}

-- ##############################################################################################

-- Description of an identity document

-- If number is not provided, this sequence merely defines the acceptable type of identification

-- document, but does not specify and exact document; i.e. the traveler may be identified via

-- their passport, but no stipulation is made on which specific passport is presented.

-- If the country field is also blank, then this means any country (or no country at all) is valid.

-- ##############################################################################################

IdentificationDocumentType ::= SEQUENCE {

-- Numeric ISO 3166 country code of the issuing country of the document

country INTEGER (1..999) OPTIONAL,

-- Category of the document (passport, ID card...)

category IdentificationDocumentCategoryType,

-- Number of the document

number VisibleString OPTIONAL,

-- Indication whether the full or only the leading or trailing part of the document number is provided.

format CardIdFormatType DEFAULT trailingPart

}

-- ##############################################################################################

-- Traveler data.

-- Traveler data might contain all traveler details which are independent

-- from the type of travel document.

-- E.g. it can include the date of birth as this is part of the traveler,

-- but not the indication "Senior" as this is tariff dependent.

-- ##############################################################################################

TravelerType ::= SEQUENCE {

-- All 3 name parts are encoded with SCSU the SCSU compression (as per UnicodeText).

-- The language tag applies to all 3 name parts.

-- That is, the name parts are to be construed as 3 UnicodeText SEQUENCEs with the same language tag set.

firstName OCTET STRING OPTIONAL,

secondName OCTET STRING OPTIONAL,

lastName OCTET STRING OPTIONAL,

-- ISO 639-1 coding (lower case) of the names's language

language VisibleString (SIZE (2) ^ FROM ("a".."z")) OPTIONAL,

-- The definition of which passenger is which type in this field is per the issuer,

-- and may be overridden by product owner for a specific segment using TariffType.passengerType.

passengerType PassengerType OPTIONAL,

ageOrBirth CHOICE {

dateOfBirth DateType,

age INTEGER (0..127)

} OPTIONAL,

rareDetails RareTravelerDetailsType OPTIONAL

}

-- ----------------------------------------------------------------------------------------------

-- Date type, used to indicate the date of birth.

-- All elements are optional to allow indicating only a part of the date (e.g. only the year).

-- ----------------------------------------------------------------------------------------------

DateType ::= SEQUENCE {

year INTEGER (1901..2155) OPTIONAL,

month INTEGER (1..12) OPTIONAL,

day INTEGER (1..31) OPTIONAL

}

-- ----------------------------------------------------------------------------------------------

-- Rare traveler data

-- ----------------------------------------------------------------------------------------------

RareTravelerDetailsType ::= SEQUENCE {

-- Details of the document (ID card, passport...) identifying the traveler

identificationDocument SEQUENCE SIZE (0..15) OF IdentificationDocumentType,

-- Cards (reduction, discount, loyalty...) held by the traveler.

-- Only present if they serve a purpose (e.g. access to a lounge in a station).

reductionCard SEQUENCE OF CardReferenceType OPTIONAL,

-- Customer id might be numerical or alphanumerical.

customerId GenericId OPTIONAL,

-- Omitted if no information is available.

passengerWithReducedMobility BOOLEAN OPTIONAL,

-- Country of residence (numeric ISO 3166 country code).

-- To be used in case there are product restrictions linked to the country of residence (e.g. Eurail passes),

-- such restrictions are then indicated with the 'countryValidity' element in 'TariffType'.

countryOfResidence INTEGER (1..999) OPTIONAL,

status SEQUENCE OF CustomerStatusType OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

-- ##############################################################################################

-- Customer status

-- ##############################################################################################

CustomerStatusType ::= SEQUENCE {

-- Company providing the status.

-- Omitted if this company is the ticket issuer.

statusProvider CompanyCode OPTIONAL,

-- Customer status code:

-- 1 = basic

-- 2 = premium

-- 3 = silver

-- 4 = gold

-- 5 = platinum

-- 6 = senator

-- > 50 - code table of the card issuer

customerStatus INTEGER OPTIONAL,

-- Customer status text description (e.g. "gold").

customerStatusDescr VisibleString OPTIONAL

}

-- ##############################################################################################

-- Geographical validity.

-- Specification of the geographical validity of one segment of the whole journey.

-- ##############################################################################################

GeoValiditySegment ::= SEQUENCE {

-- Human readable description of the segment.

description UnicodeText OPTIONAL,

-- Geographical description of the segment.

validitySegment GeoValidity,

-- The specific conditions are in the indicated conditions list. 1 corresponds to the first entry of the sequence.

-- The edge case of having no general condition and no specific conditions is a valid case. This could be a full fare ticket without any restrictions.

appliedSpecificConditionsIndex INTEGER (1..16) OPTIONAL,

...

}

-- ##############################################################################################

-- Specification of the geographical validity for a segment.

-- ##############################################################################################

GeoValidity ::= CHOICE {

-- Simple journey from an Origin to a Destination, with optional description of intermediate stations.

originDestination OriginDestinationType,

-- Complex journey allowing multiple origins, multiple destinations, alternative routes, etc.

complexRoute ComplexRouteType,

-- Validity defined with areas/zones.

area AreaType,

-- Set of authorized transport lines

line LineType,

-- Area defined using geocoordinates.

polygone PolygoneType,

-- Parking right (for a car, a bike...).

parking ParkingType,

-- Access to a shared vehicle service.

sharedVehicle SharedVehicle,

-- Valid everywhere within the operating area of a carrier, including cross-border services, unless excluded by coveringArea condition.

carrierNetwork SEQUENCE SIZE (0..15) OF CompanyCode,

-- No specific geographic validity beyond the coveringArea and other conditions.

perConditions NULL,

-- Specific proprietary geographical validity in case the above predefined types do not allow it to be described.

proprietary Data,

...

}

-- ##############################################################################################

-- Access to a shared vehicle service, e.g. car sharing or bike/e-scooter rental

-- ##############################################################################################

SharedVehicle ::= SEQUENCE {

-- Shared vehicle providers that this entitlement covers

carriers SEQUENCE OF CompanyCode,

-- The number of individual vehicles included in this entitlement

numberOfVehicles INTEGER (1..16) DEFAULT 1,

-- Which kinds of shared vehicles are included in this entitlement

-- An empty list means no constraint

vehicleTypes SEQUENCE OF SharedVehicleType,

-- The vehicle must be collected from this station.

collectionStation Station OPTIONAL,

-- The vehicle must be returned to this station.

returnStation Station OPTIONAL,

-- Included amount of time allowed to access a shared vehicle, if more restrictive than the validity period.

-- If present, indicates that the entitlement is valid for a given amount of time within the validity period.

-- If present, the count of the remaining number of allowed days or hours is centrally held in a back office,

-- that must be queried to verify whether the traveler still has any remaining time.

-- Whether an operator allows the traveler to pay additionally for more time once the allotted time is up is

-- per local operator policy.

allowedTime CHOICE {

days INTEGER,

minutes INTEGER (1..1439)

} OPTIONAL,

-- Additional readable information that cannot be described using the other elements.

infoText UTF8String OPTIONAL,

-- Proprietary data defined bilaterally.

extension Data OPTIONAL,

...

}

SharedVehicleType ::= SEQUENCE {

-- An empty list means any value

variety SEQUENCE SIZE (0..15) OF SharedVehicleVariety,

-- An empty list means any value

propulsion SEQUENCE SIZE (0..15) OF SharedVehiclePropulsionType,

-- An empty list means any value

returnConstraint SEQUENCE SIZE (0..15) OF SharedVehicleReturnConstraint,

...

}

-- ##############################################################################################

-- Geographical validity from an origin station to a destination station

-- ##############################################################################################

OriginDestinationType ::= SEQUENCE {

-- Origin station of the OD journey.

-- Omitted if this origin station is the destination station of the previous section of the journey.

originStation Station OPTIONAL,

-- Destination station of the OD journey.

destinationStation Station,

-- If necessary the (ordered) stations between origin and destination can be indicated.

intermediateStation SEQUENCE OF Station OPTIONAL,

...

}

-- ##############################################################################################

-- Geographical validity using a set of lines

-- ##############################################################################################

LineType ::= SEQUENCE {

-- Id of the valid or excluded lines. Only one of both elements shall be present.

-- Set according to the code table defined in the container object.

includedLineId SEQUENCE OF LineIdType OPTIONAL,

excludedLineId SEQUENCE OF LineIdType OPTIONAL,

-- In case the line must be entered via a specific station

entryStation StationSet OPTIONAL,

-- In case the line must be left via a specific station

terminatingStation StationSet OPTIONAL,

...

}

-- ----------------------------------------------------------------------------------------------

-- Identification of a line: code + name

-- ----------------------------------------------------------------------------------------------

LineIdType ::= SEQUENCE {

lineId LineCodeType,

lineNameUTF8 UnicodeText OPTIONAL

}

-- ----------------------------------------------------------------------------------------------

-- Code of a line: numerical or alphanumerical

-- ----------------------------------------------------------------------------------------------

LineCodeType ::= CHOICE {

lineIdNum INTEGER,

lineIdIA5 VisibleString (FROM ("A".."Z" | "0".."9" | " "))

}

-- ##############################################################################################

-- Geographical validity defined with areas/zones

-- ##############################################################################################

AreaType ::= SEQUENCE {

-- In case the allowed journey must begin in specific stations or specific areas/zones. E.g.:

-- - local city traffic starting from the station where a train journey ends.

-- - journey starting in a specific set of areas/zones of a city.

-- - journey starting anywhere in a city described with its NUTS code or its Calypso NetworkId.

-- Omitted if there are no restrictions on where the journey must begin.

restrictedEntry CHOICE {

station StationSet,

area AreaSet

} OPTIONAL,

-- Description of the allowed areas/zones.

-- The areas described in restrictedEntry:area and/or restrictedExit:area (if any) must not be repeated in the included or excluded areas.

-- If restrictedEntry is absent, the journey can begin anywhere in the allowed areas/zones.

-- If restrictedExit is absent, the journey can end anywhere in the allowed areas/zones.

-- If restrictedEntry and restrictedExit and area are present, the allowed areas/zones are only transit areas/zones:

-- the traveler is allowed to cross them, but he may neither begin nor end his journey in them.

-- If restrictedEntry and restrictedExit are present, and area is absent, there are no specific restrictions on how to travel

-- from restrictedEntry to restrictedExit (the only restrictions that apply are those described by the applicable ConditionsType).

area CHOICE {

-- The allowed areas/zones are those explicitly described in the 'included' element.

included AreaSet, -- list of allowed areas/zones

-- The allowed areas/zones are all the areas/zones of the applicable 'concernedArea' element, except those

-- described in 'excluded', in 'restrictedEntry' and in 'restrictedExit'.

excluded AreaSet

} OPTIONAL,

-- In case the allowed journey must end in specific stations or specific areas/zones. E.g.:

-- - local city traffic ending in the station where a train journey ends.

-- - journey ending in a city described with a specific set of areas/zones.

-- Omitted if there are no restrictions on where the journey must end.

restrictedExit CHOICE {

station StationSet,

area AreaSet

} OPTIONAL,

-- Readable name of the area of validity.

areaNameUTF8 UnicodeText OPTIONAL,

...

}

-- ##############################################################################################

-- Complex Route

-- Includes a description of the route by via stations.

-- Via stations follow the description in leaflet 108.1:

-- - Via stations can be mandatory to pass, but there does not need to be a

-- stop at these stations: visible route description: "*station*"

-- - There can be a list of alternative routes:

-- visible route description: "*(station1/station2)*"

-- - There can also be alternative routes: "*(station1*station2/station3*station4)*"

-- although the definition in 108.2 is not very precise on this option

-- ##############################################################################################

ComplexRouteType ::= SEQUENCE {

routeItem SEQUENCE OF RouteItemType,

-- Information about the change of the service at this route item:

-- - TRUE: change is mandatory

-- - FALSE: change is forbidden

-- - omitted if change is allowed but not mandatory

changeOfService BOOLEAN OPTIONAL,

-- In case different carriers and/or different service brands need to be indicated on the routes or alternative routes.

appliedSpecificConditionsIndex INTEGER (1..16) OPTIONAL,

...

}

-- ----------------------------------------------------------------------------------------------

-- Description of a route item

-- ----------------------------------------------------------------------------------------------

RouteItemType ::= CHOICE {

-- The route item is the destination station from the previous validity segment.

destinationStationOfPreviousSegment NULL,

-- The route item is a specific station

station Station,

-- The route item is a set of stations that are equivalent (OSDM: FareStationSet).

stationSet StationSet,

-- The route item is a list of stations along the route

route SEQUENCE OF ComplexRouteType,

-- The route item is a list of alternative routes, one of these has to be taken

alternativeRoutes SEQUENCE OF ComplexRouteType,

...

}

-- ##############################################################################################

-- Geographical validity defined as a polygone.

-- ##############################################################################################

PolygoneType ::= SEQUENCE {

firstEdge GeoCoordinate,

edges SEQUENCE OF GeoUnit

}

-- ##############################################################################################

-- TokenType provides an additional identifier.

-- Known use cases:

-- - Identifier of the media linked with the barcode, e.g.:

-- > Mobile phone for tickets linked with a specific phone (e.g. VDV standard)

-- > Serial number of a Security In Paper ticket hosting the barcode

-- - Identifier of an ABT (Account Based Ticketing) system

-- ##############################################################################################

TokenType ::= SEQUENCE {

-- Category of the token.

-- Omitted if the token category is implicit or unspecified.

tokenCategory TokenCategoryType OPTIONAL,

-- Provider of the token.

-- Omitted if the provider is the 'issuer' identified in IssuingData.

tokenProvider CompanyCode OPTIONAL,

-- Format of the 'token' element:

-- "+" + [2-letters uppercase ISO 3166 country code] + [addon, chosen by the national standards body of that country]

-- "_" + [RICS or ERA company code] + [addon, chosen by this company]

-- "*" + [addon] - private use, not guaranteed to avoid clashes

-- "!I" + [addon, chosen by the issuer] - equivalent to the _RICS format, without repetition of the issuer's code

-- "!C" + [addon, chosen by the carrier] - equivalent to the _RICS format, without repetition of the carriers's code

-- "!P" + [addon, chosen by the product owner] - equivalent to the _RICS format, without repetition of the product owner's code

-- Any other value only after registration in the token_specification.csv registry

-- The use of unregistered values (outside of the national, company, and private use ranges) is strictly forbidden.

-- All values should be registered via the UIC Github repository.

-- Omitted if the format is implicit for the token provider.

tokenSpecification VisibleString OPTIONAL,

-- Value of the token, encoded according to tokenSpecification.

token OCTET STRING,

...

}

-- ##############################################################################################

-- TicketLinkType is used to define a link from the ticket in the barcode to another ticket

-- (requirement from Eurail).

-- Known use cases:

-- - reservation of trailer and car carriage and traveler reservation.

-- - link between open ticket and bicycle reservations or pass.

-- - open ticket and vouchers for meals.

-- ##############################################################################################

TicketLinkType ::= SEQUENCE {

-- Data to reference the external ticket

ticketIssuer CompanyCode OPTIONAL,

ticketId GenericId OPTIONAL,

-- The product, or type of product, of that a linked ticket must have.

-- Useful in cases the exact linked ticket is not known, e.g. a 1st class upgrade to any second class ticket.

product ProductType OPTIONAL,

-- Readable name of the issuer of the external ticket

ticketIssuerName UnicodeText OPTIONAL,

-- Type of linked ticket

ticketType ProductVarietyType DEFAULT ticket: {},

-- Type of link

linkMode LinkModeType DEFAULT issuedTogether,

...

}

-- ##############################################################################################

-- Sleeper compartment according to TEL TSI B.5

-- ##############################################################################################

BerthDetailData ::= SEQUENCE {

berthType BerthTypeType,

numberOfBerths INTEGER (1..999),

-- Take particular care when using this field, in light of the CJEU decision C‑394/23.

-- Specifically: "the processing of personal data relating to the title of the customers

-- of a transport undertaking, the purpose of which is to personalise the commercial communication

-- based on their gender identity ... cannot be regarded as necessary for the performance of that contract"

gender CompartmentGenderType DEFAULT mixed,

...

}

-- ##############################################################################################

-- Luggage restrictions.

-- The basis for these data is weak:

-- - SCIC mentions a maximum of three pieces of hand luggage but does not includes

-- a definition of hand luggage.

-- - SCIC refers to special conditions on registered luggage,

-- but SCIC NRT does not contain definitions on that,

-- and UIC 108.1 does not contain data structures for luggage.

-- - current THALYS luggage restrictions.

-- ##############################################################################################

LuggageRestrictionType ::= SEQUENCE {

-- Allowed hand luggage pieces on this ticket (3 = default in current NRT tariff).

maxHandLuggagePieces INTEGER (0..99) DEFAULT 3,

-- Allowed non-hand luggage pieces on this ticket.

maxNonHandLuggagePieces INTEGER (0..99) DEFAULT 1,

registeredLuggage SEQUENCE OF RegisteredLuggageType OPTIONAL,

...

}

-- ----------------------------------------------------------------------------------------------

-- Description of a registered luggage

-- ----------------------------------------------------------------------------------------------

RegisteredLuggageType ::= SEQUENCE {

-- Id of the additional registered luggage

registrationId GenericId OPTIONAL,

-- Maximum weight in kg

maxWeight INTEGER (1..99) OPTIONAL,

-- Sum of length with and height in cm

maxSize INTEGER (1..300) OPTIONAL,

...

}

-- Identification of a product, according to the code list defined in the container object.

ProductIdType ::= CHOICE {

productIdNum INTEGER (0..65535),

productIdIA5 VisibleString

}

-- ##############################################################################################

-- Product variety indicates the type of the transport product,

-- as well as some specific characteristics it may have.

-- ##############################################################################################

ProductVarietyType ::= CHOICE {

-- Ticket authorizing the use of the transportation service (single ticket, return ticket, ticket book, pass, access to a parking lot, car sharing service...)

-- This choice also describes some associated characteristics:

-- - how many journeys are possible (single/return/multiple/unlimited),

-- - is an online connection required to validate or check the ticket,

-- - is the ticket an initial ticket or an upgrade,

-- - does the ticket need an associated reservation to be usable.

ticket TicketDetailsType,

-- Standalone reservation, which does not authorize travel unless accompanied by a ticket.

reservation NULL,

-- Any card (reduction card, loyalty card...) that does not authorize travel but allows the holder to benefit from reduced prices or commercial advantages.

commercialCard NULL,

-- Very specific product, in case none of the above choices apply.

proprietary NULL,

...

}

-- ----------------------------------------------------------------------------------------------

-- Description of a ticket characteristics.

-- ----------------------------------------------------------------------------------------------

TicketDetailsType ::= SEQUENCE {

-- Ticket category, indicating how many time the product can be used.

ticketCategory TicketCategoryType DEFAULT single,

-- Indicates if the ticket is an upgrade of another ticket

isAnUpgrade BOOLEAN DEFAULT FALSE,

-- Indicates if an associated reservation (as a separate standalone document) is required for the ticket to be usable:

-- - TRUE if an associated reservation is required.

-- - FALSE if no associated reservation is required (this value covers the case when the reservation is included in the ticket conditions).

additionalReservationRequired BOOLEAN DEFAULT FALSE,

...

}

-- ##############################################################################################

-- Service brand description.

-- Identifies a train service uniquely in combination with train number and departure date.

-- Code list: https://uic.org/service-brand-code-list

-- ##############################################################################################

ServiceBrandType ::= SEQUENCE {

serviceBrand INTEGER (1..32000) OPTIONAL,

serviceBrandAbrUTF8 UnicodeText OPTIONAL

}

-- ##############################################################################################

-- Enumerations definitions

-- ##############################################################################################

TicketCategoryType ::= ENUMERATED {

single (0), -- Single ticket: only one journey is permitted.

return (1),

-- Return ticket: only one outward journey and one return journey are permitted.

multiple (2),

-- Multiple but not unlimited journeys are permitted (e.g. ticket book). The counting is made in a backoffice.

unlimited (3), -- As many journeys as desired are permitted (e.g. pass).

...

}

TokenCategoryType ::= ENUMERATED {

media (0),

-- 'token' is the ID of the media (phone, SIP ticket includind a serial number...) with which the ticket is linked

accountBasedTicketing (1),

-- 'token' is the ID of the account with which the ticket is linked

...

}

ServiceType ::= ENUMERATED {seat (0), couchette (1), berth (2), carCarriage (3), ...}

PassengerType ::= ENUMERATED {

adult (0), senior (1), child (2), youth (3), dog (4), bicycle (5), youngChild

(6), familyChild (7),

-- Child associated with a family traveling together

accompPRM (8),

-- Accompanying person for PRM (Passenger with Restricted Mobility)

wheelchair (9), -- Passenger with wheel-chair

pet (10), -- A pet but not a dog

accompDog (11),

-- An accompanying dog for a PRM (Passenger with Restricted Mobility)

...

}

LinkModeType ::= ENUMERATED {issuedTogether (0), onlyValidInCombination (1), ...}

ConfirmationType ::= ENUMERATED {

transportDelayConfirmation (0),

-- Confirmation of transport delay, whether the traveler was on board in unconfirmed

travelerDelayConfirmation (1),

-- Confirmation that the traveler was on board of the delayed transport

transportLinkedTicketDelay (2),

-- Confirmation that a ticket linked to the delayed transport was issued

...

}

BerthTypeType ::= ENUMERATED {single (0), special (1), double (2), t2 (3), t3 (4), t4 (5)}

CompartmentGenderType ::= ENUMERATED {unspecified (0), family (1), female (2), male (3), mixed (4), ...}

CardIdFormatType ::= ENUMERATED {full (0), leadingPart (1), trailingPart (2)}

IdentificationDocumentCategoryType ::= ENUMERATED {

passport (0), idCard (1), residencePermit (2), driverLicense (3), creditCard

(4), socialBenefitsCard (5), studentIdCard (6), specialTravelDocument

(7),

-- e.g. those issued under the Convention of the 28th of September 1954, or a Laissez-Passer

...

}

TravelClassType ::= ENUMERATED {notApplicable (0), first (1), second (2), tourist (3), comfort (4),

premium (5), business (6), all (7), premiumFirst (8), standardFirst (9),

premiumSecond (10), standardSecond (11), ...}

CountryValidityType ::= ENUMERATED {onlyInCountryOfResidence (0), includingCountryOfResidence (1),

excludingCountryOfResidence (2), ...}

LoadingDeckType ::= ENUMERATED {upper (0), lower (1)}

CompartmentPositionType ::= ENUMERATED {upperLevel (0), lowerLevel (1)}

RoofRackType ::= ENUMERATED {norack (0), roofRailing (1), luggageRack (2), skiRack (3), boxRack

(4), rackWithOneBox (5), rackWithTwoBoxes (6), bicycleRack (7), otherRack

(8), ...}

RetailChannelType ::= ENUMERATED {

smsTicket (0), -- SMS sent to a specific number

mobileApplication (1), -- Application on a mobile phone

webSite (2), -- Internet portal

ticketOffice (3), -- Agency or counter

depositaryTerminal (4), -- Dealer (e.g. tobacconist, newsagent, cafe, etc.)

onBoardTerminal (5),

-- On-board sales (e.g. using the driver's point-of-sale terminal)

ticketVendingMachine (6), -- Automatic sales machine

...

}

END