/tickets/confirmation/{rloc}/download)rloc in the endpoint path instead of bookingReference (See more details)mode query parameter for ticket ZIP download:
full (default)deltalegacy (backward compatible alias for delta)full, and delta modesmode values return 400 Bad Request{
"availableFlightsOnly": false
}
Updated sample request and response to reflect actual structure (See more details)
"fareInfos": {
"fareInfo": [
{
"fareReference": [
{
"value": "EELMOWMC"
}
],
"ruleInfo": {
"tpaextensions": {
"cancellationTimeLimit": "2026-07-01T10:11:07Z",
"confirmationTimeLimit": "2025-07-01T10:40:55Z",
"updateTravellersTimeLimit": "2025-07-26T07:50:00Z"
}
},
"filingAirline": {
"value": "HHR"
},
"marketingAirline": [],
"departureAirport": {
"locationCode": "JED"
},
"arrivalAirport": {
"locationCode": "DMX"
},
"date": [],
"fareInfo": [],
"city": [],
"airport": [],
"rph": "1"
}
]
}
ticketNumber and couponNumberfirstName, lastName, departure, and arrival as deprecatedExample
Deprecated Request Format:
curl '{base_url}/tickets/confirmation/{bookingReference}/download/passenger-segment?firstName=JENNIFER&lastName=STEWART&departure=MKX&arrival=DMX' \
-H 'x-api-key: {api-key}' \
--output ticket.pdf
New Request Format:
curl '{base_url}/tickets/confirmation/{bookingReference}/download/passenger-segment?ticketNumber=3333330292535&couponNumber=1' \
-H 'x-api-key: {api-key}' \
--output ticket.pdf
The following changes in how errors are returned have been documented and moved from the main error-response guide:
204 No Content.
404 Not Found.200 OK with empty pricedItinerary.{
"success": {},
"pricedItineraries": {
"pricedItinerary": []
}
}
flightNumber, fareBasis, or other criteria.
400 Bad Request.422 Unprocessable Entity with error details.{
"status": 422,
"error": "Unprocessable Entity",
"code": "53",
"title": "No price exists for the tariff",
"detail": "No fare information match with the request",
"correlationId": "e76b44e8-91e2-4fba-88d8-562a6ed7d755",
"service": "ota-service",
"instance": "/v2015b/OTA",
"tenant": "test-skywork-dev",
"timestamp": "2025-04-17T02:48:50.175504998Z",
"cause": {
"status": 422,
"code": "53",
"title": "No price exists for the tariff",
"detail": "No fare information match with the request",
"correlationId": "e76b44e8-91e2-4fba-88d8-562a6ed7d755",
"service": "hhr-proxy",
"instance": "/v2015b/OTA",
"tenant": "test-skywork-dev",
"timestamp": "2025-04-17T02:48:50.171876533Z"
}
}
502 bad gateway
{
"timestamp": "2025-01-13T09:12:24.574+00:00",
"status": 502,
"error": "Bad Gateway",
"exception": "org.springframework.web.client.HttpServerErrorException$BadGateway",
"message": "",
"title": "",
"correlationId": "a68ad759-daf5-48a2-bdaf-50c6c221a3a3",
"service": "ota-service",
"instance": "/v2015b/OTA",
"tenant": "test-rs3",
"cause": {
"status": 502,
"instance": "/reservations",
"cause": {
"title": "Bad Gateway",
"status": 502,
"detail": "503 Service Unavailable: \"",
"instance": "/reservations",
"cause": {
"timestamp": "2025-04-13T06:25:20.652+00:00",
"path": "/transport/api/v1/purchase",
"status": 503,
"error": "Service Unavailable",
"requestId": "e1e1f214-407919"
},
"exception": "org.springframework.web.client.HttpServerErrorException$InternalServerError",
"timestamp": "2025-01-13T09:12:24.549302606Z",
"correlationId": "a68ad759-daf5-48a2-bdaf-50c6c221a3a3",
"service": "hhr-proxy",
"tenant": "test-rs3"
},
"tenant": "test-rs3",
"service": "reservation-service",
"correlationId": "a68ad759-daf5-48a2-bdaf-50c6c221a3a3",
"message": "",
"exception": "org.springframework.web.client.HttpServerErrorException$BadGateway",
"error": "Bad Gateway",
"timestamp": "2025-01-13T09:12:24.572+00:00"
}
}
{
"status": 503,
"error": "Service Unavailable",
"code": "450",
"title": "Unable to process",
"correlationId": "b1589271-9e52-4a57-98bf-6f05c6a15dbb",
"service": "ota-service",
"instance": "/v2015b/OTA",
"tenant": "test-rs3",
"timestamp": "2025-04-13T06:20:03.173515305Z",
"cause": {
"status": 503,
"error": "Service Unavailable",
"title": "",
"correlationId": "b1589271-9e52-4a57-98bf-6f05c6a15dbb",
"service": "reservation-service",
"instance": "/reservations",
"tenant": "test-rs3",
"timestamp": "2025-04-13T06:20:03.170+00:00",
"exception": "org.springframework.web.client.HttpServerErrorException$ServiceUnavailable",
"cause": {
"status": 503,
"code": 0,
"title": null,
"correlationId": "b1589271-9e52-4a57-98bf-6f05c6a15dbb",
"service": "hhr-proxy",
"instance": "/reservations",
"tenant": "test-rs3",
"timestamp": "2025-04-13T06:20:03.163394791Z"
},
"message": ""
}
}
Note: The external error response will be formatted to our standard response structure (Problem JSON)
cause tree and returns a 502 Bad Gatewaystatus, code, title, and detail
{
"timestamp": "2025-01-13T09:12:24.574+00:00",
"status": 502,
"error": "Bad Gateway",
"exception": "org.springframework.web.client.HttpServerErrorException$BadGateway",
"message": "",
"title": "",
"correlationId": "a68ad759-daf5-48a2-bdaf-50c6c221a3a3",
"service": "ota-service",
"instance": "/v2015b/OTA",
"tenant": "test-skywork-dev",
"cause": {
"status": 502,
"instance": "/reservations",
"cause": {
"title": "Bad Gateway",
"status": 502,
"detail": "500 Internal Server Error: \"{\\\"code\\\":9999,\\\"message\\\":\\\"Unknown error\\\",\\\"details\\\":[{\\\"reason\\\":\\\"Could not commit JPA transaction\\\"}]}\"",
"instance": "/reservations",
"cause": {
"details": [
{
"reason": "Could not commit JPA transaction"
}
],
"message": "Unknown error",
"code": 9999
},
"exception": "org.springframework.web.client.HttpServerErrorException$InternalServerError",
"timestamp": "2025-01-13T09:12:24.549302606Z",
"correlationId": "a68ad759-daf5-48a2-bdaf-50c6c221a3a3",
"service": "hhr-proxy",
"tenant": "test-rs3"
},
"tenant": "test-skywork-dev",
"service": "reservation-service",
"correlationId": "a68ad759-daf5-48a2-bdaf-50c6c221a3a3",
"message": "",
"exception": "org.springframework.web.client.HttpServerErrorException$BadGateway",
"error": "Bad Gateway",
"timestamp": "2025-01-13T09:12:24.572+00:00"
}
}
{
"status": 500,
"error": "Internal Server Error",
"code": "9999",
"title": "Unknown error",
"detail": "Could not commit JPA transaction",
"correlationId": "79f48120-952c-4ebe-b889-809c129932ee",
"service": "ota-service",
"instance": "/v2015b/OTA",
"tenant": "test-skywork-dev",
"timestamp": "2025-04-17T02:48:11.178912262Z",
"cause": {
"status": 500,
"error": "Internal Server Error",
"title": "Unknown error",
"detail": "Could not commit JPA transaction",
"correlationId": "79f48120-952c-4ebe-b889-809c129932ee",
"service": "hhr-proxy",
"instance": "/reservations",
"tenant": "test-rs3",
"timestamp": "2025-04-17T02:48:10.145711265Z"
}
}
TPAExtension for OTA_AirDemandTicketRS and OTA_AirBookRSTo remove ambiguity in document download URLs and to simplify handling service responses,
the links element has been added instead of the string field urls.
The old field (urls) will remain for backward compatibility.
The new field will contain the actual URL (href), a relation type (rel), and optional segmentRPH and travelerRPH.
"links": [
{
"href" : "https://domain.com/tickets/download?ref=11",
"rel" : "downloadTicket",
"segmentRPH" : "1", // Optional
"travelerRPH" : "1" // Optional
}
]
"tpaextensions": {
"urls": "https://test-api.worldticket.net/sms-gateway-service/tickets/confirmation/QN6HQV/download/passenger-segment?firstName=JENNIFER&lastName=STEWART&departure=MKX&arrival=DMX https://test-api.worldticket.net/sms-gateway-service/tickets/confirmation/QN6HQV/download/passenger-segment?firstName=JENNIFER&lastName=STEWART&departure=DMX&arrival=MKX"
}
"tpaextensions": {
"urls": "https://test-api.worldticket.net/sms-gateway-service/tickets/confirmation/QN6HQV/download/passenger-segment?firstName=JENNIFER&lastName=STEWART&departure=MKX&arrival=DMX https://test-api.worldticket.net/sms-gateway-service/tickets/confirmation/QN6HQV/download/passenger-segment?firstName=JENNIFER&lastName=STEWART&departure=DMX&arrival=MKX",
"links": [
{
"href" : "https://test-api.worldticket.net/sms-gateway-service/tickets/confirmation/QN6HQV/download/passenger-segment?firstName=JENNIFER&lastName=STEWART&departure=MKX&arrival=DMX",
"rel" : "downloadTicket",
"segmentRPH" : "1",
"travelerRPH" : "1"
},
{
"href" : "https://test-api.worldticket.net/sms-gateway-service/tickets/confirmation/QN6HQV/download/passenger-segment?firstName=JENNIFER&lastName=STEWART&departure=DMX&arrival=MKX",
"rel" : "downloadTicket",
"segmentRPH" : "2",
"travelerRPH" : "1"
}
]
}
Example