Worldticket API DOCUMENTATION

Changelog

2026-09-02

Added Change Passenger Info examples and reorganized Modify booking navigation

2026-09-01

Added passenger and segment cancellation

2026-07-31

Add penalty rules for OTA_AirBookRS, OTA_AirPriceRS

Penalty rules are grouped by passengerTypeCode, such as ADT, CHD, or INF.

Field Descriptions

Field Description
passengerTypeCode Passenger type to which the penalty rules apply, such as ADT, CHD, or INF.
currency Currency used for the penalty amount.
refundable Indicates whether a voluntary refund is allowed under the applicable rule.
base Penalty amount excluding tax.
tax Tax amount applied to the penalty.
total Total penalty amount including tax.
vat VAT percentage applied to the penalty amount. For example, 15.00 means 15%.
applyFromTime Start date and time from which the penalty rule applies. The value is returned in UTC.
applyUntilTime End date and time until which the penalty rule applies. The value is returned in UTC.
description Localized description of the penalty rule.
locale Language and regional code of the description, such as en_GB or ar_SA.
value Penalty rule description in the specified language.



2026-06-28

Updated change passenger name type

2026-02-22

Clarify download all tickets endpoint (/tickets/confirmation/{rloc}/download)

2025-09-12

Segments cancellation with automatic refund

2025-07-11

Segments cancellation with automatic refund

Add sold-out segment for OTA_AirLowFareSearchRS

2025-07-02

Add policy for OTA_AirBookRS, OTA_AirPriceRS

2025-06-26

Clarify request and response for AirLowFareSearch (one-way with booking class)

2025-06-21

Deprecate download endpoint using passenger details and introduce the new one

Example

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

2025-04-23

Updated error response behavior documentation

The following changes in how errors are returned have been documented and moved from the main error-response guide:

Before
{
  "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"
  }
}
  
After
{
  "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)

  1. Before – GO7 wraps the original external error deeply nested in the cause tree and returns a 502 Bad Gateway
  2. After – response is reformatted to standard Problem JSON structure with original error’s status, code, title, and detail
Before
{
  "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"
  }
}
  
After
{
  "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"
  }
}
  

2025-04-16

Improved documents URLs in TPAExtension for OTA_AirDemandTicketRS and OTA_AirBookRS

To 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
    }
  ]
Old version

    "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"
    }
  
New version

    "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