openapi: 3.2.0 info: title: Entur Ticket Distributions API version: 2026.10.0 description: 'Operations tagged Ticket Distributions across 2 of this provider''s published API definitions: entur-ticket-distribution-partner-openapi.json, entur-ticket-distribution-partner-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://api.staging.entur.io/sales description: Staging test environment - url: https://api.dev.entur.io/sales description: Development test environment - url: https://api.entur.io/sales description: Production environment security: - authHeader: [] tags: - name: Ticket Distributions description: Services regarding ticket distribution level. paths: /v1/ticket-distributions/{orderId}/summary: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' get: tags: - Ticket Distributions summary: Get summary of distribution data for an order description: Returns a list of the distinct summary data for the orderId. This service/endpoint is useful to just retrieve external distribution data for an order when you may not have access to all order data. operationId: getTicketDistributionSummary parameters: - $ref: '#/components/parameters/orderIdPathParam' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TicketDistributionSummary' '404': $ref: '#/components/responses/notFound' servers: - url: https://api.staging.entur.io/sales description: Staging test environment - url: https://api.dev.entur.io/sales description: Development test environment - url: https://api.entur.io/sales description: Production environment /v1/ticket-distributions/{orderId}/distribute: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' post: tags: - Ticket Distributions summary: Deprecated. description: Distribute a set of ticket distribution groups to NOD for pick up as QR-code and animation. operationId: distributeTicketDistributions parameters: - $ref: '#/components/parameters/posHeader' - name: deliverAfter in: query description: The earliest time it should be possible to pick up the ticket required: false style: form explode: true schema: type: string format: date-time - $ref: '#/components/parameters/orderIdPathParam' - name: qrChecksumType in: query description: The QR Code checksum type required: false style: form explode: true schema: type: integer format: int32 responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/TicketDistributionGroup' '400': $ref: '#/components/responses/badRequest' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' deprecated: true servers: - url: https://api.staging.entur.io/sales description: Staging test environment - url: https://api.dev.entur.io/sales description: Development test environment - url: https://api.entur.io/sales description: Production environment /v1/ticket-distributions/{orderId}/distribute-travel-card: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' post: tags: - Ticket Distributions summary: Deprecated. description: Distribute a set of ticket distribution groups to NOD for pick up on travel card. operationId: distributeTicketDistributionsToTravelCard parameters: - $ref: '#/components/parameters/posHeader' - $ref: '#/components/parameters/orderIdPathParam' requestBody: description: requestBody content: application/json: schema: $ref: '#/components/schemas/TicketTravelCardRequest' required: true responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/TicketDistributionGroup' '400': $ref: '#/components/responses/badRequest' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' deprecated: true servers: - url: https://api.staging.entur.io/sales description: Staging test environment - url: https://api.dev.entur.io/sales description: Development test environment - url: https://api.entur.io/sales description: Production environment /v1/ticket-distributions/{orderId}/generate: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' post: tags: - Ticket Distributions summary: Generate ticket distributions description: Generate a set of ticket distribution groups which later will be distributed to a ticket system. operationId: generateTicketDistributions parameters: - $ref: '#/components/parameters/languageHeader' - $ref: '#/components/parameters/dciHeader' - $ref: '#/components/parameters/posHeader' - $ref: '#/components/parameters/orderIdPathParam' responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/TicketDistributionGroup' '400': $ref: '#/components/responses/badRequest' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' servers: - url: https://api.staging.entur.io/sales description: Staging test environment - url: https://api.dev.entur.io/sales description: Development test environment - url: https://api.entur.io/sales description: Production environment components: schemas: ValidableElement: title: ValidableElement required: - elementId - legIds type: object properties: elementId: type: string description: 'The elementId as found on the validableElement. NOTE: This is NOT the same as validableElementRef.id' legIds: type: array description: list of legIds that belong to this validableElement items: type: string Seat: title: Seat required: - externalSeatId - id - railcarNumber - seatNumber - seatType type: object properties: externalSeatId: type: string id: type: integer format: int64 railcarNumber: type: string seatCode: type: string description: Deprecated. Better use the more flexible types in seatingProperties which mirrors the properties from seating manager. deprecated: true seatNumber: type: string seatType: type: string description: Deprecated. Better use the more flexible types in seatingProperties which mirrors the properties from seating manager. deprecated: true seatingProperties: title: SeatingProperties required: - baggageType - mobilityFacilities - nuisanceFacilities - passengerCommsFacilities - sanitaryFacilities type: object properties: fareClass: type: string description: Fare class of the seat. Netex enumeration. enum: - UNKNOWN - FIRST_CLASS - SECOND_CLASS - THIRD_CLASS - PREFERENTE - PREMIUM_CLASS - BUSINESS_CLASS - STANDARD_CLASS - TURISTA - ECONOMY_CLASS - ANY examples: - FIRST_CLASS groupBooking: type: string description: Group booking permission of the seat. Netex enumeration. enum: - GROUPS_ALLOWED - GROUPS_NOT_ALLOWED - GROUPS_ALLOWED_WITH_RESERVATION - GROUP_BOOKINGS_RESTRICTED - UNKNOWN examples: - GROUPS_ALLOWED accommodationFacility: type: string description: Accommodation property of the seat. Netex enumeration. enum: - UNKNOWN - STANDING - SEATING - FOLDING_SEAT - SLEEPER - SINGLE_SLEEPER - DOUBLE_SLEEPER - SPECIAL_SLEEPER - COUCHETTE - SINGLE_COUCHETTE - DOUBLE_COUCHETTE - SPECIAL_SEATING - RECLINING_SEATS - BABY_COMPARTMENT - FAMILY_CARRIAGE - RECREATION_AREA - PANORAMA_COACH - PULLMAN_COACH - PUSHCHAIR - WHEELCHAIR examples: - SINGLE_SLEEPER seatAttachment: type: string description: Attachment of the seat. Netex enumeration. enum: - REVERSIBLE - FIXED - FOLDING - REMOVABLE - OTHER examples: - REVERSIBLE seatPosition: type: string description: Position of the seat. Netex enumeration. enum: - WINDOW - AISLE - MIDDLE - UPPER_BERTH - MIDDLE_BERTH - LOWER_BERTH - OTHER examples: - MIDDLE_BERTH relativeDirection: type: string description: Relative direction of the seat. Netex enumeration. enum: - BOTH - FORWARDS - BACKWARDS examples: - BACKWARDS nuisanceFacilities: uniqueItems: true type: array description: Set of possible nuisance factors of the seat. Netex enumerations. items: type: string description: Set of possible nuisance factors of the seat. Netex enumerations. enum: - UNKNOWN - SMOKING - NO_SMOKING - FAMILY_AREA - CHILDFREE_AREA - ANIMALS_ALLOWED - NO_ANIMALS - BREASTFEEDING_FRIENDLY - MOBILE_PHONE_USE_ZONE - MOBILE_PHONE_FREE_ZONE examples: - FAMILY_AREA examples: - - FAMILY_AREA - SMOKING passengerCommsFacilities: uniqueItems: true type: array description: Set of possible communication facilities available for passenger in the seat. Netex enumerations. items: type: string description: Set of possible communication facilities available for passenger in the seat. Netex enumerations. enum: - UNKNOWN - FREE_WIFI - PUBLIC_WIFI - POWER_SUPPLY_SOCKETS - TELEPHONE - AUDIO_ENTERTAINMENT - VIDEO_ENTERTAINMENT - BUSINESS_SERVICES - INTERNET - POST_OFFICE - POST_BOX examples: - POWER_SUPPLY_SOCKETS examples: - - POWER_SUPPLY_SOCKETS - TELEPHONE sanitaryFacilities: uniqueItems: true type: array description: Set of possible sanitary facilities available for passenger in the seat. Netex enumerations. items: type: string description: Set of possible sanitary facilities available for passenger in the seat. Netex enumerations. enum: - NONE - TOILET - WHEELCHAIR_ACCESS_TOILET - SHOWER - WASHING_AND_CHANGE_FACILITIES - BABY_CHANGE - WHEELCHAIR_BABY_CHANGE - SHOE_SHINER - OTHER examples: - TOILET examples: - - TOILET - SHOWER mobilityFacilities: uniqueItems: true type: array description: Set of possible mobility facilities available for passenger in the seat. Netex enumerations. items: type: string description: Set of possible mobility facilities available for passenger in the seat. Netex enumerations. enum: - UNKNOWN - LOW_FLOOR - STEP_FREE_ACCESS - SUITABLE_FOR_PUSHCHAIRS - SUITABLE_FOR_WHEELCHAIRS - SUITABLE_FOR_HEAVILIY_DISABLED - BOARDING_ASSISTANCE - ONBOARD_ASSISTANCE - UNACCOMPANIED_MINOR_ASSISTANCE - TACTILE_PLATFORM_EDGES - TACTILE_GUIDING_STRIPS examples: - SUITABLE_FOR_WHEELCHAIRS examples: - - SUITABLE_FOR_WHEELCHAIRS - LOW_FLOOR baggageType: uniqueItems: true type: array description: Set of possible baggage types possible for passenger in the seat. Netex enumerations. items: type: string description: Set of possible baggage types possible for passenger in the seat. Netex enumerations. enum: - HANDBAG - HAND_LUGGAGE - SMALL_SUITCASE - SUITCASE - TRUNK - OVERSIZE_ITEM - BICYCLE - MOTORCYCLE - SPORTING_EQUIPMENT - SKIS - MUSICAL_INSTRUMENT - PUSH_CHAIR - WHEELCHAIR - MOTORIZED_WHEELCHAIR - LARGE_MOTORIZED_WHEELCHAIR - SMALL_ANIMAL - ANIMAL - GAME - OTHER examples: - HANDBAG examples: - - HANDBAG - SUITCASE description: Properties of a seat. They describe both physical and logical properties of a seat.Physical properties are for example position of the seat.Logical properties describe properties that the operator use when selling the seat. For example fare class. TicketDistributionSummary: title: TicketDistributionSummary required: - distributions - orderId type: object properties: orderId: type: string description: The orderId of the ticket distribution summary distributions: type: array description: List of distinct summaries of all ticket distributions of the ticket distribution groups for a given orderId. At least one of the fields in a distribution is non-null. items: $ref: '#/components/schemas/Distribution' examples: - orderId: ABCD1234 distributions: - customerAccountRef: ABC:CustomerAccount:209ea428-9457-4ee6-bcc8-3559ffda5dd4 fareContractRef: ABC:FareContract:ABCD1235-fae3c8b3-5f4b-4d3e-9f7a-2c6e8f4d2b1a - customerAccountRef: ABC:CustomerAccount:309ea428-9457-4ee6-bcc8-3559ffda5dd4 Distribution: title: Distribution type: object properties: customerAccountRef: type: string description: Reference to an account-based-ticketing customer account fareContractRef: type: string description: Reference to an account-based-ticketing farecontract Parking: title: Parking required: - vehicles type: object properties: vehicles: type: array items: $ref: '#/components/schemas/Vehicle' description: Parking data for a PARKING supplement product. PaymentMeansType: title: PaymentMeansType type: string description: The payment means type used to purchase the ticket enum: - 'NULL' - FREE - TPURSE GroupOfTariffZone: required: - id - name type: object properties: id: type: string name: type: string description: Reference to a group of tariff zones with display name. SupplementProduct: title: SupplementProduct required: - id - price - product type: object properties: datedServiceJourneyRefs: type: array items: type: string id: type: integer format: int64 price: $ref: '#/components/schemas/Price' product: $ref: '#/components/schemas/FareProduct' supplementType: type: string description: Type to indicate if for instance the product is some kind of passenger or just a seat allocation. Mirrors the supplement types defined in NeTEx and configured on supplement products in Entur Product catalog. enum: - ANIMAL - BICYCLE - DOG - EVENT_ADD_ON - EXTRA_LUGGAGE - JOURNEY_ADD_ON - JOURNEY_EXTENSION - MEAL - OTHER - PARKING - PASSENGER_SPOT - PASSENGER_VEHICLE_SPOT - PENALTY - SEAT_RESERVATION - TOP_UP - UPGRADE - WIFI parking: $ref: '#/components/schemas/Parking' StopPlace: title: StopPlace required: - ref type: object properties: ref: type: string name: type: string TicketDistributionGroup: title: TicketDistributionGroup required: - id - orderId - orderLineId - orderVersion - ticketDistributions - updatedForOrderLineVersion type: object properties: createdByDCI: type: string distributedByDCI: type: string distributedByOrgId: type: integer format: int64 id: type: integer format: int64 orderId: type: string orderLineId: type: string orderVersion: type: integer format: int32 organisationId: type: integer format: int64 salesPackage: $ref: '#/components/schemas/SalesPackage' ticketDistributions: type: array items: $ref: '#/components/schemas/TicketDistribution' updatedForOrderLineVersion: type: integer format: int32 fulfillmentMethod: type: string description: 'The fulfillment method given by the order line. Useful for determining which external ticketing system to retrieve validation data from. Possible values: NOD, ACCOUNT_BASED_TICKETING, INTERNATIONAL, BIFROST' orderOwnerCustomerId: type: string description: The customerId of the customer that owns the order distributionHolderCustomerId: type: string description: The customerId of the customer that will receive the ticket examples: - id: 123456789 orderId: ABCD1234 orderVersion: 1 orderLineId: e9154697-41e6-4955-985e-d474d438a557 orderLineVersion: 1 ticketDistributions: - id: 987654321 distributionStatus: DISTRIBUTED authority: id: '1234' name: WayFare customers: - customerId: '12345678901' entitlements: [] id: 1 loyaltyProgram: false networkId: 1 orderLineVersion: 1 productTemplate: 1 provider: 51 tariffCode: 321 combinedTicket: false fareProduct: id: ABC:PurchasedFareProduct:SingleTicket version: ABC:Version:PFP-1 name: Single Ticket organisationId: 5678 supplementProducts: [] userProfile: id: ABC:UserProfile:Adult version: ABC:Version:UP-1 name: Adult reservations: - id: 1 externalReservationId: RESV123456 datedServiceJourneyId: TST:DatedServiceJourney:20250601 seats: - externalSeatId: SEAT123 id: 1 railcarNumber: '4' seatNumber: '12' seatType: WINDOW seatingProperties: fareClass: STANDARD_CLASS accommodationFacility: SEATING seatAttachment: FIXED seatPosition: WINDOW mobilityFacilities: [] passengerCommsFacilities: [] sanitaryFacilities: [] nuisanceFacilities: [] baggageType: [] price: amount: '29.90' currency: NOK taxAmount: '5.98' taxRate: '0.20' purchaseDate: '2025-06-01T12:00:00Z' startOfValidity: '2025-06-01T13:00:00Z' endOfValidity: '2025-06-01T14:00:00Z' ticketType: SINGLE ticketWithZones: false type: SINGLE topology: fromStopPlace: TST:StopPlace:123 fromStopPlaceName: Central Station toStopPlace: TST:StopPlace:456 toStopPlaceName: Airport fareZones: [] groupOfTariffZones: [] distributionDetails: customerAccountRef: ABC:CustomerAccount:209ea428-9457-4ee6-bcc8-3559ffda5dd4 fareContractRef: ABC:FareContract:ABCD1235-fae3c8b3-5f4b-4d3e-9f7a-2c6e8f4d2b1a updatedForOrderLineVersion: 1 fulfillmentMethod: ACCOUNT_BASED_TICKETING orderOwnerCustomerId: '123456789' distributionHolderCustomerId: '987654321' TicketDistributionStatus: title: TicketDistributionStatus type: string enum: - CREATED - DISTRIBUTED - CANCELLED - PICKED_UP - VALIDATED - EXPIRED - FAILED - ACTIVATED TariffZone: title: TariffZone required: - id - name type: object properties: id: type: string name: type: string Leg: title: Leg required: - arrivalTime - departureTime - fromStopPlace - mode - serviceJourneyRef - subMode - toStopPlace type: object properties: arrivalTime: type: string format: date-time departureTime: type: string format: date-time toStopPlace: $ref: '#/components/schemas/StopPlace' fromStopPlace: $ref: '#/components/schemas/StopPlace' mode: $ref: '#/components/schemas/Mode' subMode: $ref: '#/components/schemas/SubMode' datedServiceJourneyRef: type: string serviceJourneyRef: type: string legId: type: string SalesPackage: title: SalesPackage required: - id type: object properties: id: type: string name: type: string version: type: string Reservation: title: Reservation required: - externalReservationId - id - seats type: object properties: datedServiceJourneyId: type: string externalReservationId: type: string id: type: integer format: int64 seats: type: array items: $ref: '#/components/schemas/Seat' Entitlement: title: Entitlement required: - entitlementProductId type: object properties: contractId: type: string entitlementProductId: type: string SubMode: title: SubMode type: string description: The transport sub mode (e.g., localBus or expressBus) used when traversing this leg. Null if leg is not a ride default: UNDEFINED enum: - UNKNOWN - UNDEFINED - INTERNATIONAL_FLIGHT - DOMESTIC_FLIGHT - INTERCONTINENTAL_FLIGHT - DOMESTIC_SCHEDULED_FLIGHT - SHUTTLE_FLIGHT - INTERCONTINENTAL_CHARTER_FLIGHT - INTERNATIONAL_CHARTER_FLIGHT - ROUND_TRIP_CHARTER_FLIGHT - SIGHTSEEING_FLIGHT - HELICOPTER_SERVICE - DOMESTIC_CHARTER_FLIGHT - SCHENGEN_AREA_FLIGHT - AIRSHIP_SERVICE - SHORT_HAUL_INTERNATIONAL_FLIGHT - CANAL_BARGE - LOCAL_BUS - REGIONAL_BUS - EXPRESS_BUS - NIGHT_BUS - POST_BUS - SPECIAL_NEEDS_BUS - MOBILITY_BUS - MOBILITY_BUS_FOR_REGISTERED_DISABLED - SIGHTSEEING_BUS - SHUTTLE_BUS - HIGH_FREQUENCY_BUS - DEDICATED_LANE_BUS - SCHOOL_BUS - SCHOOL_AND_PUBLIC_SERVICE_BUS - RAIL_REPLACEMENT_BUS - DEMAND_AND_RESPONSE_BUS - AIRPORT_LINK_BUS - INTERNATIONAL_COACH - NATIONAL_COACH - SHUTTLE_COACH - REGIONAL_COACH - SPECIAL_COACH - SCHOOL_COACH - SIGHTSEEING_COACH - TOURIST_COACH - COMMUTER_COACH - FUNICULAR - STREET_CABLE_CAR - ALL_FUNICULAR_SERVICES - UNDEFINED_FUNICULAR - METRO - TUBE - URBAN_RAILWAY - CITY_TRAM - LOCAL_TRAM - REGIONAL_TRAM - SIGHTSEEING_TRAM - SHUTTLE_TRAM - TRAIN_TRAM - TELECABIN - CABLE_CAR - LIFT - CHAIR_LIFT - DRAG_LIFT - TELECABIN_LINK - LOCAL - HIGH_SPEED_RAIL - SUBURBAN_RAILWAY - REGIONAL_RAIL - INTERREGIONAL_RAIL - LONG_DISTANCE - INTERNATIONAL - SLEEPER_RAIL_SERVICE - NIGHT_RAIL - CAR_TRANSPORT_RAIL_SERVICE - TOURIST_RAILWAY - AIRPORT_LINK_RAIL - RAIL_SHUTTLE - REPLACEMENT_RAIL_SERVICE - SPECIAL_TRAIN - CROSS_COUNTRY_RAIL - RACK_AND_PINION_RAILWAY - INTERNATIONAL_CAR_FERRY - NATIONAL_CAR_FERRY - REGIONAL_CAR_FERRY - LOCAL_CAR_FERRY - INTERNATIONAL_PASSENGER_FERRY - NATIONAL_PASSENGER_FERRY - REGIONAL_PASSENGER_FERRY - LOCAL_PASSENGER_FERRY - POST_BOAT - TRAIN_FERRY - ROAD_FERRY_LINK - AIRPORT_BOAT_LINK - HIGH_SPEED_VEHICLE_SERVICE - HIGH_SPEED_PASSENGER_SERVICE - SIGHTSEEING_SERVICE - SCHOOL_BOAT - CABLE_FERRY - RIVER_BUS - SCHEDULED_FERRY - SHUTTLE_FERRY_SERVICE - COMMUNAL_TAXI - CHARTER_TAXI - WATER_TAXI - RAIL_TAXI - BIKE_TAXI - BLACK_CAB - MINI_CAB - ALL_TAXI_SERVICES - HIRE_CAR - HIRE_VAN - HIRE_MOTORBIKE - HIRE_CYCLE - ALL_HIRE_VEHICLES examples: - LOCAL Mode: title: Mode type: string description: Travel mode for Leg. enum: - AIR - BICYCLE - BUS - CABLEWAY - CAR - WATER - FUNICULAR - LIFT - LINKSWITCH - RAIL - METRO - TRAM - TRANSIT - FOOT - COACH UserProfile: title: UserProfile required: - id type: object properties: id: type: string name: type: string version: type: string ApiError: title: ApiError required: - error - exception - message - path - status - timestamp - title type: object properties: timestamp: type: string format: date-time examples: - '2025-01-01T12:00:00Z' status: type: integer format: int32 examples: - 400 title: type: string description: Short, human-readable summary of the problem error: type: string exception: type: string message: type: string examples: - Validation failed path: type: string examples: - /v1/ticket-distributions/XYZ123/distribute examples: - timestamp: '2025-01-01T12:00:00Z' status: 400 title: Bad Request error: Bad Request exception: ValidationException message: Validation failed path: /v1/ticket-distributions/XYZ123 FareProduct: title: FareProduct required: - id type: object properties: id: type: string name: type: string organisation: type: integer format: int64 version: type: string validableElements: type: array items: $ref: '#/components/schemas/ValidableElement' Price: title: Price required: - amount - taxAmount type: object properties: amount: type: string currency: type: string taxAmount: type: string taxRate: type: string Authority: title: Authority required: - id type: object properties: id: type: string examples: - ENT:Authority:1234 Topology: title: Topology type: object properties: datedServiceJourneyRef: type: array items: type: string distance: type: integer format: int32 fromStopPlace: type: string fromStopPlaceExt: type: integer format: int64 fromStopPlaceName: type: string fromTariffZone: type: string deprecated: true fromTariffZoneExt: type: integer format: int32 deprecated: true fromTariffZoneName: type: string deprecated: true groupOfTariffZones: type: array items: $ref: '#/components/schemas/GroupOfTariffZone' toStopPlace: type: string toStopPlaceExt: type: integer format: int64 toStopPlaceName: type: string toTariffZone: type: string deprecated: true toTariffZoneExt: type: integer format: int32 deprecated: true toTariffZoneName: type: string deprecated: true viaTariffZones: type: array deprecated: true items: $ref: '#/components/schemas/TariffZone' zoneType: type: string enum: - POINT_TO_POINT - RING fromFareZone: $ref: '#/components/schemas/FareZone' toFareZone: $ref: '#/components/schemas/FareZone' viaFareZones: type: array items: $ref: '#/components/schemas/FareZone' FareZone: required: - id - name type: object properties: id: type: string name: type: string description: Reference to fare zone with display name. Will eventually replace tariff zones. Group: title: Group required: - id - userProfileSummary type: object properties: description: type: string id: type: string name: type: string userProfiles: type: string description: Deprecated in favour of new type userProfileSummary. deprecated: true version: type: string userProfileSummary: type: array description: A collection of all the different user profiles in the group. items: $ref: '#/components/schemas/UserProfileInGroup' default: [] Customer: title: Customer required: - customerId - entitlements - id type: object properties: customerId: type: string description: The id of the customer in the external system examples: - '12345678901' entitlements: type: array items: $ref: '#/components/schemas/Entitlement' id: type: integer description: The internal id of the customer format: int64 examples: - 1 UserProfileInGroup: required: - count - userProfileId type: object properties: userProfileId: type: string description: Reference to the product register. userProfileVersion: type: string count: type: integer description: The number of travellers with given user profile. name: type: string description: Display name of user profile for requested language. Defaults to norwegian name. description: A representation of a user profile to summarize parts of a group product. Vehicle: title: Vehicle required: - licencePlateNumber type: object properties: licencePlateNumber: type: string examples: - AA12345 description: A vehicle registered for a parking reservation. TicketTravelCardRequest: title: TicketTravelCardRequest required: - activate - mediaSerialNumberId - paymentMeansType type: object properties: activate: type: boolean description: Activate the product mediaSerialNumberId: maximum: 4294967295 minimum: 0 type: integer description: The media serial number (MSN) ID of the travel card format: int64 paymentMeansType: $ref: '#/components/schemas/PaymentMeansType' description: Request for generating ticket for travel card DistributionDetails: title: DistributionDetails type: object properties: clientSecret: type: string orderGroupId: type: string fareContractRef: type: string description: Reference to an account-based-ticketing farecontract customerAccountRef: type: string description: Reference to an account-based-ticketing customer account distributedAsPdf: type: boolean description: Is set to true if distributed as a PDF by ticket-distribution TicketDistribution: title: TicketDistribution required: - authority - combinedTicket - customers - distributionStatus - endOfValidity - id - loyaltyProgram - networkId - orderLineVersion - price - productTemplate - provider - purchaseDate - reservations - startOfValidity - supplementProducts - tariffCode - ticketType - ticketWithZones - topology - type type: object properties: arrivalTime: type: string format: date-time authority: $ref: '#/components/schemas/Authority' combinedTicket: type: boolean createdAt: type: string format: date-time customers: type: array items: $ref: '#/components/schemas/Customer' deliverAfter: type: string format: date-time departureTime: type: string format: date-time distributionDetails: $ref: '#/components/schemas/DistributionDetails' distributionStatus: $ref: '#/components/schemas/TicketDistributionStatus' duration: type: string endOfValidity: type: string format: date-time fareContractId: type: string fareProduct: $ref: '#/components/schemas/FareProduct' fullAreaValidity: type: boolean group: $ref: '#/components/schemas/Group' id: type: integer format: int64 loyaltyProgram: type: boolean maxTravellers: type: integer format: int32 mediaSerialNumberId: type: integer format: int64 networkId: type: integer format: int32 orderLineVersion: type: integer format: int32 price: $ref: '#/components/schemas/Price' productTemplate: type: integer format: int32 provider: type: integer format: int32 purchaseDate: type: string format: date-time reservations: type: array items: $ref: '#/components/schemas/Reservation' startOfValidity: type: string format: date-time supplementProducts: type: array items: $ref: '#/components/schemas/SupplementProduct' tariffCode: type: integer format: int32 ticketType: type: string description: Deprecated in favour of type. Only SINGLE or PERIODIC, the main ticket of a carnet gets the duration based value here. deprecated: true enum: - SINGLE - PERIODIC ticketWithZones: type: boolean topology: $ref: '#/components/schemas/Topology' travelDocumentId: type: string type: type: string description: SINGLE for tickets valid less than 24 hours, PERIODIC for tickets valid 24 hours or more, CARNET for the main ticket of an id-based carnet (klippekort), which has carnet with the number of tickets. New values may be added, so consumers should handle unknown values. examples: - PERIODIC updatedAt: type: string format: date-time usageTrigger: type: string enum: - START_OF_PERIOD - START_OUT_BOUND_RIDE - END_OUT_BOUND_RIDE - START_RETURN_RIDE - PURCHASE - SPECIFIED_START_DATE - FULFILMENT - DAY_OFFSET_BEFORE_CALENDAR_PERIOD userProfile: $ref: '#/components/schemas/UserProfile' legs: type: array items: $ref: '#/components/schemas/Leg' cancellationReason: type: string description: 'reason for cancellation of the ticket distribution, Possible values: TRANSFERRED, DEVIATION, SEAT_CHANGED, VALIDITY_UPDATED' carnet: $ref: '#/components/schemas/Carnet' Carnet: title: Carnet required: - remainingCount - totalCount - usedCount type: object properties: totalCount: type: integer description: Total number of tickets purchased. format: int32 usedCount: type: integer description: Number of tickets that have been activated. format: int32 remainingCount: type: integer description: Number of tickets left, totalCount minus usedCount. format: int32 description: Carnet (klippekort) details, only present on the main ticket of an id-based carnet. Each ticket on the carnet is one trip (TRIP_CARNET) or one pass (PASS_CARNET). responses: notFound: description: Not Found content: application/json: schema: $ref: '#/components/schemas/ApiError' examples: default: value: timestamp: '2025-01-01T12:00:00Z' status: 404 title: Not Found error: Not Found exception: EntityNotFoundException message: Ticket distribution with id 'XYZ123' not found path: /v1/ticket-distributions/XYZ123/distribute badRequest: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ApiError' examples: default: value: timestamp: '2025-01-01T12:00:00Z' status: 400 title: Bad Request error: Bad Request exception: ValidationException message: Validation failed path: /v1/ticket-distributions/XYZ123/distribute internalServerError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ApiError' examples: default: value: timestamp: '2025-01-01T12:00:00Z' status: 500 title: Internal Server Error error: Internal Server Error exception: RuntimeException message: An unexpected error occurred path: /v1/ticket-distributions/XYZ123/distribute conflict: description: Conflict content: application/json: schema: $ref: '#/components/schemas/ApiError' examples: default: value: timestamp: '2025-01-01T12:00:00Z' status: 409 title: Conflict error: Conflict exception: ConflictException message: Ticket distribution with id 'XYZ123' is already distributed path: /v1/ticket-distributions/XYZ123/distribute parameters: orderIdPathParam: name: orderId in: path description: orderId required: true style: simple explode: false schema: type: string examples: - NTA2JGR7 X-Correlation-Id: name: X-Correlation-Id in: header description: Correlation id required: false style: simple explode: false schema: type: string ET-Client-Name: name: ET-Client-Name in: header description: 'Entur Client Header. It is required that all consumers identify themselves by using this header. Entur will deploy strict rate-limiting policies on API-consumers who do not identify with a header and reserves the right to block unidentified consumers. The structure of ET-Client-Name should be: `-`.' required: false style: simple explode: false schema: type: string dciHeader: name: Entur-Distribution-Channel in: header description: A header containing a distribution channel reference required: false style: simple explode: false schema: type: string examples: - ENT:DistributionChannel:App posHeader: name: Entur-Pos in: header description: A header containing a point-of-sale reference required: true style: simple explode: false schema: type: string examples: - MyApplication languageHeader: name: Accepts-Language in: header description: A header used to select language required: false style: simple explode: false schema: type: string description: Current supported languages are 'nob', 'nno' and 'eng' examples: default: value: nob x-refined-from: - entur-ticket-distribution-partner-openapi.json - entur-ticket-distribution-partner-openapi.yml