openapi: 3.0.1
info:
  title: Rapid Activities
  description: Rapid Activities V1
  version: v1
servers:
  - url: https://test.ean.com/v1
  - url: https://api.ean.com/v1
tags:
  - name: Shopping
    description: The Shopping API enables searching for activities and offers.
  - name: Booking
    description: The Booking API enables creation of activity bookings.
  - name: Manage Booking
    description: The Manage Booking API enables retrieval and cancellation of activity bookings.
paths:
  /activities/availability:
    get:
      operationId: getActivities
      tags:
        - Shopping
      summary: Get Available Activities
      description: Retrieves available activities based on specified location and dates.
      security:
        - EgTokenAuth:
            - demand-solutions.activities
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/TestHeader'
        - $ref: '#/components/parameters/StartDate'
        - $ref: '#/components/parameters/Currency'
        - $ref: '#/components/parameters/Language'
        - $ref: '#/components/parameters/CountryCode'
        - $ref: '#/components/parameters/EndDate'
        - $ref: '#/components/parameters/RegionId'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Sort'
        - $ref: '#/components/parameters/ShoppingPath'
      responses:
        '200':
          $ref: '#/components/responses/AvailabilityResponse'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '406':
          $ref: '#/components/responses/Error406'
        '426':
          $ref: '#/components/responses/Error426'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
  /activities/{activity_id}/offers:
    get:
      operationId: getOffers
      tags:
        - Shopping
      summary: Get Activity Offers
      description: Retrieves detailed activity information for a particular activity including available offers and tickets.
      security:
        - EgTokenAuth:
            - demand-solutions.activities
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/OffersTestHeader'
        - $ref: '#/components/parameters/TokenRequired'
        - $ref: '#/components/parameters/ActivityId'
      responses:
        '200':
          $ref: '#/components/responses/ActivityOffers'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '406':
          $ref: '#/components/responses/Error406'
        '426':
          $ref: '#/components/responses/Error426'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
  /activities/{activity_id}/offers/{offer_id}:
    get:
      operationId: priceCheck
      tags:
        - Shopping
      summary: Get Offer Price Check
      description: Validates current pricing for a specified activity/offer and includes fields required to complete a booking.
      security:
        - EgTokenAuth:
            - demand-solutions.activities
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/PriceCheckTestHeader'
        - $ref: '#/components/parameters/TokenRequired'
        - $ref: '#/components/parameters/Tickets'
        - $ref: '#/components/parameters/ActivityId'
        - $ref: '#/components/parameters/OfferId'
      responses:
        '200':
          $ref: '#/components/responses/ActivityPriceCheck'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '406':
          $ref: '#/components/responses/Error406'
        '426':
          $ref: '#/components/responses/Error426'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
  /itineraries/activity:
    post:
      operationId: createBooking
      summary: Create Booking
      description: |
        Creates a booking and returns an itinerary_id with relevant operation links. 
        Links returned in the response may vary based on the booking state.

        _Note: The token needed for this endpoint is returned in the price check call._
      tags:
        - Booking
      security:
        - EgTokenAuth:
            - demand-solutions.activities
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/ContentType'
        - $ref: '#/components/parameters/CustomerIpRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/BookTestHeader'
        - $ref: '#/components/parameters/TokenRequired'
      requestBody:
        $ref: '#/components/requestBodies/ActivityRequestBody'
      responses:
        '201':
          $ref: '#/components/responses/ActivityReservationResponseBody'
        '400':
          $ref: '#/components/responses/Error400BadRequestInvalidInput'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '406':
          $ref: '#/components/responses/Error406'
        '409':
          $ref: '#/components/responses/Error409PriceMismatch'
        '410':
          $ref: '#/components/responses/Error410SoldOut'
        '415':
          $ref: '#/components/responses/Error415'
        '426':
          $ref: '#/components/responses/Error426'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
    get:
      operationId: getItineraryByAffiliateReference
      summary: Retrieve Booking by Affiliate Reference
      description: |
        Retrieves booking details associated with the specified affiliate_reference_id and email. Returns cancellation links when applicable.

        _Note: A brief processing delay may occur between itinerary creation and availability for retrieval. If an error occurs when retrieving a newly created itinerary, retry after a few minutes._
      tags:
        - Manage Booking
      security:
        - EgTokenAuth:
            - demand-solutions.activities
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/TestHeader'
        - $ref: '#/components/parameters/AffiliateReferenceId'
      responses:
        '200':
          $ref: '#/components/responses/ActivityRetrieveResponseByAffiliateID'
        '400':
          $ref: '#/components/responses/Error400BadRequestInvalidInput'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '406':
          $ref: '#/components/responses/Error406'
        '426':
          $ref: '#/components/responses/Error426'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
  /itineraries/{itinerary_id}/activity:
    get:
      operationId: getItineraryById
      summary: Retrieve Booking by Itinerary ID
      description: |
        Retrieves booking details by the specified itinerary id. Returns cancellation links when applicable.

        _Note: A brief processing delay may occur between itinerary creation and availability for retrieval. If an error occurs when retrieving a newly created itinerary, retry after a few minutes._
      tags:
        - Manage Booking
      security:
        - EgTokenAuth:
            - demand-solutions.activities
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/TestHeader'
        - $ref: '#/components/parameters/ItineraryId'
      responses:
        '200':
          $ref: '#/components/responses/ActivityRetrieveResponse'
        '400':
          $ref: '#/components/responses/Error400BadRequestInvalidInput'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '406':
          $ref: '#/components/responses/Error406'
        '426':
          $ref: '#/components/responses/Error426'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
    delete:
      operationId: cancelBooking
      summary: Cancel Booking
      description: |
        Cancels an existing booking.
      tags:
        - Manage Booking
      security:
        - EgTokenAuth:
            - demand-solutions.activities
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/TestHeader'
        - $ref: '#/components/parameters/ItineraryId'
      responses:
        '202':
          description: Unknown Itinerary status - The request is valid but the state of the itinerary is unknown.
        '204':
          description: No Content - Booking successfully cancelled
        '400':
          $ref: '#/components/responses/Error400BadRequestInvalidInput'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404ItineraryNotFound'
        '406':
          $ref: '#/components/responses/Error406'
        '426':
          $ref: '#/components/responses/Error426'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
components:
  securitySchemes:
    EgTokenAuth:
      type: oauth2
      description: This api uses Oauth2 with EGToken scheme
      flows:
        clientCredentials:
          tokenUrl: https://api.ean.com/identity/oauth2/v3/token
          scopes:
            demand-solutions.activities: Grants access to activity api.
  parameters:
    Accept:
      in: header
      name: Accept
      example: application/json
      description: |
        Specifies the desired response format.
      required: true
      schema:
        type: string
        enum:
          - application/json
    AcceptEncoding:
      in: header
      name: Accept-Encoding
      example: gzip
      description: |
        Specifies the desired the response encoding.
      required: true
      schema:
        type: string
        enum:
          - gzip
    TestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/TestHeaderValue'
    OffersTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/OffersTestHeaderValue'
    PriceCheckTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the api.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/PriceCheckTestHeaderValue'
    BookTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the api.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/BookTestHeaderValue'
    CustomerIpRequired:
      in: header
      name: Customer-Ip
      description: |
        IP address of the customer, as captured by your integration. Send IPv4 addresses only.

        Ensure your integration passes the customer's IP, not your own. This value helps determine their location and assign the correct payment gateway.

        Also used for fraud recovery and other important analytics.
      required: true
      schema:
        type: string
        format: ipv4
    CustomerIpNotRequired:
      in: header
      name: Customer-Ip
      description: |
        IP address of the customer, as captured by your integration. Send IPV4 addresses only.

        Ensure your integration passes the customer's IP, not your own. This value helps determine their location and assign the correct payment gateway.

        Also used for fraud recovery and other important analytics.
      required: false
      schema:
        type: string
        format: ipv4
    ContentType:
      in: header
      name: Content-Type
      example: application/json
      description: |
        Specifies the the request body format. `application/json` is the only supported value for this header.
      required: true
      schema:
        type: string
        enum:
          - application/json
    CustomerSessionId:
      in: header
      name: Customer-Session-Id
      description: |
        Insert your own unique value for each user session, beginning with the first API call.

        Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.

        Including this value greatly eases our internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session.
      required: false
      schema:
        type: string
    UserAgent:
      in: header
      name: User-Agent
      examples:
        Chrome:
          value: Chrome/63.0.3239.132 Safari/537.36
        TravelNow:
          value: TravelNow/3.30.112
      description: |
        The `User-Agent` header string from the customer's request, as captured by your integration. 

        _If you are building an application then the `User-Agent` value should be `{app name}/{app version}`._
      required: true
      schema:
        type: string
    Language:
      in: query
      name: language
      example: en-US
      description: |
        Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO639-1 alpha 2 language codes and ISO3166-1 alpha 2 country codes. See [https://www.w3.org/International/articles/language-tags/](https://www.w3.org/International/articles/language-tags/).
      required: true
      schema:
        $ref: '#/components/schemas/LanguageEnum'
    Currency:
      in: query
      name: currency
      example: USD
      description: |
        Requested currency for the rates, in ISO 4217 format
      required: true
      schema:
        $ref: '#/components/schemas/CurrencyEnum'
    CountryCode:
      in: query
      name: country_code
      example: US
      description: |
        The country code of the traveler's point of sale, in ISO 3166-1 alpha-2 format. This should represent the country where the shopping transaction is taking place.
      required: true
      schema:
        $ref: '#/components/schemas/CountryCodeEnum'
    StartDate:
      in: query
      name: start_date
      example: '2018-02-12'
      description: |
        The start date for searching for activities, in ISO 8601 format.
      required: true
      schema:
        type: string
        format: date
    EndDate:
      in: query
      name: end_date
      example: '2018-02-12'
      description: |
        The end date for searching for activities, in ISO 8601 format.
      required: true
      schema:
        type: string
        format: date
    RegionId:
      in: query
      name: region_id
      example: '1122931'
      description: |
        The region id for the location, or area that you are looking for activities.
      required: true
      schema:
        type: string
    Limit:
      in: query
      name: limit
      example: 4
      description: |
        The max number of activities to return. Prioritizing the sorting mechanism in the sort column, by default it search by what is recommended.
      required: true
      schema:
        type: integer
        minimum: 1
        maximum: 500
    Sort:
      in: query
      name: sort
      example: price_ascending
      description: The field to sort by.
      required: true
      schema:
        $ref: '#/components/schemas/SortTypeEnum'
    ShoppingPath:
      in: query
      name: shopping_path
      example: standalone
      description: |
        Type of activity standalone or package.
      required: true
      schema:
        $ref: '#/components/schemas/ShoppingPathTypeEnum'
    Tickets:
      in: query
      name: tickets
      example: adult-2
      description: |
        The ticket-type and the count of how many tickets of this type that will be requested for purchase.

        In the format of `ticket-type`-`count`.
      required: true
      schema:
        type: string
    AffiliateReferenceId:
      in: query
      name: affiliate_reference_id
      description: |
        The affiliate reference ID associated with the booking.
        Entering anything other than English letters, numbers, "-", or "_" will result in an error.
      example: 111A222BB33344CC5555
      required: true
      schema:
        type: string
    TokenRequired:
      in: query
      name: token
      required: true
      description: |
        Token of encoded information of a activity information, from the start of a search request, will be passed along via links maintain state of decisions throughout the process.
      example: djUtc29zLTNhYWZkMDk2YmMyODQyYzA4OTMzNjdkYWM3NTU1ZWJmLTItMTg4LTF+OC5TfkFRb0NDQUVTQndqVUJCQUJHQUVvQWxJRWdmSUJBRmdDY0FGNkEySm1jNGdCeVlTbVFBfkFRcG9DaklJd1lJQkVnUXhOekkxR0l1UUFTQ2pzUUVvNDhIVUFqQ1l3OVFDT0ZOQUFGZ0JhZ1JOUVVsT2NnaFRXRUZKV2s1TldBb3lDTUdDQVJJRU1UWTFNeGlqc1FFZ2k3Z0JLS2JGMUFJdzVNYlVBamhSUUFGWUFXb0VUVUZKVG5JSVVWWkJTVmhUVFZnS1p3b3hDTUdDQVJJRE9EVXlHSXU0QVNEdnVRRW9zZTNWQWpDUDd0VUNPRkZBQUZnQmFnUk5RVWxPY2doUlYwRklXazVOV0FveUNNR0NBUklFTWpjMk1CanZ1UUVnaTVBQktKRHgxUUl3MVBIVkFqaE9RQUZZQVdvRVRVRkpUbklJVGxoQlNWcE9UVmdTQ2dnQkVBRVlBU29DUVVFWUFTSUVDQUVRQVNnQ0tBTW9CREFM
      schema:
        type: string
    ActivityId:
      in: path
      name: activity_id
      description: |
        The identifier for an activity.
      example: '1234432'
      required: true
      schema:
        type: string
    OfferId:
      in: path
      name: offer_id
      description: |
        The identifier for a specific offer on an activity.
      example: '1231443'
      required: true
      schema:
        type: string
    ItineraryId:
      in: path
      name: itinerary_id
      description: The itinerary ID from the booking response.
      example: '123456789'
      required: true
      schema:
        type: string
  requestBodies:
    ActivityRequestBody:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateItineraryRequest'
      required: true
  responses:
    AvailabilityResponse:
      description: Successful
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ActivityShop'
          examples:
            StandardAvailabilityResponse:
              $ref: '#/components/examples/availability-standard'
    ActivityOffers:
      description: Successful
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ActivityOffers'
          examples:
            StandardOffersResponse:
              $ref: '#/components/examples/offers-standard'
    ActivityPriceCheck:
      description: Successful
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ActivityPriceCheck'
          examples:
            StandardResponse:
              $ref: '#/components/examples/price-check-standard'
            PriceChangeResponse:
              $ref: '#/components/examples/price-check-price-change'
            SoldOutResponse:
              $ref: '#/components/examples/price-check-sold-out'
    ActivityReservationResponseBody:
      description: Created
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateResponse'
          examples:
            BasicCreateResponse:
              $ref: '#/components/examples/create-successful'
    ActivityRetrieveResponse:
      description: OK
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ActivityRetrieveResponse'
          examples:
            standardRetrieveResponse:
              $ref: '#/components/examples/retrieve-standard'
    ActivityRetrieveResponseByAffiliateID:
      description: OK
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ActivityRetrieveResponse'
          examples:
            StandardRetrieveByAffiliateResponse:
              $ref: '#/components/examples/retrieve-by-affiliate-standard'
    Error400BadRequestInvalidInput:
      description: Bad Request
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/bad-request-error'
            bad-link:
              $ref: '#/components/examples/bad-link-error'
    Error401:
      description: Unauthorized
      headers:
        WWW-Authenticate:
          description: Provides an example of the Authorization header.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/unauthenticated-error'
    Error403:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/unauthorized-error'
    Error404ItineraryNotFound:
      description: Itinerary Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/itinerary-not-found'
    Error406:
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      description: Not Acceptable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/not-acceptable-error'
    Error409PriceMismatch:
      description: Conflict - Price Mismatch
      headers:
        Rate-Limit-Day:
          schema:
            type: number
          description: Reserved for future use. Optional header for request capacity per day.
        Rate-Limit-Day-Remaining:
          schema:
            type: number
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
        Rate-Limit-Day-Reset:
          schema:
            type: number
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
        Rate-Limit-Minute:
          schema:
            type: number
          description: Reserved for future use. Optional header for request capacity per minute.
        Rate-Limit-Minute-Remaining:
          schema:
            type: number
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
        Rate-Limit-Minute-Reset:
          schema:
            type: number
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
        Rate-Limit-Reduction-Status:
          schema:
            type: string
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/price-mismatch-error'
    Error410SoldOut:
      description: Gone - Sold Out
      headers:
        Rate-Limit-Day:
          schema:
            type: number
          description: Reserved for future use. Optional header for request capacity per day.
        Rate-Limit-Day-Remaining:
          schema:
            type: number
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
        Rate-Limit-Day-Reset:
          schema:
            type: number
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
        Rate-Limit-Minute:
          schema:
            type: number
          description: Reserved for future use. Optional header for request capacity per minute.
        Rate-Limit-Minute-Remaining:
          schema:
            type: number
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
        Rate-Limit-Minute-Reset:
          schema:
            type: number
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
        Rate-Limit-Reduction-Status:
          schema:
            type: string
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/sold-out-error'
    Error415:
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      description: Not Acceptable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/not-supported-error'
    Error426:
      description: Upgrade Required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/upgrade-required-error'
    Error429:
      description: Too Many Requests
      headers:
        Rate-Limit-Day:
          description: Reserved for future use. Optional header for request capacity per day.
          schema:
            type: number
        Rate-Limit-Day-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the daily time window.
          schema:
            type: number
        Rate-Limit-Day-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
          schema:
            type: number
        Rate-Limit-Minute:
          description: Reserved for future use. Optional header for request capacity per minute.
          schema:
            type: number
        Rate-Limit-Minute-Remaining:
          description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
          schema:
            type: number
        Rate-Limit-Minute-Reset:
          description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
          schema:
            type: number
        Rate-Limit-Reduction-Status:
          description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/too-many-requests-error'
    Error500:
      description: Unknown Internal Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/unknown-internal-error'
            unresolvablePendingBookingRetrieveResponse:
              $ref: '#/components/examples/retrieve-unresolvable-pending-booking-error'
    Error503:
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/service-unavailable-error'
  schemas:
    ShoppingPathTypeEnum:
      type: string
      enum:
        - standalone
        - package
    SortTypeEnum:
      type: string
      enum:
        - price_ascending
        - price_descending
        - distance
        - recommended
    CurrencyEnum:
      type: string
      enum:
        - USD
    LanguageEnum:
      type: string
      enum:
        - en-US
      x-enum-varnames:
        - EN_US
    CountryCodeEnum:
      type: string
      enum:
        - US
    TestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    OffersTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
        - bad_link
    PriceCheckTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
        - price_mismatch
        - sold_out
        - bad_link
    BookTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
        - price_mismatch
        - sold_out
        - bad_link
    ActivityShop:
      allOf:
        - $ref: '#/components/schemas/ActivityBase'
        - $ref: '#/components/schemas/ActivityDetailedLocation'
        - type: object
          description: The base of an activity, and what information is associated to said activity.
          properties:
            lead_pricing:
              type: object
              description: The pricing information available at pricing, usually is an estimate of ticket cost for activity for default traveler.
              properties:
                scope:
                  type: string
                  description: the scope, or reference of what the cost is associate with for display.
                  example: per_traveler
                strikethrough:
                  type: object
                  description: strikethrough prices for this ticket option.
                  properties:
                    inclusive:
                      $ref: '#/components/schemas/AmountBase'
                totals:
                  type: object
                  description: totals for this ticket option.
                  properties:
                    inclusive:
                      $ref: '#/components/schemas/AmountBase'
            review_summary:
              $ref: '#/components/schemas/ReviewSummary'
            links:
              type: object
              properties:
                offers:
                  $ref: '#/components/schemas/Link'
    ActivityOffers:
      allOf:
        - $ref: '#/components/schemas/ActivityBase'
        - $ref: '#/components/schemas/ActivityDetailedLocation'
        - type: object
          properties:
            offers:
              type: array
              items:
                $ref: '#/components/schemas/ActivityOfferDetails'
            callouts:
              type: array
              description: A list of strings of important information to know about activity before booking.
              items:
                type: string
                example: Registration Instructions will be found on the Voucher after completing purchase
            inclusions:
              type: array
              description: A list of strings that represent amenities, and features supported by this activity.
              items:
                type: string
                example: One scavenger hunt tour for a team of up to 12 people
            exclusions:
              type: array
              description: A list of strings that represent amenities, and features not supported by this activity.
              items:
                type: string
                example: Food and drinks
            review_summary:
              $ref: '#/components/schemas/ReviewSummary'
            ticket_details:
              description: A collection of ticket details information that is shared between offers in multiple activities.
              additionalProperties:
                $ref: '#/components/schemas/TicketDetails'
    ActivityRetrieve:
      allOf:
        - $ref: '#/components/schemas/ActivityBase'
        - $ref: '#/components/schemas/ActivityDetailedLocation'
        - type: object
          properties:
            offer:
              $ref: '#/components/schemas/ActivityOfferRetrieve'
            callouts:
              type: array
              description: A list of strings of important information to know about activity before booking.
              items:
                type: string
                example: Registration Instructions will be found on the Voucher after completing purchase
            inclusions:
              type: array
              description: A list of strings that represent amenities, and features supported by this activity.
              items:
                type: string
                example: One scavenger hunt tour for a team of up to 12 people
            exclusions:
              type: array
              description: A list of strings that represent amenities, and features not supported by this activity.
              items:
                type: string
                example: Food and drinks
            redemption_instructions:
              type: string
              description: |
                Text instructions on how to redeem this specific offer.
            terms_and_conditions:
              type: string
              description: |
                Specific details related to this offer and activity.
    ActivityPriceCheck:
      type: object
      description: Base object for the price check response for an offer before booking.
      properties:
        status:
          type: string
          description: |
            A flag indicating if the offer is available or not available for a particular purchase.
          enum:
            - available
            - price_changed
            - sold_out
          example: available
        offer_pricing:
          $ref: '#/components/schemas/OfferPriceSummary'
        redemption_instructions:
          type: string
          description: |
            Text instructions on how to redeem this specific offer.
        terms_and_conditions:
          type: string
          description: |
            Specific details related to this offer and activity.
        required_booking_fields:
          type: array
          items:
            type: object
            description: A object representing information that will be necessary to populate a booking.
            properties:
              booking_field:
                type: string
                description: |
                  A category of information within the create call, travelers sections that need to be populated for this booking.
                  Values can include = {passport, dropoff, pickup, date_of_birth, height, weight, language}.
              permitted_options:
                type: array
                items:
                  type: string
                  description: |
                    Indication what is allowed for certain fields in the booking section.
                    Usually indicates dropoff, or pickup field options, i.e., flight, bus, hotel, rail, ship objects being supported.
              applies_to_all_travelers:
                type: boolean
                description: Indicates if the field has to be populated for all travelers, or just the primary traveler.
        links:
          type: object
          description: A map of links to progress to the next step(s).
          properties:
            payment:
              $ref: '#/components/schemas/Link'
            create:
              $ref: '#/components/schemas/Link'
    ActivityRetrieveResponse:
      type: object
      description: The response body for the retrieve itinerary request.
      properties:
        itinerary_id:
          type: string
          description: The itinerary id.
        status:
          type: string
          description: The status of the itinerary.
          example: BOOKED
        confirmation_id:
          type: string
          example: wnoujinwp5erg45w6few36
        activity:
          $ref: '#/components/schemas/ActivityRetrieve'
        primary_traveler:
          $ref: '#/components/schemas/Traveler'
        additional_travelers:
          type: array
          items:
            $ref: '#/components/schemas/Traveler'
        email:
          type: string
          description: Email address for the customer.
        phone:
          type: object
          description: The entire phone number must be represented across the three fields in this object.
          properties:
            country_code:
              type: string
              description: The numerical portion of the country code from the phone number. Do not include the leading '+' character.
            area_code:
              type: string
              description: The area code of the phone number.
            number:
              type: string
              description: The remaining digits of the phone number.
        billing_contact:
          type: object
          properties:
            given_name:
              type: string
              description: First/given name of the payment type account holder.
            family_name:
              type: string
              description: Last/family name of the payment type account holder.
            email:
              type: string
              description: The email of the payment account holder.
            address:
              $ref: '#/components/schemas/Address'
        creation_time:
          type: string
          format: date-time
          example: '2018-02-12T11:59:00.000Z'
        affiliate_metadata:
          type: string
          example: data_point_1:123|data_point2:This is data.
        affiliate_reference_id:
          type: string
          example: 4480ABC
        links:
          type: object
          properties:
            cancel:
              $ref: '#/components/schemas/Link'
    Traveler:
      type: object
      description: A traveler that is associated with this booking.
      properties:
        name:
          type: object
          description: The first, last, and middle name of the traveler being booked for.
          properties:
            given_name:
              type: string
              description: The required first name of the activity.
              example: John
            middle_name:
              type: string
              description: The optional middle name of the activity.
              example: George
            family_name:
              type: string
              description: The required last name of the activity.
              example: Doe
        traveler_type:
          type: string
          description: The type of traveler, which is defined in the details request, should be passed.
    ActivityBase:
      type: object
      description: The base object for activities shared between availability, offers, and shop.
      properties:
        activity_id:
          type: string
          description: The activity id for this activity.
          example: '124923045'
        title:
          type: string
          description: The marketed name of the activity.
          example: Ancient Appian Way and Aqueducts e-Bike Tour
        description:
          type: string
          description: The long form description of this activity.
        disclaimers:
          type: array
          description: Important information about this activity for call out.
          items:
            properties:
              type:
                type: string
                description: The type of disclaimer being for shout out.
                example: price
              description:
                type: string
                description: Information about the disclaimer, in text.
                example: Activities cannot be transferred from one person to another.
        amenities:
          type: array
          items:
            type: string
            description: The amenity name that is included in this activity.
          example:
            - multiple_languages
            - has_hotel_pickup
        media:
          type: object
          description: A collection of images, and videos that are associated to this activity.
          properties:
            images:
              type: array
              items:
                $ref: '#/components/schemas/Media'
            videos:
              type: array
              items:
                $ref: '#/components/schemas/Media'
        redemption_type:
          type: string
          description: The type redemption type that this activity supports.
        supplier_name:
          type: string
          description: The name of the supplier branch providing the activity.
    Media:
      type: object
      description: An individual image or video, representing content that activity owner is sharing.
      properties:
        caption:
          type: string
          description: Image caption.
        links:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Link'
          description: Contains URLs for all of the image sizes available.
    ActivityDetailedLocation:
      type: object
      description: The redemption and event location information of the activity.
      properties:
        redemption_locations:
          type: array
          items:
            $ref: '#/components/schemas/Location'
        event_location:
          $ref: '#/components/schemas/Location'
    Location:
      type: object
      description: A generic location object used for getting the Location of some destination.
      properties:
        address:
          $ref: '#/components/schemas/Address'
        coordinate:
          $ref: '#/components/schemas/Coordinate'
    Address:
      type: object
      properties:
        line_1:
          type: string
          description: First line of customer's street address.
        line_2:
          type: string
          description: Second line of customer's street address.
        line_3:
          type: string
          description: Third line of customer's street address.
        city:
          type: string
          description: Customer's city.
        state_province_code:
          type: string
          description: Customer's state or province code.
        postal_code:
          type: string
          description: Customer's postal code.
        country_code:
          type: string
          description: Customer's country code, in two-letter ISO 3166-1 alpha-2 format.
    Coordinate:
      type: object
      description: Coordinate for a location using longitude and latitude.
      properties:
        longitude:
          type: number
          description: The longitude of a coordinate pair to determine location.
          example: -118.2403994
        latitude:
          type: number
          description: The latitude of a coordinate pair to determine location.
          example: 34.0512226
    ActivityOfferBase:
      type: object
      description: Base object for offers to be inherited for offers and retrieve calls.
      properties:
        id:
          type: string
          description: The unique-id for the offer-id of the activity.
          example: '1001039039'
        name:
          type: string
          description: The name of the offer that the activity is available, for example can have upper deck vs lower deck offer.
          example: Downtown Los Angeles Puzzling Adventure
        duration:
          type: string
          description: The amount of time that this activity takes, formatted to ISO-8601 standards for duration.
          example: PT1H18M
        language:
          type: array
          description: The languages that are supported by this offer.
          items:
            type: string
            format: ISO 639
          example:
            - de
            - en
            - es
        all_day:
          type: boolean
          description: Indicates if this offer is all day, or is dependent on a certain hour.
          example: true
    SpecificOfferStart:
      type: object
      description: A key value for object that represents ticket offering for a particular datetime, with format defined for date ISO 8601.
      properties:
        offer_start:
          type: string
          format: date-time
          description: The start time of the activity in extended ISO 8601 format, with ±hh:mm timezone offset.
          example: '2018-02-12T11:59:00.000Z'
        cancellable:
          type: boolean
          description: Indicates if this itinerary is cancellable at this time.
          example: true
        cancel_penalties:
          type: array
          description: List containing the cancellation penalties.
          items:
            type: object
            properties:
              currency:
                type: string
                description: Currency of the amount object.
              start:
                type: string
                format: date-time
                description: Effective date and time of cancellation penalty in extended ISO 8601 format, with ±hh:mm timezone offset
              end:
                type: string
                format: date-time
                description: End date and time of cancellation penalty in extended ISO 8601 format, with ±hh:mm timezone offset
              amount:
                type: string
                description: The monetary amount of the penalty.
              percent:
                type: string
                description: Percentage of total booking charged for as penalty. A thirty percent penalty would be returned as 30%
        hours_of_operation:
          type: array
          items:
            $ref: '#/components/schemas/HoursOfOperation'
    ActivityOfferDetails:
      allOf:
        - $ref: '#/components/schemas/ActivityOfferBase'
        - type: object
          properties:
            options:
              type: array
              description: List of options that are available for this offer.
              items:
                allOf:
                  - $ref: '#/components/schemas/SpecificOfferStart'
                  - type: object
                    properties:
                      links:
                        type: object
                        description: A map of links to progress to the next step(s).
                        properties:
                          price_check:
                            $ref: '#/components/schemas/Link'
                      tickets:
                        type: array
                        items:
                          $ref: '#/components/schemas/TicketPriceSummary'
    ActivityOfferRetrieve:
      allOf:
        - $ref: '#/components/schemas/ActivityOfferBase'
        - $ref: '#/components/schemas/SpecificOfferStart'
        - type: object
          properties:
            tickets:
              $ref: '#/components/schemas/OfferPriceSummary'
    HoursOfOperation:
      type: object
      description: A object representing the opening and closing hours of a given day.
      properties:
        day_of_week:
          type: string
          description: The day of week that is used for representing this day.
          example: monday
        start_time:
          type: string
          description: The time in that the activity opens on this day of the week.
          format: ISO 639
          example: '01:16:00'
        end_time:
          type: string
          description: The time in that the activity closes on this day of the week.
          format: ISO 639
          example: '08:16:00'
    TicketDetails:
      type: object
      description: The information associated with a ticket of an offer of an activity.
      properties:
        ticket_type:
          type: string
          enum:
            - adult
            - child
            - infant
            - senior
            - student
            - traveler
            - youth
            - couple
            - group
            - room
            - vehicle
            - day
        restriction:
          type: object
          description: Contains information regarding the restrictions about the ticket.
          properties:
            type:
              type: string
              description: The type of restriction that this ticket that must be met to purchase this activity.
              enum:
                - age
                - capacity
                - duration
              example: age
            range:
              type: object
              description: The restriction for this ticket.
              properties:
                minimum:
                  type: integer
                  description: The minimum value that is acceptable for the ticket type with the specified restriction.
                  example: 18
                maximum:
                  type: integer
                  description: The maximum value that is acceptable for the ticket type with the specified restriction.
                  example: 90
    OfferPriceSummary:
      type: object
      description: The pricing information for the ticket values and totals.
      properties:
        price_per_ticket:
          type: array
          items:
            $ref: '#/components/schemas/PricePerTicket'
        totals:
          type: object
          description: Total for all ticket options.
          properties:
            inclusive:
              $ref: '#/components/schemas/AmountBase'
            total_ticket_count:
              type: integer
              description: The count of tickets that are being sold for this offer.
              example: 2
    PricePerTicket:
      type: object
      description: The ticket price for the activity, which is usually the default ticket price.
      properties:
        ticket:
          $ref: '#/components/schemas/TicketDetails'
        scope:
          type: string
          description: the scope, or reference of what the cost is associate with for display.
          example: per_traveler
        strikethrough:
          type: object
          description: strikethrough prices for this ticket option.
          properties:
            inclusive:
              $ref: '#/components/schemas/AmountBase'
        ticket_total:
          type: object
          description: total for this ticket option.
          properties:
            inclusive:
              $ref: '#/components/schemas/AmountBase'
        ticket_count:
          type: integer
          description: The count of tickets that are being sold for this offer.
          example: 2
    TicketPriceSummary:
      type: object
      description: Object that gives the review information for tickets.
      properties:
        id:
          type: string
          description: A unique ticket id that is used to map to the ticket id map in base of response.
          example: '229281'
        availability_count:
          type: integer
          description: The max amount of tickets that one is able to select for this offer.
          example: 0
        price_per_ticket:
          type: array
          items:
            type: object
            description: |
              The pricing information of a ticket.
            properties:
              min_ticket_count:
                type: integer
                description: The minimum amount of tickets that this pricing object allows for this price.
              max_ticket_count:
                type: integer
                description: The maximum amount of tickets that this pricing object allows for this price.
              strikethrough:
                type: object
                description: strikethrough prices for this ticket option.
                properties:
                  inclusive:
                    $ref: '#/components/schemas/AmountBase'
              totals:
                type: object
                description: totals for this ticket option.
                properties:
                  inclusive:
                    $ref: '#/components/schemas/AmountBase'
    AmountBase:
      type: object
      description: Monetary amount containing string value of amount, and the currency it represents.
      properties:
        value:
          description: The value of the amount object. Decimal point inline with correct precision.
          type: string
          example: '300.00'
        currency:
          description: Currency of the amount object.
          type: string
          example: USD
    CreateResponse:
      description: Base object returned from a create activity reservation call.
      type: object
      properties:
        itinerary_id:
          type: string
          description: The itinerary ID.
        links:
          type: object
          description: A map of links, including links to retrieve information on reserved activity.
          properties:
            retrieve:
              $ref: '#/components/schemas/Link'
    CreateItineraryRequest:
      type: object
      description: This object represents a request to create an itinerary, containing all necessary information for the booking process.
      required:
        - affiliate_reference_id
        - payment_token
        - primary_traveler
      properties:
        affiliate_reference_id:
          type: string
          description: Your unique reference value. This field supports a maximum of 28 characters and is required to be unique (if provided). Entering special characters ('<', '>', '(', ')', and '&') in this field will result in the request being rejected.
          example: 4480ABC
        email:
          type: string
          description: Email address for the customer. Must adhere to standard email format. Special characters ('<', '>', '(', ')', and '&') entered in this field will be re-encoded.
        payment_token:
          type: string
          description: A token that is used to represent a form of payment in an encoded format, to make a booking.
        primary_traveler:
          $ref: '#/components/schemas/PrimaryTraveler'
        additional_travelers:
          type: array
          description: A list of additional travelers on the booking.
          items:
            $ref: '#/components/schemas/AdditionalTravelerRequest'
        affiliate_metadata:
          type: string
          description: Field that stores up to 256 characters of additional metadata with the itinerary. Will be returned on all retrieve responses for this itinerary. The data must be in the format 'key1:value|key2:value|key3:value'. Other Special characters ('<', '>', '(', ')', and '&') entered in this field will be re-encoded.
          example: data_point_1:123|data_point2:This is data.
        tax_registration_number:
          type: string
          description: |
            The customer's taxpayer identification number that is provided by the government to nationals or resident aliens. 
            This number should be collected from individuals that pay taxes or participate in activities that provide revenue for one or more tax types. 

            _Note: This value is only needed from Brazilian and Indian customers.
    TravelerBase:
      type: object
      required:
        - traveler_type
      properties:
        traveler_type:
          type: string
          description: The type of traveler, which is defined in the details request, should be passed.
        date_of_birth:
          type: string
          format: ISO 8601
          description: The date of birth of the traveler, in ISO 8601 format.
          example: '1998-04-03'
        height:
          type: object
          required:
            - value
            - unit
          description: The height of a traveler.
          properties:
            value:
              type: string
              description: The measurement value for the height of a traveler.
            unit:
              type: string
              description: The measurement unit for the height of a traveler.
              enum:
                - cm
                - in
        weight:
          type: object
          required:
            - value
            - unit
          description: The weight of a traveler.
          properties:
            value:
              type: string
              description: The measurement value for the weight of a traveler.
            unit:
              type: string
              description: The measurement unit for the weight of a traveler.
              enum:
                - kg
                - lb
        passport:
          $ref: '#/components/schemas/PassportRequest'
    PrimaryTraveler:
      allOf:
        - $ref: '#/components/schemas/TravelerBase'
        - type: object
          description: |
            The information of the primary traveler for the activity. 
            Some fields are always required, and some are not, additional fields that are needed are specified in the price-check.
          required:
            - name
            - phone
          properties:
            name:
              $ref: '#/components/schemas/NameRequest'
            phone:
              $ref: '#/components/schemas/PhoneRequest'
            dropoff:
              $ref: '#/components/schemas/TransitRequest'
            pickup:
              $ref: '#/components/schemas/TransitRequest'
            language:
              type: string
              description: The language selected for this offer.
    AdditionalTravelerRequest:
      description: A representation of a traveler that is joining the primary traveler on this activity.
      allOf:
        - $ref: '#/components/schemas/TravelerBase'
        - type: object
          required:
            - name
          properties:
            name:
              $ref: '#/components/schemas/NameRequest'
    TransitRequestBase:
      type: object
      required:
        - datetime
        - location
      properties:
        datetime:
          type: string
          description: |
            The datetime for dropoff/pickup of the traveller(s).
          format: ISO 8601
          example: '2023-10-01T12:00:00Z'
        location:
          type: string
          description: |
            Location for dropoff/pickup of the traveller(s).
    FlightTransitRequest:
      description: Object that is used to represent flight information for pickups or dropoffs.
      allOf:
        - $ref: '#/components/schemas/TransitRequestBase'
        - type: object
          required:
            - airport
            - number
          properties:
            airport:
              type: string
              description: |
                The airport that the traveller(s) are being picked up from, or dropped off from.
            number:
              type: string
              description: |
                The flight number that the traveller(s) will be taking.
    RailTransitRequest:
      description: Object that is used to represent rail information for pickups or dropoff.
      allOf:
        - $ref: '#/components/schemas/TransitRequestBase'
        - type: object
          required:
            - station
            - number
          properties:
            station:
              type: string
              description: |
                The rail station that the traveller(s) are being picked up from, or dropped off to.
            number:
              type: string
              description: |
                The rail number that the traveller(s) plan to arrive or depart on.
    BusTransitRequest:
      description: Object that is used to represent bus information for pickups or dropoff.
      allOf:
        - $ref: '#/components/schemas/TransitRequestBase'
        - type: object
          required:
            - station
            - number
          properties:
            station:
              type: string
              description: |
                The bus station that the traveller(s) are being picked up from, or dropped off to.
            number:
              type: string
              description: |
                The bus number that the traveller(s) plan to arrive or depart on.
    ShipTransitRequest:
      description: Object that is used to represent bus information for pickups or dropoff.
      allOf:
        - $ref: '#/components/schemas/TransitRequestBase'
        - type: object
          required:
            - port
            - number
          properties:
            port:
              type: string
              description: |
                The ship port that the traveller(s) are being picked up from, or dropped off to.
            number:
              type: string
              description: |
                The ship number that the traveller(s) plan to arrive or depart on.
    HotelTransitRequest:
      type: object
      required:
        - name
      description: Contains information about hotel pickup information, or drop off location information.
      properties:
        name:
          type: string
          description: The hotel name needed for pickup or dropoff.
    TransitRequest:
      oneOf:
        - type: object
          properties:
            flight:
              $ref: '#/components/schemas/FlightTransitRequest'
        - type: object
          properties:
            rail:
              $ref: '#/components/schemas/RailTransitRequest'
        - type: object
          properties:
            bus:
              $ref: '#/components/schemas/BusTransitRequest'
        - type: object
          properties:
            ship:
              $ref: '#/components/schemas/ShipTransitRequest'
        - type: object
          properties:
            hotel:
              $ref: '#/components/schemas/HotelTransitRequest'
    PassportRequest:
      type: object
      required:
        - number
        - expiration_date
        - issuing_country
      description: |
        The passport object containing information that is necessary to make a booking for activity with passport.
      properties:
        number:
          type: string
          description: The passport number of the traveler.
          example: '123456789'
        expiration_date:
          type: string
          format: ISO 8601
          description: The date that the passport expires, in ISO 8601 format.
          example: '2025-12-31'
        issuing_country:
          type: string
          description: The two character country code for a country.
          format: ISO-3166-1 A2
          example: US
    PhoneRequest:
      type: object
      required:
        - country_code
        - number
      description: The entire phone number must be represented across the three fields in this object.
      properties:
        country_code:
          type: string
          description: The numerical portion of the country code from the phone number. Do not include the leading '+' character. Special characters ('<', '>', '(', ')', and '&') entered in this field will be re-encoded.
          example: '1'
        area_code:
          type: string
          description: The area code of the phone number. Special characters ('<', '>', '(', ')', and '&') entered in this field will be re-encoded.
          example: '487'
        number:
          type: string
          description: The remaining digits of the phone number. Special characters ('<', '>', '(', ')', and '&') entered in this field will be re-encoded.
          example: '5550077'
    NameRequest:
      type: object
      description: The first, last, and middle name of the traveler being booked for.
      required:
        - given_name
        - family_name
      properties:
        given_name:
          type: string
          description: The required first name of the activity.
          example: John
        middle_name:
          type: string
          description: The optional middle name of the activity.
          example: George
        family_name:
          type: string
          description: The required last name of the activity.
          example: Doe
    Link:
      type: object
      description: An individual link.
      properties:
        method:
          type: string
          description: The request method used to access the link.
        href:
          type: string
          description: The URL for the link. This can be absolute or relative.
        expires:
          type: string
          description: If the link expires, this will be the UTC date the link will expire, in ISO 8601 format.
    Error:
      type: object
      description: The overall class of error that occurred.
      properties:
        type:
          description: The error type.
          type: string
        message:
          description: A human readable message giving details about this error.
          type: string
        fields:
          type: array
          description: Details about the specific fields that had an error.
          items:
            $ref: '#/components/schemas/Field'
        errors:
          type: array
          description: An array of all the actual errors that occurred.
          items:
            $ref: '#/components/schemas/ErrorIndividual'
    ErrorIndividual:
      type: object
      description: An individual error.
      properties:
        type:
          type: string
          description: The error type.
        message:
          type: string
          description: A human readable message giving details about this error.
        fields:
          type: array
          description: Details about the specific fields that had an error.
          items:
            $ref: '#/components/schemas/Field'
    Field:
      type: object
      description: An individual field that had an error.
      properties:
        name:
          type: string
          description: The field that had an error.
        type:
          type: string
          description: The type of the field that had an error.
        value:
          type: string
          description: The value of the field that had an error.
    ReviewSummary:
      type: object
      description: Summarized review and rating information for a specific Activity.
      properties:
        total_reviews:
          type: integer
          description: A count of the total number of reviews available.
          example: 2
        average_score:
          type: number
          description: An average review rating in the range of 1-5.
          example: 4.5
        review_source_name:
          type: string
          description: The source of the provided review data.
          example: Expedia
        disclaimer:
          type: string
          description: A legal disclaimer related to the source of the review data.
          example: All reviews are verified by Expedia Group, to ensure a traveler has booked with us. When we send an email with a link to submit an activity review, we may include a voucher for savings on a future trip, to encourage review submission. We publish both positive or negative reviews, when they meet our content guidelines.
  examples:
    availability-standard:
      value:
        - activity_id: '1001039038'
          title: Downtown Los Angeles Puzzling Adventure
          description: ''
          disclaimers:
            - type: Redemption Disclaimer
              description: Please refer to your itinerary for redemption instructions.
            - type: Transfer Restriction
              description: Activities cannot be transferred from one person to another.
          amenities:
            - has_free_cancellation
            - instant_confirmation
            - digital_or_printed_voucher_accepted
          media:
            images:
              - caption: Puzzling Adventure
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/1001039038/dd858f45-1e37-4965-be50-27ccff69e0ae.jpg
              - caption: Salem Puzzling Adventure
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/1001039038/8eb3df6f-b5a7-4b0c-989a-f3092d084a7f.jpg
            videos: []
          redemption_type: REDEMPTION_TYPE_VOUCHER
          redemption_locations:
            - coordinate:
                longitude: -118.2403994
                latitude: 34.0512226
          event_location:
            coordinate:
              longitude: -118.2403994
              latitude: 34.0512226
          lead_pricing:
            scope: per traveler
            strikethrough:
              inclusive:
                value: '0.0'
                currency: ''
            totals:
              inclusive:
                value: '34.99'
                currency: USD
          review_summary:
            total_reviews: 2
            average_score: 4.5
            review_source_name: Expedia
            disclaimer: All reviews are verified by Expedia Group, to ensure a traveler has booked with us. When we send an email with a link to submit an activity review, we may include a voucher for savings on a future trip, to encourage review submission. We publish both positive or negative reviews, when they meet our content guidelines.
          links:
            offers:
              method: GET
              href: /v1/activities/1001039038/offers?token=H~OjICVQQAGQMCSVNUJjwCVQpQGFIFFFABfGVsanQWYG01dUw2UFdJNmdWMxdAB11SWAlaCgHCiqYy
        - activity_id: '2836274'
          title: Sorrento tour, pizza school, extra virgin olive oil tasting
          description: ''
          disclaimers:
            - type: Redemption Disclaimer
              description: Please refer to your itinerary for redemption instructions.
            - type: Transfer Restriction
              description: Activities cannot be transferred from one person to another.
          amenities:
            - has_hotel_pickup
            - has_free_cancellation
            - has_child_ticket_present
            - instant_confirmation
            - digital_or_printed_voucher_accepted
          media:
            images:
              - caption: Pizza school and lunch in Sorrento.
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/0a04c8e8-9deb-4feb-954d-68d124250266.jpg
              - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/c6ffd81c-e939-4dac-b14a-ae1cad1321f7.jpg
              - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/6ab504bb-f3f0-4613-8dea-b84f77aac6a7.jpg
              - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/04395d79-bfed-499c-b0a6-f152a819849e.jpg
              - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/afeab615-81a1-426d-a453-bec7f924224b.jpg
            videos: []
          redemption_type: REDEMPTION_TYPE_VOUCHER
          redemption_locations:
            - coordinate:
                longitude: 14.41423
                latitude: 40.6148
          event_location:
            coordinate:
              longitude: 14.41423
              latitude: 40.6148
          lead_pricing:
            scope: per adult
            strikethrough:
              inclusive:
                value: '0.0'
                currency: ''
            totals:
              inclusive:
                value: '294.18'
                currency: USD
          review_summary:
            total_reviews: 2
            average_score: 4.5
            review_source_name: Expedia
          links:
            offers:
              method: GET
              href: /v1/activities/2836274/offers?token=H~OjICVQQAGQMCSVNUJjwCVQpQGFIFFFABfGVsanQWYG01dUw2UFdJNmdWMxdAB11SWAlaCgHCiqYy
    unauthenticated-error:
      value:
        type: request_unauthenticated
        message: Data required to authenticate your request is missing or inaccurate. Ensure that your request follows the guidelines in our documentation.
        fields:
          - name: apikey
            type: header
            value: jaj3982k239dka328e
          - name: signature
            type: header
            value: 129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b
          - name: timestamp
            type: header
            value: '198284729'
    unauthorized-error:
      value:
        type: request_unauthorized
        message: Your request could not be authorized.
    not-acceptable-error:
      value:
        type: not_acceptable
        message: The request was not acceptable as 'Accept' header can only be 'application/json'
        errors:
          - type: accept.unsupported
            message: Accept header is required and must accept application/json.
            fields:
              - name: Accept
                type: header
                value: application/text
    upgrade-required-error:
      value:
        type: upgrade_required
        message: This service requires the use of TLS.
    too-many-requests-error:
      value:
        type: too_many_requests
        message: You have reached your capacity for this type of request.
    unknown-internal-error:
      value:
        type: unknown_internal_error
        message: An internal server error has occurred.
    retrieve-unresolvable-pending-booking-error:
      value:
        type: unresolved_booking
        message: Booking requires support team assistance. Activity not found in external system - please contact support for cancellation or resolution.
    service-unavailable-error:
      value:
        type: service_unavailable
        message: This service is currently unavailable.
    offers-standard:
      value:
        activity_id: '2836274'
        title: Sorrento tour, pizza school, extra virgin olive oil tasting
        description: A unique and magical experience for one of the most characteristic cities in the south, a meeting with expert people who will be very eloquent and nice in showing you how to prepare the real Neapolitan pizza in the Sorrento peninsula. A Pizza school in front of Vesuvius on the hills of Sorrento. An expert pizza maker will teach you all the secrets to be able to make the real Neapolitan pizza at home. A day dedicated to the history of pizza, the territory and the tasting of local products such as extra virgin olive oil, liqueurs and mozzarella with its cured meats. An unforgettable experience..!!!
        disclaimers:
          - type: Redemption Disclaimer
            description: Please refer to your itinerary for redemption instructions.
          - type: Transfer Restriction
            description: Activities cannot be transferred from one person to another.
        amenities:
          - has_hotel_pickup
          - has_free_cancellation
          - has_child_ticket_present
          - instant_confirmation
          - digital_or_printed_voucher_accepted
        media:
          images:
            - caption: Pizza school and lunch in Sorrento.
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/0a04c8e8-9deb-4feb-954d-68d124250266.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/26895919-dbfa-42ec-a4dd-23a831235396.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/6428dcb1-6533-45dc-b089-b33a1664e791.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/8db8b088-f382-4d56-b7c0-2e17b19eb458.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/b92d0a24-1c60-4150-a61b-1ea1afb0152b.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/773f5f2c-ec68-408b-9a8c-6b8ed3a3be6e.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/10adbfb0-6777-4ae3-b2a1-ab4f805c6cdc.jpg
            - caption: Pizza school and lunch in Sorrento.
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/e7f8a7c5-8166-432a-80ed-6db8e85ccc14.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/0a126e2d-7e09-419d-95c3-e35007d85dfd.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/c3667f83-928b-496b-8e4b-b5fdb276ab85.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/03b346aa-4ef7-482d-b61e-661311e3e6c1.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/f73db6a4-fb21-442f-8c58-80e4f56d7092.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/04395d79-bfed-499c-b0a6-f152a819849e.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/afeab615-81a1-426d-a453-bec7f924224b.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/6ab504bb-f3f0-4613-8dea-b84f77aac6a7.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/c6ffd81c-e939-4dac-b14a-ae1cad1321f7.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/797e53a8-94de-4c95-bad9-582577dfbc71.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/6afe1d4f-03cd-4c4e-9e5c-1e7e3efad61d.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/ea8cbc36-1484-445b-81a8-b23077ec3cdb.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/188d3f6e-463d-4c69-938b-5752adbc604d.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/62381c5d-af6c-41c8-bce4-d7d4a2c6f061.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/14487bb6-9291-4284-9974-62cc86493234.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/a1cfa42a-ff68-45a0-9272-2047330f6b9c.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/091e8c5a-fb71-42a5-8e78-49b3d6bbe57a.jpg
            - caption: Sorrento tour, pizza school, extra virgin olive oil tasting
              links:
                default:
                  method: GET
                  href: https://media.int.expedia.com/int/localexpert/2836274/7f0b8882-47b4-473e-8ae3-1e2110894b9c.jpg
          videos: []
        redemption_type: REDEMPTION_TYPE_VOUCHER
        redemption_locations:
          - address:
              city: Colli di Fontanelle
              country_code: Italy
            coordinate:
              longitude: 14.41423
              latitude: 40.6148
        event_location:
          address:
            city: Colli di Fontanelle
            country_code: Italy
          coordinate:
            longitude: 14.41423
            latitude: 40.6148
        offers:
          - id: '1001222481'
            name: 09:30 AM, From Massa Lubrense in Multilingual
            duration: PT8H
            language:
              - en
              - es
              - it
            all_day: false
            options:
              - offer_start: '2025-10-26T00:00:00Z'
                cancellable: true
                cancel_penalties:
                  - currency: USD
                    start: '2025-05-21T16:27:39.55902082Z'
                    end: '2025-10-25T00:00:00Z'
                    amount: '0'
                    percent: 0%
                  - currency: USD
                    start: '2025-10-25T00:00:00Z'
                    amount: '0'
                    percent: 100%
                hours_of_operation:
                  - day_of_week: sunday
                    start_time: '00:00:00'
                    end_time: '00:00:00'
                links:
                  price_check:
                    method: GET
                    href: /v1/activities/2836274/offers/1001222481?token=I~OjICVQQAGQIHSVNUJj4AXAJWBVgACXg7MzUbOmBnJxJjVAgeYGpWaUcQWApQB19ZVwAPbm4wIgVEVRYmM1YMOD4zdFtfX1QnNlIObj4yKFheUFtBJmVVcFxvNVdRTQpMIjg8Pz1iAU4KJmFXBQwcUTNqP2YCGgp3NlUBABpSOWkzNQQeBCc1UwEPSFYMaz05OlQUBHA-VgFRG1EHPmtpMQMYBHdgDVMGG1cFbDk5NwVMByNkVQ9STQENcmIpN3EDOTIBXw1aXSpQPjQ5N1cYCCs2UwQKHwtUPjk6ZwAZVyFjUABRS1IEa24yYAIZViNlCwcASgECJGAsZ3dNbDEPVgMFWkBxLD9oPWUASwUrYQRPAFIybj01ChoAd2dQGQpSIGcvYkVt8D0=
                tickets:
                  - id: '2378296'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '614.0'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '626.4'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '767.48'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '790.05'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '812.64'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '790.09'
                            currency: USD
                  - id: '3013088'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '112.87'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '225.74'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '338.61'
                            currency: USD
                  - id: '3013089'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1.13'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2.26'
                            currency: USD
              - offer_start: '2025-10-27T00:00:00Z'
                cancellable: true
                cancel_penalties:
                  - currency: USD
                    start: '2025-05-21T16:27:39.55902082Z'
                    end: '2025-10-26T00:00:00Z'
                    amount: '0'
                    percent: 0%
                  - currency: USD
                    start: '2025-10-26T00:00:00Z'
                    amount: '0'
                    percent: 100%
                hours_of_operation:
                  - day_of_week: monday
                    start_time: '00:00:00'
                    end_time: '00:00:00'
                links:
                  price_check:
                    method: GET
                    href: /v1/activities/2836274/offers/1001222481?token=I~OjICVQQAGQIHSVNVJj4AXAJWBVgACXg7MzUbOmBnJxJjVAgeYGpWaUcQWApQB19ZVwAPbm4wIgVEVRYmM1YMOD4zdFtfX1QnNlIObj4yKFheUFtBJmVVcFxvNVdRTQpMIjg8Pz1iAU4KJmFXBQwcUTNqP2YCGgp3NlUBABpSOWkzNQQeBCc1UwEPSFYMaz05OlQUBHA-VgFRG1EHPmtpMQMYBHdgDVMGG1cFbDk5NwVMByNkVQ9STQENcmIpN3EDOTIBXw1aXSpQPjQ5N1cYCCs2UwQKHwtUPjk6ZwAZVyFjUABRS1IEa24yYAIZViNlCwcASgECJGAsZ3dNbDEPVgMFWkBxLD9oPWUASwUrYQRPAFIybj01ChoAd2dQGQpSIGcvYlerzCc=
                tickets:
                  - id: '2378296'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '614.0'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '626.4'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '767.48'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '790.05'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '812.64'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '790.09'
                            currency: USD
                  - id: '3013088'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '112.87'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '225.74'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '338.61'
                            currency: USD
                  - id: '3013089'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1.13'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2.26'
                            currency: USD
              - offer_start: '2025-10-28T00:00:00Z'
                cancellable: true
                cancel_penalties:
                  - currency: USD
                    start: '2025-05-21T16:27:39.55902082Z'
                    end: '2025-10-27T00:00:00Z'
                    amount: '0'
                    percent: 0%
                  - currency: USD
                    start: '2025-10-27T00:00:00Z'
                    amount: '0'
                    percent: 100%
                hours_of_operation:
                  - day_of_week: tuesday
                    start_time: '00:00:00'
                    end_time: '00:00:00'
                links:
                  price_check:
                    method: GET
                    href: /v1/activities/2836274/offers/1001222481?token=I~OjICVQQAGQIHSVNaJj4AXAJWBVgACXg7MzUbOmBnJxJjVAgeYGpWaUcQWApQB19ZVwAPbm4wIgVEVRYmM1YMOD4zdFtfX1QnNlIObj4yKFheUFtBJmVVcFxvNVdRTQpMIjg8Pz1iAU4KJmFXBQwcUTNqP2YCGgp3NlUBABpSOWkzNQQeBCc1UwEPSFYMaz05OlQUBHA-VgFRG1EHPmtpMQMYBHdgDVMGG1cFbDk5NwVMByNkVQ9STQENcmIpN3EDOTIBXw1aXSpQPjQ5N1cYCCs2UwQKHwtUPjk6ZwAZVyFjUABRS1IEa24yYAIZViNlCwcASgECJGAsZ3dNbDEPVgMFWkBxLD9oPWUASwUrYQRPAFIybj01ChoAd2dQGQpSIGcvYr3ImLE=
                tickets:
                  - id: '2378296'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '614.0'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '626.4'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '767.48'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '790.05'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '812.64'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '790.09'
                            currency: USD
                  - id: '3013088'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '112.87'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '225.74'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '338.61'
                            currency: USD
                  - id: '3013089'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1.13'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2.26'
                            currency: USD
          - id: '1001222482'
            name: 09:30 AM, Pick up from the Amalfi coast in Multilingual
            duration: PT8H
            language:
              - en
              - es
              - it
            all_day: false
            options:
              - offer_start: '2025-10-26T00:00:00Z'
                cancellable: true
                cancel_penalties:
                  - currency: USD
                    start: '2025-05-21T16:27:39.560468508Z'
                    end: '2025-10-25T00:00:00Z'
                    amount: '0'
                    percent: 0%
                  - currency: USD
                    start: '2025-10-25T00:00:00Z'
                    amount: '0'
                    percent: 100%
                hours_of_operation:
                  - day_of_week: sunday
                    start_time: '00:00:00'
                    end_time: '00:00:00'
                links:
                  price_check:
                    method: GET
                    href: /v1/activities/2836274/offers/1001222482?token=I~OjICVQQAGQIHSVNUJj4AXAJWBVgACXg7MzUbOmBnJxJjVAgeYGpWaUcQWApQB19ZVwAPbm4wIgVEVRYmM1YMOD4zdFtfX1QnNlIObj4yKFheUFtBJmVVcFFvNVdRTQpMIjs8Pj1iAU4KJmJXDAAcVQFsOG8yBBRWIWUEAAxIBVczODowBBgHdjAJVlAATwgHM2wzMlcVVCpnDFIDGldWODg_MVNLA3AyDFUJSAQFPj9rMwZPVSRkWgUMTFUJJTQhMXVYPWFVUVENUCsCPms_OggdUyc-AAJRGgwHbj8-ZgFIUCBiV1cFT1QMaTw-ZgJOCyY-VwQLGlUFdjZ9Z3VOMmMNWlICXEFxKWw6bDcISARzNVAWVAQ8Mz0xV05QJTxWHlcBczYqMcIMAiw=
                tickets:
                  - id: '2378296'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '688.48'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1032.72'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '768.63'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1376.96'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '925.52'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1024.84'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1721.2'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1156.9'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1281.05'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '931.15'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2065.44'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1388.28'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1537.26'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1117.38'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '948.06'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2409.68'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1619.66'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1793.47'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1303.61'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1106.07'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '948.08'
                            currency: USD
                  - id: '3013088'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '112.87'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '225.74'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '338.61'
                            currency: USD
                  - id: '3013089'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1.13'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2.26'
                            currency: USD
              - offer_start: '2025-10-27T00:00:00Z'
                cancellable: true
                cancel_penalties:
                  - currency: USD
                    start: '2025-05-21T16:27:39.560468508Z'
                    end: '2025-10-26T00:00:00Z'
                    amount: '0'
                    percent: 0%
                  - currency: USD
                    start: '2025-10-26T00:00:00Z'
                    amount: '0'
                    percent: 100%
                hours_of_operation:
                  - day_of_week: monday
                    start_time: '00:00:00'
                    end_time: '00:00:00'
                links:
                  price_check:
                    method: GET
                    href: /v1/activities/2836274/offers/1001222482?token=I~OjICVQQAGQIHSVNVJj4AXAJWBVgACXg7MzUbOmBnJxJjVAgeYGpWaUcQWApQB19ZVwAPbm4wIgVEVRYmM1YMOD4zdFtfX1QnNlIObj4yKFheUFtBJmVVcFFvNVdRTQpMIjs8Pj1iAU4KJmJXDAAcVQFsOG8yBBRWIWUEAAxIBVczODowBBgHdjAJVlAATwgHM2wzMlcVVCpnDFIDGldWODg_MVNLA3AyDFUJSAQFPj9rMwZPVSRkWgUMTFUJJTQhMXVYPWFVUVENUCsCPms_OggdUyc-AAJRGgwHbj8-ZgFIUCBiV1cFT1QMaTw-ZgJOCyY-VwQLGlUFdjZ9Z3VOMmMNWlICXEFxKWw6bDcISARzNVAWVAQ8Mz0xV05QJTxWHlcBczYqMdJJOuI=
                tickets:
                  - id: '2378296'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '688.48'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1032.72'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '768.63'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1376.96'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '925.52'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1024.84'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1721.2'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1156.9'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1281.05'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '931.15'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2065.44'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1388.28'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1537.26'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1117.38'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '948.06'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2409.68'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1619.66'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1793.47'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1303.61'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1106.07'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '948.08'
                            currency: USD
                  - id: '3013088'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '112.87'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '225.74'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '338.61'
                            currency: USD
                  - id: '3013089'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1.13'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2.26'
                            currency: USD
              - offer_start: '2025-10-28T00:00:00Z'
                cancellable: true
                cancel_penalties:
                  - currency: USD
                    start: '2025-05-21T16:27:39.560468508Z'
                    end: '2025-10-27T00:00:00Z'
                    amount: '0'
                    percent: 0%
                  - currency: USD
                    start: '2025-10-27T00:00:00Z'
                    amount: '0'
                    percent: 100%
                hours_of_operation:
                  - day_of_week: tuesday
                    start_time: '00:00:00'
                    end_time: '00:00:00'
                links:
                  price_check:
                    method: GET
                    href: /v1/activities/2836274/offers/1001222482?token=I~OjICVQQAGQIHSVNaJj4AXAJWBVgACXg7MzUbOmBnJxJjVAgeYGpWaUcQWApQB19ZVwAPbm4wIgVEVRYmM1YMOD4zdFtfX1QnNlIObj4yKFheUFtBJmVVcFFvNVdRTQpMIjs8Pj1iAU4KJmJXDAAcVQFsOG8yBBRWIWUEAAxIBVczODowBBgHdjAJVlAATwgHM2wzMlcVVCpnDFIDGldWODg_MVNLA3AyDFUJSAQFPj9rMwZPVSRkWgUMTFUJJTQhMXVYPWFVUVENUCsCPms_OggdUyc-AAJRGgwHbj8-ZgFIUCBiV1cFT1QMaTw-ZgJOCyY-VwQLGlUFdjZ9Z3VOMmMNWlICXEFxKWw6bDcISARzNVAWVAQ8Mz0xV05QJTxWHlcBczYqMSG7Vvg=
                tickets:
                  - id: '2378296'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '688.48'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1032.72'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '768.63'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1376.96'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '925.52'
                            currency: USD
                      - min_ticket_count: 4
                        max_ticket_count: 4
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1024.84'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1721.2'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1156.9'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1281.05'
                            currency: USD
                      - min_ticket_count: 5
                        max_ticket_count: 5
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '931.15'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2065.44'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1388.28'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1537.26'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1117.38'
                            currency: USD
                      - min_ticket_count: 6
                        max_ticket_count: 6
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '948.06'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2409.68'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1619.66'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1793.47'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1303.61'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1106.07'
                            currency: USD
                      - min_ticket_count: 7
                        max_ticket_count: 7
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '948.08'
                            currency: USD
                  - id: '3013088'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '112.87'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '225.74'
                            currency: USD
                      - min_ticket_count: 3
                        max_ticket_count: 3
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '338.61'
                            currency: USD
                  - id: '3013089'
                    availability_count: 10
                    price_per_ticket:
                      - min_ticket_count: 1
                        max_ticket_count: 1
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '1.13'
                            currency: USD
                      - min_ticket_count: 2
                        max_ticket_count: 2
                        strikethrough:
                          inclusive:
                            value: '0.0'
                            currency: ''
                        totals:
                          inclusive:
                            value: '2.26'
                            currency: USD
        callouts:
          - Wheelchair accessible
          - Infants and small children can ride in a pram or stroller
          - Infants are required to sit on an adult’s lap
          - Specialized infant seats are available
          - Transportation options are wheelchair accessible
          - Suitable for all physical fitness levels
        inclusions:
          - WiFi on board
          - Bottled water
          - Lunch
          - Air-conditioned vehicle
          - Fuel surcharge
          - Parking Fees
        exclusions:
          - Enter the monuments and archaeological sites
          - Typ
        review_summary:
          total_reviews: 2
          average_score: 4.5
          review_source_name: Expedia
          disclaimer: All reviews are verified by Expedia Group, to ensure a traveler has booked with us. When we send an email with a link to submit an activity review, we may include a voucher for savings on a future trip, to encourage review submission. We publish both positive or negative reviews, when they meet our content guidelines.
        ticket_details:
          '2378296':
            ticket_type: adult
            restriction:
              type: age
              range:
                minimum: 18
                maximum: 65
          '3013088':
            ticket_type: child
            restriction:
              type: age
              range:
                minimum: 3
                maximum: 11
          '3013089':
            ticket_type: infant
            restriction:
              type: age
              range:
                minimum: 0
                maximum: 2
    price-check-standard:
      value:
        status: available
        offer_pricing:
          price_per_ticket:
            - ticket:
                ticket_type: adult
                restriction:
                  type: age
                  range:
                    minimum: 11
                    maximum: 80
              ticket_total:
                inclusive:
                  value: '163.17'
                  currency: USD
              ticket_count: 1
            - ticket:
                ticket_type: child
                restriction:
                  type: age
                  range:
                    minimum: 3
                    maximum: 10
              ticket_total:
                inclusive:
                  value: '42.57'
                  currency: USD
              ticket_count: 1
            - ticket:
                ticket_type: infant
                restriction:
                  type: age
                  range:
                    minimum: 0
                    maximum: 2
              ticket_total:
                inclusive:
                  value: '0.0'
                  currency: USD
              ticket_count: 1
          totals:
            inclusive:
              value: '205.74'
              currency: USD
            total_ticket_count: 3
        redemption_instructions: You must arrive 30 minutes prior to departure so that we can get you checked in and check your ID.  You will be asked to complete a Liability Waiver prior to take off.  Please present your photo ID and let us know what name the reservation is under.
        terms_and_conditions: Customer must sign a liability waiver before participating in this product.
        required_booking_fields:
          - booking_field: name
            permitted_options: []
            applies_to_all_travelers: false
          - booking_field: date_of_birth
            permitted_options: []
            applies_to_all_travelers: false
          - booking_field: passport
            permitted_options: []
            applies_to_all_travelers: false
          - booking_field: pickup
            permitted_options:
              - hotel
            applies_to_all_travelers: false
        links:
          payment:
            method: POST
            href: /v1/payments?token=K~IjQ4nMqm9TUnl6_9hTQQYRJnYDECOjdqIl7bHph7YZY=
          create:
            method: POST
            href: /v1/itineraries/activity?token=J~Oj8CUA8MDQQBdmZRBAYFVwldL2gCCVAMS1YOFAUAQTBWCVwABQNUUx5nbDd1VDUECVAbU1APYDRifSAxVwgbZ2d8PUBCUl5RVg5bC1Fmbzw9cFFAWBB3NzFkIjcFamkyNi1YVVYPR3E9PGVzNQhgbzNjdg1YW113NmsyJDVWAArOlQ==
    price-check-price-change:
      value:
        status: price_changed
        offer_pricing:
          price_per_ticket:
            - ticket:
                ticket_type: traveler
                restriction:
                  type: age
                  range:
                    minimum: 21
                    maximum: 100
              ticket_total:
                inclusive:
                  value: '100.0'
                  currency: USD
              ticket_count: 2
          totals:
            inclusive:
              value: '100.0'
              currency: USD
            total_ticket_count: 2
        required_booking_fields: []
    price-check-sold-out:
      value:
        status: sold_out
    retrieve-by-affiliate-standard:
      value:
        - itinerary_id: '0000000000000'
          status: CANCELED
          confirmation_id: ug23468dyu
          activity:
            activity_id: '822672'
            title: Private Bangkok Night Tour by Tuk Tuk with Dinner
            description: Enjoy the thrilling ride through the city’s lively night streets. This evening activity begins with a tuk-tuk ride around Bangkok, seeing how the city lights illuminate ancient temples and modern skyscrapers against the night sky. Along the way, you'll visit markets and palaces, explore the bustling streets of Chinatown, and feast on street food while learning about the city from your local guide.
            disclaimers:
              - type: Redemption Instructions
                description: Comfortable walking shoes are recommended .
            amenities: []
            media:
              images:
                - caption: poster
                  links:
                    72px:
                      method: GET
                      href: https://mediaim.expedia.com/localexpert/822672/b7b118f1-d776-43bd-8b45-2b43bcc49e2d.jpg?impolicy=resizecrop&rw=72&rh=41
                    500px:
                      method: GET
                      href: https://mediaim.expedia.com/localexpert/822672/b7b118f1-d776-43bd-8b45-2b43bcc49e2d.jpg?impolicy=resizecrop&rw=500&rh=281
                - caption: buildings
                  links:
                    72px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/46513105-749d-4406-aa05-3204de1b2def.jpg?impolicy=resizecrop&rw=72&rh=41
                    500px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/46513105-749d-4406-aa05-3204de1b2def.jpg?impolicy=resizecrop&rw=500&rh=281
                - caption: The street
                  links:
                    72px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/36291cfe-e482-4b63-a8d1-700cb8a7ab05.jpg?impolicy=resizecrop&rw=72&rh=41
                    500px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/36291cfe-e482-4b63-a8d1-700cb8a7ab05.jpg?impolicy=resizecrop&rw=500&rh=281
                - caption: A building as seen from the water.
                  links:
                    72px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/c703a61e-a208-41d5-a9f3-feab6550fa1c.jpg?impolicy=resizecrop&rw=72&rh=41
                    500px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/c703a61e-a208-41d5-a9f3-feab6550fa1c.jpg?impolicy=resizecrop&rw=500&rh=281
                - caption: Street view at sunset.
                  links:
                    72px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/890e7663-a561-46b9-95aa-26bf9c08c0f1.jpg?impolicy=resizecrop&rw=72&rh=41
                    500px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/890e7663-a561-46b9-95aa-26bf9c08c0f1.jpg?impolicy=resizecrop&rw=500&rh=281
                - caption: Motorcycle taxi
                  links:
                    72px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/2feff89f-849a-4703-bdce-07986336f233.jpg?impolicy=resizecrop&rw=72&rh=41
                    500px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/2feff89f-849a-4703-bdce-07986336f233.jpg?impolicy=resizecrop&rw=500&rh=281
                - caption: Street view of building.
                  links:
                    72px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/1578c460-2e7a-4e4b-9776-97a56c8d8e78.jpg?impolicy=resizecrop&rw=72&rh=41
                    500px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/1578c460-2e7a-4e4b-9776-97a56c8d8e78.jpg?impolicy=resizecrop&rw=500&rh=281
                - caption: Scenic picture of a building.
                  links:
                    72px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/8be5dffc-087c-466f-a4eb-f8e8492a2b6d.jpg?impolicy=resizecrop&rw=72&rh=41
                    500px:
                      method: GET
                      href: https://media.int.expedia.com/int/localexpert/822672/8be5dffc-087c-466f-a4eb-f8e8492a2b6d.jpg?impolicy=resizecrop&rw=500&rh=281
            redemption_type: REDEMPTION_TYPE_PRINT
            redemption_locations:
              - address:
                  line_1: Bamrung Muang Rd
                  state_province_code: ''
                  postal_code: '10200'
                  country_code: Thailand
                coordinate:
                  longitude: 100.50108
                  latitude: 13.75198
            event_location:
              address:
                line_1: Bamrung Muang Rd
                state_province_code: ''
                postal_code: '10200'
                country_code: Thailand
              coordinate:
                longitude: 100.50108
                latitude: 13.75198
            offer:
              id: '1000987606'
              name: 06:00 PM, Private Bangkok Night Tour by Tuk Tuk with Dinner in English
              duration: P0Y0M0DT0H240M0S
              language:
                - English
              all_day: false
              offer_start: '2025-04-01T14:45:04.762Z'
              cancel_penalties:
                - start: '2025-04-01T10:47:19.727+00:00'
                  end: '2025-04-05T23:59:00.000+00:00'
                  percent: 0%
                  currency: USD
                - start: '2025-04-05T23:59:00.000+00:00'
                  end: '2025-04-06T23:59:00.000+00:00'
                  percent: 100%
                  currency: USD
              hours_of_operation:
                - day_of_week: monday
                  start_time: '00:00:00'
                  end_time: '00:00:00'
              tickets:
                price_per_ticket:
                  - ticket:
                      ticket_type: adult
                      restriction:
                        type: age
                        range:
                          minimum: 18
                          maximum: 65
                    ticket_total:
                      inclusive:
                        value: '194.82'
                        currency: USD
                    ticket_count: 1
                  - ticket:
                      ticket_type: infant
                      restriction:
                        type: age
                        range:
                          minimum: 0
                          maximum: 2
                    ticket_total:
                      inclusive:
                        value: '0.00'
                        currency: USD
                    ticket_count: 1
                totals:
                  inclusive:
                    value: '194.82'
                    currency: USD
                  total_ticket_count: 2
            callouts:
              - Service animals allowed
              - Public transportation options are available nearby
              - Suitable for all physical fitness levels
              - Times are subject to change due to local traffic conditions
              - ''
            inclusions:
              - English-speaking Tour Guide
              - Private Transportation by Tuk Tuk
              - Tasty Thai Dinner
              - Hotel Pick up and Drop off from Bangkok
            exclusions:
              - Personal expenses
              - Any item not included in inclusions
            redemption_instructions: You must arrive 30 minutes prior to departure so that we can get you checked in and check your ID.  You will be asked to complete a Liability Waiver prior to take off.  Please present your photo ID and let us know what name the reservation is under.
            terms_and_conditions: Customer must sign a liability waiver before participating in this product.
          primary_traveler:
            name:
              given_name: Bob
              middle_name: Jones
              family_name: Smith
            traveler_type: adult
          additional_travelers:
            - name:
                given_name: Jimmy
                middle_name: James
                family_name: Smith
              traveler_type: infant
          email: bob@example.com
          phone:
            country_code: '1'
            area_code: '816'
            number: '6099516'
          billing_contact:
            given_name: Bob
            family_name: Smith
            address:
              line_1: 742 Evergreen Terrace
              city: Seattle
              state_province_code: WA
              postal_code: '98119'
              country_code: USA
          creation_time: '2025-03-27T20:54:22.097Z'
          affiliate_metadata: data_point_1:123|data_point2:This is data.
          affiliate_reference_id: MNS@113
          links:
            cancel:
              method: DELETE
              href: /v1/itineraries/0000000000000/activity
    bad-request-error:
      value:
        type: invalid_input
        message: An invalid request was sent in, please check the nested errors for details.
        errors:
          - type: Customer-Ip.required
            message: You have not provided a valid IPv4 address
            fields:
              - name: Customer-Ip
                type: HEADER
    bad-link-error:
      value:
        type: invalid_input
        message: An invalid request was sent in, please check the nested errors for details.
        errors:
          - type: invalid_link
            message: Link is invalid.
    create-successful:
      value:
        itinerary_id: '0000000000000'
        links:
          retrieve:
            method: GET
            href: /v1/itineraries/0000000000000/activity
            expires: ''
    price-mismatch-error:
      value:
        type: price_mismatch
        message: Payment amount did not match current price, please check price and try again.
        fields:
          - name: payments.amount
            type: body
            value: '100.00'
          - name: price.amount
            type: body
            value: '120.00'
    sold-out-error:
      value:
        type: sold_out
        message: The requested item is no longer available.
    not-supported-error:
      value:
        type: unsupported_media_type
        message: The server can't provide an acceptable response matching the request, please check the nested errors for details.
        errors:
          - type: content_type.unsupported
            message: Content-Type header is required and must accept application/json.
            fields:
              - name: Content-Type
                type: header
                value: application/text
    retrieve-standard:
      value:
        itinerary_id: '0000000000000'
        status: CANCELED
        confirmation_id: ug23468dyu
        activity:
          activity_id: '822672'
          title: Private Bangkok Night Tour by Tuk Tuk with Dinner
          description: Enjoy the thrilling ride through the city’s lively night streets. This evening activity begins with a tuk-tuk ride around Bangkok, seeing how the city lights illuminate ancient temples and modern skyscrapers against the night sky. Along the way, you'll visit markets and palaces, explore the bustling streets of Chinatown, and feast on street food while learning about the city from your local guide.
          disclaimers:
            - type: Redemption Instructions
              description: Comfortable walking shoes are recommended .
          amenities: []
          media:
            images:
              - caption: poster
                links:
                  72px:
                    method: GET
                    href: https://mediaim.expedia.com/localexpert/822672/b7b118f1-d776-43bd-8b45-2b43bcc49e2d.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://mediaim.expedia.com/localexpert/822672/b7b118f1-d776-43bd-8b45-2b43bcc49e2d.jpg?impolicy=resizecrop&rw=500&rh=281
              - caption: buildings
                links:
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/46513105-749d-4406-aa05-3204de1b2def.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/46513105-749d-4406-aa05-3204de1b2def.jpg?impolicy=resizecrop&rw=500&rh=281
              - caption: The street
                links:
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/36291cfe-e482-4b63-a8d1-700cb8a7ab05.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/36291cfe-e482-4b63-a8d1-700cb8a7ab05.jpg?impolicy=resizecrop&rw=500&rh=281
              - caption: A building as seen from the water.
                links:
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/c703a61e-a208-41d5-a9f3-feab6550fa1c.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/c703a61e-a208-41d5-a9f3-feab6550fa1c.jpg?impolicy=resizecrop&rw=500&rh=281
              - caption: Street view at sunset.
                links:
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/890e7663-a561-46b9-95aa-26bf9c08c0f1.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/890e7663-a561-46b9-95aa-26bf9c08c0f1.jpg?impolicy=resizecrop&rw=500&rh=281
              - caption: Motorcycle taxi
                links:
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/2feff89f-849a-4703-bdce-07986336f233.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/2feff89f-849a-4703-bdce-07986336f233.jpg?impolicy=resizecrop&rw=500&rh=281
              - caption: Street view of building.
                links:
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/1578c460-2e7a-4e4b-9776-97a56c8d8e78.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/1578c460-2e7a-4e4b-9776-97a56c8d8e78.jpg?impolicy=resizecrop&rw=500&rh=281
              - caption: Scenic picture of a building.
                links:
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/8be5dffc-087c-466f-a4eb-f8e8492a2b6d.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/822672/8be5dffc-087c-466f-a4eb-f8e8492a2b6d.jpg?impolicy=resizecrop&rw=500&rh=281
          redemption_type: REDEMPTION_TYPE_PRINT
          redemption_locations:
            - address:
                line_1: Bamrung Muang Rd
                state_province_code: ''
                postal_code: '10200'
                country_code: Thailand
              coordinate:
                longitude: 100.50108
                latitude: 13.75198
          event_location:
            address:
              line_1: Bamrung Muang Rd
              state_province_code: ''
              postal_code: '10200'
              country_code: Thailand
            coordinate:
              longitude: 100.50108
              latitude: 13.75198
          offer:
            id: '1000987606'
            name: 06:00 PM, Private Bangkok Night Tour by Tuk Tuk with Dinner in English
            duration: P0Y0M0DT0H240M0S
            language:
              - English
            all_day: false
            offer_start: '2025-04-01T14:45:04.762Z'
            cancel_penalties:
              - start: '2025-04-01T10:47:19.727+00:00'
                end: '2025-04-05T23:59:00.000+00:00'
                percent: 0%
                currency: USD
              - start: '2025-04-05T23:59:00.000+00:00'
                end: '2025-04-06T23:59:00.000+00:00'
                percent: 100%
                currency: USD
            hours_of_operation:
              - day_of_week: monday
                start_time: '00:00:00'
                end_time: '00:00:00'
            tickets:
              price_per_ticket:
                - ticket:
                    ticket_type: adult
                    restriction:
                      type: age
                      range:
                        minimum: 18
                        maximum: 65
                  ticket_total:
                    inclusive:
                      value: '194.82'
                      currency: USD
                  ticket_count: 1
                - ticket:
                    ticket_type: infant
                    restriction:
                      type: age
                      range:
                        minimum: 0
                        maximum: 2
                  ticket_total:
                    inclusive:
                      value: '0.00'
                      currency: USD
                  ticket_count: 1
              totals:
                inclusive:
                  value: '194.82'
                  currency: USD
                total_ticket_count: 2
          callouts:
            - Service animals allowed
            - Public transportation options are available nearby
            - Suitable for all physical fitness levels
            - Times are subject to change due to local traffic conditions
            - ''
          inclusions:
            - English-speaking Tour Guide
            - Private Transportation by Tuk Tuk
            - Tasty Thai Dinner
            - Hotel Pick up and Drop off from Bangkok
          exclusions:
            - Personal expenses
            - Any item not included in inclusions
          redemption_instructions: You must arrive 30 minutes prior to departure so that we can get you checked in and check your ID.  You will be asked to complete a Liability Waiver prior to take off.  Please present your photo ID and let us know what name the reservation is under.
          terms_and_conditions: Customer must sign a liability waiver before participating in this product.
        primary_traveler:
          name:
            given_name: Bob
            middle_name: Jones
            family_name: Smith
          traveler_type: adult
        additional_travelers:
          - name:
              given_name: Jimmy
              middle_name: James
              family_name: Smith
            traveler_type: infant
        email: bob@example.com
        phone:
          country_code: '1'
          area_code: '816'
          number: '6099516'
        billing_contact:
          given_name: Bob
          family_name: Smith
          email: bob@example.com
          address:
            line_1: 742 Evergreen Terrace
            city: Seattle
            state_province_code: WA
            postal_code: '98119'
            country_code: USA
        creation_time: '2025-03-27T20:54:22.097Z'
        affiliate_metadata: data_point_1:123|data_point2:This is data.
        affiliate_reference_id: MNS@113
        links:
          cancel:
            method: DELETE
            href: /v1/itineraries/0000000000000/activity
    itinerary-not-found:
      value:
        type: resource_not_found
        message: Itinerary was not found with provided request.
