poc-reports/es_elt/xsd/auditData/mam/MediaConsumptions.xsd
2026-01-27 14:48:39 +01:00

512 lines
23 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) Revenue Collection Systems France S.A.S. - 2018-2025 ALL RIGHTS RESERVED
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:head="http://www.thales.dc/Headers"
xmlns:trs="http://www.thales.dc/TravelStatus"
xmlns:tet="http://www.thales.dc/TravelEventType"
xmlns:vam="http://www.thales.dc/ValidationModel"
xmlns:tes="http://www.thales.dc/TravelEventSource"
xmlns:det="http://www.thales.dc/ProductPriceWithDetails"
xmlns:rat="http://www.thales.dc/RatingDetail"
xmlns="http://www.thales.dc/MediaConsumptions"
targetNamespace="http://www.thales.dc/MediaConsumptions"
version="1.4.5">
<!-- Import of xsd file -->
<xs:import namespace="http://www.thales.dc/Headers" schemaLocation="../../common/Headers.xsd"/>
<xs:import namespace="http://www.thales.dc/TravelEventSource" schemaLocation="../../common/TravelEventSource.xsd"/>
<xs:import namespace="http://www.thales.dc/TravelStatus" schemaLocation="../../common/TravelStatus.xsd"/>
<xs:import namespace="http://www.thales.dc/RatingDetail" schemaLocation="../../common/RatingDetail.xsd"/>
<xs:import namespace="http://www.thales.dc/TravelEventType" schemaLocation="../../common/TravelEventType.xsd"/>
<xs:import namespace="http://www.thales.dc/ValidationModel" schemaLocation="../../common/ValidationModel.xsd"/>
<xs:import namespace="http://www.thales.dc/ProductPriceWithDetails" schemaLocation="../../common/ProductPriceWithDetails.xsd"/>
<!-- Annotate all modification of the xsd file according to version -->
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>Version List</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>04/11/2021 - Version 1.0.0</xs:documentation>
<xs:documentation>
1st part: Add the AuditMessages, AuditMessage, Headers and Payload element for the XML validation
2nd part: Add version to xsd schema
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>04/03/2022 - Version 1.1.0</xs:documentation>
<xs:documentation>
Add ProductPriceWithDetails in RatingDetail
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>09/06/2022 - Version 1.2.0</xs:documentation>
<xs:documentation>
Add ticketing version to RatingDetail
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>06/07/2022 - Version 1.3.0</xs:documentation>
<xs:documentation>
Add ContractSerialNumber + CounterBalanceCurrentValue optional fields
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>08/08/2023 - Version 1.3.1</xs:documentation>
<xs:documentation>
Add for travel event duplicate and duplicateOriginalTransactionId information + duplicate for leg
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>24/08/2023 - Version 1.4.0</xs:documentation>
<xs:documentation>
- Add Capping Details in leg rating details
- Add legs evolution to mediaConsumption
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>02/01/2024 - Version 1.4.1</xs:documentation>
<xs:documentation>
- Add JourneyRatingDetail in Journey
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>02/01/2024 - Version 1.4.2</xs:documentation>
<xs:documentation>
- Add Discounts and fees in JourneyRatingDetail
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>17/06/2024 - Version 1.4.3</xs:documentation>
<xs:documentation>
- Add TravelEventId in TravelEvent
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>10/07/2024 - Version 1.4.4</xs:documentation>
<xs:documentation>
- Add JourneyId in Journey
- Add journeys evolution to mediaConsumption
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>10/10/2024 - Version 1.4.5</xs:documentation>
<xs:documentation>
- Add ValidationModel in TravelEvent
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>20/11/2024 - Version 1.4.6</xs:documentation>
<xs:documentation>
- Add Expired in Leg
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>-----------------------------------------------------------------------------------------------------------------------</xs:documentation>
</xs:annotation>
<!-- Description of the AuditMessages structure -->
<xs:element name="AuditMessages" type="AuditMessagesType"/>
<xs:complexType name="AuditMessagesType">
<xs:sequence>
<!-- List of AuditMessage -->
<xs:element name="AuditMessage" type="AuditMessageType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- version of AuditMessages structure -->
<xs:attribute name="MediaConsumptionsXsdVersion" type="xs:string" fixed="1.0"/>
</xs:complexType>
<!-- Description of the AuditMessage structure -->
<xs:complexType name="AuditMessageType">
<xs:sequence>
<!-- Headers structure -->
<xs:element name="Headers" type="head:HeadersType" minOccurs="0"/>
<!-- Payload is a MediaConsumptionListAuditExchange structure -->
<xs:element name="Payload" type="MediaConsumptionListAuditExchange"/>
</xs:sequence>
</xs:complexType>
<!-- Description of the MediaConsumptionListAuditExchange structure -->
<xs:complexType name="MediaConsumptionListAuditExchange">
<xs:annotation>
<xs:documentation>mam_str_media_consumptions: After a journey reconstruction and rating</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="MediaConsumptions" minOccurs="0">
<xs:annotation>
<xs:documentation>Media consumptions</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="MediaConsumption" type="MediaConsumptionExchange" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="MediaConsumptionExchange">
<xs:all>
<xs:element name="CommercialId" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>Dictionary prefix: CommercialId</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="DailyMediaConsumptionId" type="xs:string"/>
<xs:element name="CreationDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="MediaId" type="xs:string"/>
<xs:element name="MediaSerialNumber" type="xs:string"/>
<xs:element name="MediaTypeId" type="xs:int">
<xs:annotation>
<xs:documentation>Dictionary prefix: MediaType</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Sequence" type="xs:int"/>
<xs:element name="TravelDay" type="xs:date"/>
<xs:element minOccurs="0" name="Journeys">
<xs:annotation>
<xs:documentation>Journeys</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Journey" type="Journey" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ModifiedJourneys">
<xs:annotation>
<xs:documentation>Dictionary prefix: ModifiedJourneys</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="AddedJourneys" type="AddedJourneys"/>
<xs:element name="RemovedJourneys" type="RemovedJourneys"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ModifiedLegs">
<xs:annotation>
<xs:documentation>Dictionary prefix: ModifiedLegs</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="AddedLegs" type="AddedLegs"/>
<xs:element name="RemovedLegs" type="RemovedLegs"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="Journey">
<xs:all>
<xs:element name="JourneyId" type="xs:string" minOccurs="0"/>
<xs:element name="TotalCharge" type="xs:decimal" minOccurs="0"/>
<xs:element minOccurs="0" name="Legs">
<xs:annotation>
<xs:documentation>Legs</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Leg" type="Leg" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RatingDetail" type="JourneyRatingDetail" minOccurs="0"/>
</xs:all>
</xs:complexType>
<xs:complexType name="TravelEvents">
<xs:sequence>
<xs:element name="TravelEvent" type="TravelEvent" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Leg">
<xs:all>
<xs:element name="LegId" type="xs:string">
<xs:annotation>
<xs:documentation>
Unique identifier for a leg.
Between multiple reconstructions, the legId will be kept constant if the leg did not change
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="BusinessEntity" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Dictionary prefix: BusinessEntity</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="LineId" type="xs:string" minOccurs="0"/>
<xs:element name="RatingDetail" type="rat:RatingDetail" minOccurs="0"/>
<xs:element name="TotalCharge" type="xs:decimal" minOccurs="0"/>
<xs:element name="TransportMode" type="TransportMode" minOccurs="0">
<xs:annotation>
<xs:documentation>Dictionary prefix: TransportMode</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TravelStatus" type="trs:TravelStatus" minOccurs="0">
<xs:annotation>
<xs:documentation>Dictionary prefix: TravelStatus</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ExcessFare" type="xs:boolean"/>
<xs:element name="OverrideExcessFare" type="xs:boolean"/>
<xs:element name="Duplicate" type="xs:boolean"/>
<xs:element name="Expired" type="xs:boolean" minOccurs="0">
<xs:annotation>
<xs:documentation>True if the travel event was not taken into account in the rating because it was seen as expired (received too late or on a reconstructed media)</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="TravelEvents" type="TravelEvents">
<xs:annotation>
<xs:documentation>Travel events</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="TravelEvent">
<xs:all>
<xs:element name="OccurrenceDate" type="xs:dateTime"/>
<xs:element name="StopPointId" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>Dictionary prefix: StopPoint</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FarePointId" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>Dictionary prefix: FarePoint</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="AccessStatus" type="AccessStatus" minOccurs="0">
<xs:annotation>
<xs:documentation>Dictionary prefix: AccessStatus</xs:documentation>
<xs:documentation>AccessStatus will always be filled in case of the TravelEvent comes from a device otherwise this field is not present
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TravelEventType" type="tet:TravelEventType">
<xs:annotation>
<xs:documentation>Dictionary prefix: TravelEventType</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ValidationModel" type="vam:ValidationModel">
<xs:annotation>
<xs:documentation>Dictionary prefix: ValidationModel</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TravelEventSource" type="tes:TravelEventSource" minOccurs="0">
<xs:annotation>
<xs:documentation>Dictionary prefix: TravelEventSource</xs:documentation>
<xs:documentation>TravelEventSource will always be filled in case of the TravelEvent comes from a device otherwise this field is not
present
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TravelStatus" type="trs:TravelStatus">
<xs:annotation>
<xs:documentation>Dictionary prefix: TravelStatus</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TransactionId" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>TransactionId will always be filled in case of the TravelEvent comes from a device offline transaction. Can be empty if
the event is a virtual one (adjustment) or comes from the online API
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TravelEventId" type="xs:string" minOccurs="0"/>
<xs:element name="InclusionOrder" type="xs:int"/>
<xs:element name="InclusionDate" type="xs:dateTime"/>
<xs:element name="OverrideExcessFare" type="xs:boolean"/>
<xs:element name="Duplicate" type="xs:boolean"/>
<xs:element name="DuplicateOriginalTransactionId" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:complexType>
<xs:complexType name="JourneyRatingDetail">
<xs:sequence>
<xs:element name="ProductPriceWithDetails" type="det:ProductPriceWithDetails" minOccurs="0"/>
<xs:element minOccurs="0" name="ProductRatingDetails">
<xs:annotation>
<xs:documentation>ProductRatingDetails</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="ProductRatingDetail" type="ProductRatingDetail" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProductRatingDetail">
<xs:sequence>
<xs:element name="ProductCode" type="xs:int"/>
<xs:element minOccurs="0" name="ProductFares">
<xs:annotation>
<xs:documentation>ProductFare</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="ProductFare" type="ProductFare" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Discounts" type="det:Discounts" minOccurs="0"/>
<xs:element name="Fees" type="det:Fees" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProductFare">
<xs:sequence>
<xs:element minOccurs="0" name="LegIds">
<xs:annotation>
<xs:documentation>LegIds</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="LegId" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="BaseFareType" type="xs:string"/>
<xs:element name="Price" type="xs:decimal"/>
<xs:element minOccurs="0" name="CrossedZones">
<xs:annotation>
<xs:documentation>CrossedZones</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="CrossedZone" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="TransportMode">
<xs:annotation>
<xs:documentation>Transport modes managed in the system</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AccessStatus">
<xs:restriction base="xs:string">
<xs:enumeration value="GRANTED"/>
<xs:enumeration value="DENIED"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="AddedLegs">
<xs:annotation>
<xs:documentation>Dictionary prefix: AddedLegs</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="AddedLeg" type="AddedLeg" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AddedJourneys">
<xs:annotation>
<xs:documentation>Dictionary prefix: AddedJourneys</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="AddedJourney" type="AddedJourney" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AddedLeg">
<xs:all>
<xs:annotation>
<xs:documentation>Dictionary prefix: AddedLeg</xs:documentation>
</xs:annotation>
<xs:element name="LegId" type="xs:string"/>
</xs:all>
</xs:complexType>
<xs:complexType name="AddedJourney">
<xs:all>
<xs:annotation>
<xs:documentation>Dictionary prefix: AddedJourney</xs:documentation>
</xs:annotation>
<xs:element name="JourneyId" type="xs:string"/>
</xs:all>
</xs:complexType>
<xs:complexType name="RemovedLegs">
<xs:annotation>
<xs:documentation>Dictionary prefix: RemovedLegs</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="RemovedLeg" type="RemovedLeg" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="RemovedJourneys">
<xs:annotation>
<xs:documentation>Dictionary prefix: RemovedJourneys</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="RemovedJourney" type="RemovedJourney" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="RemovedLeg">
<xs:all>
<xs:annotation>
<xs:documentation>Dictionary prefix: RemovedLeg</xs:documentation>
</xs:annotation>
<xs:element name="LegId" type="xs:string"/>
</xs:all>
</xs:complexType>
<xs:complexType name="RemovedJourney">
<xs:all>
<xs:annotation>
<xs:documentation>Dictionary prefix: RemovedJourney</xs:documentation>
</xs:annotation>
<xs:element name="JourneyId" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:schema>