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

# List bookings on a connection



## OpenAPI

````yaml /api-specs/connect.json get /connect/v1/connections/{connectionId}/bookings
openapi: 3.1.0
info:
  title: Voyant Connect API
  version: v1
  summary: Public REST API for Voyant Connect.
  description: >-
    Voyant Connect is the travel-supply integration layer. It exposes a control
    plane (operators, connections, links, grants, OAuth clients, invite tokens,
    webhook subscriptions, connector providers, audit logs, custom connection
    requests) and a data plane (Connect-normalized products, options, suppliers,
    availability, bookings, cruises, and a full flights lifecycle).


    Base URL for all operations is `https://api.voyant.travel` and every path is
    mounted under `/connect/v1`. The gateway authenticates the request, enforces
    scopes, and forwards to the private connect-api worker.


    ## Authentication

    Two flows are supported, both presented as an HTTP `Authorization: Bearer
    <token>` header:

    1. **Static API key** — a long-lived platform API token. Its `connect:*`
    scopes (e.g. `connect:bookings:write`) gate which operations succeed. Write
    methods (POST/PUT/PATCH) need a `*:write` scope; DELETE needs a `*:delete`
    scope.

    2. **OAuth2 client credentials** — `POST /connect/v1/oauth/token` exchanges
    a `clientId`/`clientSecret` for a short-lived bearer (`access_token`,
    `expires_in`, `scope`).


    ## Conventions

    - **Money** is expressed as integer minor units (`amountMinor`) paired with
    an ISO 4217 `currency` (and a `currencyPrecision`).

    - **Connect-normalized reads** carry provenance fields: `sourceRef`,
    `projection`, `projectionSchemaVersion`, `lastSourcedAt`, `market`, and
    `currency`. These let consumers index the canonical projection into their
    own search engine and trace freshness.

    - **List envelopes** wrap rows in `{ "data": [...] }`; cursor-paginated
    reads add `{ "pagination": { "nextCursor": string | null } }`.

    - Cross-connection (org-wide) reads accept repeated `connectionId` and
    `providerKey` query parameters.
servers:
  - url: https://api.voyant.travel
    description: Production
security:
  - bearerAuth: []
tags:
  - name: OAuth
    description: Token issuance via client-credentials.
  - name: Operators
    description: Connect operators (the supply-side tenant within an organization).
  - name: Connector Providers
    description: Provider catalog, manifests, applications, and per-operator registrations.
  - name: Connections
    description: Per-operator supplier connections and their operational telemetry.
  - name: Links
    description: Cross-organization supply links and their capabilities.
  - name: OAuth Clients
    description: Machine-to-machine OAuth clients scoped to an operator.
  - name: Grants
    description: Cross-org access grants over an operator's data.
  - name: Audit Logs
    description: Organization-scoped API audit trail.
  - name: Invite Tokens
    description: Operator invite tokens (issue, redeem, public lookup).
  - name: Webhook Subscriptions
    description: Event subscriptions, deliveries, test events, and replays.
  - name: Custom Connection Requests
    description: Requests for suppliers not yet in the provider catalog.
  - name: Products
    description: Connect-normalized products on a connection or aggregated per operator.
  - name: Options
    description: Product options, units, and extra-configs.
  - name: Suppliers
    description: Connect-normalized suppliers.
  - name: Availability
    description: Connect-normalized availability and availability calendar.
  - name: Bookings
    description: >-
      Connect-normalized bookings lifecycle (create, confirm, cancel,
      activities).
  - name: Cruises
    description: Connect-normalized cruise catalog, sailings, pricing, and promotions.
  - name: Flights
    description: 'Full flight lifecycle: search/stream, price, book, manage orders.'
  - name: Health
    description: Per-connection channel health.
paths:
  /connect/v1/connections/{connectionId}/bookings:
    parameters:
      - $ref: '#/components/parameters/ConnectionIdPath'
    get:
      tags:
        - Bookings
      summary: List bookings on a connection
      operationId: listBookings
      parameters:
        - name: localDateStart
          in: query
          schema:
            type: string
        - name: localDateEnd
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Bookings.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OperatorBookingSummary'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/ServerError'
      x-codeSamples:
        - lang: typescript
          label: SDK
          source: >-
            import { createVoyantConnectClient } from
            "@voyant-travel/connect-sdk";


            const connect = createVoyantConnectClient({ apiKey:
            process.env.VOYANT_API_KEY });


            const result = await connect.bookings.list("<connectionId>");
        - lang: bash
          label: cURL
          source: |-
            curl --request GET \
              --url https://api.voyant.travel/connect/v1/connections/<connectionId>/bookings \
              --header 'Authorization: Bearer <token>'
        - lang: javascript
          label: Node
          source: >-
            const response = await
            fetch("https://api.voyant.travel/connect/v1/connections/<connectionId>/bookings",
            {
              method: "GET",
              headers: {
                "Authorization": "Bearer <token>"
              },
            });


            const data = await response.json();
        - lang: python
          label: Python
          source: |-
            import requests

            response = requests.get(
                "https://api.voyant.travel/connect/v1/connections/<connectionId>/bookings",
                headers={
                    "Authorization": "Bearer <token>"
                }
            )

            data = response.json()
components:
  parameters:
    ConnectionIdPath:
      name: connectionId
      in: path
      required: true
      schema:
        type: string
      example: conn_4a91
      description: Connection id.
  schemas:
    OperatorBookingSummary:
      type: object
      required:
        - id
        - connectionId
        - supplierName
        - externalBookingId
        - status
        - createdAt
        - updatedAt
      additionalProperties: true
      properties:
        id:
          type: string
        connectionId:
          type: string
        providerKey:
          type:
            - string
            - 'null'
        supplierName:
          type: string
        externalBookingId:
          type: string
        productExternalId:
          type: string
        optionExternalId:
          type: string
        status:
          type: string
        sourceType:
          type: string
        supplierConfirmationStatus:
          type:
            - string
            - 'null'
        confirmedAt:
          type:
            - string
            - 'null'
          format: date-time
        cancelledAt:
          type:
            - string
            - 'null'
          format: date-time
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Human-readable error message.
        code:
          type: string
          description: >-
            Stable, machine-readable error code. Populated on 5xx and
            upstream-connector failures (e.g. PROVIDER_TIMEOUT,
            UPSTREAM_UNAVAILABLE).
        requestId:
          type: string
          description: >-
            Correlation id for this request. Also returned in the X-Request-Id
            response header.
        details:
          type: object
          additionalProperties: true
          description: Optional structured context.
  responses:
    Unauthorized:
      description: Authentication is missing or invalid.
      headers:
        X-Request-Id:
          description: Correlation id, echoed on every response including errors.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: >-
        The token lacks the required connect:* scope, or there is no active
        organization context.
      headers:
        X-Request-Id:
          description: Correlation id, echoed on every response including errors.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource does not exist.
      headers:
        X-Request-Id:
          description: Correlation id, echoed on every response including errors.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Rate limit exceeded. Retry after the period in the Retry-After header.
      headers:
        X-Request-Id:
          description: Correlation id, echoed on every response including errors.
          schema:
            type: string
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServerError:
      description: >-
        An unexpected error occurred. The X-Request-Id header identifies the
        failed request.
      headers:
        X-Request-Id:
          description: Correlation id, echoed on every response including errors.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key or OAuth2 access token
      description: >-
        Provide either a static platform API key or an OAuth2 access token (from
        `/connect/v1/oauth/token`) as `Authorization: Bearer <token>`. Scopes
        are `connect:*` (e.g. `connect:bookings:write`).

````