Dynamic Passenger Details
When creating bookings through the Distribusion API, different carriers may require different sets of passenger information. These requirements can include fields such as passenger name, date of birth, nationality, document details, and more, depending on the carrier’s operational and regulatory needs.
To ensure successful bookings, get required fields from /connections/vacancy and /reservations/create endpoints. By integrating this schema into your application, you can dynamically adapt your booking forms and validation logic to enhance user experience, reduce booking errors, and ensure compliance with carrier requirements.
EU Entry/Exit System (EES) Compliance
Starting April 10th, 2026, the European Union is implementing the Entry/Exit System (EES) to modernize border security for non-EU nationals entering the Schengen Area. To comply with these regulations, carriers are now required to collect additional passenger data during the booking process, such as Visa Permit Type, Document Expiry Date, and Issuing Country.
Our Dynamic Passenger Details solution is designed to handle these EES requirements automatically. Rather than hard-coding these new fields into your integration, our API will dynamically include any EES-mandated fields within the /connections/vacancy or /reservations/create responses based on the specific route and carrier. By following the standard dynamic workflow outlined above, your application will remain compliant with EES regulations without requiring further schema changes.
Ensure EES readiness by April 10, 2026, by dynamically rendering all fields returned in the required_attributes schema.
API Workflow
To get the list of fields required dynamically as part of the flow you retrieve the data from the response from the /connections/vacancy and /reservations/create endpoints.
/connections/vacancy Response
The response from the /connections/vacancy endpoint outlines which passenger fields are required or optional for the /reservations/create and /reservations/confirm request.
...
{
"id": "PNOS-1-1746786426",
"type": "passengers",
"relationships": {
"required_attributes": {
"data": [
{
"id": "c88e583c-c34e-4c56-bebd-55b4ec3597b4",
"type": "passenger_required_attributes"
},
{
"id": "d819004e-c28c-429f-9751-3c3b2db0fd5a",
"type": "passenger_required_attributes"
}
]
}
}
},
{
"id": "c88e583c-c34e-4c56-bebd-55b4ec3597b4",
"type": "passenger_required_attributes",
"attributes": {
"mandatory": [],
"endpoint": "reservations/create"
}
},
{
"id": "d819004e-c28c-429f-9751-3c3b2db0fd5a",
"type": "passenger_required_attributes",
"attributes": {
"mandatory": [
"birthdate",
"government_id",
"government_id_type",
"first_name",
"last_name"
],
"endpoint": "reservations/confirm"
}
},
{
"id": "a3cee3c3-a7fe-4abf-8f7a-6d9283b7f3a1",
"type": "required_attributes",
"attributes": {
"mandatory": [],
"endpoint": "reservations/create"
}
},
{
"id": "3371d7b7-76d1-4773-908c-0589517cc58f",
"type": "required_attributes",
"attributes": {
"mandatory": [
"city",
"email",
"first_name",
"last_name",
"street_and_number",
"title",
"zip_code",
"terms_accepted"
],
"endpoint": "reservations/confirm"
}
}
]
}
}/reservations/create Response
The response from the /reservations/create endpoint outlines which passenger fields are required or optional for the /reservations/confirm request.
...
"relationships": {
"required_attributes": {
"data": [
{
"id": "R-PNOS-1-ITES-ESBCNBSB-ESMADMAT-2025-05-19T07:05-2025-05-19T09:42-78356efe-d095-4002-888b-0c00084ecbd3",
"type": "reservation_passenger_required_attributes"
}
]
}
}
},
{
"id": "R-PNOS-1-ITES-ESBCNBSB-ESMADMAT-2025-05-19T07:05-2025-05-19T09:42-78356efe-d095-4002-888b-0c00084ecbd3",
"type": "reservation_passenger_required_attributes",
"attributes": {
"mandatory": [
"birthdate",
"government_id",
"government_id_type",
"first_name",
"last_name"
],
"endpoint": "reservations/confirm"
}
},
{
"id": "RTZRVGBS-267dc866-5aac-4d2a-8ba5-7139fa448b99",
"type": "required_attributes",
"attributes": {
"mandatory": [
"city",
"email",
"first_name",
"last_name",
"street_and_number",
"title",
"zip_code",
"terms_accepted"
],
"endpoint": "reservations/confirm"
}
}
]
}
}Understanding the Response
In the case of this sample carrier, we have the following scenario:
/reservations/create
- No fields are required
/reservations/confirm
Top-level:
- city
- email
- first_name
- last_name
- street_and_number
- title
- zip_code
- terms_accepted
Nested in passengers[]:
- birthdate
- government_id
- government_id_type
- first_name
- last_name
ID Types Allowed
When government_id is a required field for a carrier, the list of types of ID allowed for the government_id_type field are listed in the /marketing_carriers/{marketing_carrier_id}/booking/schema endpoint.
{
"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 instance, in the case of this sample carrier the following fields are 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
On this page
- Dynamic Passenger Details