Webjet · Arazzo Workflow

Trip Ninja — search, confirm price, book and ticket

Version 1.0.0

End-to-end flight retailing against the Trip Ninja surface published in Trip Ninja's own GitHub documentation repository (https://github.com/trip-ninja-inc/trip_ninja_api_docs, last updated 2023-12-14). Authored by API Evangelist on 2026-07-28; every operationId below exists verbatim in the referenced specification. This surface is NOT documented on the current developer hub — treat availability as unverified and confirm with Trip Ninja before building against it. Access requires a commercial agreement, Trip Ninja-issued credentials and an allow-listed source IP.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub TravelAustraliaOTAAviationBookingDistributionFlight SearchCar RentalNew ZealandTravel TechnologyArazzoWorkflows

Provider

webjet

Workflows

search-price-book-ticket
Search flights, confirm the price, create the booking, queue it and issue the ticket.
The four money-relevant steps are separated deliberately. CreateBooking and Ticket are irreversible and cost real money; there is no idempotency key anywhere in this API, so neither step may be retried automatically.
5 steps inputs: agency, bookingRequest, endpoint, priceConfirmRequest, queueRequest, searchRequest, ticketingRequest outputs: booking, ticket
1
search
$sourceDescriptions.flightsCore.FlightSearch
Shop for itineraries.
2
confirm-price
$sourceDescriptions.pricingBooking.PriceConfirm
Re-price the selected itinerary. Air prices move between shopping and booking — never skip this.
3
create-booking
$sourceDescriptions.pricingBooking.CreateBooking
Consequential and irreversible. Requires explicit human approval. Do NOT retry on an ambiguous response — this API publishes no idempotency key.
4
queue-for-ticketing
$sourceDescriptions.pricingBooking.AddBookingToTicketingQueue
Place the booking on the ticketing queue.
5
ticket
$sourceDescriptions.pricingBooking.Ticket
Issue the ticket. Irreversible and chargeable. Requires explicit human approval.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Trip Ninja — search, confirm price, book and ticket
  version: 1.0.0
  description: >-
    End-to-end flight retailing against the Trip Ninja surface published in Trip Ninja's own GitHub
    documentation repository (https://github.com/trip-ninja-inc/trip_ninja_api_docs, last updated
    2023-12-14). Authored by API Evangelist on 2026-07-28; every operationId below exists verbatim in
    the referenced specification. This surface is NOT documented on the current developer hub — treat
    availability as unverified and confirm with Trip Ninja before building against it. Access
    requires a commercial agreement, Trip Ninja-issued credentials and an allow-listed source IP.
sourceDescriptions:
- name: flightsCore
  url: ../openapi/webjet-tripninja-flights-core-openapi.yml
  type: openapi
- name: pricingBooking
  url: ../openapi/webjet-tripninja-pricing-booking-openapi.yml
  type: openapi
workflows:
- workflowId: search-price-book-ticket
  summary: Search flights, confirm the price, create the booking, queue it and issue the ticket.
  description: >-
    The four money-relevant steps are separated deliberately. CreateBooking and Ticket are
    irreversible and cost real money; there is no idempotency key anywhere in this API, so neither
    step may be retried automatically.
  inputs:
    type: object
    required: [endpoint, searchRequest, priceConfirmRequest, bookingRequest]
    properties:
      endpoint:
        type: string
        description: The content-source endpoint path segment configured for your account (e.g. travelport).
      agency:
        type: string
      searchRequest:
        type: object
        description: FlightSearchRequest body — segments with IATA codes, dates, cabin class and travellers.
      priceConfirmRequest:
        type: object
        description: PriceConfirmRequest body built from the selected itinerary.
      bookingRequest:
        type: object
        description: CreateBookingRequest body — passengers, itinerary, credentials.
      ticketingRequest:
        type: object
        description: TicketingRequest body.
      queueRequest:
        type: object
        description: AddBookingToTicketingQueueRequest body.
  steps:
  - stepId: search
    description: Shop for itineraries.
    operationId: $sourceDescriptions.flightsCore.FlightSearch
    parameters:
    - name: endpoint
      in: path
      value: $inputs.endpoint
    requestBody:
      contentType: application/json
      payload: $inputs.searchRequest
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      searchResponse: $response.body
  - stepId: confirm-price
    description: Re-price the selected itinerary. Air prices move between shopping and booking — never skip this.
    operationId: $sourceDescriptions.pricingBooking.PriceConfirm
    parameters:
    - name: endpoint
      in: path
      value: $inputs.endpoint
    requestBody:
      contentType: application/json
      payload: $inputs.priceConfirmRequest
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      priceConfirmResponse: $response.body
  - stepId: create-booking
    description: >-
      Consequential and irreversible. Requires explicit human approval. Do NOT retry on an ambiguous
      response — this API publishes no idempotency key.
    operationId: $sourceDescriptions.pricingBooking.CreateBooking
    parameters:
    - name: endpoint
      in: path
      value: $inputs.endpoint
    requestBody:
      contentType: application/json
      payload: $inputs.bookingRequest
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      bookingResponse: $response.body
  - stepId: queue-for-ticketing
    description: Place the booking on the ticketing queue.
    operationId: $sourceDescriptions.pricingBooking.AddBookingToTicketingQueue
    requestBody:
      contentType: application/json
      payload: $inputs.queueRequest
    successCriteria:
    - condition: $statusCode == 200
  - stepId: ticket
    description: Issue the ticket. Irreversible and chargeable. Requires explicit human approval.
    operationId: $sourceDescriptions.pricingBooking.Ticket
    requestBody:
      contentType: application/json
      payload: $inputs.ticketingRequest
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      ticketResponse: $response.body
  outputs:
    booking: $steps.create-booking.outputs.bookingResponse
    ticket: $steps.ticket.outputs.ticketResponse