TUI WallDy Holiday Offers Search API (search-walldy)

Proxy service exposing the WallDy holiday search over Apigee X. A single POST /offers operation takes accommodation IDs and a travel window with optional party composition, board type, departure and arrival airport, duration and price filters, and returns matching holiday offers grouped per accommodation with flight details, duration and price. Results are available as a single JSON response or as an application/x-json-stream, and can be ordered via an ordering-criteria header.

OpenAPI Specification

tui-group-tui-search-walldy-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: WallDy API
  description: "API for retrieving holiday offers, calendar availability, and duration\
    \ information"
  contact:
    name: WallDy Team
    email: support@tui.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
- url: https://prod.api.tui/search-walldy
  description: Apigee X (prod)
tags:
- name: Offers
  description: Operations for retrieving holiday offers and availability
paths:
  /offers:
    post:
      tags:
      - Offers
      summary: Retrieve holiday offers
      description: Retrieves available holiday offers based on the specified criteria.
        Returns pricing and availability information for accommodations matching the
        search parameters.
      operationId: checkAvailabilityRange
      parameters:
      - name: ordering-criteria
        in: header
        description: Ordering criteria for results
        schema:
          type: string
          nullable: true
        example: price-asc
      - name: X-Trace-Id
        in: header
        description: Correlation ID for tracing requests
        schema:
          type: string
          nullable: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OfferRequest"
        required: true
      responses:
        "200":
          description: Successful retrieval of holiday offers
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AvailabilityWrapper"
            application/x-json-stream:
              schema:
                $ref: "#/components/schemas/AvailabilityWrapper"
        "400":
          description: Invalid request parameters
        "500":
          description: Internal server error
components:
  schemas:
    AlternativeBoardsRequest:
      required:
      - accommodationIds
      - endDate
      - startDate
      type: object
      properties:
        accommodationIds:
          type: array
          description: Set of accommodation IDs (must contain exactly 1)
          example:
          - "12345"
          items:
            type: string
        startDate:
          type: string
          description: Start date in YYYY-MM-DD format
          example: 2024-06-15
        endDate:
          type: string
          description: End date in YYYY-MM-DD format (inclusive)
          example: 2024-06-22
        adults:
          type: integer
          description: Number of adults
          format: int32
          nullable: true
          example: 2
        kids:
          type: integer
          description: Number of children
          format: int32
          nullable: true
          example: 1
        infants:
          type: integer
          description: Number of infants
          format: int32
          nullable: true
          example: 0
        kidsAge:
          type: array
          description: Ages of children
          nullable: true
          example:
          - 5
          - 8
          items:
            type: integer
            format: int32
        duration:
          type: integer
          description: Duration in nights
          format: int32
          nullable: true
          example: 7
        departureAirports:
          type: array
          description: Set of departure airport codes
          nullable: true
          example:
          - LGW
          - LHR
          items:
            type: string
        arrivalAirports:
          type: array
          description: Set of arrival airport codes
          nullable: true
          example:
          - AYT
          items:
            type: string
        carriers:
          type: array
          description: Set of airline carrier codes
          nullable: true
          example:
          - BA
          items:
            type: string
        outboundDepartureTime:
          type: array
          description: Set of outbound departure time preferences
          nullable: true
          example:
          - A
          - B
          items:
            type: string
        inboundDepartureTime:
          type: array
          description: Set of inbound departure time preferences
          nullable: true
          example:
          - C
          - D
          items:
            type: string
        maxPrice:
          type: number
          description: Maximum price filter in GBP
          nullable: true
          example: 1500
        facilities:
          type: object
          additionalProperties:
            type: string
          description: Facility filters as key-value pairs
          nullable: true
        directFlight:
          type: string
          description: Direct flight preference (Y/N)
          nullable: true
          example: "N"
      description: Request object for retrieving alternative board offers for a single
        accommodation
    Anite:
      type: object
      properties:
        board:
          type: string
          nullable: true
        departureAirport:
          type: string
          nullable: true
        depPort:
          type: string
          nullable: true
        stay:
          type: string
          nullable: true
        outSlots:
          type: string
          nullable: true
        inSlots:
          type: string
          nullable: true
        cabinClass:
          type: string
          nullable: true
        price:
          type: string
          nullable: true
        pricePP:
          type: string
          nullable: true
        discount:
          type: string
          nullable: true
        deposit:
          type: string
          nullable: true
        dreamLiner:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/YesNo"
        direct:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/YesNo"
        inDirect:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/YesNo"
        dc:
          type: array
          nullable: true
          items:
            $ref: "#/components/schemas/Dc"
        carrier:
          type: string
          nullable: true
        charter:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/YesNo"
        nonCharter:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/YesNo"
    AvailabilityGroup:
      required:
      - accommodationId
      - boardFilter
      - offers
      - priceFilter
      - totalOffers
      type: object
      properties:
        accommodationId:
          type: string
        totalOffers:
          type: integer
          format: int32
        offers:
          type: array
          items:
            $ref: "#/components/schemas/AvailabilityResponse"
        priceFilter:
          type: array
          items:
            type: number
            format: double
        boardFilter:
          type: array
          items:
            type: string
    AvailabilityResponse:
      required:
      - accommodationId
      - adults
      - arrivalAirports
      - board
      - csp
      - discount
      - duration
      - filters
      - inboundArrivalAirport
      - inboundArrivalDate
      - inboundArrivalTime
      - inboundBaggage
      - inboundBookingClass
      - inboundCabinClass
      - inboundCarrier
      - inboundDepartureAirport
      - inboundDepartureDate
      - inboundDepartureTime
      - inboundFareBasis
      - inboundFareType
      - inboundFlightNo
      - inboundFlightRouteKey
      - inboundStops
      - infant
      - kids
      - minRoomsAvailable
      - offset
      - outboundArrivalAirport
      - outboundArrivalDate
      - outboundArrivalTime
      - outboundBaggage
      - outboundBookingClass
      - outboundCabinClass
      - outboundCarrier
      - outboundDepartureAirport
      - outboundDepartureDate
      - outboundDepartureTime
      - outboundFareBasis
      - outboundFareType
      - outboundFlightNo
      - outboundFlightRouteKey
      - outboundStops
      - price
      - pricePerPerson
      - pricePerPersonWithoutLocalTax
      - priceWithoutLocalTax
      - promoCode
      - roomCode
      - routeCd
      - startDate
      - tuiScore
      type: object
      properties:
        offset:
          type: integer
          format: int64
        accommodationId:
          type: string
        board:
          type: string
        adults:
          type: integer
          format: int32
        kids:
          type: integer
          format: int32
        infant:
          type: integer
          format: int32
        startDate:
          type: string
          format: date
        duration:
          type: integer
          format: int32
        price:
          type: number
        pricePerPerson:
          type: number
        description:
          type: string
          nullable: true
        csp:
          type: integer
          format: int32
        tuiScore:
          type: integer
          format: int32
        roomCode:
          type: string
        routeCd:
          type: string
        promoCode:
          type: string
        discount:
          type: number
        outboundDepartureAirport:
          type: string
        outboundDepartureDate:
          type: string
        outboundDepartureTime:
          type: string
        outboundArrivalAirport:
          type: string
        outboundArrivalDate:
          type: string
        outboundArrivalTime:
          type: string
        outboundFlightRouteKey:
          type: string
        outboundFareType:
          type: string
        outboundCarrier:
          type: string
        outboundFlightNo:
          type: string
        outboundBookingClass:
          type: string
        outboundCabinClass:
          type: string
        outboundStops:
          type: integer
          format: int32
        outboundBaggage:
          type: string
        outboundFareBasis:
          type: string
        inboundDepartureAirport:
          type: string
        inboundDepartureDate:
          type: string
        inboundDepartureTime:
          type: string
        inboundArrivalAirport:
          type: string
        inboundArrivalDate:
          type: string
        inboundArrivalTime:
          type: string
        inboundFlightRouteKey:
          type: string
        inboundFareType:
          type: string
        inboundCarrier:
          type: string
        inboundFlightNo:
          type: string
        inboundBookingClass:
          type: string
        inboundCabinClass:
          type: string
        inboundStops:
          type: integer
          format: int32
        inboundBaggage:
          type: string
        inboundFareBasis:
          type: string
        filters:
          type: array
          items:
            $ref: "#/components/schemas/FilterResponse"
        priceWithoutLocalTax:
          type: number
        pricePerPersonWithoutLocalTax:
          type: number
        localTax:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/LocalTaxResponse"
        minRoomsAvailable:
          type: integer
          format: int32
        arrivalAirports:
          type: array
          items:
            type: string
        pricePerPersonRaw:
          type: number
          nullable: true
        markupPercentage:
          type: number
          nullable: true
        agencyPercentage:
          type: number
          nullable: true
        amountPerPerson:
          type: number
          nullable: true
        fxRate:
          type: number
          nullable: true
        flightPrice:
          type: number
          nullable: true
        accommodationPrice:
          type: number
          nullable: true
    AvailabilityWrapper:
      required:
      - availabilityGroups
      - filters
      - roomDescriptions
      type: object
      properties:
        filters:
          $ref: "#/components/schemas/Filters"
        roomDescriptions:
          type: array
          items:
            type: string
        availabilityGroups:
          type: array
          items:
            $ref: "#/components/schemas/AvailabilityGroup"
    CalendarRequest:
      required:
      - accommodationIds
      - endDate
      - startDate
      type: object
      properties:
        startDate:
          type: string
          description: Start date for calendar search in YYYY-MM-DD format
          example: 2024-06-01
        endDate:
          type: string
          description: End date for calendar search in YYYY-MM-DD format
          example: 2024-09-30
        accommodationIds:
          type: array
          description: Set of accommodation IDs to search for
          example:
          - "12345"
          - "67890"
          items:
            type: string
        adults:
          type: integer
          description: Number of adults in the party
          format: int32
          nullable: true
          example: 2
        kids:
          type: integer
          description: Number of children in the party
          format: int32
          nullable: true
          example: 1
        infants:
          type: integer
          description: Number of infants in the party
          format: int32
          nullable: true
          example: 0
        kidsAge:
          type: array
          description: Ages of children in the party (required when kids or infants
            > 0)
          nullable: true
          example:
          - 5
          - 8
          items:
            type: integer
            format: int32
        duration:
          type: array
          description: List of durations to filter by
          nullable: true
          example:
          - 7
          - 14
          items:
            type: integer
            format: int32
        departureAirports:
          type: array
          description: Set of departure airport codes
          nullable: true
          example:
          - LGW
          - LHR
          items:
            type: string
        boardTypes:
          type: array
          description: Set of board types to filter by
          nullable: true
          example:
          - BB
          - HB
          - FB
          items:
            type: string
      description: Request object for retrieving calendar availability
    CalendarResponse:
      required:
      - dates
      - months
      type: object
      properties:
        dates:
          $ref: "#/components/schemas/Dates_1"
        months:
          type: object
          additionalProperties:
            type: object
    Date:
      required:
      - available
      - date
      type: object
      properties:
        available:
          type: boolean
        date:
          type: string
    DateAvailability:
      required:
      - available
      - date
      type: object
      properties:
        available:
          type: boolean
        date:
          type: string
    Dates:
      required:
      - count
      - dates
      - name
      type: object
      properties:
        name:
          type: string
        count:
          type: integer
          format: int32
        dates:
          type: array
          items:
            $ref: "#/components/schemas/Date"
    Dates_1:
      required:
      - count
      - dates
      - name
      type: object
      properties:
        name:
          type: string
        count:
          type: integer
          format: int32
        dates:
          type: array
          items:
            $ref: "#/components/schemas/DateAvailability"
    Dc:
      required:
      - date
      - value
      type: object
      properties:
        value:
          $ref: "#/components/schemas/YesNo"
        date:
          type: string
    Durations:
      required:
      - count
      - durations
      - name
      type: object
      properties:
        name:
          type: string
        count:
          type: integer
          format: int32
        durations:
          type: array
          items:
            type: integer
            format: int32
    DurationsRequest:
      required:
      - accommodationIds
      - endDate
      - startDate
      type: object
      properties:
        startDate:
          type: string
          description: Start date for duration search in YYYY-MM-DD format
          example: 2024-06-01
        endDate:
          type: string
          description: End date for duration search in YYYY-MM-DD format
          example: 2024-09-30
        accommodationIds:
          type: array
          description: Set of accommodation IDs to search for
          example:
          - "12345"
          - "67890"
          items:
            type: string
        adults:
          type: integer
          description: Number of adults in the party
          format: int32
          nullable: true
          example: 2
        kids:
          type: integer
          description: Number of children in the party
          format: int32
          nullable: true
          example: 1
        infants:
          type: integer
          description: Number of infants in the party
          format: int32
          nullable: true
          example: 0
        kidsAge:
          type: array
          description: Ages of children in the party (required when kids or infants
            > 0)
          nullable: true
          example:
          - 5
          - 8
          items:
            type: integer
            format: int32
        duration:
          type: array
          description: List of durations to filter by
          nullable: true
          example:
          - 7
          - 14
          items:
            type: integer
            format: int32
        departureAirports:
          type: array
          description: Set of departure airport codes
          nullable: true
          example:
          - LGW
          - LHR
          items:
            type: string
        boardTypes:
          type: array
          description: Set of board types to filter by
          nullable: true
          example:
          - BB
          - HB
          - FB
          items:
            type: string
      description: Request object for retrieving duration information
    DurationsResponse:
      required:
      - count
      - durations
      - name
      type: object
      properties:
        name:
          type: string
        count:
          type: integer
          format: int32
        durations:
          type: array
          items:
            type: integer
            format: int32
    FilterResponse:
      type: object
      properties:
        name:
          type: string
          nullable: true
        code:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
    Filters:
      required:
      - multiSelect
      - name
      - singleSelect
      type: object
      properties:
        name:
          type: string
        multiSelect:
          type: array
          items:
            $ref: "#/components/schemas/MultiSelect"
        singleSelect:
          type: array
          items:
            $ref: "#/components/schemas/SingleSelect"
        durationsList:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/Durations"
        aniteLists:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/Anite"
        datesList:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/Dates"
        monthsList:
          nullable: true
          allOf:
          - $ref: "#/components/schemas/MonthsList"
    LocalTaxResponse:
      required:
      - exchangeRate
      - localCurrency
      - perPersonInLocalCurrency
      - perPersonInSourceMarketCurrency
      - totalInLocalCurrency
      - totalInSourceMarketCurrency
      type: object
      properties:
        totalInSourceMarketCurrency:
          type: number
        totalInLocalCurrency:
          type: number
        perPersonInSourceMarketCurrency:
          type: number
        perPersonInLocalCurrency:
          type: number
        localCurrency:
          type: string
        exchangeRate:
          type: number
    Month:
      type: object
      properties:
        month:
          type: string
          nullable: true
        seasonType:
          type: string
          nullable: true
        seasonYear:
          type: string
          nullable: true
        available:
          type: string
          nullable: true
    MonthsList:
      type: object
      properties:
        months:
          type: array
          nullable: true
          items:
            $ref: "#/components/schemas/Month"
    MultiSelect:
      required:
      - code
      - items
      - name
      type: object
      properties:
        name:
          type: string
        code:
          type: string
        items:
          type: array
          items:
            $ref: "#/components/schemas/MultiSelectItem"
    MultiSelectItem:
      required:
      - code
      type: object
      properties:
        code:
          type: string
        count:
          type: string
          nullable: true
        min:
          type: string
          nullable: true
        max:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
    OfferRequest:
      required:
      - accommodationIds
      - endDate
      - searchType
      - startDate
      type: object
      properties:
        accommodationIds:
          type: array
          description: Set of accommodation IDs to search for
          example:
          - "12345"
          - "67890"
          items:
            type: string
        startDate:
          type: string
          description: Start date for the holiday search in YYYY-MM-DD format
          example: 2024-06-15
        endDate:
          type: string
          description: End date for the holiday search in YYYY-MM-DD format (inclusive)
          example: 2024-06-22
        boardTypes:
          type: array
          description: Set of board types to filter by (optional)
          nullable: true
          example:
          - BB
          - HB
          - FB
          items:
            type: string
        adults:
          type: integer
          description: Number of adults in the party
          format: int32
          nullable: true
          example: 2
        kids:
          type: integer
          description: Number of children in the party
          format: int32
          nullable: true
          example: 1
        infants:
          type: integer
          description: Number of infants in the party
          format: int32
          nullable: true
          example: 0
        kidsAge:
          type: array
          description: Ages of children in the party (required when kids or infants
            > 0)
          nullable: true
          example:
          - 5
          - 8
          items:
            type: integer
            format: int32
        duration:
          type: integer
          description: Duration of the holiday in nights
          format: int32
          nullable: true
          example: 7
        rooms:
          type: integer
          description: Number of rooms required
          format: int32
          nullable: true
          example: 1
        roomDescription:
          type: string
          description: Room description for filtering
          nullable: true
          example: Double Room with Sea View
        departureAirports:
          type: array
          description: Set of departure airport codes
          nullable: true
          example:
          - LGW
          - LHR
          items:
            type: string
        arrivalAirports:
          type: array
          description: Set of arrival airport codes
          nullable: true
          example:
          - AYT
          - HRG
          items:
            type: string
        searchType:
          type: integer
          description: Search type identifier
          format: int32
          example: 3
        carriers:
          type: array
          description: Set of airline carrier codes to filter by
          nullable: true
          example:
          - BA
          - AF
          items:
            type: string
        outboundDepartureTime:
          type: array
          description: "Set of outbound departure time preferences. A -> 06:00 - 11:59,\
            \ B -> 12:00 - 17:59, C -> 18:00 - 20:59, D -> 21:00 - 05:59"
          nullable: true
          example:
          - A
          - B
          - C
          - D
          items:
            type: string
        inboundDepartureTime:
          type: array
          description: "Set of inbound departure time preferences. A -> 06:00 - 11:59,\
            \ B -> 12:00 - 17:59, C -> 18:00 - 20:59, D -> 21:00 - 05:59"
          nullable: true
          example:
          - A
          - B
          - C
          - D
          items:
            type: string
        maxPrice:
          type: number
          description: Maximum price filter in GBP
          nullable: true
          example: 1500
        facilities:
          type: object
          additionalProperties:
            type: string
          description: Facility filters as key-value pairs
          nullable: true
          example:
            swimmingPool: "YES"
            spa: "NO"
        directFlight:
          type: string
          description: Direct flight preference (Y/N)
          nullable: true
          example: "Y"
        roomAllocations:
          type: array
          description: "Customer-selected room allocations. When provided, each entry\
            \ defines one room's occupancy."
          nullable: true
          items:
            $ref: "#/components/schemas/RoomAllocation"
      description: Request object for retrieving holiday offers
    RoomAllocation:
      required:
      - adults
      - infants
      - kids
      - kidsAge
      type: object
      properties:
        adults:
          type: integer
          description: Number of adults in this room
          format: int32
          example: 2
        kids:
          type: integer
          description: Number of children in this room
          format: int32
          example: 1
        infants:
          type: integer
          description: Number of infants in this room
          format: int32
          example: 0
        kidsAge:
          type: array
          description: Ages of children in this room
          example:
          - 5
          items:
            type: integer
            format: int32
      description: Per-room occupancy for customer-selected multi-room
    RoomsRequest:
      required:
      - accommodationIds
      - endDate
      - startDate
      type: object
      properties:
        accommodationIds:
          type: array
          description: Set of accommodation IDs to search for
          example:
          - "12345"
          items:
            type: string
        startDate:
          type: string
          description: Start date in YYYY-MM-DD format
          example: 2024-06-15
        endDate:
          type: string
          description: End date in YYYY-MM-DD format (inclusive)
          example: 2024-06-22
        boardTypes:
          type: array
          description: Set of board types to filter by
          nullable: true
          example:
          - BB
          - HB
          items:
            type: string
        adults:
          type: integer
          description: Number of adults
          format: int32
          nullable: true
          example: 2
        kids:
          type: integer
          description: Number of children
          format: int32
          nullable: true
          example: 1
        infants:
          type: integer
          description: Number of infants
          format: int32
          nullable: true
          example: 0
        kidsAge:
          type: array
          description: Ages of children
          nullable: true
          example:
          - 5
          - 8
          items:
            type: integer
            format: int32
        duration:
          type: integer
          description: Duration in nights
          format: int32
          nullable: true
          example: 7
        departureAirports:
          type: array
          description: Set of departure airport codes
          nullable: true
          example:
          - LGW
          - LHR
          items:
            type: string
        arrivalAirports:
          type: array
          description: Set of arrival airport codes
          nullable: true
          example:
          - AYT
          items:
            type: string
        carriers:
          type: array
          description: Set of airline carrier codes
          nullable: true
          example:
          - BA
          items:
            type: string
        outboundDepartureTime:
          type: array
          description: Set of outbound departure time preferences
          nullable: true
          example:
          - A
          - B
          items:
            type: string
        inboundDepartureTime:
          type: array
          description: Set of inbound departure time preferences
          nullable: true
          example:
          - C
          - D
          items:
            type: string
        maxPrice:
          type: number
          description: Maximum price filter in GBP
          nullable: true
          example: 1500
        facilities:
          type: object
          additionalProperties:
            type: string
          description: Facility filters as key-value pairs
          nullable: true
        directFlight:
          type: string
          description: Direct flight preference (Y/N)
          nullable: true
          example: "N"
      description: Request object for retrieving room offers
    SingleAccommodationRequest:
      required:
      - accommodationIds
      - endDate
      - startDate
      type: object
      properties:
        accommodationIds:
          type: array
          description: Set of accommodation IDs (must contain exactly 1)
          example:
          - "12345"
          items:
            type: string
        startDate:
          type: string
          description: Start date in YYYY-MM-DD format
          example: 2024-06-15
        endDate:
          type: string
          description: End date in YYYY-MM-DD format (inclusive)
          example: 2024-06-22
        boardTypes:
          type: array
          description: Set of board types to filter by
          nullable: true
          example:
          - BB
          - HB
          items:
            type: string
        adults:
          type: integer
          description: Number of adults
          format: int32
          nullable: true
          example: 2
        kids:
          type: integer
          description: Number of children
          format: int32
          nullable: true
          example: 1
        infants:
          type: integer
          description: Number of infants
          format: int32
          nullable: true
          example: 0
        kidsAge:
          type: array
          description: Ages of children
          nullable: true
          example:
          - 5
          - 8
          items:
            type: integer
            format: int32
        duration:
          type: integer
          description: Duration in nights
          format: int32
          nullable: true
          example: 7
        departureAirports:
          type: array
          description: Set of departure airport codes
          nullable: true
          example:
          - LGW
          - LHR
          items:
            type: string
        arrivalAirports:
          type: array
          description: Set of arrival airport codes
          nullable: true
          example:
          - AYT
          items:
            type: string
        carriers:
          type: array
          description: Set of airline carrier codes
          nullable: true
          example:
          - BA
          items:
            type: string
        outboundDepartureTime:
          type: array
          description: Set of outbound departure time preferences
          nullable: true
          example:
          - A
          - B
          items:
            type: string
        inboundDepartureTime:
          type: array
          description: Set of inbound departure time preferences
          nullable: true
   

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tui-group/refs/heads/main/openapi/tui-group-tui-search-walldy-api-openapi.yml