openapi: 3.0.0
info:
  title: Offers API
  version: 1.0.0
  description: >-
    The Offers API enables partners to create, confirm, and manage product
    offers containing single or multiple insurance and non-insurance products.
    It provides endpoints for generating offers, confirming bookings, handling
    opt-outs, and modifying existing policies.
  x-gitbook-description-document:
    object: document
    data:
      schemaVersion: 9
    nodes:
      - object: block
        type: paragraph
        isVoid: false
        data: {}
        nodes:
          - object: text
            leaves:
              - object: leaf
                text: >-
                  The Offers API enables partners to create, confirm, and manage
                  product offers containing single or multiple insurance and
                  non-insurance products. It provides endpoints for generating
                  offers, confirming bookings, handling opt-outs, and modifying
                  existing policies.
                marks: []
  x-gitbook-description-html: >-
    <p>The Offers API enables partners to create, confirm, and manage product
    offers containing single or multiple insurance and non-insurance products.
    It provides endpoints for generating offers, confirming bookings, handling
    opt-outs, and modifying existing policies.</p>
servers:
  - url: https://api.xcover.com/x
paths:
  /partners/{partner_code}/offers/:
    post:
      summary: Create Offer
      description: >-
        The Create Offer endpoint generates product offerings based on your
        business context and customer information. This endpoint uses a
        schema-driven approach to validate requests and returns one or more
        products with detailed pricing, product information, and content for
        display.
      tags:
        - Create Offer
      parameters:
        - name: active_only
          in: query
          required: false
          description: When using a test API key, only return active offers
          schema:
            type: boolean
            default: false
          x-gitbook-description-html: <p>When using a test API key, only return active offers</p>
        - name: include_content
          in: query
          required: false
          description: Include localized content in the response
          schema:
            type: boolean
            default: true
          x-gitbook-description-html: <p>Include localized content in the response</p>
        - name: extra_fields
          in: query
          required: false
          description: >-
            Comma-separated list of specific extra fields to include. Available
            fields: tax, commission, benefits, surcharge
          schema:
            type: string
          x-gitbook-description-html: >-
            <p>Comma-separated list of specific extra fields to include.
            Available fields: tax, commission, benefits, surcharge</p>
        - name: exclude_offer_ids
          in: query
          required: false
          description: >-
            Comma-separated list of Offer Config IDs to exclude from the
            response
          schema:
            type: string
          x-gitbook-description-html: >-
            <p>Comma-separated list of Offer Config IDs to exclude from the
            response</p>
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                schema:
                  type: string
                  description: >-
                    Schema identifier for the offer type. If not provided, the
                    default schema for your partner will be used. The Client
                    Solutions Engineer (CSE) will provide the appropriate schema
                    identifier during integration.
                  x-gitbook-description-html: >-
                    <p>Schema identifier for the offer type. If not provided,
                    the default schema for your partner will be used. The Client
                    Solutions Engineer (CSE) will provide the appropriate schema
                    identifier during integration.</p>
                customer:
                  type: object
                  description: Customer information
                  properties:
                    currency:
                      type: string
                      description: Currency code (e.g., USD, AUD, EUR, GBP)
                      x-gitbook-description-html: <p>Currency code (e.g., USD, AUD, EUR, GBP)</p>
                    language:
                      type: string
                      description: Customer's preferred language (e.g., en)
                      x-gitbook-description-html: <p>Customer's preferred language (e.g., en)</p>
                    country:
                      type: string
                      description: Customer's country code (e.g., US, AU, GB)
                      x-gitbook-description-html: <p>Customer's country code (e.g., US, AU, GB)</p>
                    region:
                      type: string
                      description: Customer's region or state
                      x-gitbook-description-html: <p>Customer's region or state</p>
                    email:
                      type: string
                      format: email
                      description: Customer's email address
                      x-gitbook-description-html: <p>Customer's email address</p>
                    ip:
                      type: string
                      description: Customer's IP address
                      x-gitbook-description-html: <p>Customer's IP address</p>
                    postcode:
                      type: string
                      description: Customer's postal code
                      x-gitbook-description-html: <p>Customer's postal code</p>
                  required:
                    - currency
                    - language
                    - country
                  x-gitbook-description-html: <p>Customer information</p>
                context:
                  type: object
                  description: >-
                    Business context data required for offer selection and
                    pricing. The specific fields required will be defined
                    through the offer schema with the Client Solutions Engineer
                    (CSE).
                  additionalProperties: true
                  x-gitbook-description-html: >-
                    <p>Business context data required for offer selection and
                    pricing. The specific fields required will be defined
                    through the offer schema with the Client Solutions Engineer
                    (CSE).</p>
                partner:
                  type: object
                  description: Partner information
                  properties:
                    subsidiary:
                      type: string
                      description: Partner subsidiary identifier
                      x-gitbook-description-html: <p>Partner subsidiary identifier</p>
                    transaction_id:
                      type: string
                      description: Partner transaction identifier
                      x-gitbook-description-html: <p>Partner transaction identifier</p>
                    customer_id:
                      type: string
                      description: Partner customer identifier
                      x-gitbook-description-html: <p>Partner customer identifier</p>
                    metadata:
                      type: object
                      description: Additional partner metadata
                      x-gitbook-description-html: <p>Additional partner metadata</p>
                  x-gitbook-description-html: <p>Partner information</p>
              required:
                - schema
                - customer
                - context
            examples:
              Travel:
                $ref: "#/components/examples/TravelRequest"
      responses:
        "200":
          description: OK
          headers:
            Date:
              schema:
                type: string
            Transfer-Encoding:
              schema:
                type: string
            Connection:
              schema:
                type: string
            CF-Ray:
              schema:
                type: integer
            CF-Cache-Status:
              schema:
                type: string
            Allow:
              schema:
                type: string
            Server:
              schema:
                type: string
            Strict-Transport-Security:
              schema:
                type: string
            cross-origin-opener-policy:
              schema:
                type: string
            referrer-policy:
              schema:
                type: string
            x-content-type-options:
              schema:
                type: string
            x-envoy-decorator-operation:
              schema:
                type: string
            x-envoy-upstream-service-time:
              schema:
                type: integer
            x-frame-options:
              schema:
                type: string
            Vary:
              schema:
                type: string
            Content-Encoding:
              schema:
                type: string
            Server-Timing:
              schema:
                type: string
            Cf-Team:
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  offer_config_id:
                    type: string
                  offer_schema:
                    type: string
                  currency:
                    type: string
                  products:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        product_config_id:
                          type: string
                        type:
                          type: string
                        details:
                          type: object
                          properties:
                            policy_version_id:
                              type: string
                            start_date:
                              type: string
                              format: date-time
                            end_date:
                              type: string
                              format: date-time
                            finance:
                              type: object
                              properties:
                                price:
                                  type: object
                                  properties:
                                    total_amount:
                                      type: number
                                    total_amount_without_tax:
                                      type: number
                                    total_amount_formatted:
                                      type: string
                                    total_amount_without_tax_formatted:
                                      type: string
                                tax:
                                  type: object
                                  properties:
                                    total_amount:
                                      type: number
                                    total_amount_formatted:
                                      type: string
                                surcharge:
                                  type: object
                                  properties:
                                    total_amount:
                                      nullable: true
                                    total_amount_formatted:
                                      nullable: true
                                commission:
                                  type: object
                                  properties:
                                    total_amount:
                                      type: number
                                    total_amount_formatted:
                                      type: string
                            pds_url:
                              type: string
                              format: uri
                            files:
                              type: array
                              items: {}
                            extra_fields:
                              type: object
                            experiment:
                              type: object
                  product_rules:
                    type: array
                    description: Product display and selection rules
                    items:
                      type: object
                      properties:
                        slug:
                          type: string
                          description: Unique rule identifier
                          x-gitbook-description-html: <p>Unique rule identifier</p>
                        product_ids:
                          type: array
                          description: Array of product IDs in this rule
                          items:
                            type: string
                          x-gitbook-description-html: <p>Array of product IDs in this rule</p>
                        initial_state:
                          type: string
                          enum:
                            - show
                            - hide
                            - disable
                          description: Initial display state
                          x-gitbook-description-html: <p>Initial display state</p>
                        min_select:
                          type: integer
                          description: Minimum number of products to select
                          x-gitbook-description-html: <p>Minimum number of products to select</p>
                        max_select:
                          type: integer
                          description: Maximum number of products to select
                          x-gitbook-description-html: <p>Maximum number of products to select</p>
                        events:
                          type: array
                          description: >-
                            Event-driven rules. Can be empty array for
                            terminal rules or single product rules.
                          items:
                            type: object
                            properties:
                              "on":
                                type: string
                                enum:
                                  - select
                                  - deselect
                                  - accept
                                  - decline
                                description: Trigger event
                                x-gitbook-description-html: <p>Trigger event</p>
                              action:
                                type: string
                                enum:
                                  - show
                                  - hide
                                  - enable
                                  - disable
                                description: Action to perform
                                x-gitbook-description-html: <p>Action to perform</p>
                              target_rule:
                                type: string
                                description: Target rule slug
                                x-gitbook-description-html: <p>Target rule slug</p>
                          example: []
                          x-gitbook-description-html: >-
                            <p>Event-driven rules. Can be empty array for
                            terminal rules or single product rules.</p>
                    x-gitbook-description-html: <p>Product display and selection rules</p>
                  content:
                    type: object
                    properties:
                      schema_version:
                        type: string
                        description: Content schema version
                        x-gitbook-description-html: <p>Content schema version</p>
                      locale:
                        type: string
                        description: Content locale (e.g., en-AU, en-US)
                        x-gitbook-description-html: <p>Content locale (e.g., en-AU, en-US)</p>
                      slug:
                        type: string
                        description: Content slug identifier for the offer
                        x-gitbook-description-html: <p>Content slug identifier for the offer</p>
                      title:
                        type: string
                        description: Main title for the offer
                        x-gitbook-description-html: <p>Main title for the offer</p>
                      heading:
                        type: string
                        description: Heading text
                        x-gitbook-description-html: <p>Heading text</p>
                      sub_heading:
                        type: string
                        description: Sub-heading text
                        x-gitbook-description-html: <p>Sub-heading text</p>
                      disclaimer:
                        type: string
                        description: Legal disclaimer text
                        x-gitbook-description-html: <p>Legal disclaimer text</p>
                      disclaimer_html:
                        type: string
                        description: HTML formatted disclaimer
                        x-gitbook-description-html: <p>HTML formatted disclaimer</p>
                      price_unit:
                        type: string
                        description: Price unit descriptor (e.g., per person)
                        x-gitbook-description-html: <p>Price unit descriptor (e.g., per person)</p>
                      description:
                        type: string
                        description: Offer description
                        x-gitbook-description-html: <p>Offer description</p>
                      positive_cta:
                        type: string
                        description: Text for accept/yes button
                        x-gitbook-description-html: <p>Text for accept/yes button</p>
                      negative_cta:
                        type: string
                        description: Text for decline/no button
                        x-gitbook-description-html: <p>Text for decline/no button</p>
                      negative_cta_warning:
                        type: string
                        description: Warning shown when user declines
                        x-gitbook-description-html: <p>Warning shown when user declines</p>
                      required_message:
                        type: string
                        description: Message shown when selection is required
                        x-gitbook-description-html: <p>Message shown when selection is required</p>
                      credibility_message:
                        type: string
                        description: >-
                          Trust/credibility message (deprecated, use
                          credibility)
                        x-gitbook-description-html: >-
                          <p>Trust/credibility message (deprecated, use
                          credibility)</p>
                      credibility:
                        type: string
                        description: Credibility message text
                        x-gitbook-description-html: <p>Credibility message text</p>
                      credibility_sales_count:
                        type: integer
                        description: Number for credibility metric
                        x-gitbook-description-html: <p>Number for credibility metric</p>
                      products:
                        type: array
                        description: Content for each product
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: Product content identifier
                              x-gitbook-description-html: <p>Product content identifier</p>
                            product_config_id:
                              type: string
                              description: Product configuration identifier
                              x-gitbook-description-html: <p>Product configuration identifier</p>
                            slug:
                              type: string
                              description: Content slug identifier for this product
                              x-gitbook-description-html: <p>Content slug identifier for this product</p>
                            locale:
                              type: string
                              description: Content locale
                              x-gitbook-description-html: <p>Content locale</p>
                            title:
                              type: string
                              description: Product title
                              x-gitbook-description-html: <p>Product title</p>
                            description:
                              type: string
                              description: Product description
                              x-gitbook-description-html: <p>Product description</p>
                            benefits:
                              type: object
                              description: >-
                                Product benefits with dynamic keys (benefit_1,
                                benefit_2, etc.)
                              additionalProperties:
                                type: string
                              x-gitbook-description-html: >-
                                <p>Product benefits with dynamic keys
                                (benefit_1, benefit_2, etc.)</p>
                            exclusions:
                              type: object
                              description: >-
                                Product exclusions with dynamic keys
                                (exclusion_1, exclusion_2, etc.)
                              additionalProperties:
                                type: string
                              x-gitbook-description-html: >-
                                <p>Product exclusions with dynamic keys
                                (exclusion_1, exclusion_2, etc.)</p>
                            inclusions:
                              type: object
                              description: >-
                                Product inclusions with dynamic keys
                                (inclusion_1, inclusion_2, etc.)
                              additionalProperties:
                                type: string
                              x-gitbook-description-html: >-
                                <p>Product inclusions with dynamic keys
                                (inclusion_1, inclusion_2, etc.)</p>
                            disclaimer:
                              type: string
                              description: Product-specific disclaimer
                              x-gitbook-description-html: <p>Product-specific disclaimer</p>
                            disclaimer_html:
                              type: string
                              description: HTML formatted product disclaimer
                              x-gitbook-description-html: <p>HTML formatted product disclaimer</p>
                            credibility_badge:
                              type: string
                              description: Credibility badge content (e.g., Most Popular)
                              x-gitbook-description-html: >-
                                <p>Credibility badge content (e.g., Most
                                Popular)</p>
                        x-gitbook-description-html: <p>Content for each product</p>
                  errors:
                    type: object
                    description: Any errors encountered during offer creation
                    x-gitbook-description-html: <p>Any errors encountered during offer creation</p>
              examples:
                TravelSingleProduct:
                  $ref: "#/components/examples/TravelSingleResponse"
                Travel Bundled Products:
                  $ref: "#/components/examples/TravelBundledResponse"
          x-gitbook-description-html: <p>OK</p>
        "403":
          description: Forbidden
          headers:
            Date:
              schema:
                deprecated: false
            Transfer-Encoding:
              schema:
                deprecated: false
            Connection:
              schema:
                deprecated: false
            CF-Ray:
              schema:
                deprecated: false
            CF-Cache-Status:
              schema:
                deprecated: false
            Allow:
              schema:
                deprecated: false
            Server:
              schema:
                deprecated: false
            Strict-Transport-Security:
              schema:
                deprecated: false
            cross-origin-opener-policy:
              schema:
                deprecated: false
            referrer-policy:
              schema:
                deprecated: false
            x-content-type-options:
              schema:
                deprecated: false
            x-envoy-decorator-operation:
              schema:
                deprecated: false
            x-envoy-upstream-service-time:
              schema:
                deprecated: false
            x-frame-options:
              schema:
                deprecated: false
            Vary:
              schema:
                deprecated: false
            Content-Encoding:
              schema:
                deprecated: false
            Server-Timing:
              schema:
                deprecated: false
            Cf-Team:
              schema:
                deprecated: false
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Forbidden</p>
        "422":
          description: Unprocessable Entity
          headers:
            Date:
              schema:
                deprecated: false
            Content-Length:
              schema:
                deprecated: false
            Connection:
              schema:
                deprecated: false
            CF-Ray:
              schema:
                deprecated: false
            CF-Cache-Status:
              schema:
                deprecated: false
            Allow:
              schema:
                deprecated: false
            Server:
              schema:
                deprecated: false
            Strict-Transport-Security:
              schema:
                deprecated: false
            cross-origin-opener-policy:
              schema:
                deprecated: false
            referrer-policy:
              schema:
                deprecated: false
            x-content-type-options:
              schema:
                deprecated: false
            x-envoy-decorator-operation:
              schema:
                deprecated: false
            x-envoy-upstream-service-time:
              schema:
                deprecated: false
            x-frame-options:
              schema:
                deprecated: false
            Vary:
              schema:
                deprecated: false
            Server-Timing:
              schema:
                deprecated: false
            Cf-Team:
              schema:
                deprecated: false
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
                  errors:
                    type: object
                    properties:
                      schema:
                        type: array
                        items:
                          type: string
                          format: style
          x-gitbook-description-html: <p>Unprocessable Entity</p>
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 9
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: >-
                      The Create Offer endpoint generates product offerings
                      based on your business context and customer information.
                      This endpoint uses a schema-driven approach to validate
                      requests and returns one or more products with detailed
                      pricing, product information, and content for display.
                    marks: []
      x-gitbook-description-html: >-
        <p>The Create Offer endpoint generates product offerings based on your
        business context and customer information. This endpoint uses a
        schema-driven approach to validate requests and returns one or more
        products with detailed pricing, product information, and content for
        display.</p>
    parameters:
      - name: partner_code
        in: path
        required: true
        description: >-
          Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.
        schema:
          type: string
        x-gitbook-description-html: >-
          <p>Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.</p>
  /partners/{partner_code}/offers/{offer_id}/confirm/:
    post:
      summary: Confirm Offer
      description: >-
        The Confirm Offer endpoint is used to finalize the purchase of products
        from a previously created Offer. This endpoint converts the selected
        Offer into a confirmed booking after payment has been successfully
        collected.


        ## Idempotency


        This endpoint supports idempotency keys via the `x-idempotency-key`
        header to prevent duplicate transactions. Provide a unique operation
        identifier (e.g., UUID) to ensure safe retries. Duplicate requests
        return:

        - **409 Conflict**: The request was already processed; response contains
          the cached original result (handle as success)

        - **423 Locked**: The original request is still processing; retry after
          a short delay
      tags:
        - Confirm Offer
      parameters:
        - name: x-idempotency-key
          in: header
          required: false
          description: >-
            A unique identifier to ensure idempotent request processing. If a
            request with the same idempotency key and body has already been
            processed, the cached response is returned with a 409 Conflict
            status code (which can be treated as successful). Keys are stored
            for 48 hours.
          schema:
            type: string
            format: uuid
            example: "550e8400-e29b-41d4-a716-446655440000"
          x-gitbook-description-html: >-
            <p>A unique identifier to ensure idempotent request processing. If a
            request with the same idempotency key and body has already been
            processed, the cached response is returned with a 409 Conflict
            status code (which can be treated as successful). Keys are stored
            for 48 hours.</p>
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                quotes:
                  type: array
                  description: Array of quote objects to confirm
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The product ID (quote ID) from the offer response
                      insured:
                        type: array
                        description: List of insured persons if required by the policy
                        items:
                          type: object
                          properties:
                            first_name:
                              type: string
                            last_name:
                              type: string
                            email:
                              type: string
                              format: email
                            birth_date:
                              type: string
                              format: date
                            age:
                              type: integer
                    required:
                      - id
                policyholder:
                  type: object
                  description: Policyholder information
                  properties:
                    first_name:
                      type: string
                      description: Policyholder's first name
                    last_name:
                      type: string
                      description: Policyholder's last name
                    email:
                      type: string
                      format: email
                      description: Policyholder's email address
                    address1:
                      type: string
                      description: Policyholder's address line 1
                    city:
                      type: string
                      description: Policyholder's city
                    country:
                      type: string
                      description: Policyholder's country code
                  required:
                    - first_name
                    - last_name
                    - email
                    - country
              required:
                - quotes
                - policyholder
            examples:
              TravelSingleProduct:
                $ref: "#/components/examples/TravelSingleConfirmRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Booking ID
                  status:
                    type: string
                    description: Booking status
                  currency:
                    type: string
                  total_price:
                    type: number
                  total_price_formatted:
                    type: string
                  partner_transaction_id:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  pds_url:
                    type: string
                    format: uri
                  security_token:
                    type: string
                  quotes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        policy_start_date:
                          type: string
                          format: date-time
                        policy_end_date:
                          type: string
                          format: date-time
                        status:
                          type: string
                        price:
                          type: number
                        price_formatted:
                          type: string
                        policy:
                          type: object
                          properties:
                            policy_type:
                              type: string
                            policy_type_version:
                              type: string
                            policy_type_slug:
                              type: string
                            policy_type_group_name:
                              type: string
                            policy_name:
                              type: string
                            policy_code:
                              type: string
                            policy_version:
                              type: string
                            category:
                              type: string
                            policy_currency:
                              type: string
                        insured:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              first_name:
                                type: string
                              last_name:
                                type: string
                              email:
                                type: string
                                format: email
                              age:
                                type: integer
                              birth_date:
                                type: string
                                format: date
                        tax:
                          type: object
                          properties:
                            total_tax:
                              type: number
                            total_amount_without_tax:
                              type: number
                            taxes:
                              type: array
                              items:
                                type: object
                                properties:
                                  tax_amount:
                                    type: number
                                  tax_code:
                                    type: string
                                  tax_amount_formatted:
                                    type: string
                            total_tax_formatted:
                              type: string
                            total_amount_without_tax_formatted:
                              type: string
                        benefits:
                          type: array
                          items:
                            type: object
                            properties:
                              benefit_content_id:
                                type: string
                              description:
                                type: string
                              limit:
                                type: number
                              limit_formatted:
                                type: string
                              excess:
                                type: number
                              excess_formatted:
                                type: string
                        commission:
                          type: object
                          properties:
                            partner_commission:
                              type: number
                            total_commission:
                              type: number
                            partner_commission_formatted:
                              type: string
                            total_commission_formatted:
                              type: string
                        created_at:
                          type: string
                          format: date-time
                        confirmed_at:
                          type: string
                          format: date-time
                        pds_url:
                          type: string
                          format: uri
                        can_be_cancelled:
                          type: boolean
                  coi:
                    type: object
                    properties:
                      url:
                        type: string
                        format: uri
                      pdf:
                        type: string
                        format: uri
                  policyholder:
                    type: object
                    properties:
                      first_name:
                        type: string
                      last_name:
                        type: string
                      email:
                        type: string
                        format: email
                      country:
                        type: string
                  total_tax:
                    type: number
                  total_tax_formatted:
                    type: string
                  total_premium:
                    type: number
                  total_premium_formatted:
                    type: string
                  fnol_link:
                    type: string
                    format: uri
              examples:
                TravelSingleProduct:
                  $ref: "#/components/examples/TravelSingleConfirmResponse"
          x-gitbook-description-html: <p>OK</p>
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Forbidden</p>
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Not Found</p>
        "409":
          description: Conflict - Duplicate Request (Idempotent)
          content:
            application/json:
              schema:
                type: object
                description: >-
                  Returns the cached response from the original successful
                  request. This response can be handled identically to a 200 OK
                  response.
              examples:
                TravelSingleProduct:
                  $ref: "#/components/examples/TravelSingleConfirmResponse"
          x-gitbook-description-html: >-
            <p>A request with this idempotency key and body has already been
            processed. The response body contains the cached result from the
            original successful request. This response can be handled
            identically to a 200 OK response.</p>
        "422":
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
                  errors:
                    type: array
                    items:
                      type: string
          x-gitbook-description-html: <p>Unprocessable Entity</p>
        "423":
          description: Locked - Request In Progress
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: >-
            <p>A request with this idempotency key is currently being processed
            but has not yet completed. The client should retry the request
            after a reasonable delay (e.g., 1-5 seconds).</p>
      x-gitbook-description-html: >-
        <p>The Confirm Offer endpoint is used to finalize the purchase of
        products from a previously created Offer. This endpoint converts the
        selected Offer into a confirmed booking after payment has been
        successfully collected.</p>
    parameters:
      - name: partner_code
        in: path
        required: true
        description: >-
          Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.
        schema:
          type: string
        x-gitbook-description-html: >-
          <p>Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.</p>
      - name: offer_id
        in: path
        required: true
        description: The offer ID returned from the Create Offer endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The offer ID returned from the Create Offer endpoint.</p>
  /partners/{partner_code}/offers/{offer_id}/opt_out/:
    post:
      summary: Opt-out Offer
      description: >-
        The Opt-out Offer endpoint is used to record when a customer declines
        an offer. This helps track conversion rates and customer preferences.
      tags:
        - Opt-out Offer
      responses:
        "204":
          description: No Content - Opt-out recorded successfully
          x-gitbook-description-html: <p>No Content - Opt-out recorded successfully</p>
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Forbidden</p>
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Not Found</p>
      x-gitbook-description-html: >-
        <p>The Opt-out Offer endpoint is used to record when a customer
        declines an offer. This helps track conversion rates and customer
        preferences.</p>
    parameters:
      - name: partner_code
        in: path
        required: true
        description: >-
          Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.
        schema:
          type: string
        x-gitbook-description-html: >-
          <p>Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.</p>
      - name: offer_id
        in: path
        required: true
        description: The offer ID returned from the Create Offer endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The offer ID returned from the Create Offer endpoint.</p>
  /partners/{partner_code}/bookings/{booking_id}/:
    patch:
      summary: Modify Booking
      description: >-
        The Modify Booking endpoint is used when a customer wants to make
        changes to their existing policy. This endpoint allows you to update
        policy details which may result in price adjustments, refunds, or
        additional fees. The modification is applied directly.
      tags:
        - Modify Booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                quotes:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The quote ID to modify
                      update_fields:
                        type: object
                        description: Fields to update on the quote
                        additionalProperties: true
                    required:
                      - id
                      - update_fields
            examples:
              Travel:
                $ref: "#/components/examples/TravelSingleModifyRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                  currency:
                    type: string
                  total_price:
                    type: number
                  total_price_formatted:
                    type: string
                  quotes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        status:
                          type: string
                        price:
                          type: number
                        price_formatted:
                          type: string
                        price_diff:
                          type: number
                        price_diff_formatted:
                          type: string
                  total_price_diff:
                    type: number
                  total_price_diff_formatted:
                    type: string
              examples:
                TravelSingleProduct:
                  $ref: "#/components/examples/TravelSingleModifyResponse"
          x-gitbook-description-html: <p>OK</p>
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Forbidden</p>
        "422":
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
                  errors:
                    type: array
                    items:
                      type: string
          x-gitbook-description-html: <p>Unprocessable Entity</p>
      x-gitbook-description-html: >-
        <p>The Modify Booking endpoint is used when a customer wants to make
        changes to their existing policy. This endpoint allows you to update
        policy details which may result in price adjustments, refunds, or
        additional fees.</p>
    parameters:
      - name: partner_code
        in: path
        required: true
        description: >-
          Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.
        schema:
          type: string
        x-gitbook-description-html: >-
          <p>Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.</p>
      - name: booking_id
        in: path
        required: true
        description: The booking ID returned from the Confirm Offer endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The booking ID returned from the Confirm Offer endpoint.</p>
  /partners/{partner_code}/bookings/{booking_id}/quote_for_update:
    patch:
      summary: Modify Booking - Preview
      description: >-
        The Modify Booking Preview endpoint allows you to preview the price
        changes that would result from a modification without actually applying
        them. The response includes an update_id that can be used to confirm
        the modification.
      tags:
        - Modify Booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                quotes:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The quote ID to modify
                      update_fields:
                        type: object
                        description: Fields to update on the quote
                        additionalProperties: true
                    required:
                      - id
                      - update_fields
            examples:
              Travel:
                $ref: "#/components/examples/TravelSingleModifyRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                  currency:
                    type: string
                  total_price:
                    type: number
                  total_price_formatted:
                    type: string
                  quotes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        status:
                          type: string
                        price:
                          type: number
                        price_formatted:
                          type: string
                        price_diff:
                          type: number
                        price_diff_formatted:
                          type: string
                  total_price_diff:
                    type: number
                  total_price_diff_formatted:
                    type: string
                  update_id:
                    type: string
                    description: >-
                      The update ID to use when confirming this modification
                      via the Confirm Update endpoint.
              examples:
                TravelSingleProduct:
                  $ref: "#/components/examples/TravelSingleModifyPreviewResponse"
          x-gitbook-description-html: <p>OK</p>
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Forbidden</p>
        "422":
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
                  errors:
                    type: object
          x-gitbook-description-html: <p>Unprocessable Entity</p>
      x-gitbook-description-html: >-
        <p>The Modify Booking Preview endpoint allows you to preview the price
        changes that would result from a modification without actually applying
        them.</p>
    parameters:
      - name: partner_code
        in: path
        required: true
        description: >-
          Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.
        schema:
          type: string
        x-gitbook-description-html: >-
          <p>Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.</p>
      - name: booking_id
        in: path
        required: true
        description: The booking ID returned from the Confirm Offer endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The booking ID returned from the Confirm Offer endpoint.</p>
  /partners/{partner_code}/bookings/{booking_id}/confirm_update/{update_id}/:
    post:
      summary: Modify Booking - Confirm
      description: >-
        The Confirm Update endpoint finalizes a previewed modification. Use the
        update_id returned from the Modify Booking Preview endpoint.
      tags:
        - Modify Booking
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                xpay_charge_id:
                  type: string
                  description: XPay charge ID if additional payment is required
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                  currency:
                    type: string
                  total_price:
                    type: number
                  total_price_formatted:
                    type: string
                  quotes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        status:
                          type: string
                        price:
                          type: number
                        price_formatted:
                          type: string
                        price_diff:
                          type: number
                        price_diff_formatted:
                          type: string
                  total_price_diff:
                    type: number
                  total_price_diff_formatted:
                    type: string
              examples:
                TravelSingleProduct:
                  $ref: "#/components/examples/TravelSingleModifyConfirmResponse"
          x-gitbook-description-html: <p>Created</p>
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Forbidden</p>
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Not Found</p>
        "422":
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Unprocessable Entity</p>
      x-gitbook-description-html: >-
        <p>The Confirm Update endpoint finalizes a previewed modification.</p>
    parameters:
      - name: partner_code
        in: path
        required: true
        description: >-
          Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.
        schema:
          type: string
        x-gitbook-description-html: >-
          <p>Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.</p>
      - name: booking_id
        in: path
        required: true
        description: The booking ID returned from the Confirm Offer endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The booking ID returned from the Confirm Offer endpoint.</p>
      - name: update_id
        in: path
        required: true
        description: The update ID returned from the Modify Booking Preview endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The update ID returned from the Modify Booking Preview endpoint.</p>
  /partners/{partner_code}/bookings/{booking_id}/cancel:
    post:
      summary: Cancel Booking
      description: >-
        The Cancel Booking endpoint is used when a customer no longer requires
        coverage and has contacted the partner directly to cancel the policy.
        This endpoint handles the cancellation process and calculates any
        applicable refunds.


        When `preview` is set to `true`, the cancellation is not applied but a
        preview of the refund is returned along with a `cancellation_id` that
        can be used to confirm the cancellation.


        When `preview` is set to `false` (or omitted), the cancellation is
        applied immediately.
      tags:
        - Cancel Booking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                preview:
                  type: boolean
                  description: >-
                    When true, returns a preview of the cancellation without
                    applying it. Use the returned cancellation_id to confirm.
                refund_required:
                  type: boolean
                  description: Whether a refund is required for this cancellation
                quotes:
                  type: array
                  description: >-
                    Array of quotes to cancel. Required when preview is true.
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                        description: The quote ID to cancel
                      reason_for_cancellation:
                        type: string
                        description: Reason for cancelling this quote
                    required:
                      - id
            examples:
              TravelSingleProductDirectCancel:
                $ref: "#/components/examples/TravelSingleCancelRequest"
              TravelSingleProductPreviewCancel:
                $ref: "#/components/examples/TravelSingleCancelPreviewRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                  quotes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        policy_start_date:
                          type: string
                          format: date-time
                        policy_end_date:
                          type: string
                          format: date-time
                        policy_cancellation_date:
                          type: string
                          format: date-time
                          nullable: true
                        status:
                          type: string
                        price:
                          type: number
                        refund_value:
                          type: number
                        adjustment_fee:
                          type: number
                  policyholder:
                    type: object
                    properties:
                      first_name:
                        type: string
                      last_name:
                        type: string
                      email:
                        type: string
                        format: email
                      country:
                        type: string
                  total_price:
                    type: number
                  total_price_formatted:
                    type: string
                  total_refund:
                    type: number
                  total_refund_formatted:
                    type: string
                  currency:
                    type: string
                  cancellation_id:
                    type: string
                    nullable: true
                    description: >-
                      Present when preview=true. Use this ID to confirm the
                      cancellation.
                  confirm_before:
                    type: string
                    format: date-time
                    nullable: true
                    description: Deadline to confirm the cancellation preview
                  refund_amount:
                    type: number
                  refund_amount_formatted:
                    type: string
              examples:
                TravelSingleProductDirectCancel:
                  $ref: "#/components/examples/TravelSingleCancelResponse"
                TravelSingleProductPreviewCancel:
                  $ref: "#/components/examples/TravelSingleCancelPreviewResponse"
          x-gitbook-description-html: <p>OK</p>
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Forbidden</p>
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Not Found</p>
        "422":
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
                  errors:
                    type: array
                    items:
                      type: string
          x-gitbook-description-html: <p>Unprocessable Entity</p>
      x-gitbook-description-html: >-
        <p>The Cancel Booking endpoint is used when a customer no longer
        requires coverage and has contacted the partner directly to cancel the
        policy.</p>
    parameters:
      - name: partner_code
        in: path
        required: true
        description: >-
          Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.
        schema:
          type: string
        x-gitbook-description-html: >-
          <p>Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.</p>
      - name: booking_id
        in: path
        required: true
        description: The booking ID returned from the Confirm Offer endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The booking ID returned from the Confirm Offer endpoint.</p>
  /partners/{partner_code}/bookings/{booking_id}/confirm_cancellation/{cancellation_id}/:
    post:
      summary: Cancel Booking - Confirm
      description: >-
        The Confirm Cancellation endpoint finalizes a previewed cancellation.
        Use the cancellation_id returned from the Cancel Booking endpoint when
        preview was set to true.
      tags:
        - Cancel Booking
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                reason_for_cancellation:
                  type: string
                  description: Reason for the cancellation
            examples:
              TravelSingleProduct:
                $ref: "#/components/examples/TravelSingleCancelConfirmRequest"
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  status:
                    type: string
                  quotes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        status:
                          type: string
                        price:
                          type: number
                        refund_value:
                          type: number
                        cancelled_at:
                          type: string
                          format: date-time
                  total_refund:
                    type: number
                  total_refund_formatted:
                    type: string
                  refund_amount:
                    type: number
                  refund_amount_formatted:
                    type: string
              examples:
                TravelSingleProduct:
                  $ref: "#/components/examples/TravelSingleCancelConfirmResponse"
          x-gitbook-description-html: <p>OK</p>
        "403":
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Forbidden</p>
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
          x-gitbook-description-html: <p>Not Found</p>
        "422":
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  message:
                    type: string
                  errors:
                    type: array
                    items:
                      type: string
          x-gitbook-description-html: <p>Unprocessable Entity</p>
      x-gitbook-description-html: >-
        <p>The Confirm Cancellation endpoint finalizes a previewed
        cancellation.</p>
    parameters:
      - name: partner_code
        in: path
        required: true
        description: >-
          Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.
        schema:
          type: string
        x-gitbook-description-html: >-
          <p>Partner code identifier. Client Solutions Engineer (CSE) should
          provide this value.</p>
      - name: booking_id
        in: path
        required: true
        description: The booking ID returned from the Confirm Offer endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The booking ID returned from the Confirm Offer endpoint.</p>
      - name: cancellation_id
        in: path
        required: true
        description: The cancellation ID returned from the Cancel Booking preview endpoint.
        schema:
          type: string
        x-gitbook-description-html: <p>The cancellation ID returned from the Cancel Booking preview endpoint.</p>
components:
  examples:
    TravelRequest:
      summary: Travel Request
      value:
        schema: travel-1
        customer:
          currency: AUD
          country: AU
          region: TAS
          language: en
          ip: 73.188.134.177
        partner:
          metadata:
            trip_id: Uw0t2+QQwYPnfnZjWaCztryvgCMIbZvLua6YjdNx4+4=
            subsidiary_domain: flights-us.gotogate.com
        context:
          trip:
            start_date: "2026-01-15T22:22:32.851000+00:00"
            end_date: "2026-02-13T22:22:32.851000+00:00"
            departure_country: JP
            destination_country: SG
            is_return: true
            total_cost: 1650
            flights:
              - legs:
                  - departure_datetime: "2023-11-21T16:40:00-05:00"
                    arrival_datetime: "2023-11-21T19:10:00-05:00"
                    flight_number: XP504
                    marketing_airline_iata_code: XP
                    marketing_airline_icao_code: CXP
                    operating_airline_iata_code: XP
                    operating_airline_icao_code: CXP
                    departure_airport: TPA
                    arrival_airport: ILG
                    departure_country: US
                    arrival_country: US
                departure_datetime: "2023-11-21T16:40:00-05:00"
                arrival_datetime: "2023-11-21T19:10:00-05:00"
                departure_country: US
                arrival_country: US
                departure_city: TPA
                arrival_city: ILG
              - legs:
                  - departure_datetime: "2023-11-28T13:20:00-05:00"
                    arrival_datetime: "2023-11-28T15:55:00-05:00"
                    flight_number: XP503
                    marketing_airline_iata_code: XP
                    marketing_airline_icao_code: CXP
                    operating_airline_iata_code: XP
                    operating_airline_icao_code: CXP
                    departure_airport: ILG
                    arrival_airport: TPA
                    departure_country: US
                    arrival_country: US
                departure_datetime: "2023-11-28T13:20:00-05:00"
                arrival_datetime: "2023-11-28T15:55:00-05:00"
                departure_country: US
                arrival_country: US
                departure_city: ILG
                arrival_city: TPA
          travellers:
            adults: 1
            children: 2
            infants: 1
            seniors: 1
            insured:
              - first_name: d41d8cd98f00b204e9800998ecf8427e
                last_name: d41d8cd98f00b204e9800998ecf8427e
          booking:
            reservation_number: PNR
    TravelSingleResponse:
      summary: Travel Single Product Response
      value:
        id: f91d1759-60ef-4ce9-b8d2-7daec8d9eed6
        offer_config_id: 29be4c17-f940-4a06-abdf-a35576569515
        offer_schema: travel_v1
        currency: AUD
        products:
          - id: 755100f6-d7a2-4a8f-a8b8-e054c747a375
            product_config_id: 7d28c1c6-6e62-44e6-aa5b-27b06bf17f13
            type: xcover
            schema_url: https://staging.static.xcover.com/media/product-types/schemas/xcover.json
            details:
              policy_version_id: 7933ab1a-b00a-45fa-bfe6-16adba0a4765
              start_date: "2026-01-15T22:22:32.851000+00:00"
              end_date: "2026-02-13T22:22:32.851000+00:00"
              duration_days: 29
              finance:
                price:
                  total_amount: 454.92
                  total_amount_without_tax: 430.39
                  total_amount_formatted: A$454.92
                  total_amount_without_tax_formatted: A$430.39
                tax:
                  total_amount: 24.53
                  total_amount_formatted: A$24.53
                commission:
                  total_amount: 206.59
                  total_amount_formatted: A$206.59
                surcharge:
                  total_amount: null
                  total_amount_formatted: A$0.00
              benefits:
                - benefit_id: 323084c2-c846-41c1-abd4-c42ab9966fbe
                  name: Flights
                  limit: 1650
                  limit_formatted: A$1650.00
                  excess: 0
                  excess_formatted: A$0.00
                - benefit_id: 1bdca8bb-6cb0-4678-bf1b-8158c285e478
                  name: Accommodation
                  limit: 412.5
                  limit_formatted: A$412.50
                  excess_description: 15% of claim cost
                - benefit_id: 9d53b83e-3421-41ed-901e-902481015e2f
                  name: Tours and Experiences
                  limit: 165
                  limit_formatted: A$165.00
                  excess_description: 15% of claim cost
                - benefit_id: b5df9146-7a02-44c0-90b5-b8eafa672a5c
                  name: Travel Abandonment
                  limit: 1000
                  limit_formatted: A$1000.00
                  excess_description: 10% of claim cost
                - benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  name: Emergency and Accidental Medical Expenses
                  limit: 2000000
                  limit_formatted: A$2000000.00
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: a614e645-742c-473f-8226-4290dd8f4278
                  name: Medical Repatriation
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit_description: Included in the limit above
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: 5657a7af-34b4-4591-bfef-633cb0887e98
                  name: Additional Accommodation and Travelling Expenses
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit_description: Included in the limit above
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: 3db0dfde-0cbf-4760-9ee9-5f8c2fc78d82
                  name: Emergency Dental Treatment
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit: 350
                  limit_formatted: A$350.00
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: 2245e33d-c6ac-403f-b974-c77242e127b2
                  name: Hospital Benefit
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit: 500
                  limit_formatted: A$500.00
                  limit_per_unit: 20
                  limit_per_unit_formatted: A$20.00 per 24 hours
                  excess: 0
                - benefit_id: d338f2cd-07a9-486a-a8b0-0156a78d4171
                  name: Funeral Expenses
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit: 1000
                  limit_formatted: A$1000.00
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: ff5a1288-5120-48ed-a9e8-b8faaa82438d
                  name: Personal Liability
                  limit: 1000000
                  limit_formatted: A$1000000.00
                  excess: 0
                - benefit_id: 1fa60b87-1754-4d1e-9c4c-97585a714b25
                  name: Legal Expenses
                  limit: 50000
                  limit_formatted: A$50000.00
                  excess: 0
                - benefit_id: d8746ffc-15e1-496e-b60d-3959b79068ca
                  name: Missed Departure
                  limit: 1000
                  limit_formatted: A$1000.00
                  excess_description: 10% of claim cost
                - benefit_id: cb352f39-f785-4c13-9c66-a75e817661a1
                  name: Personal Property
                  limit: 4000
                  limit_formatted: A$4000.00
                  excess_description: 10% of claim cost
                - benefit_id: adc99c44-77de-41d1-8a60-882e4d441d5b
                  name: XCover Express Baggage – Lost Luggage Compensation
                  limit_description: Helps locate and expedite the return of mishandled baggage within 96 hrs
                  excess: 0
              insured:
                - id: 8de4531a-4f56-4797-8b5b-b451fcbe4e1a
                  first_name: d41d8cd98f00b204e9800998ecf8427e
                  last_name: d41d8cd98f00b204e9800998ecf8427e
              underwriter:
                name: Pacific International Insurance Pty Ltd
                disclaimer: This cover is powered by XCover and underwritten by Pacific International Insurance Pty. Ltd.
              pds_url: https://www.xcover.com/en/pds/HESDK-NPY2H-INS?policy_type=comprehensive_travel_insurance_v1&quote_id=755100f6-d7a2-4a8f-a8b8-e054c747a375
              files: []
              extra_fields: {}
        product_rules:
          - slug: travel_insurance_group
            product_ids:
              - 755100f6-d7a2-4a8f-a8b8-e054c747a375
            initial_state: show
            min_select: 0
            max_select: 1
            events: []
        content:
          schema_version: content:1.0
          locale: en-us
          slug: travel-insurance-offer
          title: Travel Insurance
          extras: {}
          heading: Travel Insurance
          disclaimer: ""
          price_unit: ""
          description: ""
          sub_heading: You and your travel partners are covered in the event of delays, cancellations, medical expenses, baggage loss and more.
          negative_cta: No, don't protect my $1,178.38 ticket purchase
          positive_cta: ""
          disclaimer_html: ""
          required_message: "*Required. Please complete this selection to continue"
          credibility_message: 71,730 people on average protected their tickets in the last 7 days
          negative_cta_warning: Are you sure? Your $1,178.38 ticket purchase is non-refundable
          products:
            - id: 7428e36d-30d5-42b9-90f5-469e0c56e974
              product_config_id: 7d28c1c6-6e62-44e6-aa5b-27b06bf17f13
              slug: comprehensive-travel-protection
              locale: en-us
              title: Add Comprehensive Travel Protection
              benefits:
                benefit_1: Trip cancellation - Get up to 100% of your prepaid trip costs up to $10,000 for covered events that cause you to can cancel your trip.
                benefit_2: Trip interruption - Get reimbursed for covered events that require you to return home during your trip.
                benefit_3: Medical - Get up to $25,000 for emergency medical assistance and transportation per person.
                beneit_4: Baggage loss or theft - Up to $500 for lost or stolen personal items.
              disclaimer: This protection is sold by Cover Genius. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmond tempor incididunt ut labore et dolore magna aliqua. Ut nim ad minim veniam, quis. View terms
              exclusions: {}
              inclusions: {}
              description: Comprehensive travel protection
              terms_cta_html: <p data-block-key="wiifd"><a href="https://www.xcover.com/en/pds/HESDK-NPY2H-INS?policy_type=comprehensive_travel_insurance_v1&quote_id=755100f6-d7a2-4a8f-a8b8-e054c747a375" target="_blank">View terms</a></p>
              disclaimer_html: <p data-block-key="eka49">This protection is sold by Cover Genius. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmond tempor incididunt ut labore et dolore magna aliqua. Ut nim ad minim veniam, quis. <a href="https://www.xcover.com/en/pds/HESDK-NPY2H-INS?policy_type=comprehensive_travel_insurance_v1&quote_id=755100f6-d7a2-4a8f-a8b8-e054c747a375">View terms</a></p>
              credibility_badge: ""
        errors: {}
    TravelBundledResponse:
      summary: Travel Bundled Products Response
      value:
        id: f91d1759-60ef-4ce9-b8d2-7daec8d9eed6
        offer_config_id: 29be4c17-f940-4a06-abdf-a35576569515
        offer_schema: travel_v1
        currency: AUD
        products:
          - id: 755100f6-d7a2-4a8f-a8b8-e054c747a375
            product_config_id: 7d28c1c6-6e62-44e6-aa5b-27b06bf17f13
            type: xcover
            schema_url: https://staging.static.xcover.com/media/product-types/schemas/xcover.json
            details:
              policy_version_id: 7933ab1a-b00a-45fa-bfe6-16adba0a4765
              start_date: "2026-01-15T22:22:32.851000+00:00"
              end_date: "2026-02-13T22:22:32.851000+00:00"
              duration_days: 29
              finance:
                price:
                  total_amount: 454.92
                  total_amount_without_tax: 430.39
                  total_amount_formatted: A$454.92
                  total_amount_without_tax_formatted: A$430.39
                tax:
                  total_amount: 24.53
                  total_amount_formatted: A$24.53
                commission:
                  total_amount: 206.59
                  total_amount_formatted: A$206.59
                surcharge:
                  total_amount: null
                  total_amount_formatted: A$0.00
              benefits:
                - benefit_id: 323084c2-c846-41c1-abd4-c42ab9966fbe
                  name: Flights
                  limit: 1650
                  limit_formatted: A$1650.00
                  excess: 0
                  excess_formatted: A$0.00
                - benefit_id: 1bdca8bb-6cb0-4678-bf1b-8158c285e478
                  name: Accommodation
                  limit: 412.5
                  limit_formatted: A$412.50
                  excess_description: 15% of claim cost
                - benefit_id: 9d53b83e-3421-41ed-901e-902481015e2f
                  name: Tours and Experiences
                  limit: 165
                  limit_formatted: A$165.00
                  excess_description: 15% of claim cost
                - benefit_id: b5df9146-7a02-44c0-90b5-b8eafa672a5c
                  name: Travel Abandonment
                  limit: 1000
                  limit_formatted: A$1000.00
                  excess_description: 10% of claim cost
                - benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  name: Emergency and Accidental Medical Expenses
                  limit: 2000000
                  limit_formatted: A$2000000.00
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: a614e645-742c-473f-8226-4290dd8f4278
                  name: Medical Repatriation
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit_description: Included in the limit above
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: 5657a7af-34b4-4591-bfef-633cb0887e98
                  name: Additional Accommodation and Travelling Expenses
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit_description: Included in the limit above
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: 3db0dfde-0cbf-4760-9ee9-5f8c2fc78d82
                  name: Emergency Dental Treatment
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit: 350
                  limit_formatted: A$350.00
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: 2245e33d-c6ac-403f-b974-c77242e127b2
                  name: Hospital Benefit
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit: 500
                  limit_formatted: A$500.00
                  limit_per_unit: 20
                  limit_per_unit_formatted: A$20.00 per 24 hours
                  excess: 0
                - benefit_id: d338f2cd-07a9-486a-a8b0-0156a78d4171
                  name: Funeral Expenses
                  parent_benefit_id: 7ca1f290-108e-4a9a-b01a-e5eeca31caa5
                  limit: 1000
                  limit_formatted: A$1000.00
                  excess: 75
                  excess_formatted: A$75.00
                - benefit_id: ff5a1288-5120-48ed-a9e8-b8faaa82438d
                  name: Personal Liability
                  limit: 1000000
                  limit_formatted: A$1000000.00
                  excess: 0
                - benefit_id: 1fa60b87-1754-4d1e-9c4c-97585a714b25
                  name: Legal Expenses
                  limit: 50000
                  limit_formatted: A$50000.00
                  excess: 0
                - benefit_id: d8746ffc-15e1-496e-b60d-3959b79068ca
                  name: Missed Departure
                  limit: 1000
                  limit_formatted: A$1000.00
                  excess_description: 10% of claim cost
                - benefit_id: cb352f39-f785-4c13-9c66-a75e817661a1
                  name: Personal Property
                  limit: 4000
                  limit_formatted: A$4000.00
                  excess_description: 10% of claim cost
                - benefit_id: adc99c44-77de-41d1-8a60-882e4d441d5b
                  name: XCover Express Baggage – Lost Luggage Compensation
                  limit_description: Helps locate and expedite the return of mishandled baggage within 96 hrs
                  excess: 0
              insured:
                - id: 8de4531a-4f56-4797-8b5b-b451fcbe4e1a
                  first_name: d41d8cd98f00b204e9800998ecf8427e
                  last_name: d41d8cd98f00b204e9800998ecf8427e
              underwriter:
                name: Pacific International Insurance Pty Ltd
                disclaimer: This cover is powered by XCover and underwritten by Pacific International Insurance Pty. Ltd.
              pds_url: https://www.xcover.com/en/pds/HESDK-NPY2H-INS?policy_type=comprehensive_travel_insurance_v1&quote_id=755100f6-d7a2-4a8f-a8b8-e054c747a375
              files: []
              extra_fields: {}
          - id: 5f65b276-8c81-4e5a-98a2-504cffcdcef9
            product_config_id: 5d28c1c6-6e62-44e6-aa5b-27b06bf17f20
            type: xcover
            schema_url: https://staging.static.xcover.com/media/product-types/schemas/xcover.json
            details:
              policy_version_id: 45162205-7317-4a73-96ba-8bf97bc51a9b
              start_date: "2023-12-25T11:50:49.803000+00:00"
              end_date: "2023-12-26T11:50:49.803000+00:00"
              duration_days: 1
              finance:
                price:
                  total_amount: 169.26
                  total_amount_without_tax: 141.05
                  total_amount_formatted: £169.26
                  total_amount_without_tax_formatted: £141.05
                tax:
                  total_amount: 28.21
                  total_amount_formatted: £28.21
                commission:
                  total_amount: 145.08
                  total_amount_formatted: £145.08
                surcharge:
                  total_amount: 48.36
                  total_amount_formatted: £48.36
              benefits:
                - benefit_id: ac3d8601-7ff2-49a0-8d4e-7b14e1f96308
                  name: Costs prior to departure
                  limit: 5000
                  limit_formatted: £5000.00
                  excess: 50
                  excess_formatted: £50.00
                - benefit_id: 55f3a1e7-5d1b-45d4-9fb4-c81d1d44739e
                  name: Costs after your departure
                  limit: 5000
                  limit_formatted: £5000.00
                  excess: 50
                  excess_formatted: £50.00
              insured: []
              underwriter:
                name: Cowen Insurance Company Ltd
                disclaimer: This policy is arranged by XCover.com and underwritten by Cowen Insurance Company Ltd.
              pds_url: https://www.xcover.com/en/pds/8GTBH-W6W22-INS?policy_type=travel_flight_cancellation_cover_v5&quote_id=5f65b276-8c81-4e5a-98a2-504cffcdcef9
              files:
                - name: IPID_Cancellation_EN
                  url: https://static.xcover.com/media/pds/c6f705e9-9ec0-46d6-88f1-f2344ace7eb5/IPID_Cancellation_EN_oYlDmYC.pdf
                  type: OTHER
              extra_fields: {}
        product_rules:
          - slug: travel_insurance_group
            product_ids:
              - 755100f6-d7a2-4a8f-a8b8-e054c747a375
            initial_state: show
            min_select: 2
            max_select: 2
            events: []
        content:
          schema_version: content:1.0
          locale: en-us
          slug: travel-insurance-offer
          title: Travel Insurance
          extras: {}
          heading: Travel Insurance
          disclaimer: ""
          price_unit: ""
          description: ""
          sub_heading: You and your travel partners are covered in the event of delays, cancellations, medical expenses, baggage loss and more.
          negative_cta: No, don't protect my $1,178.38 ticket purchase
          positive_cta: ""
          disclaimer_html: ""
          required_message: "*Required. Please complete this selection to continue"
          credibility_message: 71,730 people on average protected their tickets in the last 7 days
          negative_cta_warning: Are you sure? Your $1,178.38 ticket purchase is non-refundable
          products:
            - id: 7428e36d-30d5-42b9-90f5-469e0c56e974
              product_config_id: 7d28c1c6-6e62-44e6-aa5b-27b06bf17f13
              slug: comprehensive-travel-protection
              locale: en-us
              title: Add Comprehensive Travel Protection
              benefits:
                benefit_1: Trip cancellation - Get up to 100% of your prepaid trip costs up to $10,000 for covered events that cause you to can cancel your trip.
                benefit_2: Trip interruption - Get reimbursed for covered events that require you to return home during your trip.
                benefit_3: Medical - Get up to $25,000 for emergency medical assistance and transportation per person.
                beneit_4: Baggage loss or theft - Up to $500 for lost or stolen personal items.
              disclaimer: This protection is sold by Cover Genius. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmond tempor incididunt ut labore et dolore magna aliqua. Ut nim ad minim veniam, quis. View terms
              exclusions: {}
              inclusions: {}
              description: Comprehensive travel protection
              terms_cta_html: <p data-block-key="wiifd"><a href="https://staging.xcover.com/en-us/pds/f91d1759-60ef-4ce9-b8d2-7daec8d9eed6?policy_type=event_ticket_protection_v1" target="_blank">View terms</a></p>
              disclaimer_html: <p data-block-key="eka49">This protection is sold by Cover Genius. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmond tempor incididunt ut labore et dolore magna aliqua. Ut nim ad minim veniam, quis. <a href="https://staging.xcover.com/en-us/pds/f91d1759-60ef-4ce9-b8d2-7daec8d9eed6?policy_type=event_ticket_protection_v1">View terms</a></p>
              credibility_badge: ""
            - id: 5f65b276-8c81-4e5a-98a2-504cffcdcef9
              product_config_id: 5d28c1c6-6e62-44e6-aa5b-27b06bf17f20
              slug: trip-cancellation-protection
              locale: en-us
              title: Add Trip Cancelation Protection
              benefits:
                benefit_1: Trip Cancelation - Get up to 100% of your prepaid trip costs up to $10,000 for covered events that cause you to cancel your trip.
                benefit_2: "Non-insurance perk: Get an optional eSIM for access to 1GB free mobile data in 60+ countries ."
              disclaimer: This protection is sold by Cover Genius. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmond tempor incididunt ut labore et dolore magna aliqua. Ut nim ad minim veniam, quis. View terms
              exclusions: {}
              inclusions: {}
              description: Trip Cancellation
              terms_cta_html: <p data-block-key="wiifd"><a href="https://www.xcover.com/en/pds/8GTBH-W6W22-INS?policy_type=travel_flight_cancellation_cover_v5&quote_id=5f65b276-8c81-4e5a-98a2-504cffcdcef9" target="_blank">View terms</a></p>
              disclaimer_html: <p data-block-key="eka49">This protection is sold by Cover Genius. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmond tempor incididunt ut labore et dolore magna aliqua. Ut nim ad minim veniam, quis. <a href="https://www.xcover.com/en/pds/8GTBH-W6W22-INS?policy_type=travel_flight_cancellation_cover_v5&quote_id=5f65b276-8c81-4e5a-98a2-504cffcdcef9">View terms</a></p>
              credibility_badge: ""
        errors: {}
    TravelSingleConfirmRequest:
      summary: Travel Single Product - Confirm Offer Request
      value:
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            insured:
              - first_name: "d41d8cd98f00b204e9800998ecf8427e"
                last_name: "d41d8cd98f00b204e9800998ecf8427e"
                age: 34
                email: "d41d8cd98f00b204e9800998ecf8427e@email.com"
                birth_date: "1987-02-24"
        policyholder:
          first_name: "d41d8cd98f00b204e9800998ecf8427e"
          last_name: "d41d8cd98f00b204e9800998ecf8427e"
          email: "Alva58@email.com"
          address1: "4715 Odie Field"
          city: "West Paytonstad"
          country: "AU"
    TravelSingleConfirmResponse:
      summary: Travel Single Product - Confirm Offer Response
      value:
        id: "CJTE3-PFJF7-INS"
        status: "CONFIRMED"
        currency: "AUD"
        total_price: 454.92
        total_price_formatted: "A$454.92"
        partner_transaction_id: null
        created_at: "2026-01-15T22:22:32.851000Z"
        updated_at: "2026-01-15T22:22:32.900000Z"
        pds_url: "https://www.xcover.com/en/pds/CJTE3-PFJF7-INS"
        security_token: "0rRaJ-WzAoa-oHjBK-14f6M"
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            policy_start_date: "2026-01-15T22:22:32.851000+00:00"
            policy_end_date: "2026-02-13T22:22:32.851000+00:00"
            status: "CONFIRMED"
            price: 454.92
            price_formatted: "A$454.92"
            policy:
              policy_type: "comprehensive_travel_insurance"
              policy_type_version: "1"
              policy_type_slug: "comprehensive_travel_insurance_v1"
              policy_type_group_name: "travel"
              policy_name: "Comprehensive Travel Protection (AU)"
              policy_code: "BKCTPAU0"
              policy_version: "7933ab1a-b00a-45fa-bfe6-16adba0a4765"
              category: "comprehensive_travel_insurance"
              policy_currency: "AUD"
            insured:
              - id: "8de4531a-4f56-4797-8b5b-b451fcbe4e1a"
                first_name: "d41d8cd98f00b204e9800998ecf8427e"
                last_name: "d41d8cd98f00b204e9800998ecf8427e"
                email: "d41d8cd98f00b204e9800998ecf8427e@email.com"
                age: 34
                birth_date: "1987-02-24"
            tax:
              total_tax: 24.53
              total_amount_without_tax: 430.39
              taxes:
                - tax_amount: 0
                  tax_code: "ESL"
                  tax_amount_formatted: "A$0.00"
                - tax_amount: 24.53
                  tax_code: "GST"
                  tax_amount_formatted: "A$24.53"
                - tax_amount: 0
                  tax_code: "SD"
                  tax_amount_formatted: "A$0.00"
              total_tax_formatted: "A$24.53"
              total_amount_without_tax_formatted: "A$430.39"
            duration: "29 00:00:00"
            benefits:
              - benefit_content_id: "323084c2-c846-41c1-abd4-c42ab9966fbe"
                description: "Flights"
                limit: 1650
                limit_formatted: "A$1650.00"
                excess: 0
                excess_formatted: "A$0.00"
              - benefit_content_id: "7ca1f290-108e-4a9a-b01a-e5eeca31caa5"
                description: "Emergency and Accidental Medical Expenses"
                limit: 2000000
                limit_formatted: "A$2000000.00"
                excess: 75
                excess_formatted: "A$75.00"
              - benefit_content_id: "ff5a1288-5120-48ed-a9e8-b8faaa82438d"
                description: "Personal Liability"
                limit: 1000000
                limit_formatted: "A$1000000.00"
                excess: 0
                excess_formatted: "A$0.00"
            commission:
              partner_commission: 206.59
              surcharge_commission: 0
              total_commission: 206.59
              partner_commission_formatted: "A$206.59"
              surcharge_commission_formatted: "A$0.00"
              total_commission_formatted: "A$206.59"
            created_at: "2026-01-15T22:22:32.851000Z"
            confirmed_at: "2026-01-15T22:22:32.900000Z"
            updated_at: "2026-01-15T22:22:32.900000Z"
            cancelled_at: null
            cancelled_from: null
            is_renewable: false
            can_be_cancelled: true
            pds_url: "https://www.xcover.com/en/pds/CJTE3-PFJF7-INS?policy_type=comprehensive_travel_insurance_v1&quote_id=755100f6-d7a2-4a8f-a8b8-e054c747a375"
        coi:
          url: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
          pdf: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS.pdf?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
        account_url: "https://www.xcover.com/en/account?id=e78e37b6-efb5-4574-abcd-d8f8f599a6c1"
        sign_up_url: "https://www.xcover.com/en/account?id=e78e37b6-efb5-4574-abcd-d8f8f599a6c1"
        policyholder:
          first_name: "d41d8cd98f00b204e9800998ecf8427e"
          last_name: "d41d8cd98f00b204e9800998ecf8427e"
          email: "alva58@email.com"
          phone: null
          address1: "4715 Odie Field"
          city: "West Paytonstad"
          region: "TAS"
          country: "AU"
          allow_updates: true
        total_tax: 24.53
        total_tax_formatted: "A$24.53"
        total_premium: 430.39
        total_premium_formatted: "A$430.39"
        fnol_link: "https://www.xcover.com/en/account/claims/fnol?bookingID=CJTE3-PFJF7-INS&security_token=0rRaJ-WzAoa-oHjBK-14f6M"
        booking_agent: null
    TravelSingleModifyRequest:
      summary: Travel Single Product - Modify Booking Request
      value:
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            update_fields:
              total_tickets_price: 1500
    TravelSingleModifyResponse:
      summary: Travel Single Product - Modify Booking Response
      value:
        id: "CJTE3-PFJF7-INS"
        status: "CONFIRMED"
        currency: "AUD"
        total_price: 448.8
        total_price_formatted: "A$448.80"
        partner_transaction_id: null
        created_at: "2026-01-15T22:22:32.851000Z"
        updated_at: "2026-01-15T22:45:00.000000Z"
        pds_url: "https://www.xcover.com/en/pds/CJTE3-PFJF7-INS"
        security_token: "0rRaJ-WzAoa-oHjBK-14f6M"
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            policy_start_date: "2026-01-15T22:22:32.851000+00:00"
            policy_end_date: "2026-02-13T22:22:32.851000+00:00"
            status: "CONFIRMED"
            price: 448.8
            price_formatted: "A$448.80"
            price_diff: -6.12
            price_diff_formatted: "-A$6.12"
            policy:
              policy_type: "comprehensive_travel_insurance"
              policy_type_version: "1"
              policy_type_slug: "comprehensive_travel_insurance_v1"
              policy_type_group_name: "travel"
              policy_name: "Comprehensive Travel Protection (AU)"
              policy_code: "BKCTPAU0"
              policy_version: "7933ab1a-b00a-45fa-bfe6-16adba0a4765"
              category: "comprehensive_travel_insurance"
              policy_currency: "AUD"
            insured:
              - id: "8de4531a-4f56-4797-8b5b-b451fcbe4e1a"
                first_name: "d41d8cd98f00b204e9800998ecf8427e"
                last_name: "d41d8cd98f00b204e9800998ecf8427e"
                email: "d41d8cd98f00b204e9800998ecf8427e@email.com"
                age: 34
                birth_date: "1987-02-24"
            tax:
              total_tax: 23.88
              total_amount_without_tax: 424.92
              total_tax_formatted: "A$23.88"
              total_amount_without_tax_formatted: "A$424.92"
            commission:
              partner_commission: 203.96
              total_commission: 203.96
              partner_commission_formatted: "A$203.96"
              total_commission_formatted: "A$203.96"
            can_be_cancelled: true
        coi:
          url: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
          pdf: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS.pdf?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
        policyholder:
          first_name: "d41d8cd98f00b204e9800998ecf8427e"
          last_name: "d41d8cd98f00b204e9800998ecf8427e"
          email: "alva58@email.com"
          country: "AU"
        total_tax: 23.88
        total_tax_formatted: "A$23.88"
        total_premium: 424.92
        total_premium_formatted: "A$424.92"
        total_price_diff: -6.12
        total_price_diff_formatted: "-A$6.12"
        fnol_link: "https://www.xcover.com/en/account/claims/fnol?bookingID=CJTE3-PFJF7-INS&security_token=0rRaJ-WzAoa-oHjBK-14f6M"
    TravelSingleModifyPreviewResponse:
      summary: Travel Single Product - Modify Booking Preview Response
      value:
        id: "CJTE3-PFJF7-INS"
        status: "CONFIRMED"
        currency: "AUD"
        total_price: 448.8
        total_price_formatted: "A$448.80"
        partner_transaction_id: null
        created_at: "2026-01-15T22:22:32.851000Z"
        updated_at: "2026-01-15T22:45:00.000000Z"
        pds_url: "https://www.xcover.com/en/pds/CJTE3-PFJF7-INS"
        security_token: "0rRaJ-WzAoa-oHjBK-14f6M"
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            policy_start_date: "2026-01-15T22:22:32.851000+00:00"
            policy_end_date: "2026-02-13T22:22:32.851000+00:00"
            status: "CONFIRMED"
            price: 448.8
            price_formatted: "A$448.80"
            price_diff: -6.12
            price_diff_formatted: "-A$6.12"
        total_price_diff: -6.12
        total_price_diff_formatted: "-A$6.12"
        update_id: "ZSaXV-UPpMW-h2YO8"
    TravelSingleModifyConfirmResponse:
      summary: Travel Single Product - Modify Booking Confirm Response
      value:
        id: "CJTE3-PFJF7-INS"
        status: "CONFIRMED"
        currency: "AUD"
        total_price: 448.8
        total_price_formatted: "A$448.80"
        partner_transaction_id: null
        created_at: "2026-01-15T22:22:32.851000Z"
        updated_at: "2026-01-15T22:50:00.000000Z"
        pds_url: "https://www.xcover.com/en/pds/CJTE3-PFJF7-INS"
        security_token: "0rRaJ-WzAoa-oHjBK-14f6M"
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            policy_start_date: "2026-01-15T22:22:32.851000+00:00"
            policy_end_date: "2026-02-13T22:22:32.851000+00:00"
            status: "CONFIRMED"
            price: 448.8
            price_formatted: "A$448.80"
            price_diff: -6.12
            price_diff_formatted: "-A$6.12"
        coi:
          url: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
          pdf: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS.pdf?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
        policyholder:
          first_name: "d41d8cd98f00b204e9800998ecf8427e"
          last_name: "d41d8cd98f00b204e9800998ecf8427e"
          email: "alva58@email.com"
          country: "AU"
        total_tax: 23.88
        total_tax_formatted: "A$23.88"
        total_premium: 424.92
        total_premium_formatted: "A$424.92"
        total_price_diff: -6.12
        total_price_diff_formatted: "-A$6.12"
        fnol_link: "https://www.xcover.com/en/account/claims/fnol?bookingID=CJTE3-PFJF7-INS&security_token=0rRaJ-WzAoa-oHjBK-14f6M"
    TravelSingleCancelRequest:
      summary: Travel Single Product - Cancel Booking Request (Direct)
      value:
        preview: false
        refund_required: true
    TravelSingleCancelResponse:
      summary: Travel Single Product - Cancel Booking Response (Direct)
      value:
        id: "CJTE3-PFJF7-INS"
        status: "CANCELLED"
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            policy_start_date: "2026-01-15T22:22:32.851000Z"
            policy_end_date: "2026-02-13T22:22:32.851000Z"
            policy_cancellation_date: "2026-01-16T10:00:00.000000Z"
            policy_coolingoff_date: "2026-01-29T22:22:32.851000Z"
            status: "CANCELLED"
            price: 454.92
            refund_value: 454.92
            adjustment_fee: 0
            policy:
              policy_type: "comprehensive_travel_insurance"
              policy_type_version: "1"
              policy_type_slug: "comprehensive_travel_insurance_v1"
              policy_type_group_name: "travel"
              policy_name: "Comprehensive Travel Protection (AU)"
              policy_code: "BKCTPAU0"
              policy_version: "7933ab1a-b00a-45fa-bfe6-16adba0a4765"
              category: "comprehensive_travel_insurance"
              policy_currency: "AUD"
            insured:
              - id: "8de4531a-4f56-4797-8b5b-b451fcbe4e1a"
                first_name: "d41d8cd98f00b204e9800998ecf8427e"
                last_name: "d41d8cd98f00b204e9800998ecf8427e"
                email: "d41d8cd98f00b204e9800998ecf8427e@email.com"
                age: 34
                birth_date: "1987-02-24"
            created_at: "2026-01-15T22:22:32.851000Z"
            confirmed_at: "2026-01-15T22:22:32.900000Z"
            updated_at: "2026-01-16T10:00:00.000000Z"
            cancelled_at: "2026-01-16T10:00:00.000000Z"
            cancelled_from: "2026-01-16T10:00:00.000000Z"
            commission: null
        policyholder:
          first_name: "d41d8cd98f00b204e9800998ecf8427e"
          last_name: "d41d8cd98f00b204e9800998ecf8427e"
          email: "alva58@email.com"
          country: "AU"
          allow_updates: false
          fields_allowed_to_update: []
        pds_url: "https://www.xcover.com/en/pds/CJTE3-PFJF7-INS"
        coi:
          url: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
          pdf: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS.pdf?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
        created_at: "2026-01-15T22:22:32.851000Z"
        updated_at: "2026-01-16T10:00:00.000000Z"
        total_price: 0
        total_price_formatted: "A$0.00"
        total_refund: 454.92
        total_refund_formatted: "A$454.92"
        total_tax: 0
        total_tax_formatted: "A$0.00"
        total_premium: 0
        total_premium_formatted: "A$0.00"
        currency: "AUD"
        cancellation_id: null
        confirm_before: null
        refund_amount: 454.92
        refund_amount_formatted: "A$454.92"
        cancellation_payout_url: null
    TravelSingleCancelPreviewRequest:
      summary: Travel Single Product - Cancel Booking Request (Preview)
      value:
        preview: true
        refund_required: true
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            reason_for_cancellation: "no longer needed"
    TravelSingleCancelPreviewResponse:
      summary: Travel Single Product - Cancel Booking Response (Preview)
      value:
        id: "CJTE3-PFJF7-INS"
        status: "CANCELLED"
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            policy_start_date: "2026-01-15T22:22:32.851000Z"
            policy_end_date: "2026-02-13T22:22:32.851000Z"
            policy_cancellation_date: null
            policy_coolingoff_date: "2026-01-29T22:22:32.851000Z"
            status: "CANCELLED"
            price: 454.92
            refund_value: 454.92
            adjustment_fee: 0
            policy:
              policy_type: "comprehensive_travel_insurance"
              policy_type_version: "1"
              policy_type_slug: "comprehensive_travel_insurance_v1"
              policy_type_group_name: "travel"
              policy_name: "Comprehensive Travel Protection (AU)"
              policy_code: "BKCTPAU0"
              policy_version: "7933ab1a-b00a-45fa-bfe6-16adba0a4765"
              category: "comprehensive_travel_insurance"
              policy_currency: "AUD"
            insured:
              - id: "8de4531a-4f56-4797-8b5b-b451fcbe4e1a"
                first_name: "d41d8cd98f00b204e9800998ecf8427e"
                last_name: "d41d8cd98f00b204e9800998ecf8427e"
                email: "d41d8cd98f00b204e9800998ecf8427e@email.com"
                age: 34
                birth_date: "1987-02-24"
            created_at: "2026-01-15T22:22:32.851000Z"
            confirmed_at: "2026-01-15T22:22:32.900000Z"
            updated_at: "2026-01-16T10:00:00.000000Z"
            cancelled_at: null
            cancelled_from: null
            commission: null
        policyholder:
          first_name: "d41d8cd98f00b204e9800998ecf8427e"
          last_name: "d41d8cd98f00b204e9800998ecf8427e"
          email: "alva58@email.com"
          country: "AU"
          allow_updates: true
        pds_url: "https://www.xcover.com/en/pds/CJTE3-PFJF7-INS"
        coi:
          url: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
          pdf: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS.pdf?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
        created_at: "2026-01-15T22:22:32.851000Z"
        updated_at: "2026-01-16T10:00:00.000000Z"
        total_price: 0
        total_price_formatted: "A$0.00"
        total_refund: 454.92
        total_refund_formatted: "A$454.92"
        total_tax: 0
        total_tax_formatted: "A$0.00"
        total_premium: 0
        total_premium_formatted: "A$0.00"
        currency: "AUD"
        cancellation_id: "nsX8f-21DZ5-ZZx4J-CCL"
        confirm_before: "2026-01-17T10:00:00.000000Z"
        refund_amount: 454.92
        refund_amount_formatted: "A$454.92"
        cancellation_payout_url: null
    TravelSingleCancelConfirmRequest:
      summary: Travel Single Product - Cancel Booking Confirm Request
      value:
        reason_for_cancellation: "no longer needed"
    TravelSingleCancelConfirmResponse:
      summary: Travel Single Product - Cancel Booking Confirm Response
      value:
        id: "CJTE3-PFJF7-INS"
        status: "CANCELLED"
        quotes:
          - id: "755100f6-d7a2-4a8f-a8b8-e054c747a375"
            policy_start_date: "2026-01-15T22:22:32.851000Z"
            policy_end_date: "2026-02-13T22:22:32.851000Z"
            policy_cancellation_date: "2026-01-16T10:05:00.000000Z"
            policy_coolingoff_date: "2026-01-29T22:22:32.851000Z"
            status: "CANCELLED"
            price: 454.92
            refund_value: 454.92
            adjustment_fee: 0
            created_at: "2026-01-15T22:22:32.851000Z"
            confirmed_at: "2026-01-15T22:22:32.900000Z"
            updated_at: "2026-01-16T10:05:00.000000Z"
            cancelled_at: "2026-01-16T10:05:00.000000Z"
            cancelled_from: "2026-01-16T10:05:00.000000Z"
            commission: null
        policyholder:
          first_name: "d41d8cd98f00b204e9800998ecf8427e"
          last_name: "d41d8cd98f00b204e9800998ecf8427e"
          email: "alva58@email.com"
          country: "AU"
          allow_updates: false
          fields_allowed_to_update: []
        pds_url: "https://www.xcover.com/en/pds/CJTE3-PFJF7-INS"
        coi:
          url: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
          pdf: "https://www.xcover.com/en/coi/CJTE3-PFJF7-INS.pdf?security_token=0rRaJ-WzAoa-oHjBK-14f6M"
        created_at: "2026-01-15T22:22:32.851000Z"
        updated_at: "2026-01-16T10:05:00.000000Z"
        total_price: 0
        total_price_formatted: "A$0.00"
        total_refund: 454.92
        total_refund_formatted: "A$454.92"
        total_tax: 0
        total_tax_formatted: "A$0.00"
        total_premium: 0
        total_premium_formatted: "A$0.00"
        currency: "AUD"
        cancellation_id: null
        confirm_before: null
        refund_amount: 454.92
        refund_amount_formatted: "A$454.92"
        cancellation_payout_url: null
  securitySchemes:
    CustomAPISignature:
      type: apiKey
      name: Authorization
      in: header
      description: >
        **Composite Authentication Scheme (Client Key, Date, and Signature)**


        This scheme requires the client to provide **three** mandatory headers
        in every request:


        ### 1. X-Api-Key (Client Key)

        * **Purpose:** Public identifier for the API consumer.

        * **Example:** `X-Api-Key: a1b2c3d4e5f6g7h8`


        ### 2. Date (Timestamp)

        * **Purpose:** Timestamp used for generating the signature and
        preventing replay attacks.

        * **Format:** RFC 7231 format (e.g., in GMT).

        * **Example:** `Date: Sun, 09 Nov 2025 04:04:00 GMT`


        ### 3. Authorization (Computed Signature)

        * **Purpose:** The cryptographic signature that verifies the request's
        authenticity and integrity.

        * **Format:** `SIGNATURE [authHeader]`


        **Signature Generation Logic:**

        The `authHeader` value is derived from a cryptographic hash (e.g.,
        HMAC-SHA256) of canonical request components (HTTP Method, Path, and the
        contents of the `Date` header), signed with the private **Client
        Secret**.
      x-gitbook-description-html: >-
        <p><strong>Composite Authentication Scheme (Client Key, Date, and
        Signature)</strong></p>

        <p>This scheme requires the client to provide <strong>three</strong>
        mandatory headers in every request:</p>

        <h3>1. X-Api-Key (Client Key)</h3>

        <ul>

        <li><strong>Purpose:</strong> Public identifier for the API
        consumer.</li>

        <li><strong>Example:</strong> <code>X-Api-Key:
        a1b2c3d4e5f6g7h8</code></li>

        </ul>

        <h3>2. Date (Timestamp)</h3>

        <ul>

        <li><strong>Purpose:</strong> Timestamp used for generating the
        signature and preventing replay attacks.</li>

        <li><strong>Format:</strong> RFC 7231 format (e.g., in GMT).</li>

        <li><strong>Example:</strong> <code>Date: Sun, 09 Nov 2025 04:04:00
        GMT</code></li>

        </ul>

        <h3>3. Authorization (Computed Signature)</h3>

        <ul>

        <li><strong>Purpose:</strong> The cryptographic signature that verifies
        the request's authenticity and integrity.</li>

        <li><strong>Format:</strong> <code>SIGNATURE [authHeader]</code></li>

        </ul>

        <p><strong>Signature Generation Logic:</strong>

        The <code>authHeader</code> value is derived from a cryptographic hash
        (e.g., HMAC-SHA256) of canonical request components (HTTP Method, Path,
        and the contents of the <code>Date</code> header), signed with the
        private <strong>Client Secret</strong>.</p>
security:
  - CustomAPISignature: []
