The Operator API v2 Booking System (OBS) is an API specification with endpoints for listing suppliers, products, availabilities, and managing holds and bookings.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 RFC 2119 RFC 8174 when, and only when, they appear in all capitals, as shown here.

Server
https://{operatorDomain}/{basePath}
Server Variables

Suppliers

Returns a list of suppliers and associated contact details.

This list MAY be limited based on the suppliers that the authenticated user has been granted access to.

Auth
GET /suppliers
Copy
Responses
200

List of suppliers with details.

arrayarray[object]
idstring

This MUST be unique within the scope of the Booking Platform (1024 character limit).

maxLength: 1024

namestring

Common name for the supplier that may be displayed to the customer.

endpointstring

This is the base URL that will be prepended to ALL other paths. The value SHOULD NOT contain a trailing /.

contactobject

Contact details for the supplier.

websitestring

This SHOULD be the website of the Supplier that is separate from the Booking Platform but MAY be a unique destination within the Booking Platform about the Supplier.

emailstring

This SHOULD be the email support contact for the Supplier. This information MAY be provided to the customer.

telephonestring

This SHOULD be the phone support contact for the Supplier. This information MAY be provided to the customer.

addressstring

This SHOULD be the mail address support contact for the Supplier. This information MAY be provided to the customer.

firstNamestring

First name of the supplier contact.

lastNamestring

Last name of the supplier contact.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Response
Copy

Returns a list of products for a specific supplier.

WARNING: this endpoint may live under a different domain, path or both depending on the supplier endpoint URL returned by the GET /suppliers.

Contains all product details necessary to ingest, map, and sell.

Auth
Headers
X-Capabilitiesstring

Comman-delimited list of capabilities the client wishes from the server.

Path Params
supplierIdstring

A valid supplier ID that matches the id returned from GET /suppliers.

GET /suppliers/{supplierId}/products
Copy
Responses
200

List of products with details.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

404

Invalid URI path requested.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Returns a list of dates and their availability status.

WARNING: this endpoint may live under a different domain, path or both depending on the supplier endpoint URL returned by the GET /suppliers.

For any dates which are never available for booking, the response MUST exclude those dates entirely.

If the product's availabilityType is OPENING_HOURS then the localDateTimeStart and localDateTimeEnd are the hours of operation. If a product has more than one hours of operation on the same day (e.g. the supplier is open 8-5 but closed for lunch from 12-1) then one availability object MUST be returned for each contiguous range of time for that day.

The availability id value MUST be sent when making a Booking request.

The status field SHOULD be used to infer how frequently your cache should be updated from the Booking Platform. The RECOMMENDED frequency is as follows:

  • FREESALE: Always available. Refresh no more than once/week.
  • AVAILABLE: Currently available for sale, but has a fixed capacity. Refresh every 12 hours.
  • LIMITED: Currently available for sale, but has a fixed capacity and may be sold out soon. Refresh at least once/hour.
  • SOLD_OUT: Currently sold out, but additional availability may free up. Refresh no more than once/hour.
  • CLOSED: Currently not available for sale, but not sold out (e.g. temporarily on stop-sell) and may be available for sale soon. Refresh no more than once/12 hours.

Auth
Path Params
supplierIdstring

A valid supplier ID that matches the id returned from GET /suppliers.

Query String
productIdstring

A valid product ID that matches the id returned from GET /suppliers/{supplierId}/products.

optionIdstring

A valid option ID that matches the id returned from GET /suppliers/{supplierId}/products.

localDateStartstring

This MUST be an RFC 3339 compliant date-time. The start of the date-time range MUST be treated as inclusive of this date-time when generating the response.

localDateEndstring

This MUST be an RFC 3339 compliant date-time. The end of the date-time range MUST be treated as exclusive of this date-time when generating the response.

GET /suppliers/{supplierId}/availability
Copy
Responses
200

List of availability objects with status.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

404

Invalid URI path requested.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Response
Copy

Returns a list of dates after evaluating the specific Unit and Availability IDs that the customer would like to book.

WARNING: this endpoint may live under a different domain, path or both depending on the supplier endpoint URL returned by the GET /suppliers.

This request is intended to provide the Booking Platform a complete view of the Unit IDs, Unit quantity, and Availability IDs so that additional restrictions and policies can be validated within the Booking Platform prior to making a Booking. The purpose is to provide a clear and accurate answer to the Reseller about whether the requested booking configuration could be accepted by the Supplier. This is to support complex booking requirements without the Reseller needing to know the details of the restriction (e.g. "must purchase at least 1 adult ticket if a child ticket is purchased").

Auth
Path Params
supplierIdstring

A valid supplier ID that matches the id returned from GET /suppliers.

Request Body

This MUST include all units that the customer is attempting to reserve and SHOULD include all possible availability IDs that the customer may be interested in reserving.

objectobject
productIdstring

A valid product ID that matches the id returned from GET /suppliers/{supplierId}/products.

optionIdstring

A valid option ID that matches the id returned from GET /suppliers/{supplierId}/products.

availabilityIdsarray[string]
unitsarray[object]
unitIdstring

A valid unit ID that matches the id returned from GET /suppliers/{supplierId}/products. example: 'adult'

quantityinteger

The total number of this unit that the customer wants to purchase.

POST /suppliers/{supplierId}/availability
Copy
Responses
200

List of availability objects with status.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

404

Invalid URI path requested.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Response
Copy

Create a new pending booking.

WARNING: this endpoint may live under a different domain, path or both depending on the supplier endpoint URL returned by the GET /suppliers.

This creates a new pending booking.

This call has to be idempotent. To be able to safely retry a call on any network error or timeout, therefore it MUST not fail on retry or create a duplicate booking. The idempotency key is the UUID. A supplier SHOULD verify that a retried request with the same UUID is matching the original booking data, to avoid erroneous clients generating repeating UUIDs, and respond with an HTTP 400 status in such a case.

Auth
Path Params
supplierIdstring

A valid supplier ID that matches the id returned from GET /suppliers.

Request Body

This MUST include all unitItems that the customer wants to book.

POST /suppliers/{supplierId}/bookings
Copy
Responses
200

A complete representation of the current booking booking status.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

404

Invalid URI path requested.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Response
Copy

Gets the current details of an in-progress booking or completed booking.

WARNING: this endpoint may live under a different domain, path or both depending on the supplier endpoint URL returned by the GET /suppliers.

This returns the current state of any valid booking. This request MAY be made at any point after the initial createBooking request is processed successfully and it MUST return the booking object.

Auth
Path Params
supplierIdstring

A valid supplier ID that matches the id returned from GET /suppliers.

uuidstring

A valid booking UUID that matches the uuid sent during the initial POST /suppliers/{supplierId}/bookings

GET /suppliers/{supplierId}/bookings/{uuid}
Copy
Responses
200

A complete representation of the current booking booking status.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

404

Invalid URI path requested.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Response
Copy

Extend the hold of an in-progress booking.

WARNING: this endpoint may live under a different domain, path or both depending on the supplier endpoint URL returned by the GET /suppliers.

This extends the hold of an in-progress booking. The utcHoldExpiration MUST NOT be elapsed when this request is sent, otherwise the response MAY show a status of EXPIRED.

Auth
Path Params
supplierIdstring

A valid supplier ID that matches the id returned from GET /suppliers.

uuidstring

A valid booking UUID that matches the uuid sent during the initial POST /suppliers/{supplierId}/bookings

Request Body

This MUST include the proper reason for requesting the extension and MUST NOT be abused to keep availability reserved due to processing delays by the Reseller.

objectobject
reasonstring

This indicates the reason for extending the booking hold.

  • FRAUD_CHECK is the most common scenario where additional time is required to ensure that the booking is not being made using fraudulent payment information.
  • CUSTOMER_REQUESTED is intended for scenarios where the customer is actively completing the checkout process but requires some additional time to complete. The Reseller SHOULD try to ensure that customers may only extend their booking once.
  • OTHER can be used in other unusual circumstances but SHOULD not be abused to maintain a hold without good reason. If this value is specified the Reseller SHOULD provide reasonDetails to explain the justification.

Enum: FRAUD_CHECK,CUSTOMER_REQUESTED,OTHER

reasonDetailsstring

This provides additional details behind the reason for requesting the extension and SHOULD be provided in all cases, but especially if the reason given is OTHER.

holdExpirationMinutesinteger

This is the duration that the Reseller would like the product inventory hold to be extended while the booking is completed. The Booking Platform SHOULD extend the hold on the inventory for at least this duration from the time of the request but MAY reserve for a shorter period of time. The exact hold expiration time will be returned in the response.

POST /suppliers/{supplierId}/bookings/{uuid}/extend
Copy
Responses
200

A complete representation of the current booking booking status.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

404

Invalid URI path requested.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Response
Copy

Confirm an in-progress booking.

WARNING: this endpoint may live under a different domain, path or both depending on the supplier endpoint URL returned by the GET /suppliers.

This confirms an in-progress booking. The utcHoldExpiration MUST NOT be elapsed when this request is sent, otherwise the response MAY show a status of EXPIRED.

This call MUST be idempotent so that a Reseller may retry the request for any network error or timeout. The Booking uuid MUST be used to ensure idempotency of the request.

Auth
Path Params
supplierIdstring

A valid supplier ID that matches the id returned from GET /suppliers.

uuidstring

A valid booking UUID that matches the uuid sent during the initial POST /suppliers/{supplierId}/bookings

Request Body

This confirms an in-progress booking and MUST be sent before the utcHoldExpiration has elapsed.

POST /suppliers/{supplierId}/bookings/{uuid}/confirm
Copy
Responses
200

A complete representation of the current booking booking status.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

404

Invalid URI path requested.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Either cancel the booking, or expire the hold of an in-progress booking.

WARNING: this endpoint may live under a different domain, path or both depending on the supplier endpoint URL returned by the GET /suppliers.

This expires the hold of an in-progress booking, releasing its availability for other bookings to use. Resellers SHOULD send this in order to ensure proper cleanup of any outstanding holds.

This call MUST be idempotent, using the UUID of the booking as the idempotency key. Meaning, repeated attempts to cancel the same booking MUST return a successful response (with the cancelled booking in the response body).

Auth
Path Params
supplierIdstring

A valid supplier ID that matches the id returned from GET /suppliers.

uuidstring

A valid booking UUID that matches the uuid sent during the initial POST /suppliers/{supplierId}/bookings

Request Body

This request will release the inventory hold on an in-progress booking or cancel a completed booking. It is RECOMMENDED that this request be sent if the customer fails to complete their booking, in order to release the inventory for other customers. It is also RECOMMENDED that this request be sent for a completed booking even if no refund is expected so that the Supplier can attempt to sell the unused inventory to another customer.

objectobject
reasonstring

This value indicates the reason that the cancellation request was sent.

  • CUSTOMER is the most common and indicates that the customer requested the cancellation.
  • SUPPLIER indicates that the supplier requested the cancellation (possibly due to bad weather or other unexpected circumstances).
  • FRAUD indicates that the booking cancellation is being requested by the Reseller because it has been determined the booking was fraudulent.
  • OTHER indicates that the cancellation reason does not fall into one of these categories. This SHOULD be used only in rare circumstances.

Enum: CUSTOMER,SUPPLIER,FRAUD,OTHER

reasonDetailsstring

This field provides additional details about the reason for the cancellation request. It may include information from the customer, supplier, or support agent about the reason for the cancellation (especially in the case of requesting a cancellation outside of the normal policy which may require manual approval from the supplier).

POST /suppliers/{supplierId}/bookings/{uuid}/cancel
Copy
Responses
200

A complete representation of the current booking booking status.

400

An error has occurred. See the definition of the ErrorObject for more details.

401

Missing Authorization header or key could not be validated.

403

The Authorization header was validated but the requestor does not have the correct permissions to access the requested resource or perform the requested operation.

404

Invalid URI path requested.

500

An unknown error occurred and the server cannot respond in a sensible way. The response may not include a valid error object if one could not be generated.

503

The server is temporarily unavailable, either because the server is under maintenance, or overloaded (accepted too many requests in too short a time).

Response
Copy