Expedia Group OrderPurchaseScreen API

The OrderPurchaseScreen API from Expedia Group — 1 operation(s) for orderpurchasescreen.

OpenAPI Specification

expedia-group-orderpurchasescreen-api-openapi.yml Raw ↑
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. <br/><br/>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 <support team>."

        '
      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 <support team> 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 mult

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/expedia-group/refs/heads/main/openapi/expedia-group-orderpurchasescreen-api-openapi.yml