openapi: 3.0.1
info:
  title: Rapid Activities
  description: Rapid Activities V2
  version: v2
servers:
  - url: https://test.ean.com/v2
  - url: https://api.ean.com/v2
tags:
  - name: Geography
    description: The Geo API enables retrieval of location details.
  - name: Content
    description: The Content API enables retrieval of details and reviews.
  - name: Shopping
    description: The Shopping API enables getting available activities.
  - 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:
  /regions/{region_id}/experiences:
    get:
      tags:
        - Geography
      summary: Region Experiences
      description: |
        Returns the list of experience IDs within the bounding polygon of the requested region.
      operationId: getRegionExperiences
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/RegionExperiencesTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/RegionIdPath'
        - $ref: '#/components/parameters/PaginationSizeQuery'
        - $ref: '#/components/parameters/AreaQuery'
        - name: category_id
          in: query
          description: |
            Filter experiences by category ID. You can provide 1 to 20 category_id parameters to filter by multiple categories.
            The references for these category IDs can be retrieved from the /experiences/categories endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: category_id_exclude
          in: query
          description: |
            Exclude experiences by category ID. You can provide 1 to 20 category_id_exclude parameters to exclude multiple categories.
            The references for these category IDs can be retrieved from the /experiences/categories endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id
          in: query
          description: |
            Filter experiences by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the /experiences/attributes endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id_exclude
          in: query
          description: |
            Exclude experiences by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the /experiences/attributes endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: A list of experience IDs matching the region.
          headers:
            Pagination-Total-Results:
              $ref: '#/components/headers/PaginationTotalResults'
            Link:
              $ref: '#/components/headers/NextLink'
          content:
            application/json:
              schema:
                type: array
                description: The unique ID of an experience.
                items:
                  type: string
              examples:
                StandardResponse:
                  $ref: '#/components/examples/region-experiences'
        '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'
  /regions/{region_id}/activity-groups:
    get:
      tags:
        - Geography
      summary: Region Activity Groups
      description: |
        Returns the list of activity group IDs within the bounding polygon of the requested region.
      operationId: getRegionActivityGroups
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/RegionActivityGroupsTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/RegionIdPath'
        - $ref: '#/components/parameters/PaginationSizeQuery'
        - $ref: '#/components/parameters/AreaQuery'
        - name: category_id
          in: query
          description: |
            Filter activities by category ID. You can provide 1 to 20 category_id parameters to filter by multiple categories.
            The references for these category IDs can be retrieved from the `/experiences/activities/categories` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: category_id_exclude
          in: query
          description: |
            Exclude activities by category ID. You can provide 1 to 20 category_id_exclude parameters to exclude multiple categories.
            The references for these category IDs can be retrieved from the `/experiences/activities/categories` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id
          in: query
          description: |
            Filter activities by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the `/experiences/activities/attributes` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id_exclude
          in: query
          description: |
            Exclude activities by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the `/experiences/activities/attributes` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: A list of activity group IDs matching the region.
          headers:
            Pagination-Total-Results:
              $ref: '#/components/headers/PaginationTotalResults'
            Link:
              $ref: '#/components/headers/NextLink'
          content:
            application/json:
              schema:
                type: array
                description: The unique ID of an activity group.
                items:
                  type: string
              examples:
                StandardResponse:
                  $ref: '#/components/examples/region-activity-groups'
        '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'
  /regions/{region_id}/activities:
    get:
      tags:
        - Geography
      summary: Region Activities
      description: |
        Returns the list of activity IDs within the bounding polygon of the requested region.
      operationId: getRegionActivities
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/RegionActivitiesTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/RegionIdPath'
        - $ref: '#/components/parameters/PaginationSizeQuery'
        - $ref: '#/components/parameters/AreaQuery'
        - name: category_id
          in: query
          description: |
            Filter activities by category ID. You can provide 1 to 20 category_id parameters to filter by multiple categories.
            The references for these category IDs can be retrieved from the `/experiences/activities/categories` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: category_id_exclude
          in: query
          description: |
            Exclude activities by category ID. You can provide 1 to 20 category_id_exclude parameters to exclude multiple categories.
            The references for these category IDs can be retrieved from the `/experiences/activities/categories` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id
          in: query
          description: |
            Filter activities by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the `/experiences/activities/attributes` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id_exclude
          in: query
          description: |
            Exclude activities by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the `/experiences/activities/attributes` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: A list of activity IDs matching the region.
          headers:
            Pagination-Total-Results:
              $ref: '#/components/headers/PaginationTotalResults'
            Link:
              $ref: '#/components/headers/NextLink'
          content:
            application/json:
              schema:
                type: array
                description: The unique ID of an activity.
                items:
                  type: string
              examples:
                StandardResponse:
                  $ref: '#/components/examples/region-activities'
        '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'
  /experiences/content:
    get:
      tags:
        - Content
      summary: Search experience content for active experiences in the requested language.
      operationId: getExperience
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ExperienceTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/LanguageQuery'
        - $ref: '#/components/parameters/DateUpdatedStart'
        - name: category_id
          in: query
          description: |
            Filter experiences by category ID. You can provide 1 to 20 category_id parameters to filter by multiple categories.
            The references for these category IDs can be retrieved from the /experiences/categories endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: category_id_exclude
          in: query
          description: |
            Exclude experiences by category ID. You can provide 1 to 20 category_id_exclude parameters to exclude multiple categories.
            The references for these category IDs can be retrieved from the /experiences/categories endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id
          in: query
          description: |
            Filter experiences by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the /experiences/attributes endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id_exclude
          in: query
          description: |
            Exclude experiences by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the /experiences/attributes endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: experience_id
          in: query
          description: |
            The ID of the experiences you want to search for. You can provide 1 to 20 experience_id parameters.
          required: true
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
          examples:
            Single:
              value:
                - '1337'
            Multiple:
              value:
                - '1337'
                - '1'
      responses:
        '200':
          description: Experience content for the requested experience IDs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ExperienceContent'
              examples:
                StandardResponse:
                  $ref: '#/components/examples/experience-content-standard'
        '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'
  /experiences/activity-groups/content:
    get:
      tags:
        - Content
      summary: Search activity-groups content for active activity-groups in the requested language.
      operationId: getActivityGroups
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ActivityGroupsTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/LanguageQuery'
        - $ref: '#/components/parameters/DateUpdatedStart'
        - name: category_id
          in: query
          description: |
            Filter activities by category ID. You can provide 1 to 20 category_id parameters to filter by multiple categories.
            The references for these category IDs can be retrieved from the `/experiences/activities/categories` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: category_id_exclude
          in: query
          description: |
            Exclude activities by category ID. You can provide 1 to 20 category_id_exclude parameters to exclude multiple categories.
            The references for these category IDs can be retrieved from the `/experiences/activities/categories` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id
          in: query
          description: |
            Filter activities by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the `/experiences/activities/attributes` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id_exclude
          in: query
          description: |
            Exclude activities by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the `/experiences/activities/attributes` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: activity_group_id
          in: query
          description: |
            The ID of the activity group you want to search for. You can provide 1 to 25 activity_group_id parameters.
          style: form
          explode: true
          required: true
          schema:
            type: array
            items:
              type: string
          examples:
            Single:
              value:
                - '1337'
            Multiple:
              value:
                - '1337'
                - '1'
      responses:
        '200':
          description: Activity group content for the requested activity group IDs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActivityGroupContent'
              examples:
                StandardResponse:
                  $ref: '#/components/examples/activity-groups-content-standard'
        '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'
  /experiences/activities/content:
    get:
      tags:
        - Content
      summary: Search activity content for active activities in the requested language.
      operationId: getActivityContent
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ActivityContentTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/LanguageQuery'
        - $ref: '#/components/parameters/ActivityIdQuery'
        - $ref: '#/components/parameters/DateUpdatedStart'
        - name: category_id
          in: query
          description: |
            Filter activities by category ID. You can provide 1 to 20 category_id parameters to filter by multiple categories.
            The references for these category IDs can be retrieved from the `/experiences/activities/categories` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: category_id_exclude
          in: query
          description: |
            Exclude activities by category ID. You can provide 1 to 20 category_id_exclude parameters to exclude multiple categories.
            The references for these category IDs can be retrieved from the `/experiences/activities/categories` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id
          in: query
          description: |
            Filter activities by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the `/experiences/activities/attributes` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: attribute_id_exclude
          in: query
          description: |
            Exclude activities by attribute ID. You can provide 1 to 20 attribute_id parameters to filter by multiple attributes.
            The references for these attribute IDs can be retrieved from the `/experiences/activities/attributes` endpoint.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - $ref: '#/components/parameters/SupportedBookingDataTypesQuery'
      responses:
        '200':
          description: Activity content for the requested activity IDs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActivityContent'
              examples:
                StandardResponse:
                  $ref: '#/components/examples/activity-content-standard'
        '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'
  /experiences/activities/{activity_id}/operating-hours:
    get:
      tags:
        - Content
      summary: Get activity operating hours for an active activity in the requested language.
      operationId: ActivityOperatingHours
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ActivityOperatingHoursTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/LanguageQuery'
        - $ref: '#/components/parameters/ActivityIdPath'
        - name: start_date
          in: query
          required: true
          schema:
            type: string
            format: date
            example: '2026-05-01'
          description: Start date for the open times of an activity.
        - name: end_date
          in: query
          required: true
          schema:
            type: string
            format: date
            example: '2026-06-01'
          description: End date for the open times of an activity. A max of 90 days can be requested.
      responses:
        '200':
          description: Activity content for the requested activity IDs.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    date:
                      type: string
                      format: date
                      description: The date of operating hours in ISO 8601 format (YYYY-MM-DD).
                      example: '2026-04-05'
                    areas:
                      type: array
                      description: A list of areas within the experience with their operating hours.
                      items:
                        type: object
                        properties:
                          area_name:
                            type: string
                            description: The name of the area within the experience.
                            example: Gardens
                          open:
                            type: string
                            description: Opening time in HH:MM format (24-hour clock).
                            pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
                            example: '11:00'
                          close:
                            type: string
                            description: Closing time in HH:MM format (24-hour clock).
                            pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
                            example: '17:00'
                          last_admission:
                            type: string
                            description: Last admission time in HH:MM format (24-hour clock).
                            pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]$
                            example: '16:00'
              examples:
                StandardResponse:
                  $ref: '#/components/examples/operating-hours-standard'
        '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'
  /experiences/categories:
    get:
      operationId: getExperiencesCategories
      tags:
        - Content
      summary: Get all categories related to experiences
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ExperiencesCategoriesTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/PaginationSizeQuery'
        - $ref: '#/components/parameters/LanguageQuery'
      responses:
        '200':
          description: A list of categories that are associated to experiences.
          headers:
            Pagination-Total-Results:
              $ref: '#/components/headers/PaginationTotalResults'
            Link:
              $ref: '#/components/headers/NextLink'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: The unique identifier for this category.
                    name:
                      type: string
                      description: The display name of the category.
                    type:
                      type: string
                      description: The type classification of the category.
              examples:
                StandardResponse:
                  $ref: '#/components/examples/experiences-categories-standard'
        '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'
  /experiences/attributes:
    get:
      operationId: getExperienceAttributes
      tags:
        - Content
      summary: Get all experience attributes for reference in content queries
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ExperienceAttributesTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/PaginationSizeQuery'
        - $ref: '#/components/parameters/LanguageQuery'
      responses:
        '200':
          description: A list of attributes that are associated to experiences.
          headers:
            Pagination-Total-Results:
              $ref: '#/components/headers/PaginationTotalResults'
            Link:
              $ref: '#/components/headers/NextLink'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: The unique identifier for this attribute.
                    name:
                      type: string
                      description: The display name of the attribute.
                    type:
                      type: string
                      description: The type classification of the attribute.
              examples:
                StandardResponse:
                  $ref: '#/components/examples/experiences-attributes-standard'
        '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'
  /experiences/activities/categories:
    get:
      operationId: getActivitiesCategories
      tags:
        - Content
      summary: Get all categories related to activities.
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ActivitiesCategoriesTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/PaginationSizeQuery'
        - $ref: '#/components/parameters/LanguageQuery'
      responses:
        '200':
          description: A list of categories that are associated to activities.
          headers:
            Pagination-Total-Results:
              $ref: '#/components/headers/PaginationTotalResults'
            Link:
              $ref: '#/components/headers/NextLink'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: The unique identifier for this category.
                    name:
                      type: string
                      description: The display name of the category.
                    type:
                      type: string
                      description: The type classification of the category.
              examples:
                StandardResponse:
                  $ref: '#/components/examples/activities-categories-standard'
        '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'
  /experiences/activities/attributes:
    get:
      operationId: getActivitiesAttributes
      tags:
        - Content
      summary: Get all activity attributes for reference in content queries.
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ActivitiesAttributesTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/PaginationSizeQuery'
        - $ref: '#/components/parameters/LanguageQuery'
      responses:
        '200':
          description: A list of attributes that are associated to activities.
          headers:
            Pagination-Total-Results:
              $ref: '#/components/headers/PaginationTotalResults'
            Link:
              $ref: '#/components/headers/NextLink'
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: The unique identifier for this attribute.
                    name:
                      type: string
                      description: The display name of the attribute.
                    type:
                      type: string
                      description: The type classification of the attribute.
              examples:
                StandardResponse:
                  $ref: '#/components/examples/activities-attributes-standard'
        '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'
  /experiences/activities/{activity_id}/guest-reviews:
    get:
      operationId: getGuestReviews
      tags:
        - Content
      summary: Get activity reviews
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/GuestReviewsTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/LanguageQuery'
        - $ref: '#/components/parameters/ActivityIdPath'
        - name: limit
          in: query
          required: true
          schema:
            type: integer
            maximum: 100
            minimum: 1
          description: The maximum number of results to return. Allows a value between 1 and 100, inclusive.
        - name: sort
          in: query
          required: true
          schema:
            type: string
            enum:
              - date
              - relevancy
              - rating
          description: The order in which the reviews are returned. "date" returns the most recent reviews first, "relevancy" returns the reviews that are most relevant to the activity first, and "rating" returns the reviews with the highest ratings first.
      responses:
        '200':
          description: Reviews for the specified activity.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    language:
                      type: string
                      description: The language of the review, in ISO 639-1 format.
                      example: en
                    reviewer_name:
                      type: string
                      description: The name of the person who wrote this review.
                    rating:
                      type: string
                      description: The rating for this activity given by the reviewer. Returns a value between 1.0 and 5.0.
                    text:
                      type: string
                      description: The text of the review itself.
                    date_submitted:
                      type: string
                      format: date
                      description: When this review was made, in ISO 8601 format.
                    source:
                      type: string
                      description: The source of the review, such as "Tiqets" or "Expedia Verified Guest".
              examples:
                StandardResponse:
                  $ref: '#/components/examples/guest-reviews-standard'
        '400':
          $ref: '#/components/responses/Error400BadRequestInvalidInput'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404ActivityNotFound'
        '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'
  /experiences/activities/availability:
    get:
      operationId: getAvailability
      tags:
        - Shopping
      summary: Search for available activities with pricing and time slots
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/AvailabilityTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/ActivityIdQuery'
        - $ref: '#/components/parameters/LanguageQuery'
        - $ref: '#/components/parameters/CurrencyQuery'
        - $ref: '#/components/parameters/SupportedBookingDataTypesQuery'
        - name: start_date
          in: query
          required: true
          schema:
            type: string
            format: date
          description: Start date for the activity availability.
        - name: end_date
          in: query
          required: true
          schema:
            type: string
            format: date
          description: End date for the activity availability. A max of 14 days can be requested.
        - name: country_code
          in: query
          required: true
          schema:
            type: string
            example: US
          description: |
            The two-letter country code of the traveler's point of sale. Must conform to the
            ISO 3166-1 alpha-2 standard
      responses:
        '200':
          description: A list of activity availability and pricing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Availability'
              examples:
                StandardResponse:
                  $ref: '#/components/examples/availability-standard'
        '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'
  /experiences/activities/calendars/availability:
    get:
      operationId: getCalendarAvailability
      tags:
        - Shopping
      summary: Search for available activities by calendar date
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/CalendarAvailabilityTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/ActivityIdQuery'
        - $ref: '#/components/parameters/CurrencyQuery'
        - name: start_date
          in: query
          required: true
          schema:
            type: string
            format: date
          description: Start date for the activity search.
        - name: end_date
          in: query
          required: true
          schema:
            type: string
            format: date
          description: End date for the activity calendar availability. A max of 30 days can be requested.
      responses:
        '200':
          description: A list of activities and their availability by date.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CalendarAvailability'
              examples:
                StandardResponse:
                  $ref: '#/components/examples/calendar-availability-standard'
        '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'
  /experiences/activities/{activity_id}/price-check:
    get:
      summary: Price check for selected activity, tickets, and time slot.
      operationId: priceCheck
      description: |
        Performs a price check for the selected activity, tickets, and time slot. 
        Returns a token that must be used when creating a booking.
      tags:
        - Shopping
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      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/ActivityIdPath'
        - $ref: '#/components/parameters/Tickets'
      responses:
        '200':
          $ref: '#/components/responses/ActivityPriceCheck'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404OfferNotFound'
        '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'
  /experiences/booking-questions/data-types:
    get:
      operationId: getBookingQuestionDataTypes
      summary: Get Data Types Catalog
      description: Returns a technical reference catalog of all available data type models used by booking questions.
      tags:
        - Shopping
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpNotRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/DateUpdatedStart'
        - $ref: '#/components/parameters/TrafficProfile'
      responses:
        '200':
          $ref: '#/components/responses/BookingQuestionDataTypes'
        '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/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.rapid-activity-api.all
      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/CreateBookingTestHeader'
        - $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. 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.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ItineraryByAffiliateReferenceTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $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'
        '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'
  /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.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/ItineraryByIdTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $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'
        '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'
    delete:
      operationId: cancelBooking
      summary: Cancel Booking
      description: |
        Cancels an existing booking.
      tags:
        - Manage Booking
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/CancelBookingTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $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'
  /itineraries/{itinerary_id}/activity/voucher:
    get:
      operationId: getVoucher
      summary: Retrieve Voucher
      description: |
        Retrieves the voucher associated with a booking.
      tags:
        - Manage Booking
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpRequired'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/VoucherTestHeader'
        - $ref: '#/components/parameters/TrafficProfile'
        - $ref: '#/components/parameters/ItineraryId'
      responses:
        '200':
          $ref: '#/components/responses/ActivityVoucherResponse'
        '400':
          $ref: '#/components/responses/Error400BadRequestInvalidInput'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404VoucherNotFound'
        '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/payment-sessions:
    put:
      operationId: completePaymentSession
      summary: Complete Payment Session
      description: Completes a PSD2 payment challenge and confirms the booking. Call this endpoint after the customer completes the challenge presented via encoded_challenge_config from the create booking response.
      tags:
        - Booking
      security:
        - EgTokenAuth:
            - demand-solutions.rapid-activity-api.all
      parameters:
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/AcceptEncoding'
        - $ref: '#/components/parameters/CustomerIpRequired'
        - $ref: '#/components/parameters/CustomerSessionId'
        - $ref: '#/components/parameters/UserAgent'
        - $ref: '#/components/parameters/CompletePaymentSessionTestHeader'
        - $ref: '#/components/parameters/ItineraryId'
        - name: token
          in: query
          required: true
          schema:
            type: string
          description: The complete payment session token from the complete_payment_session link returned in the create booking response.
      responses:
        '200':
          $ref: '#/components/responses/ActivityPaymentSessionCompleteResponseBody'
        '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 EG Token scheme
      flows:
        clientCredentials:
          tokenUrl: https://api.ean.com/identity/oauth2/v3/token
          scopes:
            demand-solutions.rapid-activity-api.all: Grants access to the activities API; shopping, booking, and post-book calls are mocked.
            demand-solutions.rapid-activity-itinerary.all: Grants access to live book and post-book calls.
  headers:
    NextLink:
      description: |
        Contains a single link to get the immediate next page of results, and follows the IETF standard. To get the next page of results, simply follow the next URL in this header without modifying it. This header will be missing when there are no further pages. If the link expires, there will be an expires link-extension that is the UTC date the link will expire, in ISO 8601 format.
      schema:
        type: string
      example: <https://test.ean.com/v2/activities/regions?token=Q11RF1Vda1JREAQQCQMFVgpRDVQDDFsAFgJVgYBDQYAUw==>; rel="next";
    PaginationTotalResults:
      description: The total number of locations matching the search query.
      schema:
        type: integer
    RateLimitDay:
      description: Reserved for future use. Optional header for request capacity per day.
      schema:
        type: number
    RateLimitDayRemaining:
      description: Optional header for the remaining capacity, as a percentage, for the daily time window.
      schema:
        type: number
    RateLimitDayReset:
      description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the daily capacity resets.
      schema:
        type: number
    RateLimitMinute:
      description: Reserved for future use. Optional header for request capacity per minute.
      schema:
        type: number
    RateLimitMinuteRemaining:
      description: Optional header for the remaining capacity, as a percentage, for the per minute time window.
      schema:
        type: number
    RateLimitMinuteReset:
      description: Optional header for the timestamp, as the number of milliseconds since the Unix Epoch, when the per minute capacity resets.
      schema:
        type: number
    RateLimitReductionStatus:
      description: Optional header that indicates the state (inactive, active) of minute capacity reduction triggered once all daily capacity has been used.
      schema:
        type: string
  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 response encoding.
      required: true
      schema:
        type: string
        enum:
          - gzip
    ActivitiesAttributesTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ActivitiesAttributesTestHeaderValue'
    ActivitiesCategoriesTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ActivitiesCategoriesTestHeaderValue'
    ActivityContentTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ActivityContentTestHeaderValue'
    ActivityGroupsTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ActivityGroupsTestHeaderValue'
    ActivityOperatingHoursTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ActivityOperatingHoursTestHeaderValue'
    AvailabilityTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/AvailabilityTestHeaderValue'
    CalendarAvailabilityTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/CalendarAvailabilityTestHeaderValue'
    CancelBookingTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/CancelBookingTestHeaderValue'
    CreateBookingTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/CreateBookingTestHeaderValue'
    CompletePaymentSessionTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/CompletePaymentSessionTestHeaderValue'
    ContentType:
      in: header
      name: Content-Type
      example: application/json
      description: |
        Specifies the request body format. `application/json` is the only supported value for this header.
      required: true
      schema:
        type: string
        enum:
          - application/json
    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
    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
    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
    ExperienceAttributesTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ExperienceAttributesTestHeaderValue'
    ExperienceTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ExperienceTestHeaderValue'
    ExperiencesCategoriesTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ExperiencesCategoriesTestHeaderValue'
    GuestReviewsTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/GuestReviewsTestHeaderValue'
    ItineraryByAffiliateReferenceTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ItineraryByAffiliateReferenceTestHeaderValue'
    ItineraryByIdTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/ItineraryByIdTestHeaderValue'
    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'
    RegionActivitiesTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/RegionActivitiesTestHeaderValue'
    RegionActivityGroupsTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/RegionActivityGroupsTestHeaderValue'
    RegionExperiencesTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/RegionExperiencesTestHeaderValue'
    VoucherTestHeader:
      description: |
        Specifies the type of response to be returned. Used for testing the API.
      name: Test
      in: header
      required: false
      schema:
        $ref: '#/components/schemas/VoucherTestHeaderValue'
    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
    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
    DateUpdatedStart:
      in: query
      name: date_updated_start
      description: Search for content updated on or after the requested UTC date, in ISO 8601 format (YYYY-MM-DD)
      schema:
        type: string
        format: date
        example: '2023-09-20'
    TrafficProfile:
      in: query
      name: traffic_profile
      required: true
      description: |
        The traffic profile to use for the request. This is used to differentiate your traffic and the value will be provided by your account manager.
      schema:
        type: string
    SupportedBookingDataTypesQuery:
      name: supported_booking_data_types
      in: query
      required: true
      style: form
      explode: true
      description: |
        Filters results to only include activities whose required questions use the specified booking data types.
        At least one value must be provided. You can provide the parameter multiple times to support several data
        types (e.g., `supported_booking_data_types=measurement&supported_booking_data_types=selection&supported_booking_data_types=text`).

        The supported data type values are returned by the `/experiences/booking-questions/data-types` endpoint.

        To handle all data types and return every activity, use the wildcard value `*`. When using `*`, the partner
        is responsible for handling all question types during price check and booking.

        To return only activities that have no required booking questions, use the value `none`.
      schema:
        type: array
        minItems: 1
        items:
          type: string
      examples:
        SpecificTypes:
          value:
            - measurement
            - selection
            - text
        AllTypes:
          value:
            - '*'
        NoTypes:
          value:
            - none
    LanguageQuery:
      name: language
      in: query
      required: true
      schema:
        type: string
      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 ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
      example: en-US
    CurrencyQuery:
      name: currency
      in: query
      required: true
      description: Requested currency for the rates, in ISO 4217 format.
      schema:
        type: string
        pattern: ^[A-Z]{3}$
        example: USD
    PaginationSizeQuery:
      name: pagination_size
      in: query
      required: true
      schema:
        type: integer
        maximum: 100
        minimum: 1
      description: The maximum number of results to return per page.
    ActivityIdQuery:
      name: activity_id
      in: query
      required: true
      explode: true
      style: form
      schema:
        type: array
        items:
          type: string
      description: At least one activity ID needs to be provided, the maximum is 20 activity IDs.
    Tickets:
      in: query
      name: tickets
      explode: true
      style: form
      example: 1561964-2
      description: |
        The ticket_id and the count of how many tickets of this type will be requested for purchase.

        In the format of `ticket_id`-`count`.
      required: true
      schema:
        type: string
    TokenRequired:
      in: query
      name: token
      required: true
      description: |
        A token containing encoded activity information from the search request. This token is passed via links to maintain state throughout the booking process.
      example: djUtc29zLTNhYWZkMDk2YmMyODQyYzA4OTMzNjdkYWM3NTU1ZWJmLTItMTg4LTF+OC5TfkFRb0NDQUVTQndqVUJCQUJHQUVvQWxJRWdmSUJBRmdDY0FGNkEySm1jNGdCeVlTbVFBfkFRcG9DaklJd1lJQkVnUXhOekkxR0l1UUFTQ2pzUUVvNDhIVUFqQ1l3OVFDT0ZOQUFGZ0JhZ1JOUVVsT2NnaFRXRUZKV2s1TldBb3lDTUdDQVJJRU1UWTFNeGlqc1FFZ2k3Z0JLS2JGMUFJdzVNYlVBamhSUUFGWUFXb0VUVUZKVG5JSVVWWkJTVmhUVFZnS1p3b3hDTUdDQVJJRE9EVXlHSXU0QVNEdnVRRW9zZTNWQWpDUDd0VUNPRkZBQUZnQmFnUk5RVWxPY2doUlYwRklXazVOV0FveUNNR0NBUklFTWpjMk1CanZ1UUVnaTVBQktKRHgxUUl3MVBIVkFqaE9RQUZZQVdvRVRVRkpUbklJVGxoQlNWcE9UVmdTQ2dnQkVBRVlBU29DUVVFWUFTSUVDQUVRQVNnQ0tBTW9CREFM
      schema:
        type: string
    ActivityIdPath:
      in: path
      name: activity_id
      description: |
        The identifier for an activity.
      example: '1234432'
      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
    RegionIdPath:
      in: path
      name: region_id
      description: The unique identifier for the region.
      required: true
      schema:
        type: string
    AreaQuery:
      name: area
      in: query
      required: false
      description: |
        Restricts results to a specified geospatial area. Provide a comma-delimited string in the format `radius_km,latitude,longitude`, where the radius is non-negative and measured in kilometers.
      schema:
        type: string
        example: 10,34.0512226,-118.2403994
  requestBodies:
    ActivityRequestBody:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateItineraryRequest'
          examples:
            BasicCreateRequest:
              $ref: '#/components/examples/create-request-basic'
            CompleteCreateRequest:
              $ref: '#/components/examples/create-request-complete'
      required: true
  responses:
    ActivityPriceCheck:
      description: Successful
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ActivityPriceCheck'
          examples:
            StandardResponse:
              $ref: '#/components/examples/price-check-standard'
            WithTraderInformation:
              $ref: '#/components/examples/price-check-with-trader-information'
            PriceChangeResponse:
              $ref: '#/components/examples/price-check-price-change'
            SoldOutResponse:
              $ref: '#/components/examples/price-check-sold-out'
            WithConditionalBookingQuestions:
              $ref: '#/components/examples/price-check-with-conditional-booking-questions'
    BookingQuestionDataTypes:
      description: Successful
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BookingQuestionDataTypes'
          examples:
            StandardResponse:
              $ref: '#/components/examples/booking-question-data-types-standard'
    ActivityReservationResponseBody:
      description: Created
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateResponse'
          examples:
            BasicCreateResponse:
              $ref: '#/components/examples/create-successful'
            PaymentChallengeCreateResponse:
              $ref: '#/components/examples/create-challenge'
    ActivityPaymentSessionCompleteResponseBody:
      description: OK
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PaymentSessionCompleteResponse'
          examples:
            PaymentSessionComplete:
              $ref: '#/components/examples/payment-sessions-complete'
    ActivityRetrieveResponse:
      description: OK
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ActivityRetrieveResponse'
          examples:
            StandardRetrieveResponse:
              $ref: '#/components/examples/retrieve-standard'
            WithTraderInformation:
              $ref: '#/components/examples/retrieve-with-trader-information'
    ActivityRetrieveResponseByAffiliateID:
      description: OK
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ActivityRetrieveResponse'
          examples:
            StandardRetrieveByAffiliateResponse:
              $ref: '#/components/examples/retrieve-by-affiliate-standard'
            WithTraderInformation:
              $ref: '#/components/examples/retrieve-by-affiliate-with-trader-information'
    ActivityVoucherResponse:
      description: OK
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Link'
          examples:
            standardRetrieveResponse:
              $ref: '#/components/examples/voucher-standard'
    Error400BadRequestInvalidInput:
      description: Bad Request
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      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'
    Error404ActivityNotFound:
      description: Activity Not Found
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/activity-not-found'
    Error404ItineraryNotFound:
      description: Itinerary Not Found
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/itinerary-not-found'
    Error404VoucherNotFound:
      description: Voucher Not Found
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/voucher-not-found'
    Error404OfferNotFound:
      description: Offer Not Found
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/offer-not-found'
    Error406:
      description: Not Acceptable
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      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:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      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:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            response:
              $ref: '#/components/examples/sold-out-error'
    Error415:
      description: Unsupported Media Type
      headers:
        Rate-Limit-Day:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      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:
          $ref: '#/components/headers/RateLimitDay'
        Rate-Limit-Day-Remaining:
          $ref: '#/components/headers/RateLimitDayRemaining'
        Rate-Limit-Day-Reset:
          $ref: '#/components/headers/RateLimitDayReset'
        Rate-Limit-Minute:
          $ref: '#/components/headers/RateLimitMinute'
        Rate-Limit-Minute-Remaining:
          $ref: '#/components/headers/RateLimitMinuteRemaining'
        Rate-Limit-Minute-Reset:
          $ref: '#/components/headers/RateLimitMinuteReset'
        Rate-Limit-Reduction-Status:
          $ref: '#/components/headers/RateLimitReductionStatus'
      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:
    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 to call out.
          items:
            properties:
              type:
                type: string
                description: The type of disclaimer being called out.
                example: price
              description:
                type: string
                description: Information about the disclaimer, in text.
                example: Activities cannot be transferred from one person to another.
        media:
          type: object
          description: A collection of images and videos that are associated with 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 redemption type that this activity supports.
        supplier_name:
          type: string
          description: The name of the supplier branch providing the activity.
    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'
    ActivityOfferDetails:
      type: object
      properties:
        id:
          type: string
          description: The unique ID for the activity.
          example: '1001039039'
        dates:
          type: array
          description: A list of dates that are available for this offer.
          items:
            type: object
            properties:
              date:
                type: string
                format: date
                description: The date that is available for this offer.
              options:
                type: array
                description: List of options that are available for this offer.
                items:
                  type: object
                  properties:
                    start_time:
                      type: string
                      format: local-time
                      description: The start time of the activity in extended ISO 8601 format, without timezone offset.
                      example: '11:59'
                    max_tickets_per_order:
                      type: integer
                      description: Maximum number of tickets that can be purchased for this activity.
                    min_tickets_per_order:
                      type: integer
                      description: Minimum number of tickets that must be purchased for this activity.
                    tickets:
                      type: array
                      items:
                        $ref: '#/components/schemas/TicketPriceSummary'
                    links:
                      type: object
                      description: A map of links to progress to the next step(s).
                      properties:
                        price_check:
                          $ref: '#/components/schemas/Link'
              booking_taxes_and_fees:
                $ref: '#/components/schemas/BookingTaxesAndFees'
    BookingQuestionDataTypes:
      type: object
      description: A technical reference catalog of all available data type models used by booking questions.
      properties:
        data_types:
          type: array
          description: A list of all available data type models used by booking questions.
          items:
            $ref: '#/components/schemas/BookingQuestionDataType'
        validation_rules:
          type: object
          description: A map of all validation rules that can be applied to booking questions. Each key is the rule name, and its value describes the type and meaning of the value expected when configuring that rule.
          additionalProperties:
            $ref: '#/components/schemas/ValidationRule'
          example:
            max_length:
              description: Maximum length of the string value, measured in Unicode code points.
              type: integer
            pattern:
              description: A regular expression that the entire string value must match.
              type: string
    BookingQuestionDataType:
      type: object
      description: A single data type model describing how a booking question value should be structured.
      required:
        - type
        - name
        - description
        - schema_definition
      properties:
        type:
          type: string
          description: The unique identifier for the data type model.
          example: measurement
        name:
          type: string
          description: The human-readable display name for the data type model.
          example: Size Measurement
        description:
          type: string
          description: An explanation of what the data type model is used for.
          example: Used for collecting dimensional measurements. Common examples include height, helmet size, waist size, and chest size.
        date_added:
          type: string
          format: date
          description: The date when this data type model was added to the system.
          example: '2023-09-20'
        schema_definition:
          type: object
          description: A JSON Schema fragment describing the expected structure of a value for this data type model.
          additionalProperties: true
        validation_rules_options:
          type: object
          description: A map of validation rules that can be applied to this data type model. Each key corresponds to a property name in `schema_definition.properties`, and its value lists the validation rules available for that property.
          additionalProperties:
            $ref: '#/components/schemas/ValidationRuleOption'
          example:
            number:
              - min_length
              - max_length
              - pattern
    ValidationRuleOption:
      type: array
      description: An array of validation rules that can be applied to a specific property of a booking question data type model.
      items:
        type: string
      example:
        - min_length
        - max_length
        - pattern
    ValidationRule:
      type: object
      description: Describes a single validation rule that can be applied to a booking question, including the expected type and meaning of its configured value.
      required:
        - description
        - type
      properties:
        description:
          type: string
          description: An explanation of what the validation rule enforces and the expected format of its value.
          example: Maximum length of the string value, measured in Unicode code points.
        type:
          type: string
          description: The data type of the value expected when configuring this validation rule.
          example: integer
    BookingQuestionValidationRules:
      type: object
      description: The set of validation constraints applied to a single booking question property, keyed by property name within the data type's schema_definition.
      properties:
        max_date:
          type: string
          description: The latest allowed date, inclusive, in ISO 8601 YYYY-MM-DD format.
        max_datetime:
          type: string
          description: The latest allowed date and time, inclusive, in ISO 8601 / RFC 3339 format (with UTC offset).
        max_length:
          type: integer
          description: The maximum length of the string value, measured in Unicode code points.
        max_time:
          type: string
          description: The latest allowed time of day, inclusive, in 24-hour HH:MM format.
        max_value:
          type: integer
          description: The maximum value allowed, inclusive, for a numeric value.
        min_date:
          type: string
          description: The earliest allowed date, inclusive, in ISO 8601 YYYY-MM-DD format.
        min_datetime:
          type: string
          description: The earliest allowed date and time, inclusive, in ISO 8601 / RFC 3339 format (with UTC offset).
        min_length:
          type: integer
          description: The minimum length of the string value, measured in Unicode code points.
        min_time:
          type: string
          description: The earliest allowed time of day, inclusive, in 24-hour HH:MM format.
        min_value:
          type: integer
          description: The minimum value allowed, inclusive, for a numeric value.
        pattern:
          type: string
          description: A regular expression that the entire string value must match (full-string match, not substring).
    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'
        trader_information:
          $ref: '#/components/schemas/TraderInformation'
        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.
        booking_questions:
          type: array
          description: |
            A list of localized questions that must be answered when creating a booking for this offer.
            Each question describes the information required, who it applies to, and any permitted answer options.
          items:
            type: object
            description: A single localized booking question.
            properties:
              id:
                type: string
                description: Unique identifier for the booking question.
                example: height_1
              type:
                type: string
                description: The type of answer expected for this question.
                example: measurement
              question:
                type: string
                description: The localized question text presented to the traveler.
                example: What is your height?
              description:
                type: string
                description: Additional context explaining why the question is being asked.
                example: Required for safety equipment fitting
              applies_to:
                type: string
                description: |
                  Indicates who the question applies to, e.g., whether it must be answered
                  for each traveler or only once for the booking.
                example: per_traveler
              allow_multiple:
                type: boolean
                description: Indicates whether more than one answer option may be selected for this question.
                example: false
              ticket_ids:
                type: array
                description: A list of ticket IDs that this question applies to. This will also be empty if the question applies to all tickets in the booking.
                items:
                  type: string
                  description: A ticket ID that this question applies to.
                  example: '123456'
              children:
                type: array
                description: A list of child questions that are dependent on the answer to this question. This can be empty when there are no child questions.
                items:
                  type: string
                  description: A child question ID that is dependent on the answer to this question.
                  example: height_2
              conditional:
                type: object
                description: Defines when this question should be shown, based on the answer to a parent question. This can be empty when the question is always shown.
                properties:
                  parent_question_id:
                    type: string
                    description: The identifier of the parent question this question depends on.
                    example: contact_method_1
                  show_when:
                    type: object
                    description: The condition that must be met against the parent question's answer for this question to be shown.
                    properties:
                      operator:
                        type: string
                        description: The comparison operator applied to the parent question's answer.
                        example: equals
                      field:
                        type: string
                        description: The field of the parent question's answer to evaluate.
                        example: selected
                      values:
                        type: array
                        description: The values that satisfy the condition.
                        items:
                          type: string
                        example:
                          - whatsapp
              validation_rules:
                type: object
                description: Per-question validation constraints, keyed by property name within the data type's `schema_definition`. Each value is the set of validation rules applied to that property.
                additionalProperties:
                  $ref: '#/components/schemas/BookingQuestionValidationRules'
              allowed_options:
                type: array
                description: The permitted answer options for this question, when applicable.
                items:
                  type: object
                  description: A permitted answer option.
                  properties:
                    id:
                      type: string
                      description: Unique identifier for the option.
                      example: cm
                    label:
                      type: string
                      description: Human-readable label for the option.
                      example: cm
        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'
    ActivityRetrieve:
      allOf:
        - $ref: '#/components/schemas/ActivityBase'
        - $ref: '#/components/schemas/ActivityDetailedLocation'
        - type: object
          properties:
            tickets:
              $ref: '#/components/schemas/OfferPriceRetrieve'
            trader_information:
              $ref: '#/components/schemas/TraderInformation'
            offer_start:
              type: string
              format: local-date-time
              description: The start time of the activity in extended ISO 8601 format, without timezone offset.
              example: '2018-02-12T11:59:00'
            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:
                $ref: '#/components/schemas/CancelPenalty'
            hours_of_operation:
              type: array
              items:
                $ref: '#/components/schemas/HoursOfOperation'
            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
            callouts:
              type: array
              description: A list of strings of important information to know about the 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 activity.
    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.
            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'
            retrieve_voucher:
              $ref: '#/components/schemas/Link'
    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'
            booking_question_answers:
              type: array
              description: Answers to booking questions that apply to this individual traveler.
              items:
                $ref: '#/components/schemas/BookingQuestionAnswer'
    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.
    Trader:
      type: object
      description: Information about a trader involved in the activity.
      properties:
        name:
          type: string
          description: The trader name.
        address:
          $ref: '#/components/schemas/Address'
        business_register_name:
          type: string
          description: Name of the register where the trader is registered, and is related to the business_register_number.
        business_register_number:
          type: string
          description: Business registration number
        self_certification:
          type: boolean
          description: Certification that the trader has confirmed their commitment to only offer products or services that comply with the applicable rules of Union law.
        right_to_withdraw_message:
          type: string
          description: The trader right to withdraw message.
        email:
          type: string
          description: The trader email address.
        phone:
          type: string
          description: The trader phone number.
        private_host:
          type: boolean
          description: Indicates if this trader is a private host.
    TraderInformation:
      type: object
      description: Container for trader information associated with the booking.
      properties:
        traders:
          type: array
          description: List of traders involved in this activity.
          items:
            $ref: '#/components/schemas/Trader'
    AmountBase:
      type: object
      description: Monetary amount containing a string value and the currency it represents.
      properties:
        value:
          description: The value of the amount object. Decimal point in line with correct precision.
          type: string
          example: '300.00'
        currency:
          description: Currency of the amount object in ISO 4217 format.
          type: string
          pattern: ^[A-Z]{3}$
          example: USD
    Availability:
      allOf:
        - type: object
          properties:
            activities:
              type: array
              items:
                $ref: '#/components/schemas/ActivityOfferDetails'
            ticket_details:
              description: A collection of ticket details information that is shared between offers in multiple activities.
              additionalProperties:
                $ref: '#/components/schemas/TicketDetails'
    ActivitiesAttributesTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    ActivitiesCategoriesTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    ActivityContentTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    ActivityGroupsTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    ActivityOperatingHoursTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    AvailabilityTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    CalendarAvailabilityTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    CancelBookingTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    CreateBookingTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
        - price_mismatch
        - sold_out
        - bad_link
    CompletePaymentSessionTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - resource_not_found
        - service_unavailable
        - internal_server_error
    BookingTaxesAndFees:
      type: object
      description: Breakdown of taxes and fees for booking.
      properties:
        pay_at_booking:
          type: array
          description: Fees and taxes collected at the time of booking.
          items:
            $ref: '#/components/schemas/FeeAmount'
        pay_at_location:
          type: array
          description: Fees and taxes to be paid at the activity location.
          items:
            $ref: '#/components/schemas/FeeAmount'
    CalendarAvailability:
      type: object
      properties:
        activity_id:
          type: string
          description: The activity ID.
          example: '123456'
        days:
          type: array
          items:
            $ref: '#/components/schemas/Day'
    CancelPenalty:
      type: object
      properties:
        currency:
          description: Currency of the amount object in ISO 4217 format.
          type: string
          pattern: ^[A-Z]{3}$
          example: USD
        start:
          type: string
          format: local-date-time
          description: Effective date and time of cancellation penalty in extended ISO 8601 format, without timezone offset.
          example: '2025-12-12T10:00:00'
        end:
          type: string
          format: local-date-time
          description: End date and time of cancellation penalty in extended ISO 8601 format, without timezone offset.
          example: '2025-12-12T12:00:00'
        amount:
          type: string
          description: The monetary amount of the penalty.
        percent:
          type: string
          description: Percentage of total booking charged as a penalty. A thirty percent penalty would be returned as 30%.
    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
    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
        - email
      properties:
        affiliate_reference_id:
          type: string
          description: Your unique reference value. This field supports a maximum of 28 characters and must be unique. 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'
        booking_question_answers:
          type: array
          description: Answers to booking questions that apply to the overall booking.
          items:
            $ref: '#/components/schemas/BookingQuestionAnswer'
        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.
    PaymentSessionCompleteResponse:
      description: Response returned after successfully completing a PSD2 payment challenge.
      type: object
      properties:
        itinerary_id:
          type: string
          description: The itinerary ID.
        links:
          type: object
          description: A map of links for the confirmed booking.
          properties:
            retrieve:
              $ref: '#/components/schemas/Link'
    CreateResponse:
      description: Base object returned from a create activity reservation call.
      type: object
      properties:
        itinerary_id:
          type: string
          description: The itinerary ID.
        encoded_challenge_config:
          type: string
          description: Base64-encoded PSD2 challenge configuration. Present only when the payment provider requires additional authentication; use the complete_payment_session link to finalize the booking once the challenge is complete.
        links:
          type: object
          description: A map of links, including links to retrieve information on reserved activity.
          properties:
            retrieve:
              $ref: '#/components/schemas/Link'
            complete_payment_session:
              $ref: '#/components/schemas/Link'
    Day:
      type: object
      properties:
        date:
          type: string
          description: Date associated to the provided information.
          format: date
        available:
          type: boolean
          description: True if the activity is available on the date.
        from_price:
          type: string
          description: The lowest price available for the activity on this date for the most common ticket type ex. Adult, represented as a string to preserve decimal precision.
          example: '300.00'
        currency:
          type: string
          description: Currency of the from_price amount object in ISO 4217 format.
          pattern: ^[A-Z]{3}$
          example: USD
    Error:
      type: object
      properties:
        type:
          type: string
          description: The error type.
        message:
          type: string
          description: A human readable message giving details about this error.
        errors:
          type: array
          description: An array of all the actual errors that occurred.
          items:
            $ref: '#/components/schemas/ErrorIndividual'
      description: The overall class of error that occurred.
    ErrorIndividual:
      type: object
      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'
      description: An individual error.
    ExperienceContent:
      type: object
      description: An experience.
      properties:
        id:
          type: string
          description: The experience ID.
        title:
          type: string
          description: The title of the experience.
        tagline:
          type: string
          description: A short form description of the experience, usually used for marketing purposes.
        description:
          type: string
          description: The long form description of the experience.
        media:
          type: object
          description: A collection of images and videos that are associated with this experience.
          properties:
            images:
              type: array
              items:
                $ref: '#/components/schemas/Media'
            videos:
              type: array
              items:
                $ref: '#/components/schemas/Media'
        location:
          type: array
          description: A list of locations that are associated with this experience.
          items:
            $ref: '#/components/schemas/Location'
        rating:
          $ref: '#/components/schemas/StarRating'
        category_ids:
          type: array
          description: A list of categories that are associated with this experience.
          items:
            type: string
            description: A single category ID.
          example:
            - '456789'
            - '9874321'
        attribute_ids:
          type: array
          description: A list of attributes that are associated with this experience.
          items:
            type: string
            description: A single attribute ID.
          example:
            - '456789'
            - '9874321'
        activity_ids:
          type: array
          description: A list of activities that are associated with this experience.
          items:
            type: string
            description: A single activity ID.
          example:
            - '123456789'
            - '987654321'
        activity_group_ids:
          type: array
          description: |
            A list of activity groups that are associated with this experience.
            These will contain multiple activities, but are grouped together as they represent similar experiences or are otherwise linked together by the supplier.
          items:
            type: string
            description: A single activity group ID.
          example:
            - '126789'
            - '94321'
        booking_question_types:
          $ref: '#/components/schemas/BookingQuestionTypes'
    FeeAmount:
      allOf:
        - $ref: '#/components/schemas/AmountBase'
        - type: object
          properties:
            type:
              type: string
              description: The type or description of the fee or tax.
              example: Admission Fees
            billable_currency:
              description: The currency in which the fee or tax is billed. This is used when a fee or tax is billed in a different currency than the booking (ie. local fees that must be paid at the activity location).
              allOf:
                - $ref: '#/components/schemas/AmountBase'
    Field:
      type: object
      properties:
        path:
          type: string
          description: |
            The JSONPath notation to the object that contains the field with an error.
            This is only applicable to request body field errors, not query, path, or header parameters.
        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.
      description: An individual field that had an error.
    HoursOfOperation:
      type: object
      description: An 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 that the activity opens on this day of the week. Local time in HH:MM:SS format (24-hour clock).
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
          example: '01:16:00'
        end_time:
          type: string
          description: The time that the activity closes on this day of the week. Local time in HH:MM:SS format (24-hour clock).
          pattern: ^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
          example: '08:16:00'
    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.
    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'
    Media:
      type: object
      description: An individual image or video, representing content that activity owner is sharing.
      properties:
        caption:
          type: string
          description: Image caption.
        credit:
          type: string
          description: Image credit.
          example: Photo by John Doe
        links:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/Link'
          description: Contains URLs for all of the image sizes available.
    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 traveler.
          example: John
        middle_name:
          type: string
          description: The optional middle name of the traveler.
          example: George
        family_name:
          type: string
          description: The required last name of the traveler.
          example: Doe
    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:
          allOf:
            - $ref: '#/components/schemas/OfferTotals'
            - $ref: '#/components/schemas/MarketingFee'
            - $ref: '#/components/schemas/MarketingFeeEAC'
            - $ref: '#/components/schemas/GrossProfit'
    OfferPriceRetrieve:
      type: object
      description: The pricing information for the ticket values and totals.
      properties:
        price_per_ticket:
          type: array
          items:
            $ref: '#/components/schemas/PricePerTicket'
        totals:
          allOf:
            - $ref: '#/components/schemas/OfferTotals'
            - $ref: '#/components/schemas/MarketingFee'
            - $ref: '#/components/schemas/GrossProfit'
    OfferTotals:
      type: object
      description: Total for all ticket options.
      properties:
        exclusive:
          description: Base price before taxes and fees.
          allOf:
            - $ref: '#/components/schemas/AmountBase'
            - type: object
        booking_taxes_and_fees:
          allOf:
            - $ref: '#/components/schemas/BookingTaxesAndFees'
            - type: object
              description: Taxes and fees applied at booking.
        inclusive:
          description: Total due at booking. Includes exclusive price plus pay-at-booking fees.
          allOf:
            - $ref: '#/components/schemas/AmountBase'
            - type: object
        inclusive_location:
          allOf:
            - $ref: '#/components/schemas/AmountBase'
            - type: object
              description: Final total price. Includes exclusive price plus all taxes and fees from booking and at activity location.
        total_ticket_count:
          type: integer
          description: The count of tickets that are being sold for this offer.
          example: 2
    MarketingFee:
      type: object
      properties:
        marketing_fee:
          description: Provides the partner's share of gross profit according to the commercial agreement they have with Expedia Group.
          type: object
          properties:
            request_currency:
              $ref: '#/components/schemas/AmountBase'
    MarketingFeeEAC:
      type: object
      properties:
        marketing_fee_eac:
          description: Provides the partner's share of gross profit, for Expedia Affiliate Collect bookings, according to the commercial agreement they have with Expedia Group (will only be displayed when traffic profile is enabled for EAC).
          type: object
          properties:
            request_currency:
              $ref: '#/components/schemas/AmountBase'
    GrossProfit:
      type: object
      properties:
        gross_profit:
          description: The total gross profit for this ticket option.
          type: object
          properties:
            request_currency:
              $ref: '#/components/schemas/AmountBase'
    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'
    ExperienceAttributesTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    ExperienceTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    ExperiencesCategoriesTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    GuestReviewsTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    ItineraryByAffiliateReferenceTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    ItineraryByIdTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    PriceCheckTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
        - price_mismatch
        - sold_out
        - bad_link
    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 for what the cost is associated with for display.
          example: per ticket type
        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:
            exclusive:
              $ref: '#/components/schemas/AmountBase'
            booking_taxes_and_fees:
              $ref: '#/components/schemas/BookingTaxesAndFees'
            inclusive:
              $ref: '#/components/schemas/AmountBase'
            inclusive_location:
              $ref: '#/components/schemas/AmountBase'
        ticket_count:
          type: integer
          description: The count of tickets that are being sold for this offer.
          example: 2
    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'
            booking_question_answers:
              type: array
              description: Answers to booking questions that apply to this individual traveler.
              items:
                $ref: '#/components/schemas/BookingQuestionAnswer'
    StarRating:
      type: object
      properties:
        count:
          type: integer
          description: The total number of guest reviews contributing to this rating.
        overall:
          type: string
          description: The overall rating, averaged from all guest reviews. Returns a value between 1.0 and 5.0.
    ActivityContent:
      type: object
      description: An activity.
      properties:
        id:
          type: string
          description: The unique ID for the activity.
        title:
          type: string
          description: The name of the activity.
        tagline:
          type: string
          description: A short form description of the activity, usually used for marketing purposes.
        description:
          type: string
          description: The long form description of the activity.
        category_ids:
          type: array
          description: A list of categories that are associated with this activity.
          items:
            type: string
            description: A single category ID.
          example:
            - '456789'
            - '9874321'
        attribute_ids:
          type: array
          description: A list of attributes that are associated with this activity.
          items:
            type: string
            description: A single attribute ID.
          example:
            - '456789'
            - '9874321'
        media:
          type: object
          description: A collection of images and videos that are associated with this activity.
          properties:
            images:
              type: array
              items:
                $ref: '#/components/schemas/Media'
            videos:
              type: array
              items:
                $ref: '#/components/schemas/Media'
        location:
          type: array
          description: A list of locations that are associated with this activity. This is the starting point for the activity and can be used to determine the general area of the activity.
          items:
            $ref: '#/components/schemas/Location'
        ratings:
          type: object
          properties:
            supplier:
              type: object
              description: Average rating of the supplier across all of their activities.
              properties:
                rating:
                  type: string
                  description: Average rating from 1.0 to 5.0.
            guest:
              type: object
              properties:
                count:
                  type: integer
                  description: The total number of guest reviews contributing to this rating.
                overall:
                  type: string
                  description: The overall rating for the activity, averaged from all guest reviews. Returns a value between 1.0 and 5.0.
                value:
                  type: string
                  description: The rating for how much value the activity provided for the cost, averaged from all guest reviews. Returns a value between 1.0 and 5.0.
        inclusions:
          type: array
          description: A list of strings that represent amenities and features supported by this activity.
          items:
            type: string
            example: Entry to the roof
        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
        know_before_you_go:
          type: array
          description: A list of strings of important information to know about the activity before booking.
          items:
            type: string
            example: Registration Instructions will be found on the Voucher after completing purchase
        know_before_you_book:
          type: array
          description: A list of strings of important information to know about the activity before booking.
          items:
            type: string
            example: You must be 18 years or older to participate in this activity.
        redemption_instructions:
          type: string
          description: Text instructions on how to redeem this specific activity.
        duration:
          type: string
          description: The amount of time that this activity takes, formatted to ISO-8601 standards for duration (https://en.wikipedia.org/wiki/ISO_8601#Durations).
          example: PT1H18M
        cancellable:
          type: boolean
          description: Whether or not this activity can be cancelled after booking.
        cancellation_policy:
          type: object
          description: The cancellation policy for this activity.
          properties:
            type:
              type: string
              enum:
                - before_start_time
                - before_start_date
                - noncancellable
            hours:
              type: integer
              description: |
                If the cancellation policy is before_start_time, this field represents how many hours before the start time of the activity that a cancellation can be made without penalty.
                If the cancellation policy is before_start_date, this field represents how many hours before the start date of the activity that a cancellation can be made without penalty.
                If the cancellation policy is noncancellable, this field is not applicable.
        suppliers:
          type: array
          description: A list of suppliers that offer this activity.
          items:
            type: object
            properties:
              id:
                type: string
                description: The unique ID for the supplier.
              name:
                type: string
                description: The name of the supplier.
              address:
                $ref: '#/components/schemas/Address'
              phone:
                type: string
                description: Phone number for the supplier
              email:
                type: string
                description: Email for the supplier
        booking_question_types:
          $ref: '#/components/schemas/BookingQuestionTypes'
    ActivityGroupContent:
      type: object
      description: An activity group.
      properties:
        id:
          type: string
          description: The unique ID for the activity group.
        title:
          type: string
          description: The title of the activity group.
        tagline:
          type: string
          description: A short form description of the activity group, usually used for marketing purposes.
        description:
          type: string
          description: The long form description of the activity group.
        media:
          type: object
          description: A collection of images and videos that are associated with this activity group.
          properties:
            images:
              type: array
              items:
                $ref: '#/components/schemas/Media'
            videos:
              type: array
              items:
                $ref: '#/components/schemas/Media'
        location:
          type: array
          description: A list of locations that are associated with this activity group.
          items:
            $ref: '#/components/schemas/Location'
        rating:
          $ref: '#/components/schemas/StarRating'
        category_ids:
          type: array
          description: A list of categories that are associated with this activity group.
          items:
            type: string
            description: A single category ID.
          example:
            - '456789'
            - '9874321'
        attribute_ids:
          type: array
          description: A list of attributes that are associated with this activity group.
          items:
            type: string
            description: A single attribute ID.
          example:
            - '456789'
            - '9874321'
        activity_ids:
          type: array
          description: A list of activities that are associated with this activity group.
          items:
            type: string
            description: A single activity ID.
          example:
            - '123456789'
            - '987654321'
        booking_question_types:
          $ref: '#/components/schemas/BookingQuestionTypes'
    RegionActivitiesTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    RegionActivityGroupsTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    RegionExperiencesTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - service_unavailable
        - internal_server_error
    VoucherTestHeaderValue:
      type: string
      enum:
        - standard
        - invalid_input
        - voucher_not_found
        - service_unavailable
        - internal_server_error
    TicketDetails:
      type: object
      description: The information associated with a ticket of an offer of an activity.
      properties:
        id:
          type: string
          description: The unique ID for the ticket type.
        type:
          type: string
          description: The generic type of ticket, examples include ("adult", "youth" "child", "infant", "senior", "family", "regular", "reduced").
        label:
          type: string
          description: The localized name of the ticket type.
        description:
          type: string
          description: The long form description of the ticket type, including the restrictions.
        available_languages:
          type: array
          description: The languages that are supported by this ticket type.
          items:
            type: string
            format: ISO 639
          example:
            - de
            - en
            - es
        max_visitors_per_ticket:
          type: integer
          description: The number of visitors included in the cost of a ticket.
        valid_with_ticket_ids:
          type: array
          description: This ticket can only be booked in combination with at least one of the listed ticket_ids. A common use case is infant tickets which require an adult ticket.
          items:
            type: string
    TicketPricing:
      type: object
      description: The pricing information of a ticket.
      properties:
        min_ticket_count:
          type: integer
          description: The minimum number of tickets that this pricing object allows for this price.
        max_ticket_count:
          type: integer
          description: The maximum number 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:
          allOf:
            - $ref: '#/components/schemas/MarketingFee'
            - $ref: '#/components/schemas/MarketingFeeEAC'
            - $ref: '#/components/schemas/GrossProfit'
            - type: object
              properties:
                exclusive:
                  allOf:
                    - $ref: '#/components/schemas/AmountBase'
                    - type: object
                      description: Base price before taxes and fees.
                booking_taxes_and_fees:
                  allOf:
                    - $ref: '#/components/schemas/BookingTaxesAndFees'
                    - type: object
                      description: Taxes and fees applied at booking.
                inclusive:
                  allOf:
                    - $ref: '#/components/schemas/AmountBase'
                    - type: object
                      description: Total due at booking. Includes exclusive price plus pay-at-booking fees.
                inclusive_location:
                  allOf:
                    - $ref: '#/components/schemas/AmountBase'
                    - type: object
                      description: Final total price. Includes exclusive price plus all taxes and fees from booking and at activity location.
    TicketPriceSummary:
      type: object
      description: Object that gives the review information for tickets.
      properties:
        id:
          type: string
          description: A unique ticket ID that maps to the ticket details in the response.
          example: '229281'
        price_per_ticket:
          type: array
          items:
            $ref: '#/components/schemas/TicketPricing'
    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 traveler.
              example: John
            middle_name:
              type: string
              description: The optional middle name of the traveler.
              example: George
            family_name:
              type: string
              description: The required last name of the traveler.
              example: Doe
        ticket_id:
          type: string
          description: The ticket ID, which is defined in the details request.
    TravelerBase:
      type: object
      required:
        - ticket_id
      properties:
        ticket_id:
          type: string
          description: The ticket ID as defined in the details request.
    BookingQuestionAnswer:
      type: object
      description: An answer to a booking question.
      properties:
        question_id:
          type: string
          description: The identifier of the booking question being answered.
          example: height_1
        answer:
          type: object
          description: The answer provided for the booking question. This is where you would use the schema specified by the `/experiences/booking-questions/data-types` endpoint.
          additionalProperties: true
    BookingQuestionTypes:
      type: array
      description: The booking question data types that may be required when booking.
      items:
        type: string
      example:
        - text
        - date
        - address
        - email
        - phone
  examples:
    region-experiences:
      value:
        - '1001039038'
        - '2836274'
        - '4459821'
    bad-request-error:
      value:
        type: invalid_input
        message: An invalid request was sent in, please check the nested errors for details.
        errors:
          - type: 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.
    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.
    unauthorized-error:
      value:
        type: request_unauthorized
        message: Your request could not be authorized.
    not-acceptable-error:
      value:
        type: not_acceptable
        message: An invalid request was sent in, please check the nested errors for details.
        errors:
          - type: invalid_header_value
            message: Accept must be application/json.
            fields:
              - name: Accept
                type: header
                value: application/json, text/plain, */*
    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.
    region-activity-groups:
      value:
        - '126789'
        - '94321'
    region-activities:
      value:
        - '1001039038'
        - '2836274'
        - '4459821'
        - '7823456'
        - '9182734'
    experience-content-standard:
      value:
        - id: '78234'
          title: Ancient Rome Walking Tour & Colosseum Experience
          tagline: Step back in time and explore the wonders of Ancient Rome with an expert local guide.
          description: Discover the glory of Ancient Rome on this immersive walking tour. Your expert guide will lead you through the iconic Colosseum, the Roman Forum, and Palatine Hill, bringing centuries of history to life with vivid storytelling. Learn about gladiatorial combat, Roman politics, and daily life in the ancient city. This tour includes skip-the-line access to the Colosseum, ensuring you spend more time exploring and less time waiting.
          media:
            images:
              - caption: The Colosseum at sunrise
                credit: Photo by Marco Rossi
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/78234/colosseum-sunrise.jpg
                  350px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/78234/colosseum-sunrise.jpg?impolicy=resizecrop&rw=350&rh=197
                  1000px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/78234/colosseum-sunrise.jpg?impolicy=resizecrop&rw=1000&rh=563
              - caption: The Roman Forum
                credit: Photo by Lucia Bianchi
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/78234/roman-forum.jpg
                  350px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/78234/roman-forum.jpg?impolicy=resizecrop&rw=350&rh=197
                  1000px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/78234/roman-forum.jpg?impolicy=resizecrop&rw=1000&rh=563
            videos:
              - caption: Ancient Rome Tour Preview
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/78234/tour-preview.mp4
          location:
            - address:
                line_1: Piazza del Colosseo, 1
                city: Rome
                state_province_code: RM
                postal_code: '00184'
                country_code: IT
              coordinate:
                longitude: 12.4924
                latitude: 41.8902
          rating:
            overall: '4.9'
            count: 153
          category_ids:
            - '456789'
            - '9874321'
          attribute_ids:
            - '1122334'
          activity_ids:
            - '123456789'
            - '987654321'
          activity_group_ids:
            - '126789'
            - '94321'
          booking_question_types:
            - text
            - date
            - address
            - email
            - phone
        - id: '91056'
          title: Bangkok Street Food & Temple Tour
          tagline: Taste your way through Bangkok's vibrant street food scene and visit stunning temples.
          description: Explore the culinary heart of Bangkok on this guided street food and temple tour. Sample authentic Thai dishes at local markets, visit the stunning Wat Pho and Wat Arun temples, and cruise along the Chao Phraya River. Your knowledgeable guide will share the stories behind each dish and temple, giving you a deep appreciation for Thai culture and cuisine.
          media:
            images:
              - caption: Bangkok street food market
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/91056/street-food-market.jpg
                  350px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/91056/street-food-market.jpg?impolicy=resizecrop&rw=350&rh=197
              - caption: Wat Arun temple at sunset
                credit: Photo by Somchai P.
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/91056/wat-arun-sunset.jpg
                  350px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/91056/wat-arun-sunset.jpg?impolicy=resizecrop&rw=350&rh=197
            videos: []
          location:
            - address:
                line_1: 2 Sanamchai Rd
                city: Bangkok
                postal_code: '10200'
                country_code: TH
              coordinate:
                longitude: 100.4933
                latitude: 13.7463
          rating:
            overall: '3.8'
            count: 123
          category_ids:
            - '445566'
          attribute_ids:
            - '778899'
          activity_ids:
            - '822672'
            - '822673'
            - '822674'
          activity_group_ids:
            - '55432'
          booking_question_types:
            - text
            - date
            - address
            - email
            - phone
    activity-groups-content-standard:
      value:
        - id: '126789'
          title: Rome Colosseum Tour Bundle
          tagline: Explore the Colosseum with a variety of guided tour options.
          description: This product group offers multiple ways to experience the iconic Roman Colosseum. Choose from guided walking tours, skip-the-line access, underground exploration, and combined packages that include the Roman Forum and Palatine Hill.
          media:
            images:
              - caption: Colosseum exterior at sunrise
                credit: Photo by Marco Rossi
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/126789/colosseum-exterior.jpg
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/126789/colosseum-exterior.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/126789/colosseum-exterior.jpg?impolicy=resizecrop&rw=500&rh=281
              - caption: Inside the Colosseum arena floor
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/126789/colosseum-interior.jpg
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/126789/colosseum-interior.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/126789/colosseum-interior.jpg?impolicy=resizecrop&rw=500&rh=281
            videos: []
          location:
            - address:
                line_1: Piazza del Colosseo, 1
                city: Rome
                state_province_code: RM
                postal_code: '00184'
                country_code: IT
              coordinate:
                longitude: 12.49223
                latitude: 41.89021
          rating:
            overall: '4.8'
            count: 1523
          category_ids:
            - '456789'
          attribute_ids:
            - '9874321'
          activity_ids:
            - '123456789'
            - '987654321'
            - '555666777'
          booking_question_types:
            - text
            - date
            - address
            - email
            - phone
        - id: '94321'
          title: Barcelona Sagrada Familia Experiences
          tagline: Discover Gaudi's masterpiece with flexible tour options.
          description: A collection of products centered around the Sagrada Familia basilica. Options include self-guided audio tours, guided small-group tours, and combination tickets with Park Guell.
          media:
            images:
              - caption: Sagrada Familia facade
                credit: Photo by Elena Garcia
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/94321/sagrada-familia-facade.jpg
                  72px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/94321/sagrada-familia-facade.jpg?impolicy=resizecrop&rw=72&rh=41
                  500px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/94321/sagrada-familia-facade.jpg?impolicy=resizecrop&rw=500&rh=281
            videos: []
          location:
            - address:
                line_1: Carrer de Mallorca, 401
                city: Barcelona
                state_province_code: B
                postal_code: '08013'
                country_code: ES
              coordinate:
                longitude: 2.17435
                latitude: 41.40363
          rating:
            overall: '4.0'
            count: 13
          category_ids:
            - '456789'
          attribute_ids:
            - '1122334'
          activity_ids:
            - '334455667'
            - '778899001'
          booking_question_types:
            - text
            - date
            - address
            - email
            - phone
    activity-content-standard:
      value:
        - id: '1001039038'
          title: Downtown Los Angeles Puzzling Adventure
          tagline: Solve clues and explore downtown LA on this self-guided puzzling adventure.
          description: Discover hidden gems in downtown Los Angeles as you solve puzzles and complete challenges on this unique self-guided adventure. Walk through historic neighborhoods, uncover street art, and learn fascinating facts about the city's history. Perfect for families, friends, and team-building outings.
          category_ids:
            - '456789'
            - '9874321'
          attribute_ids:
            - '1122334'
          media:
            images:
              - caption: Puzzling Adventure
                credit: Photo by Jane Doe
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/1001039038/dd858f45-1e37-4965-be50-27ccff69e0ae.jpg
                  350px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/1001039038/dd858f45-1e37-4965-be50-27ccff69e0ae.jpg?impolicy=resizecrop&rw=350&rh=197
              - caption: Downtown LA street view
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/1001039038/8eb3df6f-b5a7-4b0c-989a-f3092d084a7f.jpg
                  350px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/1001039038/8eb3df6f-b5a7-4b0c-989a-f3092d084a7f.jpg?impolicy=resizecrop&rw=350&rh=197
            videos: []
          location:
            - address:
                line_1: 300 S Grand Ave
                city: Los Angeles
                state_province_code: CA
                postal_code: '90071'
                country_code: US
              coordinate:
                longitude: -118.2403994
                latitude: 34.0512226
          ratings:
            supplier:
              rating: '4.3'
            guest:
              count: 42
              overall: '4.5'
              value: '4.2'
          inclusions:
            - Self-guided puzzle booklet
            - Access to mobile app with hints
            - Completion certificate
          exclusions:
            - Food and drinks
            - Transportation to starting point
          know_before_you_go:
            - Registration Instructions will be found on the Voucher after completing purchase
            - Activity is weather dependent
          redemption_instructions: Present your voucher at the starting point kiosk at 300 S Grand Ave. You will receive your puzzle booklet and instructions to begin the adventure.
          duration: PT2H30M
          suppliers:
            - id: '90210'
              name: LA Adventure Co.
              address:
                line_1: 300 S Grand Ave
                city: Los Angeles
                state_province_code: CA
                postal_code: '90071'
                country_code: US
              phone: '+31628367332'
              email: test_contact_info_233@tiqets.com
          booking_question_types:
            - text
            - date
            - address
            - email
            - phone
        - id: '2836274'
          title: Sorrento Tour, Pizza School, Extra Virgin Olive Oil Tasting
          tagline: Experience the best of Sorrento with a guided tour, hands-on pizza making, and olive oil tasting.
          description: Explore the charming streets of Sorrento on a guided walking tour, then learn to make authentic Neapolitan pizza from a local chef. Finish with a tasting of premium extra virgin olive oils produced in the Sorrento Peninsula. A perfect half-day activity for food lovers and culture enthusiasts.
          category_ids:
            - '223344'
          attribute_ids:
            - '556677'
          media:
            images:
              - caption: Pizza school and lunch in Sorrento
                credit: Photo by Marco Rossi
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/0a04c8e8-9deb-4feb-954d-68d124250266.jpg
                  350px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/0a04c8e8-9deb-4feb-954d-68d124250266.jpg?impolicy=resizecrop&rw=350&rh=197
              - caption: Sorrento coastal view
                links:
                  default:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/c6ffd81c-e939-4dac-b14a-ae1cad1321f7.jpg
                  350px:
                    method: GET
                    href: https://media.int.expedia.com/int/localexpert/2836274/c6ffd81c-e939-4dac-b14a-ae1cad1321f7.jpg?impolicy=resizecrop&rw=350&rh=197
            videos: []
          location:
            - address:
                line_1: Piazza Tasso
                city: Sorrento
                postal_code: '80067'
                country_code: IT
              coordinate:
                longitude: 14.41423
                latitude: 40.6148
          ratings:
            supplier:
              rating: '4.7'
            guest:
              count: 128
              overall: '4.8'
              value: '4.6'
          inclusions:
            - Professional English-speaking guide
            - Pizza-making class with ingredients
            - Olive oil tasting session
            - Hotel pickup and drop-off from Sorrento
          exclusions:
            - Personal expenses
            - Gratuities
            - Any item not mentioned in inclusions
          know_before_you_go:
            - Not wheelchair accessible
            - Comfortable walking shoes recommended
            - 'Minimum age requirement: 3 years'
          redemption_instructions: Meet your guide at Piazza Tasso in front of the Fauno Bar at the scheduled departure time. Please show your voucher on your mobile device or printed copy.
          duration: PT5H
          cancellable: true
          cancellation_policy:
            type: before_start_date
            hours: 48
          suppliers:
            - id: '40618'
              name: Sorrento Food Tours
              address:
                line_1: Via San Cesareo, 52
                city: Sorrento
                postal_code: '80067'
                country_code: IT
              phone: '+390818781234'
              email: info@sorrentofoodtours.it
          booking_question_types:
            - text
            - date
            - address
            - email
            - phone
    operating-hours-standard:
      value:
        - date: '2026-05-01'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
            - area_name: Gardens
              open: '08:30'
              close: '18:00'
              last_admission: '17:30'
            - area_name: Museum
              open: '10:00'
              close: '17:00'
              last_admission: '16:30'
        - date: '2026-05-02'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
            - area_name: Gardens
              open: '08:30'
              close: '18:00'
              last_admission: '17:30'
        - date: '2026-05-03'
          areas:
            - area_name: General Admission
              open: '10:00'
              close: '20:00'
              last_admission: '19:00'
            - area_name: Gardens
              open: '09:00'
              close: '21:00'
              last_admission: '20:00'
            - area_name: Night Tour
              open: '18:00'
              close: '22:00'
              last_admission: '21:00'
        - date: '2026-05-04'
          areas:
            - area_name: General Admission
              open: '10:00'
              close: '20:00'
              last_admission: '19:00'
            - area_name: Gardens
              open: '09:00'
              close: '21:00'
              last_admission: '20:00'
        - date: '2026-05-05'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
        - date: '2026-05-06'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
            - area_name: Gardens
              open: '08:30'
              close: '18:00'
              last_admission: '17:30'
        - date: '2026-05-07'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
            - area_name: Gardens
              open: '08:30'
              close: '18:00'
              last_admission: '17:30'
            - area_name: Museum
              open: '10:00'
              close: '17:00'
              last_admission: '16:30'
        - date: '2026-05-08'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '21:00'
              last_admission: '20:00'
            - area_name: Gardens
              open: '08:30'
              close: '22:00'
              last_admission: '21:30'
            - area_name: Museum
              open: '10:00'
              close: '20:00'
              last_admission: '19:30'
        - date: '2026-05-09'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
            - area_name: Gardens
              open: '08:30'
              close: '18:00'
              last_admission: '17:30'
        - date: '2026-05-10'
          areas:
            - area_name: General Admission
              open: '10:00'
              close: '20:00'
              last_admission: '19:00'
            - area_name: Gardens
              open: '09:00'
              close: '21:00'
              last_admission: '20:00'
            - area_name: Special Event Area
              open: '14:00'
              close: '23:00'
              last_admission: '22:00'
        - date: '2026-05-11'
          areas:
            - area_name: General Admission
              open: '10:00'
              close: '20:00'
              last_admission: '19:00'
            - area_name: Gardens
              open: '09:00'
              close: '21:00'
              last_admission: '20:00'
        - date: '2026-05-12'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
        - date: '2026-05-13'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
            - area_name: Gardens
              open: '08:30'
              close: '18:00'
              last_admission: '17:30'
        - date: '2026-05-14'
          areas:
            - area_name: General Admission
              open: '09:00'
              close: '17:00'
              last_admission: '16:00'
            - area_name: Gardens
              open: '08:30'
              close: '18:00'
              last_admission: '17:30'
            - area_name: Museum
              open: '10:00'
              close: '17:00'
              last_admission: '16:30'
    experiences-categories-standard:
      value:
        - id: '1'
          name: Outdoor Activities
          type: Adventure
        - id: '2'
          name: Water Activities
          type: Adventure
        - id: '3'
          name: Cruises & Sailing
          type: Sightseeing
    experiences-attributes-standard:
      value:
        - id: '1'
          name: Morning
          type: Best time to visit
        - id: '2'
          name: Outdoor
          type: Space
        - id: '3'
          name: Hidden Gem
          type: Popularity
    activities-categories-standard:
      value:
        - id: '1'
          name: Bungy Jumping
          type: Outdoor Activities
        - id: '2'
          name: Scuba Diving
          type: Water Activities
        - id: '3'
          name: Rafting
          type: Water Activities
    activities-attributes-standard:
      value:
        - id: '1'
          name: Nightlife Seekers
          type: Interests
        - id: '2'
          name: Foodies
          type: Interests
        - id: '3'
          name: Castles
          type: History & Culture
    guest-reviews-standard:
      value:
        - reviewer_name: Sarah M.
          rating: '5.0'
          text: Absolutely amazing experience! Our guide was incredibly knowledgeable about the history and culture. The small group size made it feel very personal. Highly recommend this tour to anyone visiting Bangkok.
          date_submitted: '2025-03-15'
          source: Expedia Verified Guest
        - reviewer_name: James T.
          rating: '4.0'
          text: Great tour overall. The tuk-tuk ride through the streets at night was thrilling and the dinner was delicious. Only downside was the pick-up was about 15 minutes late. Otherwise a fantastic evening.
          date_submitted: '2025-02-28'
          source: Expedia Verified Guest
        - reviewer_name: Maria L.
          rating: '4.5'
          text: We had an unforgettable night exploring the temples and markets. The street food stops were a highlight. Our guide spoke excellent English and was very accommodating with our requests.
          date_submitted: '2025-01-10'
          source: Tiqets
        - reviewer_name: David K.
          rating: '3.5'
          text: The tour was enjoyable but felt a bit rushed at some stops. Would have liked more time at the night market. The dinner portion was excellent though and the tuk-tuk driver was very friendly.
          date_submitted: '2024-12-22'
          source: Expedia Verified Guest
        - reviewer_name: Aiko N.
          rating: '5.0'
          text: Perfect way to spend an evening in Bangkok. The route was well planned and we got to see parts of the city we never would have found on our own. The food was incredible and our guide made the whole experience come alive.
          date_submitted: '2024-11-05'
          source: Expedia Verified Guest
    activity-not-found:
      value:
        type: resource_not_found
        message: Activity was not found with provided request.
    availability-standard:
      value:
        activities:
          - id: '1001039038'
            dates:
              - date: '2025-06-15'
                options:
                  - start_time: '09:00'
                    max_tickets_per_order: 10
                    min_tickets_per_order: 1
                    tickets:
                      - id: '2378296'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 6
                            strikethrough:
                              inclusive:
                                value: '34.99'
                                currency: USD
                            totals:
                              exclusive:
                                value: '34.99'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking: []
                                pay_at_location: []
                              inclusive:
                                value: '34.99'
                                currency: USD
                              inclusive_location:
                                value: '34.99'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                      - id: '3013088'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 6
                            strikethrough:
                              inclusive:
                                value: '24.99'
                                currency: USD
                            totals:
                              exclusive:
                                value: '24.99'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking: []
                                pay_at_location: []
                              inclusive:
                                value: '24.99'
                                currency: USD
                              inclusive_location:
                                value: '24.99'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                    links:
                      price_check:
                        method: GET
                        href: /v2/activities/products/1001039038/price-check?token=QldfUVRbYFoIB1IGCAEKX10IVA5YCl0
                  - start_time: '14:00'
                    max_tickets_per_order: 8
                    min_tickets_per_order: 1
                    tickets:
                      - id: '2378296'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 6
                            strikethrough:
                              inclusive:
                                value: '34.99'
                                currency: USD
                            totals:
                              exclusive:
                                value: '34.99'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking: []
                                pay_at_location: []
                              inclusive:
                                value: '34.99'
                                currency: USD
                              inclusive_location:
                                value: '34.99'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                      - id: '3013088'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 6
                            strikethrough:
                              inclusive:
                                value: '24.99'
                                currency: USD
                            totals:
                              exclusive:
                                value: '24.99'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking: []
                                pay_at_location: []
                              inclusive:
                                value: '24.99'
                                currency: USD
                              inclusive_location:
                                value: '24.99'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                    links:
                      price_check:
                        method: GET
                        href: /v2/activities/products/1001039038/price-check?token=RVhfUlRbYFoIB1IGD1EKXV0IVA5YCl0
                booking_taxes_and_fees:
                  pay_at_booking: []
                  pay_at_location: []
              - date: '2025-06-16'
                options:
                  - start_time: '09:00'
                    max_tickets_per_order: 10
                    min_tickets_per_order: 1
                    tickets:
                      - id: '2378296'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 6
                            strikethrough:
                              inclusive:
                                value: '34.99'
                                currency: USD
                            totals:
                              exclusive:
                                value: '34.99'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking: []
                                pay_at_location: []
                              inclusive:
                                value: '34.99'
                                currency: USD
                              inclusive_location:
                                value: '34.99'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                      - id: '3013088'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 6
                            strikethrough:
                              inclusive:
                                value: '24.99'
                                currency: USD
                            totals:
                              exclusive:
                                value: '24.99'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking: []
                                pay_at_location: []
                              inclusive:
                                value: '24.99'
                                currency: USD
                              inclusive_location:
                                value: '24.99'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                    links:
                      price_check:
                        method: GET
                        href: /v2/activities/products/1001039038/price-check?token=SVhfUlRbYFoIB1IGCQEKXV0IVA5YCl0
                booking_taxes_and_fees:
                  pay_at_booking: []
                  pay_at_location: []
          - id: '2836274'
            dates:
              - date: '2025-06-15'
                options:
                  - start_time: '08:30'
                    max_tickets_per_order: 15
                    min_tickets_per_order: 2
                    tickets:
                      - id: '4521890'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 10
                            strikethrough:
                              inclusive:
                                value: '294.18'
                                currency: USD
                            totals:
                              exclusive:
                                value: '294.18'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking:
                                  - type: Admission Fees
                                    value: '10.00'
                                    currency: USD
                                pay_at_location:
                                  - type: Fuel Charges
                                    value: '15.50'
                                    currency: USD
                                    billable_currency:
                                      value: '10.50'
                                      currency: EUR
                              inclusive:
                                value: '304.18'
                                currency: USD
                              inclusive_location:
                                value: '319.68'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                      - id: '4521891'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 10
                            strikethrough:
                              inclusive:
                                value: '147.09'
                                currency: USD
                            totals:
                              exclusive:
                                value: '147.09'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking:
                                  - type: Admission Fees
                                    value: '5.00'
                                    currency: USD
                                pay_at_location:
                                  - type: Fuel Charges
                                    value: '7.75'
                                    currency: USD
                                    billable_currency:
                                      value: '6.50'
                                      currency: EUR
                              inclusive:
                                value: '152.09'
                                currency: USD
                              inclusive_location:
                                value: '159.84'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                      - id: '4521892'
                        price_per_ticket:
                          - min_ticket_count: 1
                            max_ticket_count: 10
                            strikethrough:
                              inclusive:
                                value: '0.0'
                                currency: USD
                            totals:
                              exclusive:
                                value: '0.00'
                                currency: USD
                              booking_taxes_and_fees:
                                pay_at_booking: []
                                pay_at_location: []
                              inclusive:
                                value: '0.00'
                                currency: USD
                              inclusive_location:
                                value: '0.00'
                                currency: USD
                              marketing_fee:
                                request_currency:
                                  value: '5.31'
                                  currency: USD
                              marketing_fee_eac:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                              gross_profit:
                                request_currency:
                                  value: '5.29'
                                  currency: USD
                    links:
                      price_check:
                        method: GET
                        href: /v2/activities/products/2836274/price-check?token=TVhfUlRbYFoIB1IGCQEKXV0IVA5YCl0
                booking_taxes_and_fees:
                  pay_at_booking:
                    - type: Admission Fees
                      value: '15.00'
                      currency: USD
                  pay_at_location:
                    - type: Fuel Charges
                      value: '23.25'
                      currency: USD
                      billable_currency:
                        value: '19.50'
                        currency: EUR
        ticket_details:
          '2378296':
            id: '2378296'
            type: adult
            label: Adult
            description: Ages 11-80
            available_languages:
              - en
              - es
              - fr
            max_visitors_per_ticket: 1
            valid_with_ticket_ids: []
          '3013088':
            id: '3013088'
            type: child
            label: Child
            description: Ages 3-10
            available_languages:
              - en
              - es
              - fr
            max_visitors_per_ticket: 1
            valid_with_ticket_ids:
              - '2378296'
          '4521890':
            id: '4521890'
            type: adult
            label: Adult
            description: Ages 18-65
            available_languages:
              - en
              - it
            max_visitors_per_ticket: 1
            valid_with_ticket_ids: []
          '4521891':
            id: '4521891'
            type: child
            label: Child
            description: Ages 3-17
            available_languages:
              - en
              - it
            max_visitors_per_ticket: 1
            valid_with_ticket_ids:
              - '4521890'
          '4521892':
            id: '4521892'
            type: infant
            label: Infant
            description: Ages 0-2. Must be accompanied by an adult.
            available_languages:
              - en
              - it
            max_visitors_per_ticket: 1
            valid_with_ticket_ids:
              - '4521890'
    calendar-availability-standard:
      value:
        - activity_id: '1001039038'
          days:
            - date: '2025-06-15'
              available: true
              from_price: '295.00'
              currency: USD
            - date: '2025-06-16'
              available: true
              from_price: '295.00'
              currency: USD
            - date: '2025-06-17'
              available: false
            - date: '2025-06-18'
              available: true
              from_price: '310.00'
              currency: USD
            - date: '2025-06-19'
              available: true
              from_price: '310.00'
              currency: USD
            - date: '2025-06-20'
              available: true
              from_price: '325.00'
              currency: USD
            - date: '2025-06-21'
              available: true
              from_price: '325.00'
              currency: USD
            - date: '2025-06-22'
              available: false
            - date: '2025-06-23'
              available: true
              from_price: '300.00'
              currency: USD
            - date: '2025-06-24'
              available: true
              from_price: '300.00'
              currency: USD
            - date: '2025-06-25'
              available: true
              from_price: '315.00'
              currency: USD
            - date: '2025-06-26'
              available: true
              from_price: '315.00'
              currency: USD
            - date: '2025-06-27'
              available: true
              from_price: '320.00'
              currency: USD
            - date: '2025-06-28'
              available: true
              from_price: '320.00'
              currency: USD
        - activity_id: '2836274'
          days:
            - date: '2025-06-15'
              available: true
              from_price: '72.00'
              currency: USD
            - date: '2025-06-16'
              available: true
              from_price: '72.00'
              currency: USD
            - date: '2025-06-17'
              available: true
              from_price: '75.00'
              currency: USD
            - date: '2025-06-18'
              available: true
              from_price: '75.00'
              currency: USD
            - date: '2025-06-19'
              available: false
            - date: '2025-06-20'
              available: false
            - date: '2025-06-21'
              available: true
              from_price: '85.00'
              currency: USD
            - date: '2025-06-22'
              available: true
              from_price: '85.00'
              currency: USD
            - date: '2025-06-23'
              available: true
              from_price: '78.50'
              currency: USD
            - date: '2025-06-24'
              available: true
              from_price: '78.50'
              currency: USD
            - date: '2025-06-25'
              available: true
              from_price: '80.00'
              currency: USD
            - date: '2025-06-26'
              available: true
              from_price: '80.00'
              currency: USD
            - date: '2025-06-27'
              available: false
            - date: '2025-06-28'
              available: true
              from_price: '74.00'
              currency: USD
    price-check-standard:
      value:
        status: available
        offer_pricing:
          price_per_ticket:
            - ticket:
                id: '189894'
                type: adult
                label: Adult
                description: Ages 19-99
              scope: per ticket type
              strikethrough:
                inclusive:
                  value: '23.58'
                  currency: USD
              ticket_total:
                exclusive:
                  value: '23.58'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking:
                    - type: booking_fee_excluding_vat
                      value: '3.86'
                      currency: USD
                    - type: booking_fee_vat
                      value: '0.84'
                      currency: USD
                  pay_at_location: []
                inclusive:
                  value: '28.28'
                  currency: USD
              ticket_count: 2
            - ticket:
                id: '189895'
                type: child
                label: Child
                description: Ages 0-18
              scope: per ticket type
              strikethrough:
                inclusive:
                  value: '5.89'
                  currency: USD
              ticket_total:
                exclusive:
                  value: '5.89'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking: []
                  pay_at_location: []
                inclusive:
                  value: '5.89'
                  currency: USD
              ticket_count: 1
          totals:
            exclusive:
              value: '29.47'
              currency: USD
            booking_taxes_and_fees:
              pay_at_booking:
                - type: booking_fee_excluding_vat
                  value: '3.86'
                  currency: USD
                - type: booking_fee_vat
                  value: '0.84'
                  currency: USD
              pay_at_location: []
            inclusive:
              value: '34.17'
              currency: USD
            inclusive_location:
              value: '34.17'
              currency: USD
            total_ticket_count: 3
            marketing_fee:
              request_currency:
                value: '5.31'
                currency: USD
            marketing_fee_eac:
              request_currency:
                value: '5.29'
                currency: USD
            gross_profit:
              request_currency:
                value: '5.29'
                currency: USD
        redemption_instructions: Your audio guide awaits at the location.
        terms_and_conditions: |-
          Strollers, trolleys, and suitcases are prohibited in the park.

          Keep in mind you need to arrive 20 minutes before start.
        booking_questions:
          - id: height_1
            type: measurement
            question: What is your height?
            description: Required for safety equipment fitting
            applies_to: per_traveler
            ticket_ids:
              - '189894'
              - '189895'
            allowed_options:
              - id: in
                label: in
              - id: cm
                label: cm
            validation_rules:
              value:
                min_value: 50
                max_value: 250
          - id: weight_1
            type: measurement
            question: What is your weight?
            description: Required for zipline weight limits
            applies_to: per_traveler
            ticket_ids:
              - '189894'
              - '189895'
            allowed_options:
              - id: lb
                label: lb
              - id: kg
                label: kg
        links:
          payment:
            method: POST
            href: /v2/payments?token=GjplNgQ2YWBzLmZTBQQJUgpdb2K1MPfv
          create:
            method: POST
            href: /v2/itineraries/activity?token=Oj8BVAQMAwEPdmtQBAQGSAhQGFIBI2oJX1wJCQ8EUxpkZDUZMAhQTQVQC2dhNXcMPABbSTFmKWo7P1MMC14PBiY3Bmk6OTZCUgtTDUAmYyY5azg_MwUBVksAQ0UnOnY5anU8OFkARwpXWgUNXUxLczt2ND8jPTUVUhBARlsURztQUkMhMiUyPi8ydAZdBERSSxhmQRBdB10TUA9RUXRhIjRvOW9jRQpbWwQjZCQybiFrN1UQDUYNBVcmam83U19QVF8WbW88PF0MVVBfJmQlOGMiaDNIWFAIQUQibDgyA18MBVoQP3Y6bAdZF1RrClc8Wl1KEF8hNnM1PDpvb1ETVAk7WlUOVydhJ2drdz4yFVQSQhFXF0NpUVMgZ3Nj1CpaTw%3D%3D
    price-check-with-trader-information:
      value:
        status: available
        offer_pricing:
          price_per_ticket:
            - ticket:
                id: '189894'
                type: adult
                label: Adult
                description: Ages 19-99
              scope: per ticket type
              strikethrough:
                inclusive:
                  value: '23.58'
                  currency: USD
              ticket_total:
                exclusive:
                  value: '23.58'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking:
                    - type: booking_fee_excluding_vat
                      value: '3.86'
                      currency: USD
                    - type: booking_fee_vat
                      value: '0.84'
                      currency: USD
                  pay_at_location: []
                inclusive:
                  value: '28.28'
                  currency: USD
              ticket_count: 2
            - ticket:
                id: '189895'
                type: child
                label: Child
                description: Ages 0-18
              scope: per ticket type
              strikethrough:
                inclusive:
                  value: '5.89'
                  currency: USD
              ticket_total:
                exclusive:
                  value: '5.89'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking: []
                  pay_at_location: []
                inclusive:
                  value: '5.89'
                  currency: USD
              ticket_count: 1
          totals:
            exclusive:
              value: '29.47'
              currency: USD
            booking_taxes_and_fees:
              pay_at_booking:
                - type: booking_fee_excluding_vat
                  value: '3.86'
                  currency: USD
                - type: booking_fee_vat
                  value: '0.84'
                  currency: USD
              pay_at_location: []
            inclusive:
              value: '34.17'
              currency: USD
            inclusive_location:
              value: '34.17'
              currency: USD
            total_ticket_count: 3
        trader_information:
          traders:
            - name: Tiqets International B.V.
              address:
                line_1: Auckland Airport
                city: Auckland
                postal_code: '2022'
                country_code: NZ
              business_register_number: '12345678'
              business_register_name: Chamber of Commerce Amsterdam
              self_certification: true
              right_to_withdraw_message: In accordance with EU regulations about consumer rights, activities services are not subject to the right of withdrawal. Supplier cancellation policy will apply.
              phone: '+31628619975'
              email: customerservice@expedia.com
              private_host: false
        redemption_instructions: Your audio guide awaits at the location.
        terms_and_conditions: |-
          Strollers, trolleys, and suitcases are prohibited in the park.

          Keep in mind you need to arrive 20 minutes before start.
        booking_questions:
          - id: height_1
            type: measurement
            question: What is your height?
            description: Required for safety equipment fitting
            applies_to: per_traveler
            ticket_ids:
              - '189894'
              - '189895'
            allowed_options:
              - id: in
                label: in
              - id: cm
                label: cm
          - id: weight_1
            type: measurement
            question: What is your weight?
            description: Required for zipline weight limits
            applies_to: per_traveler
            ticket_ids:
              - '189894'
              - '189895'
            allowed_options:
              - id: lb
                label: lb
              - id: kg
                label: kg
        links:
          payment:
            method: POST
            href: /v2/payments?token=GjplNgQ2YWBzLmZTBQQJUgpdb2K1MPfv
          create:
            method: POST
            href: /v2/itineraries/activity?token=Oj8BVAQMAwEPdmtQBAQGSAhQGFIBI2oJX1wJCQ8EUxpkZDUZMAhQTQVQC2dhNXcMPABbSTFmKWo7P1MMC14PBiY3Bmk6OTZCUgtTDUAmYyY5azg_MwUBVksAQ0UnOnY5anU8OFkARwpXWgUNXUxLczt2ND8jPTUVUhBARlsURztQUkMhMiUyPi8ydAZdBERSSxhmQRBdB10TUA9RUXRhIjRvOW9jRQpbWwQjZCQybiFrN1UQDUYNBVcmam83U19QVF8WbW88PF0MVVBfJmQlOGMiaDNIWFAIQUQibDgyA18MBVoQP3Y6bAdZF1RrClc8Wl1KEF8hNnM1PDpvb1ETVAk7WlUOVydhJ2drdz4yFVQSQhFXF0NpUVMgZ3Nj1CpaTw%3D%3D
    price-check-price-change:
      value:
        status: price_changed
        offer_pricing:
          price_per_ticket:
            - ticket:
                id: '2378296'
                type: regular
                label: Traveler
                description: Ages 21-100
              scope: per ticket type
              ticket_total:
                exclusive:
                  value: '50.00'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking:
                    - type: booking_fee_excluding_vat
                      value: '5.25'
                      currency: USD
                    - type: booking_fee_vat
                      value: '1.10'
                      currency: USD
                  pay_at_location: []
                inclusive:
                  value: '56.35'
                  currency: USD
              ticket_count: 2
          totals:
            exclusive:
              value: '100.00'
              currency: USD
            booking_taxes_and_fees:
              pay_at_booking:
                - type: booking_fee_excluding_vat
                  value: '10.50'
                  currency: USD
                - type: booking_fee_vat
                  value: '2.20'
                  currency: USD
              pay_at_location: []
            inclusive:
              value: '112.70'
              currency: USD
            inclusive_location:
              value: '112.70'
              currency: USD
            total_ticket_count: 2
        booking_questions:
          - id: height_1
            type: measurement
            question: What is your height?
            description: Required for safety equipment fitting
            applies_to: per_traveler
            ticket_ids:
              - '2378296'
              - '2378297'
            allowed_options:
              - id: in
                label: in
              - id: cm
                label: cm
          - id: weight_1
            type: measurement
            question: What is your weight?
            description: Required for zipline weight limits
            applies_to: per_traveler
            ticket_ids:
              - '2378296'
              - '2378297'
            allowed_options:
              - id: lb
                label: lb
              - id: kg
                label: kg
    price-check-sold-out:
      value:
        status: sold_out
    price-check-with-conditional-booking-questions:
      value:
        status: available
        offer_pricing:
          price_per_ticket:
            - ticket:
                id: '189894'
                type: adult
                label: Adult
                description: Ages 19-99
              scope: per ticket type
              strikethrough:
                inclusive:
                  value: '23.58'
                  currency: USD
              ticket_total:
                exclusive:
                  value: '23.58'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking:
                    - type: booking_fee_excluding_vat
                      value: '3.86'
                      currency: USD
                    - type: booking_fee_vat
                      value: '0.84'
                      currency: USD
                  pay_at_location: []
                inclusive:
                  value: '28.28'
                  currency: USD
              ticket_count: 2
            - ticket:
                id: '189895'
                type: child
                label: Child
                description: Ages 0-18
              scope: per ticket type
              strikethrough:
                inclusive:
                  value: '5.89'
                  currency: USD
              ticket_total:
                exclusive:
                  value: '5.89'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking: []
                  pay_at_location: []
                inclusive:
                  value: '5.89'
                  currency: USD
              ticket_count: 1
          totals:
            exclusive:
              value: '29.47'
              currency: USD
            booking_taxes_and_fees:
              pay_at_booking:
                - type: booking_fee_excluding_vat
                  value: '3.86'
                  currency: USD
                - type: booking_fee_vat
                  value: '0.84'
                  currency: USD
              pay_at_location: []
            inclusive:
              value: '34.17'
              currency: USD
            inclusive_location:
              value: '34.17'
              currency: USD
            total_ticket_count: 3
        redemption_instructions: Your audio guide awaits at the location.
        terms_and_conditions: |-
          Strollers, trolleys, and suitcases are prohibited in the park.

          Keep in mind you need to arrive 20 minutes before start.
        booking_questions:
          - id: contact_method_1
            type: selection
            question: How would you prefer to be contacted?
            applies_to: per_traveler
            ticket_ids:
              - '189894'
              - '189895'
            children:
              - contact_phone_1
              - contact_whatsapp_1
              - contact_email_1
            allow_multiple: false
            allowed_options:
              - id: phone
                label: Phone Call
              - id: whatsapp
                label: WhatsApp
              - id: email
                label: Email
          - id: contact_phone_1
            type: phone
            question: What is your phone number?
            applies_to: per_traveler
            ticket_ids:
              - '189894'
              - '189895'
            conditional:
              parent_question_id: contact_method_1
              show_when:
                operator: equals
                field: selected
                values:
                  - phone
          - id: contact_whatsapp_1
            type: text
            question: What is your whatsapp username?
            applies_to: per_traveler
            ticket_ids:
              - '189894'
              - '189895'
            conditional:
              parent_question_id: contact_method_1
              show_when:
                operator: equals
                field: selected
                values:
                  - whatsapp
            validation_rules:
              value:
                pattern: ^(\(\d{3}\)|\d{3})-?\d{3}-?\d{4}$
                min_length: 5
                max_length: 20
          - id: contact_email_1
            type: email
            question: What is your email address?
            applies_to: per_traveler
            ticket_ids:
              - '189894'
              - '189895'
            conditional:
              parent_question_id: contact_method_1
              show_when:
                operator: equals
                field: selected
                values:
                  - email
        links:
          payment:
            method: POST
            href: /v2/payments?token=GjplNgQ2YWBzLmZTBQQJUgpdb2K1MPfv
          create:
            method: POST
            href: /v2/itineraries/activity?token=Oj8BVAQMAwEPdmtQBAQGSAhQGFIBI2oJX1wJCQ8EUxpkZDUZMAhQTQVQC2dhNXcMPABbSTFmKWo7P1MMC14PBiY3Bmk6OTZCUgtTDUAmYyY5azg_MwUBVksAQ0UnOnY5anU8OFkARwpXWgUNXUxLczt2ND8jPTUVUhBARlsURztQUkMhMiUyPi8ydAZdBERSSxhmQRBdB10TUA9RUXRhIjRvOW9jRQpbWwQjZCQybiFrN1UQDUYNBVcmam83U19QVF8WbW88PF0MVVBfJmQlOGMiaDNIWFAIQUQibDgyA18MBVoQP3Y6bAdZF1RrClc8Wl1KEF8hNnM1PDpvb1ETVAk7WlUOVydhJ2drdz4yFVQSQhFXF0NpUVMgZ3Nj1CpaTw%3D%3D
    offer-not-found:
      value:
        type: resource_not_found
        message: The offer was not found with provided request.
    booking-question-data-types-standard:
      value:
        data_types:
          - type: measurement
            name: Size Measurement
            description: Used for collecting dimensional measurements. Common examples include height, helmet size, waist size, and chest size.
            date_added: '2023-09-20'
            schema_definition:
              type: object
              required:
                - value
                - unit
              properties:
                value:
                  type: string
                  pattern: ^[0-9]+(\.[0-9]+)?$
                unit:
                  type: string
            validation_rules_options:
              value:
                - min_value
                - max_value
          - type: travel_document
            name: Travel Document
            description: Used for collecting travel document or identification details required for activities. Common examples include passport information for international travel, drivers license for rental activities, national ID for domestic travel, and border crossing requirements.
            date_added: '2023-09-20'
            schema_definition:
              type: object
              required:
                - number
                - country_code
                - expiration_date
              properties:
                number:
                  type: string
                  description: Document number
                country_code:
                  type: string
                  description: Issuing country ISO 3166-1 alpha-2 code
                  pattern: ^[A-Z]{2}$
                expiration_date:
                  type: string
                  format: date
                  description: Document expiration date in YYYY-MM-DD format
                  pattern: ^\d{4}-\d{2}-\d{2}$
            validation_rules_options:
              number:
                - min_length
                - max_length
                - pattern
        validation_rules:
          max_date:
            description: Latest allowed date, inclusive, in ISO 8601 YYYY-MM-DD format.
            type: string
          max_datetime:
            description: Latest allowed date and time, inclusive, in ISO 8601 / RFC 3339 format (with UTC offset).
            type: string
          max_length:
            description: Maximum length of the string value, measured in Unicode code points (not bytes, not UTF-16 code units). E.g. '日本' has length 2, not 6 (UTF-8 bytes).
            type: integer
          max_time:
            description: Latest allowed time of day, inclusive, in 24-hour HH:MM format (no seconds, no timezone).
            type: string
          max_value:
            description: Maximum value allowed, inclusive, for a numeric value.
            type: integer
          min_date:
            description: Earliest allowed date, inclusive, in ISO 8601 YYYY-MM-DD format.
            type: string
          min_datetime:
            description: Earliest allowed date and time, inclusive, in ISO 8601 / RFC 3339 format (with UTC offset).
            type: string
          min_length:
            description: Minimum length of the string value, measured in Unicode code points (not bytes, not UTF-16 code units). E.g. '日本' has length 2, not 6 (UTF-8 bytes).
            type: integer
          min_time:
            description: Earliest allowed time of day, inclusive, in 24-hour HH:MM format (no seconds, no timezone).
            type: string
          min_value:
            description: Minimum value allowed, inclusive, for a numeric value.
            type: integer
          pattern:
            description: A regular expression that the entire string value must match (full-string match, not substring). Must compile successfully under Google's RE2 engine (google-re2 in Python, re2 in Node.js, native in Go), which guarantees consistent behavior across runtimes and immunity to catastrophic backtracking.
            type: string
    retrieve-by-affiliate-standard:
      value:
        - itinerary_id: '0000000000000'
          status: BOOKED
          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 .
            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: TH
                coordinate:
                  longitude: 100.50108
                  latitude: 13.75198
            event_location:
              address:
                line_1: Bamrung Muang Rd
                state_province_code: ''
                postal_code: '10200'
                country_code: TH
              coordinate:
                longitude: 100.50108
                latitude: 13.75198
            duration: P0Y0M0DT0H240M0S
            language:
              - English
            all_day: false
            offer_start: '2025-04-01T14:45:04'
            cancellable: true
            cancel_penalties:
              - start: '2025-03-27T20:54:22'
                end: '2025-03-31T14:45:04'
                percent: 0%
                currency: USD
              - start: '2025-03-31T14:45:04'
                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:
                    id: '9281034'
                    label: Adult
                    description: Ages 18-65
                  scope: per ticket type
                  ticket_total:
                    exclusive:
                      value: '194.82'
                      currency: USD
                    booking_taxes_and_fees:
                      pay_at_booking:
                        - type: Admission Fees
                          value: '15.00'
                          currency: USD
                      pay_at_location:
                        - type: Miscellaneous / Other
                          value: '25.50'
                          currency: USD
                    inclusive:
                      value: '209.82'
                      currency: USD
                    inclusive_location:
                      value: '235.32'
                      currency: USD
                  ticket_count: 1
                - ticket:
                    id: '9281035'
                    label: Infant
                    description: Ages 0-2
                  scope: per ticket type
                  ticket_total:
                    exclusive:
                      value: '0.00'
                      currency: USD
                    booking_taxes_and_fees:
                      pay_at_booking: []
                      pay_at_location: []
                    inclusive:
                      value: '0.00'
                      currency: USD
                    inclusive_location:
                      value: '0.00'
                      currency: USD
                  ticket_count: 1
              totals:
                exclusive:
                  value: '194.82'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking:
                    - type: Admission Fees
                      value: '15.00'
                      currency: USD
                  pay_at_location:
                    - type: Miscellaneous / Other
                      value: '25.50'
                      currency: USD
                inclusive:
                  value: '209.82'
                  currency: USD
                inclusive_location:
                  value: '235.32'
                  currency: USD
                total_ticket_count: 2
                marketing_fee:
                  request_currency:
                    value: '5.31'
                    currency: USD
                gross_profit:
                  request_currency:
                    value: '5.29'
                    currency: USD
            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
            ticket_id: '9281034'
          additional_travelers:
            - name:
                given_name: Jimmy
                middle_name: James
                family_name: Smith
              ticket_id: '9281035'
          email: bob@example.com
          phone:
            country_code: '1'
            area_code: '111'
            number: '1111111'
          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: US
          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: /v2/itineraries/0000000000000/activity
            retrieve_voucher:
              method: GET
              href: /v2/itineraries/0000000000000/activity/voucher
    retrieve-by-affiliate-with-trader-information:
      value:
        - itinerary_id: '0000000000000'
          status: BOOKED
          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 .
            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: TH
                coordinate:
                  longitude: 100.50108
                  latitude: 13.75198
            event_location:
              address:
                line_1: Bamrung Muang Rd
                state_province_code: ''
                postal_code: '10200'
                country_code: TH
              coordinate:
                longitude: 100.50108
                latitude: 13.75198
            duration: P0Y0M0DT0H240M0S
            language:
              - English
            all_day: false
            offer_start: '2025-04-01T14:45:04'
            cancellable: true
            cancel_penalties:
              - start: '2025-03-27T20:54:22'
                end: '2025-03-31T14:45:04'
                percent: 0%
                currency: USD
              - start: '2025-03-31T14:45:04'
                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:
                    id: '9281034'
                    label: Adult
                    description: Ages 18-65
                  scope: per ticket type
                  ticket_total:
                    exclusive:
                      value: '194.82'
                      currency: USD
                    booking_taxes_and_fees:
                      pay_at_booking:
                        - type: Admission Fees
                          value: '15.00'
                          currency: USD
                      pay_at_location:
                        - type: Miscellaneous / Other
                          value: '25.50'
                          currency: USD
                    inclusive:
                      value: '209.82'
                      currency: USD
                    inclusive_location:
                      value: '235.32'
                      currency: USD
                  ticket_count: 1
                - ticket:
                    id: '9281035'
                    label: Infant
                    description: Ages 0-2
                  scope: per ticket type
                  ticket_total:
                    exclusive:
                      value: '0.00'
                      currency: USD
                    booking_taxes_and_fees:
                      pay_at_booking: []
                      pay_at_location: []
                    inclusive:
                      value: '0.00'
                      currency: USD
                    inclusive_location:
                      value: '0.00'
                      currency: USD
                  ticket_count: 1
              totals:
                exclusive:
                  value: '194.82'
                  currency: USD
                booking_taxes_and_fees:
                  pay_at_booking:
                    - type: Admission Fees
                      value: '15.00'
                      currency: USD
                  pay_at_location:
                    - type: Miscellaneous / Other
                      value: '25.50'
                      currency: USD
                inclusive:
                  value: '209.82'
                  currency: USD
                inclusive_location:
                  value: '235.32'
                  currency: USD
                total_ticket_count: 2
            trader_information:
              traders:
                - name: Tiqets International B.V.
                  address:
                    line_1: Auckland Airport
                    city: Auckland
                    postal_code: '2022'
                    country_code: NZ
                  business_register_number: '12345678'
                  business_register_name: Chamber of Commerce Amsterdam
                  self_certification: true
                  right_to_withdraw_message: In accordance with EU regulations about consumer rights, activities services are not subject to the right of withdrawal. Supplier cancellation policy will apply.
                  phone: '+31628619975'
                  email: customerservice@expedia.com
                  private_host: false
            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
            ticket_id: '9281034'
          additional_travelers:
            - name:
                given_name: Jimmy
                middle_name: James
                family_name: Smith
              ticket_id: '9281035'
          email: bob@example.com
          phone:
            country_code: '1'
            area_code: '111'
            number: '1111111'
          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: US
          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: /v2/itineraries/0000000000000/activity
            retrieve_voucher:
              method: GET
              href: /v2/itineraries/0000000000000/activity/voucher
    itinerary-not-found:
      value:
        type: resource_not_found
        message: Itinerary was not found with provided request.
    create-request-basic:
      summary: Basic Create Booking Request
      description: A basic request to create an activity booking with required fields and a single primary traveler.
      value:
        affiliate_reference_id: 4480ABC
        email: bob@example.com
        payment_token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
        primary_traveler:
          ticket_id: '189894'
          name:
            given_name: Bob
            family_name: Smith
          phone:
            country_code: '1'
            area_code: '111'
            number: '1111111'
          booking_question_answers:
            - question_id: height_1
              answer:
                value: '72'
                unit: in
        affiliate_metadata: data_point_1:123|data_point2:This is data.
        booking_question_answers:
          - question_id: emergency_contact_1
            answer:
              value: Jane Doe, +1-555-1234
    create-request-complete:
      summary: Complete Create Booking Request
      description: A complete request to create an activity booking with additional travelers, booking question answers, and all optional fields.
      value:
        affiliate_reference_id: MNS@113
        email: bob@example.com
        payment_token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
        primary_traveler:
          ticket_id: '189894'
          name:
            given_name: Bob
            middle_name: Jones
            family_name: Smith
          phone:
            country_code: '1'
            area_code: '111'
            number: '1111111'
          booking_question_answers:
            - question_id: height_1
              answer:
                value: '72'
                unit: in
            - question_id: weight_1
              answer:
                value: '180'
                unit: lb
        additional_travelers:
          - ticket_id: '189895'
            name:
              given_name: Jimmy
              middle_name: James
              family_name: Smith
            booking_question_answers:
              - question_id: height_1
                answer:
                  value: '55'
                  unit: in
              - question_id: weight_1
                answer:
                  value: '77'
                  unit: lb
          - ticket_id: '189896'
            name:
              given_name: Lucy
              family_name: Smith
            booking_question_answers:
              - question_id: height_1
                answer:
                  value: '26'
                  unit: in
              - question_id: weight_1
                answer:
                  value: '31'
                  unit: lb
        affiliate_metadata: data_point_1:123|data_point2:This is data.
        tax_registration_number: '123456789012'
        booking_question_answers:
          - question_id: emergency_contact_1
            answer:
              value: Jane Doe, +1-555-1234
    create-successful:
      value:
        itinerary_id: '0000000000000'
        links:
          retrieve:
            method: GET
            href: /v2/itineraries/0000000000000/activity
            expires: ''
    create-challenge:
      value:
        itinerary_id: '8999989898988'
        encoded_challenge_config: ABEiM0RVZneImaq7zN3u/w==
        links:
          complete_payment_session:
            method: PUT
            href: /v2/itineraries/8999989898988/activity/payment-sessions?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m
    price-mismatch-error:
      value:
        type: price_mismatch
        message: Payment amount did not match current price, please check price and try again.
        errors:
          - 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: An invalid request was sent in, please check the nested errors for details.
        errors:
          - type: invalid_header_value
            message: Content-Type is required.
            fields:
              - name: Content-Type
                type: header
    retrieve-standard:
      value:
        itinerary_id: '0000000000000'
        status: BOOKED
        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 .
          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: TH
              coordinate:
                longitude: 100.50108
                latitude: 13.75198
          event_location:
            address:
              line_1: Bamrung Muang Rd
              state_province_code: ''
              postal_code: '10200'
              country_code: TH
            coordinate:
              longitude: 100.50108
              latitude: 13.75198
          duration: P0Y0M0DT0H240M0S
          language:
            - English
          all_day: false
          offer_start: '2025-04-01T14:45:04'
          cancellable: true
          cancel_penalties:
            - start: '2025-03-27T20:54:22'
              end: '2025-03-31T14:45:04'
              percent: 0%
              currency: USD
            - start: '2025-03-31T14:45:04'
              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:
                  id: '9281034'
                  label: Adult
                  description: Ages 18-65
                scope: per ticket type
                ticket_total:
                  exclusive:
                    value: '194.82'
                    currency: USD
                  booking_taxes_and_fees:
                    pay_at_booking:
                      - type: Admission Fees
                        value: '15.00'
                        currency: USD
                    pay_at_location:
                      - type: Miscellaneous / Other
                        value: '25.50'
                        currency: USD
                  inclusive:
                    value: '209.82'
                    currency: USD
                  inclusive_location:
                    value: '235.32'
                    currency: USD
                ticket_count: 1
              - ticket:
                  id: '9281035'
                  label: Infant
                  description: Ages 0-2
                scope: per ticket type
                ticket_total:
                  exclusive:
                    value: '0.00'
                    currency: USD
                  booking_taxes_and_fees:
                    pay_at_booking: []
                    pay_at_location: []
                  inclusive:
                    value: '0.00'
                    currency: USD
                  inclusive_location:
                    value: '0.00'
                    currency: USD
                ticket_count: 1
            totals:
              exclusive:
                value: '194.82'
                currency: USD
              booking_taxes_and_fees:
                pay_at_booking:
                  - type: Admission Fees
                    value: '15.00'
                    currency: USD
                pay_at_location:
                  - type: Miscellaneous / Other
                    value: '25.50'
                    currency: USD
              inclusive:
                value: '209.82'
                currency: USD
              inclusive_location:
                value: '235.32'
                currency: USD
              total_ticket_count: 2
              marketing_fee:
                request_currency:
                  value: '5.31'
                  currency: USD
              gross_profit:
                request_currency:
                  value: '5.29'
                  currency: USD
          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
          ticket_id: '9281034'
        additional_travelers:
          - name:
              given_name: Jimmy
              middle_name: James
              family_name: Smith
            ticket_id: '9281035'
        email: bob@example.com
        phone:
          country_code: '1'
          area_code: '111'
          number: '1111111'
        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: US
        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: /v2/itineraries/0000000000000/activity
          retrieve_voucher:
            method: GET
            href: /v2/itineraries/0000000000000/activity/voucher
    retrieve-with-trader-information:
      value:
        itinerary_id: '0000000000000'
        status: BOOKED
        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 .
          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: TH
              coordinate:
                longitude: 100.50108
                latitude: 13.75198
          event_location:
            address:
              line_1: Bamrung Muang Rd
              state_province_code: ''
              postal_code: '10200'
              country_code: TH
            coordinate:
              longitude: 100.50108
              latitude: 13.75198
          duration: P0Y0M0DT0H240M0S
          language:
            - English
          all_day: false
          offer_start: '2025-04-01T14:45:04'
          cancellable: true
          cancel_penalties:
            - start: '2025-03-27T20:54:22'
              end: '2025-03-31T14:45:04'
              percent: 0%
              currency: USD
            - start: '2025-03-31T14:45:04'
              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:
                  id: '9281034'
                  label: Adult
                  description: Ages 18-65
                scope: per ticket type
                ticket_total:
                  exclusive:
                    value: '194.82'
                    currency: USD
                  booking_taxes_and_fees:
                    pay_at_booking:
                      - type: Admission Fees
                        value: '15.00'
                        currency: USD
                    pay_at_location:
                      - type: Miscellaneous / Other
                        value: '25.50'
                        currency: USD
                  inclusive:
                    value: '209.82'
                    currency: USD
                  inclusive_location:
                    value: '235.32'
                    currency: USD
                ticket_count: 1
              - ticket:
                  id: '9281035'
                  label: Infant
                  description: Ages 0-2
                scope: per ticket type
                ticket_total:
                  exclusive:
                    value: '0.00'
                    currency: USD
                  booking_taxes_and_fees:
                    pay_at_booking: []
                    pay_at_location: []
                  inclusive:
                    value: '0.00'
                    currency: USD
                  inclusive_location:
                    value: '0.00'
                    currency: USD
                ticket_count: 1
            totals:
              exclusive:
                value: '194.82'
                currency: USD
              booking_taxes_and_fees:
                pay_at_booking:
                  - type: Admission Fees
                    value: '15.00'
                    currency: USD
                pay_at_location:
                  - type: Miscellaneous / Other
                    value: '25.50'
                    currency: USD
              inclusive:
                value: '209.82'
                currency: USD
              inclusive_location:
                value: '235.32'
                currency: USD
              total_ticket_count: 2
          trader_information:
            traders:
              - name: Tiqets International B.V.
                address:
                  line_1: Auckland Airport
                  city: Auckland
                  postal_code: '2022'
                  country_code: NZ
                business_register_number: '12345678'
                business_register_name: Chamber of Commerce Amsterdam
                self_certification: true
                right_to_withdraw_message: In accordance with EU regulations about consumer rights, activities services are not subject to the right of withdrawal. Supplier cancellation policy will apply.
                phone: '+31628619975'
                email: customerservice@expedia.com
                private_host: false
          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
          ticket_id: '9281034'
        additional_travelers:
          - name:
              given_name: Jimmy
              middle_name: James
              family_name: Smith
            ticket_id: '9281035'
        email: bob@example.com
        phone:
          country_code: '1'
          area_code: '111'
          number: '1111111'
        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: US
        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: /v2/itineraries/0000000000000/activity
          retrieve_voucher:
            method: GET
            href: /v2/itineraries/0000000000000/activity/voucher
    voucher-standard:
      value:
        method: GET
        href: https://example.com/voucher.pdf?amz-security-token=FQoDYXdzEPL%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDD%2FiIFt2RCrdJKrkKSK3A2ncL3qC6SsXLyC3XxgRBGKykCfsfF40Jm8ud6ht6C1LB3q9X0maQCHyXV5gSl9g9hrHtOiC5fnihUQBASMAbOsepEKCfS%2B%2FWDrKAr5lTR%2FptslJxQs6v5GTO7G3R6PYIKFG%2FFgQydd8bEB2njMjynyvgXNgEPsb%2FVuiDC1K%2BMhvoRAguXo4QHQgOVVRXXmbl87j0Ih6s5ffI3yfIvEBnmEfdLdd2E5yPHuIO%2FOItXYxEc0vgipvlT41PylYtS8rhgc3MKqJO4Uw7yNPMlbphdxy6TJzQRJW15o9TaHrFBBYvWrtfcMewOlLYu6N6R1EGQhT9Ayok9J2oKzFJ%2FSbMNmVUsHReM7v1chuY7XNGld9bKeu0xFjDth%2BcEHrjkqhyxBc2pBINvk8LT9uPOCykqbuc2OWlCpNtQyahPnxpdPMW4WEbIFaWUNHWj0ui507CN2useZBYfGIST94KEtJFlpZRB0ntz%2BxmWRSnPYG3K47meFS9cthMsYH1rxIdDei2W49TQbjnVIXY2RldvO2JaTKtYPJT85ds9W71R0s4t9LSgY%2BZ9kaLjF%2BLk7PGKIhBbLowqKRBBUozOf2zAU%3D&AWSAccessKeyId=ASIAIZYRJJGNLGQGVLDA&Expires=1503512048&Signature=p7V%2BTN6rZMiVaz6MxqU%2F4YHYkw8%3D
        expires: '2025-12-31T23:59:59Z'
    voucher-not-found:
      value:
        type: voucher_not_found
        message: Your voucher is currently unavailable. Please try again in 5 minutes, or contact our support team if the issue persists.
    payment-sessions-complete:
      value:
        itinerary_id: '8999989898988'
        links:
          retrieve:
            method: GET
            href: /v2/itineraries/8999989898988/activity
