> ## Documentation Index
> Fetch the complete documentation index at: https://mcp.theoryofevolution.com.au/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get booking details for a fareprice

> Return booking details for a fareprice, including the list of custom booking fields (`optionalFields`) that must be collected from the customer before ordering.

Each `optionalFields` entry contains:

- `optionalFieldId` — integer or string ID to echo back on the order
- `title` / `commonName` — display label for the customer-facing form
- `type` — `text`, `select`, and similar
- `mandatory` — whether the customer must answer
- `options` — allowed values (for `select` types)

Submit the customer's answers on [`POST /apiv1/order`](#post-apiv1order) under `redeemer.products.bookings.optionalFields` as `{ optionalFieldId, fieldText }`. The value key **must** be `fieldText` — other names (e.g. `fieldValue`, `optionalFieldValue`) are silently dropped by TDMS.



## OpenAPI

````yaml /openapi/agent-reseller-api.mintlify.json get /apiv1/bookingdetails/{productPricesDetailsId}
openapi: 3.0.0
info:
  title: TravelDesk Agent API
  contact:
    name: API Support
    email: api@websitetravel.com
  version: '1.0'
  description: >-
    TravelDesk Agent (Reseller) API.


    ## Rate limiting


    The quota is applied **per Agent Branch key** — the per-branch client
    id/secret pair — not per account, per host, or per integration. Standard
    branches get **200 calls per minute**; upgraded branches get **900**. That
    budget is shared across everything the branch does: availability refreshes,
    background sweeps, customer-facing pricing, and quote or booking creation.


    Two consequences worth designing around:


    - A background sweep can starve customer-facing traffic for the same branch.
    Give live requests priority over refresh work, and cap the concurrency of
    any bulk job.

    - Cooldowns after a `429` must be keyed per branch. Keying them by host
    throttles every branch at once, because they all share
    `tdms.websitetravel.com`.


    Prefer endpoints that answer for a whole product in one request —
    `/apiv1/checkAvailabilityProduct` over one `/apiv1/checkavailabilityrange`
    call per fareprice — since the saving is measured against this quota.


    ## Dates


    Most endpoints take and return `DD-MON-YYYY` (`29-JUL-2026`).
    `/apiv1/checkAvailabilityProduct` returns ISO `YYYY-MM-DD` keys in `dates`.
    Parse both.


    ## Pricing


    Accommodation is dynamically priced — rates move between individual dates,
    not just between seasons — so never cache one rate per fareprice and reuse
    it across a range. Nett tracks RRP at a fixed commission ratio per
    fareprice, because changing commission requires a new
    `productPricesDetailsId`; that makes nett safe to derive from RRP rather
    than store.
servers:
  - url: https://tdms.websitetravel.com
    description: Production Server
  - url: https://tdmstest03.websitetravel.com
    description: Test Server
  - url: http://tdms.localhost
    description: Development Server
security: []
tags:
  - name: Authentication
  - name: Products
  - name: Availability and Pricing - Booking system based Live Availability
  - name: Availability and Pricing - Siteminder Live Availability
  - name: Availability and Pricing - Cached Availability and Live pricing
  - name: Availability and Pricing - Package Availability
  - name: Availability and Pricing - Check Availability via mail to supplier
  - name: Order Placement
  - name: Post Order Management
  - name: Accommodation
  - name: Reports
paths:
  /apiv1/bookingdetails/{productPricesDetailsId}:
    get:
      tags:
        - Availability and Pricing - Booking system based Live Availability
      summary: Get booking details for a fareprice
      description: >-
        Return booking details for a fareprice, including the list of custom
        booking fields (`optionalFields`) that must be collected from the
        customer before ordering.


        Each `optionalFields` entry contains:


        - `optionalFieldId` — integer or string ID to echo back on the order

        - `title` / `commonName` — display label for the customer-facing form

        - `type` — `text`, `select`, and similar

        - `mandatory` — whether the customer must answer

        - `options` — allowed values (for `select` types)


        Submit the customer's answers on [`POST /apiv1/order`](#post-apiv1order)
        under `redeemer.products.bookings.optionalFields` as `{ optionalFieldId,
        fieldText }`. The value key **must** be `fieldText` — other names (e.g.
        `fieldValue`, `optionalFieldValue`) are silently dropped by TDMS.
      operationId: get_tdms_api_v1_getbookingdetails
      parameters:
        - name: productPricesDetailsId
          in: path
          required: true
          schema:
            type: integer
            pattern: ^\d+$
      responses:
        '200':
          description: Returned when successful.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '400':
          description: Returned when the fareprice does not support live availability.
        '403':
          description: Returned when the user is not authorized.
        '404':
          description: Returned when the fareprice does not exist.
        '500':
          description: Returned when invalid combination of parameters is issued.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.