openapi: 3.0.1
info:
title: Expedia Group EPS Deposit Bookings OrderPurchaseScreen API
description: 'The EPS Deposit API manages the deposit policy for a property, offering operations to create/update, read and delete it.
To start experimenting, please use your existing EQC credentials and properties. We''ve also made the following test credentials available: EQCtest12933870 / ew67nk33 assigned to test property ID 12933870.'
contact:
name: Expedia Partner Services
url: https://expediaconnectivity.com/developer
email: eqcss@expedia.com
version: '1.0'
servers:
- url: https://services.expediapartnercentral.com/
security:
- Basic: []
tags:
- name: OrderPurchaseScreen
paths:
/order/purchase/screen:
post:
tags:
- OrderPurchaseScreen
description: 'The Order Purchase API gives a Fraud recommendation for a transaction. A recommendation can be Accept, Reject, or Review. A transaction is marked as Review whenever there are insufficient signals to recommend Accept or Reject. These incidents are manually reviewed, and a corrected recommendation is made asynchronously. '
summary: Expedia Group Run fraud screening for one transaction
operationId: screen
security:
- orderPurchaseScreenAuth:
- fraudandrisk.fraud.order-purchase-screen
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/OrderPurchaseScreenRequest'
responses:
'200':
description: The OrderPurchaseScreenRequest was successfully received and the order screening is complete.
content:
application/json:
schema:
$ref: '#/components/schemas/OrderPurchaseScreenResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
'429':
description: Too many requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsError'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
'502':
description: Bad gateway
content:
application/json:
schema:
$ref: '#/components/schemas/BadGatewayError'
'503':
description: Retryable Order Purchase Screen Failure
content:
application/json:
schema:
$ref: '#/components/schemas/RetryableOrderPurchaseScreenFailure'
'504':
description: Gateway timeout
content:
application/json:
schema:
$ref: '#/components/schemas/GatewayTimeoutError'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
components:
schemas:
TransactionDetails:
title: TransactionDetails
required:
- order_id
- current_order_status
- order_type
- travel_products
- travelers
type: object
properties:
order_id:
description: Unique identifier assigned to the order by the partner. `order_id` is specific to the partner namespace.
type: string
maxLength: 50
example: '1000000234'
current_order_status:
description: 'Status of the order:
* `IN_PROGRESS` is used when order has not processed fully. For example, inventory has not yet been reserved, or payment has not yet been settled.
* `COMPLETED` is used when an order has been processed fully. For example, inventory has been reserved, and the payment has been settled.
'
type: string
enum:
- IN_PROGRESS
- COMPLETED
order_type:
description: 'Type of order. Possible `order_types`.
`CREATE` - Initial type of a brand new order.
`CHANGE` - If a `OrderPurchaseScreenRequest` has already been submitted for the initial booking with `order_type = CREATE`, but has now been modified and partner wishes to resubmit for Fraud screening then the `order_type = CHANGE`. Examples of changes that are supported are changes made to `check-in/checkout dates` or `price of a TravelProduct`.
'
type: string
enum:
- CREATE
- CHANGE
example: CREATE
travel_products:
type: array
minItems: 1
maxItems: 20
items:
$ref: '#/components/schemas/TravelProduct'
travelers:
description: Individuals who are part of the travel party for the order. At minimum there must be at least `1` traveler.
type: array
items:
$ref: '#/components/schemas/Traveler'
minItems: 1
maxItems: 30
payments:
description: List of the form(s) of payment being used to purchase the order. One or more forms of payment can be used within an order. Information gathered will be specific to the form of payment.
type: array
items:
$ref: '#/components/schemas/Payment'
minItems: 1
maxItems: 30
PaymentThreeDSCriteria:
title: PaymentThreeDSCriteria
description: Payment ThreeDS criteria attributes.
type: object
properties:
probable_flag:
description: This is a flag passed that indicates that this transaction could potentially go through 3DS.
type: boolean
transaction_model:
description: Model used to process payment transaction.
type: string
maxLength: 200
TelephoneType:
title: TelephoneType
description: 'Classification of the phone (e.g. `Home`, `Mobile`). '
type: string
enum:
- HOME
- MOBILE
- BUSINESS
- FAX
- OTHER
PaymentReason:
title: PaymentReason
description: 'The reason of payment. Possible values:
- `FULL` - If the amount is paid i full for the order
- `DEPOSIT` - The initial payment. Amount to be paid up front.
- `SCHEDULED` - The amount to be payment based on a schedule for the remaining portion of the booking amount.
- `SUBSEQUENT` - An additional amount paid that was not originally scheduled.
- `DEFERRED`
'
type: string
enum:
- FULL
- DEPOSIT
- SCHEDULED
- SUBSEQUENT
- DEFERRED
Capture:
title: Capture
description: Capture operation on the payment. A capture operation represents a notification received usually from a 3rd party payment processor to indicate that the funds placed on hold will be captured and the funds transfer process will occur from the customer's funds to the merchant's funds.
allOf:
- $ref: '#/components/schemas/PaymentOperation'
- type: object
BadGatewayError:
description: Indicates that the server received an invalid response from the upstream server. Causes could be incorrectly configured target server at gateway, EOF exception, incorrectly configured keep-alive timeouts. Please reach out to support team as next step for this error resolution.
example:
code: BAD_GATEWAY
message: The server received an invalid response from an upstream server.
allOf:
- $ref: '#/components/schemas/Error'
InternalServerError:
description: Indicates that the API encountered an unexpected condition that prevented it from fulfilling the request. Sometimes used as a generic catch-allerror type when no other error types can be used. Retrying the same request will usually result in the same error. Please reach out to support team as next step for this error resolution.
example:
code: INTERNAL_SERVER_ERROR
message: The server encountered an internal error.
allOf:
- $ref: '#/components/schemas/Error'
Operations:
title: Operations
description: 'All operations related to a payment throughout its lifespan. An operation represents an event external to Fraud Prevention Service that specifies to perform a payment operation. Possible operation types include:
- `Verify`
- `Authorize`
- `AuthorizeReversal`
- `Capture`
- `Refund`
'
type: object
properties:
verify:
$ref: '#/components/schemas/Verify'
authorize:
$ref: '#/components/schemas/Authorize'
authorize_reversal:
$ref: '#/components/schemas/AuthorizeReversal'
capture:
$ref: '#/components/schemas/Capture'
refunds:
type: array
items:
$ref: '#/components/schemas/Refund'
maxItems: 20
Amount:
title: Amount
type: object
required:
- value
- currency_code
properties:
value:
description: The amount required in payment for the product/order in local currency (including any taxes and fees).
type: number
format: double
currency_code:
description: The ISO alpha-3 country code for the amount currency.
type: string
pattern: ^[A-Z]{3}$
maxLength: 3
Error:
description: The object used to describe an error, containing both human-readable and machine-readable information.
type: object
properties:
code:
description: Snake cased all caps error code interpreted from the HTTP status code that can programmatically be acted upon.
type: string
example: BAD_REQUEST
enum:
- UNAUTHORIZED
- FORBIDDEN
- NOT_FOUND
- ORDER_PURCHASE_UPDATE_NOT_FOUND
- TOO_MANY_REQUESTS
- INTERNAL_SERVER_ERROR
- BAD_GATEWAY
- RETRYABLE_ORDER_PURCHASE_SCREEN_FAILURE
- RETRYABLE_ORDER_PURCHASE_UPDATE_FAILURE
- GATEWAY_TIMEOUT
- BAD_REQUEST
message:
description: A human-readable explanation of the error, specific to this error occurrence.
type: string
example: An input validation error was encountered. Please see causes for more details.
required:
- code
- message
OrderPurchaseTransaction:
title: OrderPurchaseTransaction
type: object
required:
- site_info
- device_details
- customer_account
- transaction_details
properties:
site_info:
$ref: '#/components/schemas/SiteInfo'
device_details:
$ref: '#/components/schemas/DeviceDetails'
customer_account:
$ref: '#/components/schemas/CustomerAccount'
transaction_details:
$ref: '#/components/schemas/TransactionDetails'
RetryableOrderPurchaseScreenFailure:
description: 'Indicates that the API is either down for maintenance or overloaded and cannot fulfill the request at the current time. This is a temporary error and retrying the same request after a certain delay could eventually result in success.
There will be a Retry-After HTTP header in API response specifying how long to wait to retry the request. If there is no Retry-After HTTP header then retry can happen immediately. If the error persists after retrying with delay, please reach out to ."
'
example:
code: RETRYABLE_ORDER_PURCHASE_SCREEN_FAILURE
message: A temporary internal error occurred. You can safely retry your call using the same order details.
allOf:
- $ref: '#/components/schemas/Error'
Traveler:
title: Traveler
type: object
required:
- traveler_name
- primary
properties:
traveler_name:
$ref: '#/components/schemas/Name'
email_address:
description: Email address associated with the traveler as supplied by the partner system.
type: string
format: email
maxLength: 200
telephones:
type: array
items:
$ref: '#/components/schemas/Telephone'
minItems: 1
maxItems: 250
primary:
description: Indicator for one of the travelers who is the primary traveler. One traveler in each itinerary item must be listed as primary. By default, for a single traveler this should be set to `true`.
type: boolean
age:
description: Age of the traveler.
type: number
birth_date:
description: Date of birth for traveler, in ISO-8601 date and time format `yyyy-MM-ddTHH:mm:ss.SSSZ`.
type: string
format: date-time
maxLength: 50
citizenship_country_code:
description: The alpha-3 ISO country code of the traveler's nationality.
type: string
pattern: ^[A-Z]{3}$
minLength: 3
maxLength: 3
traveler_id:
description: A unique identifier for travelers in the transaction.
type: string
maxLength: 100
AuthorizeReversal:
title: AuthorizeReversal
description: Authorize Reversal operation on the payment. An authorize reversal operation represents a notification received usually from a 3rd party payment processor to indicate that an authorization hold should be released as a result of a sale being partially or completely cancelled.
allOf:
- $ref: '#/components/schemas/PaymentOperation'
- type: object
BadRequestError:
description: Indicates that a bad request occurred. Typically it is an invalid parameter.
example:
code: BAD_REQUEST
message: An input validation error was encountered. Please see causes for more details.
causes:
code: MISSING_MANDATORY_PARAM
field: $.transaction.customer_account.account_type
message: The value of a field should not be null.
allOf:
- $ref: '#/components/schemas/Error'
- type: object
properties:
causes:
type: array
items:
type: object
properties:
code:
type: string
example: MISSING_MANDATORY_PARAM
enum:
- MISSING_MANDATORY_PARAM
- INVALID_PARAM
- INVALID_FORMAT
field:
type: string
description: A JSON Path expression indicating which field, in the request body, caused the error.
example: $.transaction.customer_account.account_type
message:
type: string
example: The value of a field should not be null.
DeviceDetails:
title: DeviceDetails
required:
- ip_address
type: object
properties:
source:
type: string
maxLength: 50
description: Source of the device_box. Default value is `TrustWidget`.
device_box:
type: string
description: Device related information retrieved from TrustWidget.
ip_address:
type: string
description: IP address of the device used for booking.
pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$
example: 192.168.32.48
TravelProductType:
title: TravelProductType
description: Type of product.
type: string
enum:
- CRUISE
- AIR
- CAR
- INSURANCE
- HOTEL
- RAIL
- ACTIVITY
PaymentOperation:
title: PaymentOperation
type: object
properties:
id:
type: string
maxLength: 200
amount:
$ref: '#/components/schemas/Amount'
outcome:
$ref: '#/components/schemas/PaymentOutcome'
Authorize:
title: Authorize
description: Authorize operation on the payment. An authorize operation represents placing the funds on hold with the specified form of payment.
allOf:
- $ref: '#/components/schemas/PaymentOperation'
- type: object
OrderPurchaseScreenRequest:
title: OrderPurchaseScreenRequest
type: object
properties:
transaction:
$ref: '#/components/schemas/OrderPurchaseTransaction'
required:
- transaction
UnauthorizedError:
description: Indicates that the token sent in the 'Authorization' header is either invalid or missing. Please check the value in the token field along with the token expiration time before retrying.
example:
code: UNAUTHORIZED
message: Invalid EG token provided. Please provide a valid token in the Authorization header.
allOf:
- $ref: '#/components/schemas/Error'
TelephonePlatformType:
title: TelephonePlatformType
description: Classification of the phone platform.
type: string
enum:
- MOBILE
- LANDLINE
- VOIP
CustomerAccount:
title: CustomerAccount
required:
- account_type
- name
- email_address
type: object
properties:
user_id:
description: Unique account identifier provided by the partner's Identity Provider/System assigned to the account owner by the partner. `user_id` is specific to the partner namespace. Used to track repeat purchases by the same user.
type: string
account_type:
description: 'Identifies if the customer account is known to the client. Possible values are:
-`GUEST` - Applicable if the partner maintains record to distinguish whether the transaction was booked via a guest account.
-`STANDARD` - Default account type.
'
type: string
enum:
- GUEST
- STANDARD
example: STANDARD
name:
$ref: '#/components/schemas/Name'
email_address:
description: Email address for the account owner.
type: string
format: email
telephones:
type: array
items:
$ref: '#/components/schemas/Telephone'
address:
allOf:
- $ref: '#/components/schemas/Address'
- required:
- address_line1
- city
- state
- zip_code
- country_code
registered_time:
description: The local date and time that the customer first registered on the client site, in ISO-8601 date and time format `yyyy-MM-ddTHH:mm:ss.SSSZ`.
type: string
format: date-time
maxLength: 50
Address:
title: Address
type: object
properties:
address_type:
type: string
enum:
- HOME
- WORK
address_line1:
description: Address line 1 of the address provided.
type: string
maxLength: 200
address_line2:
description: Address line 2 of the address provided.
type: string
maxLength: 200
city:
description: City of the address provided.
type: string
maxLength: 200
state:
description: The two-characters ISO code for the state or province of the address.
type: string
pattern: ^[A-Z]{2}$
zip_code:
description: Zip code of the address provided.
type: string
maxLength: 20
country_code:
description: ISO alpha-3 country code of the address provided.
pattern: ^[A-Z]{3}$
type: string
TooManyRequestsError:
description: Indicates that the API cannot fulfill the request because server resources have been exhausted. Perhaps the client has sent too many requests in a given amount of time or has reached some specific quota. Please check the rate limits for the product and adjust as necessary before retries. If you believe the rate limit was incorrect or if you need a different rate limit, please reach out to the regarding the next steps.
example:
code: TOO_MANY_REQUESTS
message: The request failed because the server resources for this client have been exhausted.
allOf:
- $ref: '#/components/schemas/Error'
NotFoundError:
description: Indicates that the API cannot find the resource that is either being requested or against which the operation is being performed. Please check the request again to make sure that the request is valid.
example:
code: NOT_FOUND
message: The requested resource does not exist.
allOf:
- $ref: '#/components/schemas/Error'
Payment:
title: Payment
description: 'The `method` field value is used as a discriminator, with the following mapping:
* `CREDIT_CARD`: `CreditCard`
* `PAYPAL`: `PayPal`
* `POINTS`: `Points`
* `GIFT_CARD`: `GiftCard`
* `INTERNET_BANK_PAYMENT`: `InternetBankPayment`
* `DIRECT_DEBIT`: `DirectDebit`
'
type: object
required:
- brand
- method
- billing_name
- billing_email_address
- billing_address
discriminator:
propertyName: method
mapping:
CREDIT_CARD: '#/components/schemas/CreditCard'
PAYPAL: '#/components/schemas/PayPal'
POINTS: '#/components/schemas/Points'
GIFT_CARD: '#/components/schemas/GiftCard'
INTERNET_BANK_PAYMENT: '#/components/schemas/InternetBankPayment'
DIRECT_DEBIT: '#/components/schemas/DirectDebit'
properties:
brand:
description: 'The `brand` field value is the payment brand used for payment on this transaction.
For credit card payment method ensure attributes mentioned in dictionary below are set to corresponding values only.
Ensure to comply with the naming standards provided in below dictionary. For example, some Payment processors use “Japan Credit Bureau” but “JCB” should be used when calling Fraud API.
Incorrect `brand` - `card_type` combination will result in data quality issues and result in degraded risk recommendation.
''brand'' is an enum value with the following mapping with CreditCard ''card_type'' attribute:
* brand : card_type
* -------------------------------------------------------
* `AMERICAN_EXPRESS` : `AMERICAN_EXPRESS`
* `DINERS_CLUB_INTERNATIONAL` : `DINERS_CLUB`
* `BC_CARD` : `DINERS_CLUB`
* `DISCOVER` : `DISCOVER`
* `BC_CARD` : `DISCOVER`
* `DINERS_CLUB_INTERNATIONAL` : `DISCOVER`
* `JCB` : `DISCOVER`
* `JCB` : `JCB`
* `MASTER_CARD` : `MASTER_CARD`
* `MAESTRO` : `MASTER_CARD`
* `POSTEPAY_MASTERCARD` : `MASTER_CARD`
* `SOLO` : `SOLO`
* `SWITCH` : `SWITCH`
* `MAESTRO` : `MAESTRO`
* `CHINA_UNION_PAY` : `CHINA_UNION_PAY`
* `UATP` : `UATP`
* `UATP_SUPPLY` : `UATP`
* `AIR_PLUS` : `UATP`
* `UA_PASS_PLUS` : `UATP`
* `VISA` : `VISA`
* `VISA_DELTA` : `VISA`
* `VISA_ELECTRON` : `VISA`
* `CARTA_SI` : `VISA`
* `CARTE_BLEUE` : `VISA`
* `VISA_DANKORT` : `VISA`
* `POSTEPAY_VISA_ELECTRON` : `VISA`
* `PAYPAL` :
''brand'' with ''Points'' payment_type is an enum value with following:
* `EXPEDIA_REWARDS`
* `AMEX_POINTS`
* `BANK_OF_AMERICA_REWARDS`
* `DISCOVER_POINTS`
* `MASTER_CARD_POINTS`
* `CITI_THANK_YOU_POINTS`
* `MERRILL_LYNCH_REWARDS`
* `WELLS_FARGO_POINTS`
* `DELTA_SKY_MILES`
* `UNITED_POINTS`
* `DISCOVER_MILES`
* `ALASKA_MILES`
* `RBC_REWARDS`
* `BILT_REWARDS`
* `ORBUCKS`
* `CHEAP_CASH`
* `BONUS_PLUS`
* `ULTIMATE_REWARDS`
''brand'' with ''GiftCard'' payment_type is an enum value with following:
* `GIFT_CARD`
''brand'' with ''InternetBankPayment'' payment_type is an enum value with following:
* `IBP`
* `LOCAL_DEBIT_CARD`
* `SOFORT`
* `YANDEX`
* `WEB_MONEY`
* `QIWI`
* `BITCOIN`
''brand'' with ''DirectDebit'' payment_type is an enum value with following:
* `ELV`
* `INTER_COMPANY`
* `SEPA_ELV`
'
type: string
enum:
- AMERICAN_EXPRESS
- DINERS_CLUB_INTERNATIONAL
- BC_CARD
- DISCOVER
- JCB
- MASTER_CARD
- MAESTRO
- POSTEPAY_MASTERCARD
- SOLO
- SWITCH
- CHINA_UNION_PAY
- UATP
- UATP_SUPPLY
- AIR_PLUS
- UA_PASS_PLUS
- VISA
- VISA_DELTA
- VISA_ELECTRON
- CARTA_SI
- CARTE_BLEUE
- VISA_DANKORT
- POSTEPAY_VISA_ELECTRON
- PAYPAL
- EXPEDIA_REWARDS
- AMEX_POINTS
- BANK_OF_AMERICA_REWARDS
- DISCOVER_POINTS
- MASTER_CARD_POINTS
- CITI_THANK_YOU_POINTS
- MERRILL_LYNCH_REWARDS
- WELLS_FARGO_POINTS
- DELTA_SKY_MILES
- UNITED_POINTS
- DISCOVER_MILES
- ALASKA_MILES
- RBC_REWARDS
- BILT_REWARDS
- ORBUCKS
- CHEAP_CASH
- BONUS_PLUS
- ULTIMATE_REWARDS
- GIFT_CARD
- IBP
- LOCAL_DEBIT_CARD
- SOFORT
- YANDEX
- WEB_MONEY
- QIWI
- BITCOIN
- ELV
- INTER_COMPANY
- SEPA_ELV
method:
$ref: '#/components/schemas/PaymentMethod'
reason:
$ref: '#/components/schemas/PaymentReason'
billing_name:
$ref: '#/components/schemas/Name'
billing_address:
allOf:
- $ref: '#/components/schemas/Address'
- required:
- zip_code
- address_line1
- city
- country_code
billing_email_address:
description: Email address associated with the payment.
type: string
format: email
maxLength: 200
authorized_amount:
$ref: '#/components/schemas/Amount'
verified_amount:
$ref: '#/components/schemas/Amount'
three_digits_secure_criteria:
$ref: '#/components/schemas/PaymentThreeDSCriteria'
operations:
$ref: '#/components/schemas/Operations'
extensions:
type: object
additionalProperties:
type: string
description: A key-value pair map to hold additional attributes.
PaymentOutcome:
title: PaymentOutcome
type: object
properties:
status:
$ref: '#/components/schemas/PaymentStatus'
code:
description: A mnemonic code for the payment processing.
type: string
maxLength: 200
description:
description: A short description providing additional explanation regarding the mnemonic code.
type: string
maxLength: 200
Verify:
title: Verify
description: A verify operation represents the intent to verify the payment associated with this transaction.
allOf:
- $ref: '#/components/schemas/PaymentOperation'
- type: object
properties:
type:
$ref: '#/components/schemas/VerificationType'
OrderPurchaseScreenResponse:
title: OrderPurchaseScreenResponse
type: object
properties:
risk_id:
type: string
description: Unique identifier assigned to the transaction by Expedia's Fraud Prevention Service.
maxLength: 200
example: '1234567'
decision:
$ref: '#/components/schemas/FraudDecision'
Refund:
title: Refund
description: Refund operation on the payment. A refund operation represents the intent to refund a previous charge.
allOf:
- $ref: '#/components/schemas/PaymentOperation'
- type: object
TravelProduct:
title: TravelProduct
description: 'The `type` field value is used as a discriminator, with the following mapping:
* `CRUISE`: `Cruise`
* `AIR`: `Air`
* `CAR`: `Car`
* `INSURANCE`: `Insurance`
* `HOTEL`: `Hotel`
* `RAIL`: `Rail`
* `ACTIVITY`: `Activity`
'
required:
- price
- type
- inventory_type
- inventory_source
type: object
discriminator:
propertyName: type
mapping:
CRUISE: '#/components/schemas/Cruise'
AIR: '#/components/schemas/Air'
CAR: '#/components/schemas/Car'
INSURANCE: '#/components/schemas/Insurance'
HOTEL: '#/components/schemas/Hotel'
RAIL: '#/components/schemas/Rail'
ACTIVITY: '#/components/schemas/Activity'
properties:
price:
$ref: '#/components/schemas/Amount'
type:
$ref: '#/components/schemas/TravelProductType'
inventory_type:
description: 'Type of inventory.
Ensure attributes mentioned in dictionary below are set to corresponding values only.
`inventory_type` has the following mapping with TravelProduct `type` attribute:
* inventory_type : type
* ------------------------------------------------------
* `Cruise` : `CRUISE`
* `Air` : `AIR`
* `Car` : `CAR`
* `Insurance` : `INSURANCE`
* `Hotel` : `HOTEL`
* `Rail` : `RAIL`
* `Activity` : `ACTIVITY`
'
type: string
maxLength: 30
inventory_source:
description: 'Identifies the business model through which the supply is being sold. Merchant/Agency.
* `MERCHANT` is used when Partner is the merchant of record for this order.
* `AGENCY` is used when this order is through an agency booking.
'
type: string
enum:
- MERCHANT
- AGENCY
travelers_references:
description: 'List of travelerGuids who are part of the traveling party on the order for the product.
Information for each product and its required travelers should be provided in the API request.
If the product booking does not require accompanying quest information then that does not need to be provided in the API request.
Example:
* For Air products, all travelers'' details are required to complete the booking.
* For Hotel products, typically the details on the person checking-in is required.
* For Car products, typically only the primary driver information is required.
If multiple traveler details are in the itinerary, this structure allows to fill up traveler details once in the `travelers` section, and then associate individual products to the respective travelers.
This association is made using `traveler_id` field. A GUID can be generated for each object in the `travelers` section. The same GUID can be provided in the `traveler_references` below.
The `travelers` array should have at least one `traveler` object, and each `traveler` object should have a `traveler_id` which is not necessarily an account id.
Example:
* Travelers
* ------------
* A - GUID1
* B - GUID2
* C - GUID3
*
* Products
* ------------
* Air
* [GUID1, GUID2, GUID3]
* Hotel
* [GUID1]
* Car
* [GUID3]
* Rail
* [GUID2]
* Activity
* [GUID1]
* The example above demonstrates the association of travelers with various products.
* All three travelers (A, B, and C) are associated with the Air product.
* Traveler A is associated with the Hotel and Activity products.
* Traveler C is associated with the Car product.
* Traveler B is associated with the Rail product.
'
type: array
minItems: 1
maxItems: 40
items:
type: string
maxLength: 50
pay_later:
description: "The attribute serves as a boolean indicator that significantly influences the handling of payment information during the fraud prevention process:\n* When 'pay_later' is set to 'true':\n - This configuration signals that payment information is optional for the booking. Travelers are given the choice to defer payment until they arrive at the rental counter following the completion of the booking.\n - It is imperative for partners to explicitly set this attribute to 'true' when payment information can be optional for a particular booking scenario.\n* When 'pay_later' is set to 'false':\n - In this mode, the attribute mandates the inclusion of payment information during the order purchase screen request. Travelers are required to provide payment details.\n - Partners must exercise caution and ensure they supply the necessary payment information, as failure to do so in cases where 'pay_later' is set to 'false' will result in a 'Bad Request' error. This error helps maintain the consistency and accuracy of the fraud prevention process and payment handling.\n"
type: boolean
Telephone:
title: Telephone
description: Group of attributes intended to hold information about phone number associated with the transaction. A user can have one to many phone numbers (home, work, mobile, etc.).
type: object
required:
- country_access_code
- area_code
- phone_number
properties:
type:
$ref: '#/components/schemas/TelephoneType'
platform_type:
$ref: '#/components/schemas/TelephonePlatformType'
country_access_code:
description: Numeric digit between 1 to 3 characters used to represent the country code for international dialing. Does not include symbols, spaces, or leading zeros.
type: string
pattern: ^[0-9]{1,3}$
maxLength: 3
example: '1'
area_code:
description: 'A number prefixed to an individual telephone number: used in making long-distance calls. Does not include symbols, spaces, or leading zeros.'
type: string
pattern: ^[0-9]{1,20}$
maxLength: 20
example: '1'
phone_number:
description: A number that is dialed on a telephone, without the country or area codes, to reach a particular person, business, etc. Does not include symbols, spaces, or leading zeros.
type: string
pattern: ^[0-9]{1,50}$
maxLength: 50
example: '1234567'
extension_number:
description: The number used to reach an individual once a phone connection is established. Does not include symbols, spaces, or leading zeros.
type: string
pattern: ^[0-9]{1,20}$
maxLength: 20
example: '89'
preference_rank:
description: Ranking of order of user preference for contact via text (if type is Mobile) or voice. `0` means no preference. `1` is the primary phone, `2` is the secondary phone, etc.
type: number
last_verified_date_time:
description: Local date and time user validated possession of their phone number via a text or voice multi factor authentication challenge, in ISO-8601 date and time format `yyyy-MM-ddTHH:mm:ss.SSSZ`.
type: string
format: date-time
maxLength: 50
verified_flag:
description: Flag indicating whether user passed validation of possession of their phone number via a text or voice multi factor authentication challenge.
type: boolean
PaymentMethod:
title: PaymentMethod
description: 'The payment method used at the time of purchase for the transaction. Supported `method`''s are: `CREDIT_CARD`, `PAYPAL`, `POINTS`, `GIFT_CARD`, `INTERNET_BANK_PAYMENT`, `DIRECT_DEBIT`.'
type: string
enum:
- CREDIT_CARD
- PAYPAL
- POINTS
- GIFT_CARD
- INTERNET_BANK_PAYMENT
- DIRECT_DEBIT
SiteInfo:
title: SiteInfo
type: object
required:
- country_code
- agent_assisted
properties:
country_code:
description: The alpha-3 ISO code that represents a country name.
pattern: ^[A-Z]{3}$
type: string
example: USA
agent_assisted:
description: Identifies if an agent assisted in booking travel for the customer. `False` if the order was directly booked by customer.
type: boolean
Name:
title: Name
description: Group of attributes intended to hold information about a customer or traveler's name for the order.
type: object
required:
- first_name
- last_name
properties:
last_name:
description: Surname, or last name, of the person.
type: string
maxLength: 200
first_name:
description: Given, or first name, of the person.
type: string
maxLength: 200
middle_name:
description: Middle name of the person.
type: string
maxLength: 200
title:
description: Title of the person for name (e.g. Mr., Ms. etc).
type: string
maxLength: 200
suffix:
description: Generational designations (e.g. Sr, Jr, III) or values that indicate the individual holds a position, educational degree, accreditation, office, or honor (e.g. PhD, CCNA, OBE).
type: string
maxLength: 50
FraudDecision:
title: FraudDecision
type: string
enum:
- ACCEPT
- REVIEW
- REJECT
VerificationType:
title: VerificationType
description: The type of the verification used to verify the instrument. If the Card Verfication Value was provided to verify the credit card used for the transaction, `type = CVV`.
type: string
enum:
- CVV
- 3DS
GatewayTimeoutError:
description: Indicates that the API gateway has issues completing the request on time. Request can be retried if it is idempotent, If the issue persists, please reach out to support. For non-idempotent requests, please reach out to to know the status of your request before attempting retries.
example:
code: GATEWAY_TIMEOUT
message: The server timed out while trying to complete the request.
allOf:
- $ref: '#/components/schemas/Error'
PaymentStatus:
title: PaymentStatus
description: The status of the payment operation.
type: string
enum:
- COMPLETED
- FAILED
ForbiddenError:
description: Indicates that the API cannot fulfill the request because while the client is correctly authenticated, the client doesn't have the permission to execute the specified operation. This error type does not imply that the request is valid, or that the resource against which the operation being performed exists or satisfies other pre-conditions.
example:
code: FORBIDDEN
message: Insufficient permissions to perform the request.
allOf:
- $ref: '#/components/schemas/Error'
securitySchemes:
Basic:
type: http
scheme: basic