Preparing Metadata
In our Basic Integration flow, some of the data such as departure times and prices must be retrieved live from our API, but some other data should be stored locally to optimize the user experience and your flow.
The Distribusion API enables you to search for trips on city, areas and station level, flexibly catering to what the user chooses to input. Please refer to the Searching for Trips section.
In order for users to search for trips, the metadata related to marketing carriers and stations must be retrieved and stored locally, which can be achieved by making use of the dedicated endpoints mentioned below.
Locations
Stations
Distribusion standardizes station and city data across the entire ground transportation industry, the same way in which IATA does in the flight industry. Our station codes are designed to represent specific locations using a set of 8 capital letters that make it easy for you to identify and, where applicable, assign them to existing location entities within your own system. The structure of our station codes follows a simple logic:
- The first two letters represent the country in which the station is located
- The next three represent the city in which the station is located
- The last three letters more precisely represent the location of the station
Example
- GB(Great Britain) + LON(London) + VSA(Victoria station) = GBLONVSA
The whole list of stations available in Distribusion can be retrieve from the /stations endpoint. If you are looking for details of a single station, use the /stations/{station_code} endpoint.
Cities
Distribusion also provides harmonized location codes at city level that unite all stations within a certain city. City codes consist of 5 letters according to the following logic:
- The first two letters represent the country in which the city is located,
- The next three represent the city code
Example
City
- London (GBLON)
Stations belonging to this area
- London Victoria Coach Station(GBLONVSA)
- London Park Inn Heathrow (GBLONPIH)
- London Lewisham (GBLONLEW)
The whole list of cities available in Distribusion can be retrieve from the /cities endpoint.
Areas
Besides grouping stations by cities and countries, Distribusion also provides an area grouping that unites all the stations that belong to the same airport or superstation. Each Area consists of a 7-letter-code, following this logic:
- The first two letters represent the country in which the airport is located
- The next three represent the city in which the airport is located
- The last two letters more precisely represent the location of the airport
Example
Area
- London Heathrow Airport (GBLONLA)
Stations belonging to this area
- London Heathrow Airport Terminal 3 (GBLONAHT)
- London Heathrow Airport Terminal 4 (GBLONHAI)
- London Heathrow Airport Terminal 5 (GBLONHAR)
The whole list of areas available in Distribusion can be retrieve from the /areas endpoint.
External Station & Area Codes
In addition to Distribusion's standardized location codes, the API provides common industry-standard identifiers for certain types of stations and areas. These codes, such as UIC for European rail stations and IATA for airports stations and areas, can be useful for mapping to other systems or for display purposes. These UIA and IATA codes can also be used for searches via /connections/find. Learn more in our IATA and UIC Codes Search guide.
UIC Station Codes
- What it is: UIC (International Union of Railways) codes are unique identifiers for railway stations, primarily used across Europe.
- Availability: Provided for European rail stations.
- Endpoints: /stations/{station_code} & /stations
- Parameter:
uic_station_code
IATA Airport Codes
- What it is: IATA (International Air Transport Association) codes are three-letter codes used to identify airports worldwide.
- Availability: Relevant for stations and areas located at or serving airports globally.
- Endpoints: /stations/{station_code} & /areas
- Parameter:
iata_code
Connected Stations
The /stations, /cities and /areas endpoints include all data available in Distribusion from all carriers, even carriers that are not whitelisted for your account.
For a better search experience, we recommend that you don't allow users to select stations, cities or areas that have no content available. To limit the results to the content covered by your carriers only use the /connected_stations endpoint.
This list should be used to build the suggestions in your search fields e.g. when a user clicks on the ‘from’ and ‘to’ fields in your search page the list of stations is limited to show only possible combinations.
At the moment we don't have an equivalent endpoint for /connected_cities, so we suggest you build a list of connected cities by getting the list from the /connected_stations endpoint and using their city code (included in the response) or removing the last 3 characters to get the city codes.
Marketing Carrier Stations
In case you already know which marketing carriers are of interest to you, please refer to /marketing_carriers/{marketing_carrier_id}/stations endpoint which allows you to retrieve a list of all stations used by a specific marketing carrier.
Station Types
To facilitate the distribution of different modes of ground transportation, which are clearly marked within the station_type parameter for each station in the /stations endpoint, Distribusion supports four station types:
- Bus station:
bus_station - Train station:
train_station - Ferry station:
ferry_station - Tram station:
tram_station
Station Mapping
When it comes to mapping stations & schedules from the Distribusion API, we strongly recommend utilizing our city & area codes in the API to map to your entities. This way if an additional station is added to a city or area, your search will still pull all relevant schedules for the customer and no trips will be missing.
See the image below for how the use of cities and areas can simplify your API calls:

In the same thread, we strongly recommend to map our stations, cities & areas to your internal entities, and not the connections themselves. Connections are added, changed and removed frequently, leaving you with a tall task to keep the content fully mapped in this way. However, once a city or airport is mapped to your entity for that city or airport, you can be confident that all content relating to it will be displayed regardless of the ever changing schedules mapped to it.
Suggestion Service
To significantly enhance the user's search experience, a Suggestion Service is available. This service streamlines how users find and select locations by either providing a list of popular destinations or dynamically suggesting locations as a user types. It can further refine arrival suggestions based on a selected departure and returns helpful data like location names, codes, and types. Integrating this service can simplify the initial setup for location searching, reducing the need for extensive upfront location data mapping and local storage for the search interface, especially if you don't have an existing location database.
Please note that the Suggestion Service is an enterprise API feature. For detailed implementation guidance, including all parameters and response structures, please refer to the full Suggestion Service documentation.
Geo Coordinate Search
The geo coordinate search feature allows retailers to search for nearby stations using latitude and longitude coordinates, instead of relying on predefined station mappings between Distribusion and your internal database. This is particularly useful when working with dynamic or incomplete station data, as it enables real-time proximity-based search without requiring manual mapping of station IDs.
When using this method, your system sends a request with the desired coordinates and a search radius. The API responds with a list of stations within that radius, which you can use to retrieve trips or connections. You can find the full documentation for implementing geo search in our Geo Coordinate Search guide.
Marketing Carriers
Metadata
To retrieve all marketing carriers available for your API credentials, please use the /marketing_carriers endpoint.
In order to retrieve the metadata of a specific marketing carrier (e.g. its logo, terms and conditions, vehicle type, operating status, customer support contacts), please refer to the /marketing_carriers/{marketing_carrier_id} endpoint.
Carrier Codes
Each marketing carrier possesses a unique 4-letter-code in Distribusion’s system, regardless of which mode of transport it represents. In order to display the search results and sell tickets for a certain carrier, you will need to have previously retrieved and stored the respective metadata such as the logo, fare features, and terms & conditions.
Examples
- Heathrow Express (Airport Transfer) = HEXR
- Deutsche Bahn (Rail) = DBAH
- Autoservizi Salemi (Intercity Bus Europe) = ASAL
- Aguia Branca (Intercity Bus Brazil) = ABRA
- Wightlink (Ferry) = WIGH
- Edinburgh Trams (Tram) = ETRM
Prior to the launch of your integration, your account manager will configure access to all agreed upon marketing carriers for your API credentials.
Fare Class Mapping
We also recommend caching the fare-classes data of the carriers. By mapping all the fare-classes (as found in /connections/find & /marketing_carriers/{marketing_carrier_id}) you are providing full parity to the customer and presenting them with the full options available, from higher comfort classes, to extra luggage and even discounted fares.
Booking Schema (for checkout fields)
When confirming a reservation, each carrier has different requirements on the fields that must be included in the /reservations/confirm request. For instance, some carriers might require a phone number or the passenger ID details while others won't. To know what is required at carrier level you can consult the /marketing_carriers/{marketing_carrier_id}/booking/schema endpoint. We recommend that you cache this information in advance and dynamically display only the required fields at the checkout page once you know what carrier is selected by the user.
Different carriers often require distinct sets of passenger information for successful bookings, affecting both the /reservations/create and /reservations/confirm requests. These varying requirements can include fields like passenger name, date of birth, nationality, or document details. To ensure you collect all necessary information, you have two primary ways to determine these carrier-specific fields:
- Proactive Caching: You can retrieve and cache the complete booking schema for a specific carrier in advance by consulting the /marketing_carriers/{marketing_carrier_id}/booking/schema endpoint. This response details all mandatory and optional fields for that carrier's reservation process.
- Dynamic Retrieval: Alternatively, you can fetch these passenger field requirements dynamically as part of your booking flow. The responses from both the /connections/vacancy endpoint (when checking availability) and the /reservations/create endpoint (when initiating a reservation) will also outline the necessary fields for subsequent steps.
Regardless of the method chosen, we recommend integrating this logic to dynamically adapt your checkout forms. This will help you display only the required fields based on the selected carrier and specific context, enhancing user experience, reducing booking errors, and ensuring compliance. More details available in our Dynamic Passenger Details guide.
Best Practices
- Do not call metadata endpoints during the user flow: Although we recommend integrating the search flow via live customer calls, we do not recommend the same for station & carrier information. To optimize your flow you should cache the data for stations, areas, cities and marketing carriers in advance. We recommend creating a cache of the /stations, /cities, /areas, /connected_stations and /marketing_carriers/{marketing_carrier_id} endpoints.
- Call the metadata endpoints regularly: For the station information, we recommend creating a cache daily or multiple times per week and for the carrier information such as logos, T&C and amenities we recommend calling the endpoint for each carrier integrated weekly or bi-weekly to keep up to date.
- Only show relevant stations in your search fields: Instead of showing the whole list of stations, areas and cities that you get from Distribusion (that covers the whole world) you should filter out the list to display only the relevant results using the /connected_stations.
- Use the carrier logo: The carrier logos are available under the
white_label_logofield in the /marketing_carriers/{marketing_carrier_id} endpoint, but must be converted from the base64 format to image. This can be done with a script such as Base64 Guru. - Utilize the Suggestion Service for search inputs: To enhance the user experience when they are inputting departure and arrival locations, integrate the Suggestion Service. It can provide dynamic, as-you-type suggestions or lists of popular destinations, making it easier for users to find locations without needing to know exact names or codes for their initial search. This is particularly helpful for streamlining the search query phase.
API Examples
Sample Response from /stations
{
"id": "DEBERBWA",
"type": "stations",
"attributes": {
"station_type": "train_station",
"code": "DEBERBWA",
"name": "Wassmannsdorf Train Station",
"description": "The train platform is located at Berlin Waßmannsdorf Train Station. Passengers should find the exact platform on the information display board based on the departure time and the destination.",
"street_and_number": "",
"zip_code": "12529",
"time_zone": "Europe/Berlin",
"uic_station_code": "8084412",
"longitude": 13.463564,
"latitude": 52.368384
},
"relationships": {
"city": {
"data": {
"id": "DEBER",
"type": "cities"
}
},
"area": {
"data": null
}
}
},
{
"id": "DEBERBFB",
"type": "stations",
"attributes": {
"station_type": "train_station",
"code": "DEBERBFB",
"name": "Berlin Airport BER Terminal 1\u00262 Train Station",
"description": "The train platform is located at Berlin Airport BER - Terminal 1-2 Train Station. Passengers should find the exact platform on the information display board based on the departure time and the destination.",
"street_and_number": "",
"zip_code": "12529",
"time_zone": "Europe/Berlin",
"uic_station_code": "8084407",
"longitude": 13.509769,
"latitude": 52.364481
},
"relationships": {
"city": {
"data": {
"id": "DEBER",
"type": "cities"
}
},
"area": {
"data": {
"id": "DEBERBB",
"type": "areas"
}
}
}
},
{
"id": "ITRROPHA",
"type": "stations",
"attributes": {
"station_type": "bus_station",
"code": "ITRROPHA",
"name": "Pozzuoli Port",
"description": "The port is located on Largo San Paolo",
"street_and_number": "Largo S. Paolo, 80078 Pozzuoli",
"zip_code": "80078",
"time_zone": "Europe/Rome",
"uic_station_code": null,
"longitude": 14.11799,
"latitude": 40.823195
},
"relationships": {
"city": {
"data": {
"id": "ITRRO",
"type": "cities"
}
},
"area": {
"data": null
}
}
},
{
"id": "ITRROCHA",
"type": "stations",
"attributes": {
"station_type": "bus_station",
"code": "ITRROCHA",
"name": "Casamicciola Port",
"description": "The port is located close to Rada Hotel",
"street_and_number": "Casamicciola Terme",
"zip_code": "80074",
"time_zone": "Europe/Rome",
"uic_station_code": null,
"longitude": 13.906041,
"latitude": 40.749354
},
"relationships": {
"city": {
"data": {
"id": "ITRRO",
"type": "cities"
}
},
"area": {
"data": null
}
}
},
{
"id": "ITZJJPHA",
"type": "stations",
"attributes": {
"station_type": "bus_station",
"code": "ITZJJPHA",
"name": "Procida Port",
"description": "The port is located on Via Roma",
"street_and_number": "Via Roma, 1",
"zip_code": "80079",
"time_zone": "Europe/Rome",
"uic_station_code": null,
"longitude": 14.027073,
"latitude": 40.766209
},
"relationships": {
"city": {
"data": {
"id": "ITZJJ",
"type": "cities"
}
},
"area": {
"data": null
}
}
},
{
"id": "GBQQDDHA",
"type": "stations",
"attributes": {
"station_type": "bus_station",
"code": "GBQQDDHA",
"name": "Dover Port",
"description": "The port is located on Lower Road West",
"street_and_number": "",
"zip_code": "CT161PS",
"time_zone": "Europe/London",
"uic_station_code": null,
"longitude": 1.332752,
"latitude": 51.124942
},
"relationships": {
"city": {
"data": {
"id": "GBQQD",
"type": "cities"
}
},
"area": {
"data": null
}
}
},
{
"id": "BEZEEZHA",
"type": "stations",
"attributes": {
"station_type": "ferry_station",
"code": "BEZEEZHA",
"name": "Zeebrugge Port",
"description": "The port is located on Engelandstraat",
"street_and_number": "Engelandstraat",
"zip_code": "8380",
"time_zone": "Europe/Brussels",
"uic_station_code": null,
"longitude": 3.1848123,
"latitude": 51.3398613
},
"relationships": {
"city": {
"data": {
"id": "BEZEE",
"type": "cities"
}
},
"area": {
"data": null
}
}
}
...For more sample responses, check the /stations endpoint page.
Sample Response from /stations/{station_code}
{
"data": {
"id": "DEBERBFB",
"type": "stations",
"attributes": {
"station_type": "train_station",
"code": "DEBERBFB",
"name": "Aéroport de Berlin BER Terminal 1&2 Gare",
"description": "Le quai du train est situé à l'aéroport de Berlin BER - Gare Terminal 1-2. Les passagers doivent trouver le quai exact sur le panneau d'affichage d'information en fonction de l'heure de départ et de la destination.",
"street_and_number": "",
"zip_code": "12529",
"time_zone": "Europe/Berlin",
"uic_station_code": "8084407",
"longitude": 13.509769,
"latitude": 52.364481
},
"relationships": {
"city": {
"data": {
"id": "DEBER",
"type": "cities"
}
},
"area": {
"data": {
"id": "DEBERBB",
"type": "areas"
}
}
}
},
"jsonapi": {
"version": "1.0"
},
"meta": {
"locale": "fr"
},
"included": [
{
"id": "DEBER",
"type": "cities",
"attributes": {
"code": "DEBER",
"name": "Berlin",
"subdivision_code": null
}
},
{
"id": "DEBERBB",
"type": "areas",
"attributes": {
"code": "DEBERBB",
"name": "Berlin Airport BER",
"iata_code": "BER"
},
"relationships": {
"city": {
"data": {
"id": "DEBER",
"type": "cities"
}
}
}
}
]
}For more sample responses, check the /stations/{station_code} endpoint page.
Sample Response from /areas
… { "id": "ESBCNBA", "type": "areas", "attributes": { "code": "ESBCNBA", "name": "Barcelona El Prat Airport ", "latitude": 41.29744497927648, "longitude": 2.08327264003784, "iata_code": "BCN" }, "relationships": { "city": { "data": { "id": "ESBCN", "type": "cities" } } } }, { "id": "ITROMRA", "type": "areas", "attributes": { "code": "ITROMRA", "name": "Rome Ciampino Airport", "latitude": 41.79878567045095, "longitude": 12.59118539772346, "iata_code": "CIA" }, "relationships": { "city": { "data": { "id": "ITROM", "type": "cities" } } } }, { "id": "ITMILMA", "type": "areas", "attributes": { "code": "ITMILMA", "name": "Milan Malpensa Airport", "latitude": 45.6300999918447, "longitude": 8.72550924016874, "iata_code": "MXP" }, "relationships": { "city": { "data": { "id": "ITMIL", "type": "cities" } } } }, { "id": "FRPARPA", "type": "areas", "attributes": { "code": "FRPARPA", "name": "Paris Charles de Gaulle Airport ", "latitude": 49.00789486748711, "longitude": 2.55076076911455, "iata_code": "CDG" }, "relationships": { "city": { "data": { "id": "FRPAR", "type": "cities" } } } }, { "id": "GBLONLA", "type": "areas", "attributes": { "code": "GBLONLA", "name": "London Heathrow Airport ", "latitude": 51.47005569586732, "longitude": -0.4543062308008, "iata_code": "LHR" }, "relationships": { "city": { "data": { "id": "GBLON", "type": "cities" } } } }…For more sample responses, check the /areas endpoint page.
Sample Response from /cities
… { "id": "DEAUG", "type": "cities", "attributes": { "code": "DEAUG", "name": "Augsburg", "subdivision_code": null, "time_zone": "Berlin", "country_code": "DE", "latitude": 48.3705449, "longitude": 10.89778999999999 } }, { "id": "DEBYU", "type": "cities", "attributes": { "code": "DEBYU", "name": "Bayreuth", "subdivision_code": null, "time_zone": "Berlin", "country_code": "DE", "latitude": 49.9456399, "longitude": 11.5713346 } }, { "id": "DEBER", "type": "cities", "attributes": { "code": "DEBER", "name": "Berlin", "subdivision_code": null, "time_zone": "Berlin", "country_code": "DE", "latitude": 52.52000659999999, "longitude": 13.40495399999998 } }, { "id": "DEBRU", "type": "cities", "attributes": { "code": "DEBRU", "name": "Braunschweig", "subdivision_code": "", "time_zone": "Berlin", "country_code": "DE", "latitude": 52.2688736, "longitude": 10.52676959999997 } }, { "id": "DEBRE", "type": "cities", "attributes": { "code": "DEBRE", "name": "Bremen", "subdivision_code": null, "time_zone": "Berlin", "country_code": "DE", "latitude": 53.07929619999999, "longitude": 8.80169369999999 } }…For more sample responses, check the /cities endpoint page.
Sample Response from /connected_stations
… { "id": "ADALVALA-ESABCACF", "type": "connected_stations", "relationships": { "departure_station": { "data": { "id": "ADALVALA", "type": "stations" } }, "arrival_station": { "data": { "id": "ESABCACF", "type": "stations" } } } }, { "id": "ADALVALA-ESACOLCO", "type": "connected_stations", "relationships": { "departure_station": { "data": { "id": "ADALVALA", "type": "stations" } }, "arrival_station": { "data": { "id": "ESACOLCO", "type": "stations" } } } }, { "id": "ADALVALA-ESALCZOB", "type": "connected_stations", "relationships": { "departure_station": { "data": { "id": "ADALVALA", "type": "stations" } }, "arrival_station": { "data": { "id": "ESALCZOB", "type": "stations" } } } }, { "id": "ADALVALA-ESALMABU", "type": "connected_stations", "relationships": { "departure_station": { "data": { "id": "ADALVALA", "type": "stations" } }, "arrival_station": { "data": { "id": "ESALMABU", "type": "stations" } } } }…For more sample responses, check the /connected_stations endpoint page.
Sample Response from /marketing_carriers/{marketing_carrier_id}
{ "data": { "id": "NTRA", "type": "marketing_carriers", "attributes": { "code": "NTRA", "trade_name": "NS", "legal_name": "NS Reizigers BV", "address": "Laan van Puntenburg 100, 3511ER, Utrecht, Netherlands", "phone": "+31307515155", "fax": "", "customer_service_phone": "+31307515155", "customer_service_email": "", "email": "", "commercial_register": "", "commercial_register_number": "", "vat_no": "NL803882804B01", "authorised_representative": "", "white_label_domain": "ns.transport-ticket.com", "white_label_logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAHVCAMAAADW/vKzAAAABGdBTUEAALGP\nC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3Cc\nulE8AAADAFBMVEUAAAAAAGkAAGYAAGYAAGYAAGYAAGYAAGYAAGUAAGYAAGcA\nAGUAAGYAAGcAAGUAAGUAAGoAAGUAAGYAAGYAAGMAAGYAAGYAAGUAAGUAAGcA\nAFUAAGgAAGsAAGYAAGYAAGYAAGYAAGYAAGQAAHEAAGEAAGYAAGYAAGYAAGYA\nAGYAAGYAAGYAAGUAAG0AAGYAAGYAAGQAAGYAAGUAAGYAAGgAAGYAAGYAAGUA\nAGYAAGYAAGcAAGYAAGYAAGYAAGcAAGoAAGYAAGYAAGYAAGQAAGYAAGIAAGoA\nAGYAAGYAAGYAAGYAAGYAAGYAAGYAAGgAAGYAAGYAAGYAAGYAAGMAAGYAAGYA\nAGcAAGUAAGMAAGYAAGYAAGYAAGcAAGYAAGYAAGUAAGcAAAAAAGQAAGYAAGYA\nAGgAAGYAAGYAAGYAAGYAAFUAAGgAAGUAAGQAAGcAAGcAAIAAAGYAAGUAAGgA\nAGYAAGcAAGcAAGQAAGYAAGYAAGUAAGkAAGYAAGUAAGYAAGYAAGcAAGUAAGUA\nAGcAAGcAAGYAAGcAAGUAAGYAAGcAAGUAAGYAAGUAAGcAAGUAAGYAAGcAAGUA\nAGcAAGYAAGcAAGUAAGYAAGUAAGcAAGcAAGUAAGYAAGYAAGUAAGYAAGYAAGcA\nAGUAAGYAAGUAAGcAAGUAAGYAAGYAAGcAAGYAAGYAAGcAAGYAAGcAAF0AAGYA\nAGYAAGcAAGAAAGUAAGYAAGYAAGcAAGYAAGYAAGQAAGUAAGYAAGUAAGIAAGYA\nAGYAAGYAAGYAAGUAAGYAAGYAAGUAAGcAAGcAAGYAAIAAAGYAAGYAAGYAAGAA\nAGcAAGYAAGYAAGYAAGkAAGYAAGcAAGYAAGYAAGYAAGYAAGcAAGUAAGgAAGYA\nAGQAAG0AAGYAAGYAAGcAAGUAAGYAAGYAAGcAAGcAAGYAAGYAAGYAAGQAAGcA\nAGYAAGYAAGUAAGgAAGUAAGYAAGYAAGYAAGYAAGYAAGYAAGUAAGYAAGYAAGcA\nAGcAAGcAAGYAAGb///9lHEHtAAAA/nRSTlMAEcv07uDd1sSxn416ZkwrDDXv\n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\nQmCC\n", "white_label_colour_code": "", "terms": "NS Trip Scheduler: https://www.ns.nl/en/journeyplanner/\r\n\r\nNS Privacy Policy: https://www.ns.nl/en/privacy\r\n\r\nNS General Terms and Conditions for the transport of Travellers and Hand Luggage of Nederlandse Spoorwegen (AVR-NS): https://www.ns.nl/binaries/_ht_1698835312159/content/assets/ns-en/terms/general-terms-and-conditions-for-the-transport-of-passengers-and-hand-luggage-of-the-ns-avr-ns.pdf\r\n\r\nNS General terms and conditions urban and regional public transport 2015: https://www.ns.nl/binaries/_ht_1528981711934/content/assets/ns-en/terms/general-terms-and-conditions-urban-and-regional-public-transport.pdf\r\n\r\nNS E-ticket Terms and Conditions: https://www.ns.nl/binaries/_ht_1683189677743/content/assets/ns-en/terms/terms-and-conditions-e-ticket.pdf", "privacy_policy": null, "flight_number_required": false, "has_mobile_tickets": false, "tickets_validity_in_hours": null, "tickets_validity_info": "The one-way ticket is valid for 28 hours, from 0:00 until 04:00 the next morning.", "cancellation_type": "no_cancellation", "supports_seats": false, "ticket_printing_required": false, "status": "active", "cancellation_api_exposed": false, "passenger_data_amendment_api_exposed": false, "amendment_api_exposed": false, "live_booking_conditions_supported": false, "amendment_refund_type": "none", "cancellation_refund_type": "none", "booking_fee": 0, "cancellation_fee": 0, "cancellation_cutoff": null }, "relationships": { "default_passenger_type": { "data": { "id": "PNOS", "type": "passenger_types" } }, "passenger_types": { "data": [ { "id": "PNOS", "type": "passenger_types" }, { "id": "PCIL", "type": "passenger_types" } ] }, "extra_types": { "data": [] }, "vehicle_types": { "data": [ { "id": "TRAIN", "type": "vehicle_types" } ] }, "fare_classes": { "data": [ { "id": "NTRA-FARE-1", "type": "fare_classes" }, { "id": "NTRA-FARE-2", "type": "fare_classes" }, { "id": "NTRA-FARE-3", "type": "fare_classes" }, { "id": "NTRA-FARE-4", "type": "fare_classes" } ] } } }, "jsonapi": { "version": "1.0" }, "meta": { "locale": "en", "currency": "EUR" }, "included": [ { "id": "PNOS", "type": "passenger_types", "attributes": { "code": "PNOS", "name": "Adult", "description": "", "min_age": 12, "max_age": 99 } }, { "id": "PCIL", "type": "passenger_types", "attributes": { "code": "PCIL", "name": "Child", "description": "", "min_age": 4, "max_age": 11 } }, { "id": "TRAIN", "type": "vehicle_types", "attributes": { "code": "TRAIN", "name": "Train", "description": "Vehicle which is transporting people or goods on rails." } }, { "id": "NTRA-FARE-1", "type": "fare_classes", "attributes": { "code": "FARE-1", "name": "Second Class", "iata_category": "Economy Class", "journey_type": "single", "default": true }, "relationships": { "post_booking_condition": { "data": null }, "fare_features": { "data": [ { "id": "NTRA-WIFI", "type": "fare_features" }, { "id": "NTRA-TOIL", "type": "fare_features" }, { "id": "NTRA-ACON", "type": "fare_features" }, { "id": "NTRA-AAFO", "type": "fare_features" }, { "id": "NTRA-QCOM", "type": "fare_features" }, { "id": "NTRA-NREF", "type": "fare_features" } ] }, "ticket_validity_rules": { "data": [ { "id": "NTRA-FARE-1-TICKET_VALIDITY_RULE-0", "type": "ticket_validity_rules" } ] }, "passenger_group_rules": { "data": [ { "id": "NTRA-FARE-1-PASSENGER_GROUP_RULE-0", "type": "passenger_group_rules" } ] } } }, { "id": "NTRA-FARE-2", "type": "fare_classes", "attributes": { "code": "FARE-2", "name": "Second Class (same day return)", "iata_category": "Economy Class", "journey_type": "open_return", "default": false }, "relationships": { "post_booking_condition": { "data": null }, "fare_features": { "data": [ { "id": "NTRA-WIFI", "type": "fare_features" }, { "id": "NTRA-TOIL", "type": "fare_features" }, { "id": "NTRA-ACON", "type": "fare_features" }, { "id": "NTRA-AAFO", "type": "fare_features" }, { "id": "NTRA-QCOM", "type": "fare_features" }, { "id": "NTRA-NREF", "type": "fare_features" } ] }, "ticket_validity_rules": { "data": [ { "id": "NTRA-FARE-2-TICKET_VALIDITY_RULE-0", "type": "ticket_validity_rules" }, { "id": "NTRA-FARE-2-TICKET_VALIDITY_RULE-1", "type": "ticket_validity_rules" } ] }, "passenger_group_rules": { "data": [ { "id": "NTRA-FARE-2-PASSENGER_GROUP_RULE-0", "type": "passenger_group_rules" } ] } } }, { "id": "NTRA-FARE-3", "type": "fare_classes", "attributes": { "code": "FARE-3", "name": "First class", "iata_category": "First Class", "journey_type": "single", "default": false }, "relationships": { "post_booking_condition": { "data": null }, "fare_features": { "data": [ { "id": "NTRA-WIFI", "type": "fare_features" }, { "id": "NTRA-TOIL", "type": "fare_features" }, { "id": "NTRA-ACON", "type": "fare_features" }, { "id": "NTRA-AAFO", "type": "fare_features" }, { "id": "NTRA-QCOM", "type": "fare_features" }, { "id": "NTRA-NREF", "type": "fare_features" } ] }, "ticket_validity_rules": { "data": [ { "id": "NTRA-FARE-3-TICKET_VALIDITY_RULE-0", "type": "ticket_validity_rules" } ] }, "passenger_group_rules": { "data": [ { "id": "NTRA-FARE-3-PASSENGER_GROUP_RULE-0", "type": "passenger_group_rules" } ] } } }, { "id": "NTRA-FARE-4", "type": "fare_classes", "attributes": { "code": "FARE-4", "name": "First Class (same day return)", "iata_category": "First Class", "journey_type": "open_return", "default": false }, "relationships": { "post_booking_condition": { "data": null }, "fare_features": { "data": [ { "id": "NTRA-WIFI", "type": "fare_features" }, { "id": "NTRA-TOIL", "type": "fare_features" }, { "id": "NTRA-ACON", "type": "fare_features" }, { "id": "NTRA-AAFO", "type": "fare_features" }, { "id": "NTRA-QCOM", "type": "fare_features" }, { "id": "NTRA-NREF", "type": "fare_features" } ] }, "ticket_validity_rules": { "data": [ { "id": "NTRA-FARE-4-TICKET_VALIDITY_RULE-0", "type": "ticket_validity_rules" }, { "id": "NTRA-FARE-4-TICKET_VALIDITY_RULE-1", "type": "ticket_validity_rules" } ] }, "passenger_group_rules": { "data": [ { "id": "NTRA-FARE-4-PASSENGER_GROUP_RULE-0", "type": "passenger_group_rules" } ] } } }, { "id": "NTRA-WIFI", "type": "fare_features", "attributes": { "code": "WIFI", "name": "Wifi", "description": "Free wifi is available on board." } }, { "id": "NTRA-TOIL", "type": "fare_features", "attributes": { "code": "TOIL", "name": "Toilet", "description": "A toilet is available on board. At the moment, Sprinters are not equipped with a toilet as standard.." } }, { "id": "NTRA-ACON", "type": "fare_features", "attributes": { "code": "ACON", "name": "Air Conditioning", "description": "The bus has an air conditioning system." } }, { "id": "NTRA-AAFO", "type": "fare_features", "attributes": { "code": "AAFO", "name": "Accessible area for bicycles", "description": "Space for storing your bicycle (except in the Intercity direct)." } }, { "id": "NTRA-QCOM", "type": "fare_features", "attributes": { "code": "QCOM", "name": "Quiet compartment", "description": "Separate quiet zones available on some trains." } }, { "id": "NTRA-NREF", "type": "fare_features", "attributes": { "code": "NREF", "name": "Non-refundable", "description": "The ticket cannot be refunded." } }, { "id": "NTRA-FARE-1-TICKET_VALIDITY_RULE-0", "type": "ticket_validity_rules", "attributes": { "rule_type": "outbound", "reference_time_type": "beginning_of_departure_day", "use_type": "once", "offset_type": "minutes", "duration_type": "hours", "offset": 0, "duration": 28 } }, { "id": "NTRA-FARE-1-PASSENGER_GROUP_RULE-0", "type": "passenger_group_rules", "attributes": { "rule_type": "max_passengers", "description": "Max passengers" }, "relationships": { "parameters": { "data": [ { "id": "NTRA-FARE-1-PASSENGER_GROUP_RULE-0-PARAMETER-0", "type": "passenger_group_rule_parameters" } ] } } }, { "id": "NTRA-FARE-1-PASSENGER_GROUP_RULE-0-PARAMETER-0", "type": "passenger_group_rule_parameters", "attributes": { "name": "passengers_limit", "value": 8 } }, { "id": "NTRA-FARE-2-TICKET_VALIDITY_RULE-0", "type": "ticket_validity_rules", "attributes": { "rule_type": "outbound", "reference_time_type": "beginning_of_departure_day", "use_type": "once", "offset_type": "minutes", "duration_type": "hours", "offset": 0, "duration": 28 } }, { "id": "NTRA-FARE-2-TICKET_VALIDITY_RULE-1", "type": "ticket_validity_rules", "attributes": { "rule_type": "inbound", "reference_time_type": "beginning_of_departure_day", "use_type": "once", "offset_type": "minutes", "duration_type": "hours", "offset": 0, "duration": 28 } }, { "id": "NTRA-FARE-2-PASSENGER_GROUP_RULE-0", "type": "passenger_group_rules", "attributes": { "rule_type": "max_passengers", "description": "Max passengers" }, "relationships": { "parameters": { "data": [ { "id": "NTRA-FARE-2-PASSENGER_GROUP_RULE-0-PARAMETER-0", "type": "passenger_group_rule_parameters" } ] } } }, { "id": "NTRA-FARE-2-PASSENGER_GROUP_RULE-0-PARAMETER-0", "type": "passenger_group_rule_parameters", "attributes": { "name": "passengers_limit", "value": 8 } }, { "id": "NTRA-FARE-3-TICKET_VALIDITY_RULE-0", "type": "ticket_validity_rules", "attributes": { "rule_type": "outbound", "reference_time_type": "beginning_of_departure_day", "use_type": "once", "offset_type": "minutes", "duration_type": "hours", "offset": 0, "duration": 28 } }, { "id": "NTRA-FARE-3-PASSENGER_GROUP_RULE-0", "type": "passenger_group_rules", "attributes": { "rule_type": "max_passengers", "description": "Max passengers" }, "relationships": { "parameters": { "data": [ { "id": "NTRA-FARE-3-PASSENGER_GROUP_RULE-0-PARAMETER-0", "type": "passenger_group_rule_parameters" } ] } } }, { "id": "NTRA-FARE-3-PASSENGER_GROUP_RULE-0-PARAMETER-0", "type": "passenger_group_rule_parameters", "attributes": { "name": "passengers_limit", "value": 8 } }, { "id": "NTRA-FARE-4-TICKET_VALIDITY_RULE-0", "type": "ticket_validity_rules", "attributes": { "rule_type": "outbound", "reference_time_type": "beginning_of_departure_day", "use_type": "once", "offset_type": "minutes", "duration_type": "hours", "offset": 0, "duration": 28 } }, { "id": "NTRA-FARE-4-TICKET_VALIDITY_RULE-1", "type": "ticket_validity_rules", "attributes": { "rule_type": "inbound", "reference_time_type": "departure_time", "use_type": "once", "offset_type": "minutes", "duration_type": "hours", "offset": 0, "duration": 28 } }, { "id": "NTRA-FARE-4-PASSENGER_GROUP_RULE-0", "type": "passenger_group_rules", "attributes": { "rule_type": "max_passengers", "description": "Max passengers" }, "relationships": { "parameters": { "data": [ { "id": "NTRA-FARE-4-PASSENGER_GROUP_RULE-0-PARAMETER-0", "type": "passenger_group_rule_parameters" } ] } } }, { "id": "NTRA-FARE-4-PASSENGER_GROUP_RULE-0-PARAMETER-0", "type": "passenger_group_rule_parameters", "attributes": { "name": "passengers_limit", "value": 8 } } ]}For more sample responses, check the /marketing_carriers/{marketing_carrier_id} endpoint page.
Sample Response from /marketing_carriers/{marketing_carrier_id}/booking/schema
{
"data": {
"id": "IRYO",
"type": "booking_schema",
"attributes": {
"mandatory": [
"arrival_station",
"arrival_time",
"city",
"currency",
"departure_station",
"departure_time",
"email",
"execute_payment",
"first_name",
"last_name",
"locale",
"marketing_carrier",
"passengers",
"passengers[].birthdate",
"passengers[].government_id",
"passengers[].government_id_type",
"payment_method",
"retailer_partner_number",
"send_customer_email",
"street_and_number",
"terms_accepted",
"title",
"total_price",
"zip_code"
],
"optional": [
"discount_code",
"fare_class",
"flight_number",
"government_id",
"government_id_type",
"passengers[].nationality",
"passengers[].tax_id",
"payer_id",
"payment_token",
"phone"
]
},
"relationships": {
"required_attributes": {
"data": [
{
"id": "IRYO-reservations/confirm-default-e0092493-6b69-4ac7-bf6c-9320e9ee7bea",
"type": "required_attributes"
},
{
"id": "IRYO-reservations/create-default-4602cb0e-ba01-41ee-84b1-d7b0d90b987e",
"type": "required_attributes"
}
]
}
}
},
"jsonapi": {
"version": "1.0"
},
"included": [
{
"id": "IRYO-reservations/confirm-default-e0092493-6b69-4ac7-bf6c-9320e9ee7bea",
"type": "required_attributes",
"attributes": {
"mandatory": [
"city",
"email",
"first_name",
"last_name",
"street_and_number",
"title",
"zip_code",
"terms_accepted",
"passengers[].birthdate",
"passengers[].government_id",
"passengers[].government_id_type",
"passengers[].first_name",
"passengers[].last_name"
],
"endpoint": "reservations/confirm",
"context": "default",
"description": "Required data for all requests"
},
"relationships": {
"allowed_values": {
"data": [
{
"id": "IRYO-reservations/confirm-default-passengers[].government_id_type-fa118a3d-905a-4a5b-8123-185a2752c0f0",
"type": "allowed_values"
}
]
}
}
},
{
"id": "IRYO-reservations/create-default-4602cb0e-ba01-41ee-84b1-d7b0d90b987e",
"type": "required_attributes",
"attributes": {
"mandatory": [],
"endpoint": "reservations/create",
"context": "default",
"description": "Required data for all requests"
},
"relationships": {
"allowed_values": {
"data": []
}
}
},
{
"id": "IRYO-reservations/confirm-default-passengers[].government_id_type-fa118a3d-905a-4a5b-8123-185a2752c0f0",
"type": "allowed_values",
"attributes": {
"attribute": "passengers[].government_id_type",
"allowed": [
"birth_certificate",
"drivers_license",
"entry_visa",
"marine_id",
"military_supplement",
"national_id",
"naturalisation_certificate",
"passport_id",
"permanent_resident_id",
"refugee_id",
"resident_id",
"tax_number",
"tsa_precheck_id",
"us_i872_card",
"us_tribal_card",
"international_passport"
]
}
}
]
}
For more sample responses, check the /marketing_carriers/{marketing_carrier_id}/booking/schema endpoint page.
What made this section unhelpful for you?
On this page
- Preparing Metadata