Expedia Group · Capability

Expedia Group Rapid API — Bookings

Expedia Group Rapid API — Bookings. 4 operations. Lead operation: Expedia Group Create Booking. Self-contained Naftiko capability covering one Expedia Group business surface.

Run with Naftiko Expedia GroupBookings

What You Can Do

POST
Postitinerary — Expedia Group Create Booking
/v1/itineraries
PUT
Putresumebooking — Expedia Group Resume Booking
/v1/itineraries/{itinerary-id}
PUT
Putcompletepaymentsession — Expedia Group Complete Payment Session
/v1/itineraries/{itinerary-id}/payment-sessions
POST
Postpaymentsessions — Expedia Group Register Payments
/v1/payment-sessions

MCP Tools

expedia-group-create-booking

Expedia Group Create Booking

expedia-group-resume-booking

Expedia Group Resume Booking

idempotent
expedia-group-complete-payment-session

Expedia Group Complete Payment Session

idempotent
expedia-group-register-payments

Expedia Group Register Payments

Capability Spec

expedia-rapid-bookings.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Expedia Group Rapid API — Bookings
  description: 'Expedia Group Rapid API — Bookings. 4 operations. Lead operation: Expedia Group Create Booking. Self-contained
    Naftiko capability covering one Expedia Group business surface.'
  tags:
  - Expedia Group
  - Bookings
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    EXPEDIA_GROUP_API_KEY: EXPEDIA_GROUP_API_KEY
capability:
  consumes:
  - type: http
    namespace: expedia-rapid-bookings
    baseUri: https://test.ean.com/v3
    description: Expedia Group Rapid API — Bookings business capability. Self-contained, no shared references.
    resources:
    - name: itineraries
      path: /itineraries
      operations:
      - name: postitinerary
        method: POST
        description: Expedia Group Create Booking
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Accept
          in: header
          type: string
          description: Specifies the response format that the client would like to receive back. This must be `application/json`.
          required: true
        - name: Accept-Encoding
          in: header
          type: string
          description: Specifies the response encoding that the client would like to receive back. This must be `gzip`.
          required: true
        - name: Content-Type
          in: header
          type: string
          description: This parameter is to specify what format the request body is in. The only supported value is application/json.
          required: true
        - name: Customer-Ip
          in: header
          type: string
          description: IP address of the customer, as captured by your integration.<br>
          required: true
        - name: Customer-Session-Id
          in: header
          type: string
          description: Insert your own unique value for each user session, beginning with the first API call.
        - name: User-Agent
          in: header
          type: string
          description: The `User-Agent` header string from the customer's request, as captured by your integration. If you
            are building an application then the `User-Agent` value shou
          required: true
        - name: Test
          in: header
          type: string
          description: The book call has a test header that can be used to return set responses with the following keywords:<br>
        - name: token
          in: query
          type: string
          description: Provided as part of the link object and used to maintain state across calls. This simplifies each subsequent
            call by limiting the amount of information required
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: itineraries-itinerary_id
      path: /itineraries/{itinerary_id}
      operations:
      - name: putresumebooking
        method: PUT
        description: Expedia Group Resume Booking
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Accept
          in: header
          type: string
          description: Specifies the response format that the client would like to receive back. This must be `application/json`.
          required: true
        - name: Accept-Encoding
          in: header
          type: string
          description: Specifies the response encoding that the client would like to receive back. This must be `gzip`.
          required: true
        - name: Customer-Ip
          in: header
          type: string
          description: IP address of the customer, as captured by your integration.<br>
          required: true
        - name: Customer-Session-Id
          in: header
          type: string
          description: Insert your own unique value for each user session, beginning with the first API call.
        - name: User-Agent
          in: header
          type: string
          description: The `User-Agent` header string from the customer's request, as captured by your integration. If you
            are building an application then the `User-Agent` value shou
          required: true
        - name: Test
          in: header
          type: string
          description: The resume call has a test header that can be used to return set responses with the following keywords:<br>
        - name: itinerary_id
          in: path
          type: string
          description: This parameter is used only to prefix the token value - no ID value is used.<br>
          required: true
        - name: token
          in: query
          type: string
          description: Provided as part of the link object and used to maintain state across calls. This simplifies each subsequent
            call by limiting the amount of information required
          required: true
    - name: itineraries-itinerary_id-payment-sessions
      path: /itineraries/{itinerary_id}/payment-sessions
      operations:
      - name: putcompletepaymentsession
        method: PUT
        description: Expedia Group Complete Payment Session
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Accept
          in: header
          type: string
          description: Specifies the response format that the client would like to receive back. This must be `application/json`.
          required: true
        - name: Accept-Encoding
          in: header
          type: string
          description: Specifies the response encoding that the client would like to receive back. This must be `gzip`.
          required: true
        - name: Customer-Ip
          in: header
          type: string
          description: IP address of the customer, as captured by your integration.<br>
          required: true
        - name: Customer-Session-Id
          in: header
          type: string
          description: Insert your own unique value for each user session, beginning with the first API call.
        - name: User-Agent
          in: header
          type: string
          description: The `User-Agent` header string from the customer's request, as captured by your integration. If you
            are building an application then the `User-Agent` value shou
          required: true
        - name: Test
          in: header
          type: string
          description: The payment-sessions call has a test header that can be used to return set responses with the following
            keywords:<br>
        - name: itinerary_id
          in: path
          type: string
          description: This parameter is used only to prefix the token value - no ID value is used.<br>
          required: true
        - name: token
          in: query
          type: string
          description: Provided as part of the link object and used to maintain state across calls. This simplifies each subsequent
            call by limiting the amount of information required
          required: true
    - name: payment-sessions
      path: /payment-sessions
      operations:
      - name: postpaymentsessions
        method: POST
        description: Expedia Group Register Payments
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Accept
          in: header
          type: string
          description: Specifies the response format that the client would like to receive back. This must be `application/json`.
          required: true
        - name: Accept-Encoding
          in: header
          type: string
          description: Specifies the response encoding that the client would like to receive back. This must be `gzip`.
          required: true
        - name: Content-Type
          in: header
          type: string
          description: This parameter is to specify what format the request body is in. The only supported value is application/json.
          required: true
        - name: Customer-Ip
          in: header
          type: string
          description: IP address of the customer, as captured by your integration.<br>
          required: true
        - name: Customer-Session-Id
          in: header
          type: string
          description: Insert your own unique value for each user session, beginning with the first API call.
        - name: User-Agent
          in: header
          type: string
          description: The `User-Agent` header string from the customer's request, as captured by your integration. If you
            are building an application then the `User-Agent` value shou
          required: true
        - name: Test
          in: header
          type: string
          description: The book call has a test header that can be used to return set responses with the following keywords:<br>
        - name: token
          in: query
          type: string
          description: Provided as part of the link object and used to maintain state across calls. This simplifies each subsequent
            call by limiting the amount of information required
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.EXPEDIA_GROUP_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: expedia-rapid-bookings-rest
    port: 8080
    description: REST adapter for Expedia Group Rapid API — Bookings. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/itineraries
      name: itineraries
      description: REST surface for itineraries.
      operations:
      - method: POST
        name: postitinerary
        description: Expedia Group Create Booking
        call: expedia-rapid-bookings.postitinerary
        with:
          Accept: rest.Accept
          Accept-Encoding: rest.Accept-Encoding
          Content-Type: rest.Content-Type
          Customer-Ip: rest.Customer-Ip
          Customer-Session-Id: rest.Customer-Session-Id
          User-Agent: rest.User-Agent
          Test: rest.Test
          token: rest.token
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/itineraries/{itinerary-id}
      name: itineraries-itinerary-id
      description: REST surface for itineraries-itinerary_id.
      operations:
      - method: PUT
        name: putresumebooking
        description: Expedia Group Resume Booking
        call: expedia-rapid-bookings.putresumebooking
        with:
          Accept: rest.Accept
          Accept-Encoding: rest.Accept-Encoding
          Customer-Ip: rest.Customer-Ip
          Customer-Session-Id: rest.Customer-Session-Id
          User-Agent: rest.User-Agent
          Test: rest.Test
          itinerary_id: rest.itinerary_id
          token: rest.token
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/itineraries/{itinerary-id}/payment-sessions
      name: itineraries-itinerary-id-payment-sessions
      description: REST surface for itineraries-itinerary_id-payment-sessions.
      operations:
      - method: PUT
        name: putcompletepaymentsession
        description: Expedia Group Complete Payment Session
        call: expedia-rapid-bookings.putcompletepaymentsession
        with:
          Accept: rest.Accept
          Accept-Encoding: rest.Accept-Encoding
          Customer-Ip: rest.Customer-Ip
          Customer-Session-Id: rest.Customer-Session-Id
          User-Agent: rest.User-Agent
          Test: rest.Test
          itinerary_id: rest.itinerary_id
          token: rest.token
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/payment-sessions
      name: payment-sessions
      description: REST surface for payment-sessions.
      operations:
      - method: POST
        name: postpaymentsessions
        description: Expedia Group Register Payments
        call: expedia-rapid-bookings.postpaymentsessions
        with:
          Accept: rest.Accept
          Accept-Encoding: rest.Accept-Encoding
          Content-Type: rest.Content-Type
          Customer-Ip: rest.Customer-Ip
          Customer-Session-Id: rest.Customer-Session-Id
          User-Agent: rest.User-Agent
          Test: rest.Test
          token: rest.token
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: expedia-rapid-bookings-mcp
    port: 9090
    transport: http
    description: MCP adapter for Expedia Group Rapid API — Bookings. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: expedia-group-create-booking
      description: Expedia Group Create Booking
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: expedia-rapid-bookings.postitinerary
      with:
        Accept: tools.Accept
        Accept-Encoding: tools.Accept-Encoding
        Content-Type: tools.Content-Type
        Customer-Ip: tools.Customer-Ip
        Customer-Session-Id: tools.Customer-Session-Id
        User-Agent: tools.User-Agent
        Test: tools.Test
        token: tools.token
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: expedia-group-resume-booking
      description: Expedia Group Resume Booking
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: expedia-rapid-bookings.putresumebooking
      with:
        Accept: tools.Accept
        Accept-Encoding: tools.Accept-Encoding
        Customer-Ip: tools.Customer-Ip
        Customer-Session-Id: tools.Customer-Session-Id
        User-Agent: tools.User-Agent
        Test: tools.Test
        itinerary_id: tools.itinerary_id
        token: tools.token
      outputParameters:
      - type: object
        mapping: $.
    - name: expedia-group-complete-payment-session
      description: Expedia Group Complete Payment Session
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: expedia-rapid-bookings.putcompletepaymentsession
      with:
        Accept: tools.Accept
        Accept-Encoding: tools.Accept-Encoding
        Customer-Ip: tools.Customer-Ip
        Customer-Session-Id: tools.Customer-Session-Id
        User-Agent: tools.User-Agent
        Test: tools.Test
        itinerary_id: tools.itinerary_id
        token: tools.token
      outputParameters:
      - type: object
        mapping: $.
    - name: expedia-group-register-payments
      description: Expedia Group Register Payments
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: expedia-rapid-bookings.postpaymentsessions
      with:
        Accept: tools.Accept
        Accept-Encoding: tools.Accept-Encoding
        Content-Type: tools.Content-Type
        Customer-Ip: tools.Customer-Ip
        Customer-Session-Id: tools.Customer-Session-Id
        User-Agent: tools.User-Agent
        Test: tools.Test
        token: tools.token
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.