Hopper Disruption Guarantee (DG) API

**What is Disruption Guarantee?** Disruption Guarantee (DG) offers a premium disruption assistance service to customers in case of flight disruption, including rebooking options on any airline or a refund option. **** **How it works** There are two distinct flows for DG: - The _purchase flow_, enabling customers to purchase the product within the airline’s booking flow. - The _exercise flow_, enabling customers to benefit from the premium disruption assistance service in case of a flight disruption. For the _purchase flow_, the first step is to [Create a Session](#operation/postSessions) Both the purchase and the exercise of DG should be tracked by the airline in the airline’s Passenger Name Record (PNR) according to the applicable industry standards. **** **Purchase flow** DG follows the industry standard of a two step purchase process. 1. Once the user is landing on the page displaying the DG offer, the airline will call the [Create DG Offers](#operation/postDg_offers) endpoint. DG Offers can be created at multiple granular levels. The request must include a description of the Itinerary for which the offers are requested. The response will contain - the price for the product (`premium`), - the refundable amount (`coverage`), - the maximum price per passenger for a new flight (`service_cap`), - the delay threshold to trigger the policy (`min_minuted_delay`), - the start of the timeframe to trigger the policy (`max_hours_before_departure`) - and the description of the offer in the user’s language (`contents`). 2. If a user is attaching DG to his booking, the airline will call the [Create DG Contract](#operation/postDg_contracts) endpoint. The request must include the selected offer\_id(s) and a description of the Itinerary for which the contract is requested, which must match the one of the Offer. At this stage, the DG Contract is only _created_. It will be confirmed once the customer has made the payment, which can be done in two ways: 1. If the airline is the Merchant of Records (MoR), it will capture the payment for the total amount of the booking, including the DG fee amount. Upon a successful payment, the airline will call the Update DG Contract Status endpoint to set the DG contract to _confirmed_. The airline will track this purchase in its PNR following the industry standards that apply to ticketing or ticketless carriers. 2. If HTS is the Merchant of Records (MoR), the airline will capture the payment for the amount of the booking excluding the DG fee, while HTS will capture the payment for the DG fee amount. Upon a successful payment of its portion, the airline will call the Process DG Payment endpoint for HTS to capture the payment for the DG fee amount. Once successful, the DG contract will be set to _confirmed_. The airline will track this purchase in its PNR. The details of a DG contract can be retrieved at any time through the [Get a DG Contract](#operation/getDg_contractsId) endpoint. **** **Exercise flow** In this version of the API, the DG exercise is powered by HTS as a standalone flow, without any endpoint publicly exposed.\ In a future version of the API, the DG exercise will be initialized from the “Manage My Bookings” (MMB) page of the airline. New endpoints will be released to that purpose.

Operations 9

POST /dg_offers Create DG Offers #
POST /dg_contracts Create a DG Contract #
GET /dg_contracts/{id} Get a DG contract #
POST /dg_contracts/{id}/payment Process DG payment #
PUT /dg_contracts/{id}/update_status Update DG Contract Status #
PUT /dg_contracts/{id}/itinerary_slices Update DG Contract Itinerary Slices #
POST /dg_contract_exercises Create DG Exercise #
GET /customer/dg/payout/receipt Get payout receipt PDF #
GET /customer/dg_exercises/{id}/session Get session ID by DG exercise ID #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hopper-com-disruption-guarantee-dg-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hopper-com-disruption-guarantee-dg-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Airline Analytics Disruption Guarantee (DG) Disruption Guarantee (DG) API
  version: v1.1
  description: In order to measure and continuously improve HTS Ancillaries performance, specific events occurring during a customer session can be sent by the partner airlines using some dedicated endpoints.
servers:
- url: https://airlines-api.hopper.com/airline/v1.1
tags:
- description: "**What is Disruption Guarantee?**\n\nDisruption Guarantee (DG) offers a premium disruption assistance service to customers in case of flight disruption, including rebooking options on any airline or a refund option.\n\n****\n\n**How it works**\n\nThere are two distinct flows for DG:\n\n- The _purchase flow_, enabling customers to purchase the product within the airline’s booking flow.\n- The _exercise flow_, enabling customers to benefit from the premium disruption assistance service in case of a flight disruption.\n\nFor the _purchase flow_, the first step is to [Create a Session](#operation/postSessions)\n\nBoth the purchase and the exercise of DG should be tracked by the airline in the airline’s Passenger Name Record (PNR) according to the applicable industry standards.\n\n****\n\n**Purchase flow**\n\nDG follows the industry standard of a two step purchase process.\n\n1. Once the user is landing on the page displaying the DG offer, the airline will call the [Create DG Offers](#operation/postDg_offers) endpoint. DG Offers can be created at multiple granular levels. The request must include a description of the Itinerary for which the offers are requested. The response will contain\n\n   - the price for the product (`premium`),\n   - the refundable amount (`coverage`),\n   - the maximum price per passenger for a new flight (`service_cap`),\n   - the delay threshold to trigger the policy (`min_minuted_delay`),\n   - the start of the timeframe to trigger the policy (`max_hours_before_departure`)\n   - and the description of the offer in the user’s language (`contents`).\n\n2. If a user is attaching DG to his booking, the airline will call the [Create DG Contract](#operation/postDg_contracts) endpoint. The request must include the selected offer\\_id(s) and a description of the Itinerary for which the contract is requested, which must match the one of the Offer. At this stage, the DG Contract is only _created_. It will be confirmed once the customer has made the payment, which can be done in two ways:\n\n   1. If the airline is the Merchant of Records (MoR), it will capture the payment for the total amount of the booking, including the DG fee amount. Upon a successful payment, the airline will call the Update DG Contract Status endpoint to set the DG contract to _confirmed_. The airline will track this purchase in its PNR following the industry standards that apply to ticketing or ticketless carriers.\n   2. If HTS is the Merchant of Records (MoR), the airline will capture the payment for the amount of the booking excluding the DG fee, while HTS will capture the payment for the DG fee amount. Upon a successful payment of its portion, the airline will call the Process DG Payment endpoint for HTS to capture the payment for the DG fee amount. Once successful, the DG contract will be set to _confirmed_. The airline will track this purchase in its PNR.\n   \nThe details of a DG contract can be retrieved at any time through the [Get a DG Contract](#operation/getDg_contractsId) endpoint.\n\n****\n\n**Exercise flow**\n\nIn this version of the API, the DG exercise is powered by HTS as a standalone flow, without any endpoint publicly exposed.\\\nIn a future version of the API, the DG exercise will be initialized from the “Manage My Bookings” (MMB) page of the airline. New endpoints will be released to that purpose.\n"
  name: Disruption Guarantee (DG)
paths:
  /dg_offers:
    post:
      description: Create DG offers for a user's trip
      operationId: postDg_offers
      parameters:
      - description: The ID of the current airline session, see [Sessions](#tag/Sessions)
        example: 9fd3f2f9-e5aa-4128-ace9-3c4ee37b685f
        explode: false
        in: header
        name: HC-Session-ID
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_dg_offers_request'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/create_dg_offer_item_response'
                type: array
          description: The created DG offers
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            HTS-Session-ID:
              description: The ID of the current session, see [Sessions](#tag/Sessions)
              example: 9fd3f2f9-e5aa-4128-ace9-3c4ee37b685f
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '401':
          description: The client could not be authenticated
        '403':
          description: The authenticated client does not have permission to call this endpoint
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      security:
      - PartnerAuth: []
        apiKeyAuth: []
      summary: Create DG Offers
      tags:
      - Disruption Guarantee (DG)
  /dg_contracts:
    post:
      description: Create a DG contract from selected DG offer(s).
      operationId: postDg_contracts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_dg_contract_request'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dg_contract'
          description: The created DG contract
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '204':
          description: The DG contract creation request was successfully validated but not performed
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '401':
          description: The client could not be authenticated
        '403':
          description: The authenticated client does not have permission to call this endpoint
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      security:
      - PartnerAuth: []
        apiKeyAuth: []
      summary: Create a DG Contract
      tags:
      - Disruption Guarantee (DG)
  /dg_contracts/{id}:
    get:
      description: Get a DG contract
      operationId: getDg_contractsId
      parameters:
      - description: A unique identifier for a contract
        explode: false
        in: path
        name: id
        required: true
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dg_contract'
          description: The requested DG contract
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '401':
          description: The client could not be authenticated
        '403':
          description: The authenticated client does not have permission to call this endpoint
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      security:
      - PartnerAuth: []
        apiKeyAuth: []
      summary: Get a DG contract
      tags:
      - Disruption Guarantee (DG)
  /dg_contracts/{id}/payment:
    post:
      description: "When HTS is the Merchant of Record (MoR), the customer's credit card is charged by HTS for the DG fee.\n\nHTS is relying on an external payment gateway to process the payments, it allows the partner airline to tokenize the customer's credit card details and then pass the generated token in HTS Ancillaries for Airlines API payment endpoints in order to process the payment and confirm the contract related to the purchased product.\n\n**Token URL**: https://core.spreedly.com/v1/payment_methods.json\n  \n**Example Token Request**:  \n  \n```  \ncurl --request POST --url https://core.spreedly.com/v1/payment_methods.json --header 'content-type: application/json' -u  \"login:password\" --data '{\n\t\"payment_method\": {\n\t\t\"email\": \"aaa@bbb.ccc\",\n\t\t\"credit_card\": {\n\t\t\t\"number\": \"4111111111111111\",\n\t\t\t\"month\": \"09\",\n\t\t\t\"year\": \"2029\",\n\t\t\t\"first_name\": \"John\",\n\t\t\t\"last_name\": \"Smith\",\n\t\t\t\"address1\": \"123 12th St\",\n\t\t\t\"address2\": \"Building B\",\n\t\t\t\"city\": \"Quebec City\",\n\t\t\t\"state\": \"QC\",\n\t\t\t\"zip\": \"G1R 4S9\",\n\t\t\t\"country\": \"CA\",\n\t\t\t\"verification_value\": \"123\"\n\t\t}\n\t}\n}'\n```\n**Example Token Response**:  \n```  \n{\n\t\"transaction\":  {\n\t\t\"token\":  \"KtToV20m9qT1Yi8pbTeLNz0Ypns\",\n\t\t\"created_at\":  \"2023-11-29T13:31:56Z\",\n\t\t\"updated_at\":  \"2023-11-29T13:31:56Z\",\n\t\t\"succeeded\":  true,\n\t\t\"transaction_type\":  \"AddPaymentMethod\",\n\t\t\"retained\":  false,\n\t\t\"state\":  \"succeeded\",\n\t\t\"message_key\":  \"messages.transaction_succeeded\",\n\t\t\"message\":  \"Succeeded!\",\n\t\t\"payment_method\":  {\n\t\t\t\"token\":  \"MxyYEhDK12CUAA18bJDkAq0ab3y\",\n\t\t\t\"created_at\":  \"2023-11-29T13:31:56Z\",\n\t\t\t\"updated_at\":  \"2023-11-29T13:31:56Z\",\n\t\t\t\"email\":  \"aaa@bbb.ccc\",\n\t\t\t\"data\":  null,\n\t\t\t\"storage_state\":  \"cached\",\n\t\t\t\"test\":  true,\n\t\t\t\"metadata\":  null,\n\t\t\t\"callback_url\":  null,\n\t\t\t\"last_four_digits\":  \"1111\",\n\t\t\t\"first_six_digits\":  \"411111\",\n\t\t\t\"card_type\":  \"visa\",\n\t\t\t\"first_name\":  \"John\",\n\t\t\t\"last_name\":  \"Smith\",\n\t\t\t\"month\":  9,\n\t\t\t\"year\":  2029,\n\t\t\t\"address1\":  \"123 12th St\",\n\t\t\t\"address2\":  \"Building B\",\n\t\t\t\"city\":  \"Quebec City\",\n\t\t\t\"state\":  \"QC\",\n\t\t\t\"zip\":  \"G1R 4S9\",\n\t\t\t\"country\":  \"CA\",\n\t\t\t\"phone_number\":  null,\n\t\t\t\"company\":  null,\n\t\t\t\"full_name\":  \"John Smith\",\n\t\t\t\"eligible_for_card_updater\":  true,\n\t\t\t\"shipping_address1\":  null,\n\t\t\t\"shipping_address2\":  null,\n\t\t\t\"shipping_city\":  null,\n\t\t\t\"shipping_state\":  null,\n\t\t\t\"shipping_zip\":  null,\n\t\t\t\"shipping_country\":  null,\n\t\t\t\"shipping_phone_number\":  null,\n\t\t\t\"issuer_identification_number\":  \"41111111\",\n\t\t\t\"click_to_pay\":  false,\n\t\t\t\"managed\":  true,\n\t\t\t\"payment_method_type\":  \"credit_card\",\n\t\t\t\"errors\":  [],\n\t\t\t\"bin_metadata\":  {\n\t\t\t\t\"message\":  \"BIN Metadata is available only to Advanced Vault enrolled customers and payment methods. Reach out to your account representative for more details.\"\n\t\t\t},\n\t\t\t\"fingerprint\":  \"7ccffcf38900f224fc946cf2a9c8e260072b\",\n\t\t\t\"verification_value\":  \"XXX\",\n\t\t\t\"number\":  \"XXXX-XXXX-XXXX-1111\"\n\t\t}\n\t}\n}\n```\nHere the returned payment method token **MxyYEhDK12CUAA18bJDkAq0ab3y** has to be used in the Process DG Payment request below."
      operationId: postDg_contractsIdPayment
      parameters:
      - description: A unique identifier for a contract
        explode: false
        in: path
        name: id
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/process_dg_payment_request'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dg_payment'
          description: The contract has been paid
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '401':
          description: The client could not be authenticated
        '403':
          description: The authenticated client does not have permission to call this endpoint
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      security:
      - PartnerAuth: []
        apiKeyAuth: []
      summary: Process DG payment
      tags:
      - Disruption Guarantee (DG)
  /dg_contracts/{id}/update_status:
    put:
      description: Update DG Contract Status
      operationId: putDg_contractsIdUpdate_status
      parameters:
      - description: A unique identifier for a contract
        explode: false
        in: path
        name: id
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update_dg_contract_status_request'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dg_contract'
          description: The Updated DG contract
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '204':
          description: The DG contract status update request was successfully validated but not performed
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '401':
          description: The client could not be authenticated
        '403':
          description: The authenticated client does not have permission to call this endpoint
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      security:
      - PartnerAuth: []
        apiKeyAuth: []
      summary: Update DG Contract Status
      tags:
      - Disruption Guarantee (DG)
  /dg_contracts/{id}/itinerary_slices:
    put:
      description: Update itinerary slices of a DG contract.
      operationId: putDg_contractsIdItinerary_slices
      parameters:
      - description: A unique identifier for a contract
        explode: false
        in: path
        name: id
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              items:
                $ref: '#/components/schemas/dg_itinerary_slice'
              minItems: 1
              type: array
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dg_contract'
          description: The Updated DG contract
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '204':
          description: The DG Contract Itinerary Slices update request was successfully validated but not performed
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '401':
          description: The client could not be authenticated
        '403':
          description: The authenticated client does not have permission to call this endpoint
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      security:
      - PartnerAuth: []
        apiKeyAuth: []
      summary: Update DG Contract Itinerary Slices
      tags:
      - Disruption Guarantee (DG)
  /dg_contract_exercises:
    post:
      description: Record that a request to exercise a DG contract has occurred.
      operationId: postDg_contract_exercises
      parameters:
      - description: The ID of the current airline session, see [Sessions](#tag/Sessions)
        example: 9fd3f2f9-e5aa-4128-ace9-3c4ee37b685f
        explode: false
        in: header
        name: HC-Session-ID
        required: false
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create_dg_contract_exercise_request'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_dg_contract_exercise_response'
          description: The created DG contract exercise
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            HTS-Session-ID:
              description: The ID of the current session, see [Sessions](#tag/Sessions)
              example: 9fd3f2f9-e5aa-4128-ace9-3c4ee37b685f
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '401':
          description: The client could not be authenticated
        '403':
          description: The authenticated client does not have permission to call this endpoint
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      security:
      - PartnerAuth: []
        apiKeyAuth: []
      summary: Create DG Exercise
      tags:
      - Disruption Guarantee (DG)
  /customer/dg/payout/receipt:
    get:
      description: Download payout receipt as PDF
      operationId: getCustomerDgPayoutReceipt
      parameters:
      - explode: false
        in: header
        name: verification-code
        required: false
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/pdf:
              schema:
                format: binary
                type: string
          description: PDF receipt file
          headers:
            Expires:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Cache-Control:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Content-Type:
              explode: false
              required: true
              schema:
                type: string
              style: simple
            Content-Disposition:
              explode: false
              required: true
              schema:
                type: string
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '401':
          description: The client could not be authenticated
        '403':
          description: The authenticated client does not have permission to call this endpoint
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      security:
      - {}
      - SessionAuth: []
      summary: Get payout receipt PDF
      tags:
      - Disruption Guarantee (DG)
  /customer/dg_exercises/{id}/session:
    get:
      description: Retrieve the session ID for a given DG exercise ID
      operationId: getCustomerDg_exercisesIdSession
      parameters:
      - description: A unique identifier for a exercise
        explode: false
        in: path
        name: id
        required: true
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_dg_exercise_session_response'
          description: The session ID for the DG exercise
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request'
          description: Syntactic errors were encountered while handling the request
        '404':
          description: The requested resource could not be found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unprocessable_entity'
          description: Semantic errors were encountered while handling the request
        '500':
          description: The server encountered an internal error
      summary: Get session ID by DG exercise ID
      tags:
      - Disruption Guarantee (DG)
components:
  schemas:
    dg_passenger_tax:
      example:
        amount: '0.20'
        code: RC
        currency: CAD
      properties:
        code:
          description: Code of the tax
          example: RC
          type: string
        amount:
          description: The amount of the tax
          example: '0.20'
          minimum: 0
          type: string
        currency:
          description: The currency of the tax
          example: CAD
          type: string
      required:
      - amount
      - code
      - currency
      title: dg_passenger_tax
      type: object
    create_dg_offers_request:
      description: A create DG offers request
      properties:
        itinerary:
          description: An object detailing the itinerary and fare used to create a DG offer
          items:
            $ref: '#/components/schemas/dg_itinerary'
          type: array
        request_type:
          $ref: '#/components/schemas/dg_request_type'
        booking_date_time:
          description: A UTC RFC3339 datetime; the date and time at which the booking was made. To be used only with the request type "post_booking"
          example: 2022-01-01 18:30:00+00:00
          format: date-time
          type: string
        session:
          $ref: '#/components/schemas/create_airline_dg_session_request'
        ext_attributes:
          additionalProperties:
            type: string
          title: map_string
          type: object
        entry_point:
          description: Information about product placement on partner's website
          type: string
      required:
      - ext_attributes
      - itinerary
      - request_type
      title: create_dg_offers_request
      type: object
    dg_exercise_itinerary:
      description: Itinerary of the user when the contract exercise was initiated (only active segments should be provided)
      properties:
        passenger_count:
          description: List of passengers type and count for the itinerary
          items:
            $ref: '#/components/schemas/dg_passenger_count'
          minItems: 1
          type: array
        slices:
          description: List of slices of the itinerary; 1 (one way),  2 (round trip) or up to 10 (multi-destination) slices are allowed
          items:
            $ref: '#/components/schemas/dg_exercise_itinerary_slice'
          minItems: 1
          type: array
        passengers:
          description: Details of the passengers
          items:
            $ref: '#/components/schemas/dg_passenger'
          type: array
      required:
      - passenger_count
      - slices
      title: dg_exercise_itinerary
      type: object
    i_os:
      properties:
        version:
          example: 15.0.2
          type: string
        type:
          enum:
          - i_os
          example: i_os
          type: string
      required:
      - type
      title: i_os
      type: object
    non_cash:
      properties:
        amount:
          description: Amount charged on the form of payment
          minimum: 0
          type: string
        currency:
          description: Currency of the form of payment
          example: CAD
          type: string
        type:
          enum:
          - non_cash
          type: string
      required:
      - amount
      - currency
      - type
      title: non_cash
      type: object
    dg_ancillary:
      description: An object detailing the fare used to create a DG offer
      example:
        passenger_reference: '1'
        total_price: '20.55'
        covered: true
        type: travel_insurance
      properties:
        total_price:
          description: Total price of ancillaries of this type
          example: '20.55'
          minimum: 0
          type: string
        passenger_reference:
          description: Unique reference of the passenger associated to this ancillary
          example: '1'
          type: string
        type:
          $ref: '#/components/schemas/dg_ancillary_type'
        covered:
          description: Is this ancillary covered by the product. By default true if not specified
          type: boolean
      required:
      - total_price
      - type
      title: dg_ancillary
      type: object
    online_booking_tool:
      description: Online booking tool channel
      properties:
        travel_management_company:
          description: The travel management company name
          type: string
        business:
          description: The business name
          type: string
        type:
          enum:
          - online_booking_tool
          type: string
      required:
      - business
      - travel_management_company
      - type
      title: online_booking_tool
      type: object
    platform:
      discriminator:
        mapping:
          app: '#/components/schemas/app'
          web: '#/components/schemas/web'
        propertyName: type
      oneOf:
      - $ref: '#/components/schemas/app'
      - $ref: '#/components/schemas/web'
      title: platform
    direct:
      description: Direct channel — the partner sells directly to the end customer
      properties:
        type:
          enum:
          - direct
          type: string
      required:
      - type
      title: direct
      type: object
    windows:
      properties:
        version:
          example: 15.0.2
          type: string
        type:
          enum:
          - windows
          example: i_os
          type: string
      required:
      - type
      title: windows
      type: object
    chrome:
      properties:
        version:
          type: string
        type:
          enum:
          - chrome
          type: string
      required:
      - type
      title: chrome
      type: object
    other_browser:
      pr

# --- truncated at 32 KB (116 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hopper-com/refs/heads/main/openapi/hopper-com-disruption-guarantee-dg-api-openapi.yml