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.
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
#
Documentation
Specifications
Other Resources
Every API here is available over the APIs.io API and to AI agents over MCP.
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