---
title: "Duffel"
description: "Flights, stays, cars, payment resources, notifications and customer identity through the Duffel v2 API. Select only the operations this application needs. Read-only connections allow GET operations. Read-write connection"
---

> Documentation Index
> Fetch the complete documentation index at: https://help.tooluse.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Duffel

<p>Flights, stays, cars, payment resources, notifications and customer identity through the Duffel v2 API. Select only the operations this application needs. Read-only connections allow GET operations. Read-write connections require an interactive console decision for every invocation, including searches. Account and production access depend on Duffel.</p>

<details data-command-index><summary>What you can do (105)</summary>
<h2>What you can do</h2>
<p>Available commands: 105 (57 read, 48 write). Enable only the commands your application needs.</p>
<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Command</th>
<th>Effect</th>
</tr>
</thead>
<tbody><tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-offers-search">Search flight offers</a> — <code>duffel.offers.search</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-loyalty-programmes-list">Stays: List loyalty programmes</a> — <code>duffel.api.stays.loyalty-programmes.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-accommodation-reviews-list">Stays: Get accommodation reviews</a> — <code>duffel.api.stays.accommodation.reviews.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-accommodation-suggestions-create">Stays: Search for accommodation suggestions</a> — <code>duffel.api.stays.accommodation.suggestions.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-accommodation-get">Stays: Get accommodation</a> — <code>duffel.api.stays.accommodation.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-accommodation-list">Stays: List accommodation</a> — <code>duffel.api.stays.accommodation.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-aircraft-list">Supporting Resources: List aircraft</a> — <code>duffel.api.air.aircraft.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-aircraft-get">Supporting Resources: Get a single aircraft</a> — <code>duffel.api.air.aircraft.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airline-credits-list">Flights: List airline credits</a> — <code>duffel.api.air.airline-credits.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airline-credits-create">Flights: Create an airline credit</a> — <code>duffel.api.air.airline-credits.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airline-credits-get">Flights: Get a single airline credit</a> — <code>duffel.api.air.airline-credits.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airline-initiated-changes-update">Flights: Update an airline-initiated change</a> — <code>duffel.api.air.airline-initiated-changes.update</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airline-initiated-changes-list">Flights: List airline-initiated changes</a> — <code>duffel.api.air.airline-initiated-changes.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airline-initiated-changes-accept">Flights: Accept the airline-initiated change</a> — <code>duffel.api.air.airline-initiated-changes.accept</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airlines-get">Supporting Resources: Get a single airline</a> — <code>duffel.api.air.airlines.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airlines-list">Supporting Resources: List airlines</a> — <code>duffel.api.air.airlines.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airports-list">Supporting Resources: List airports</a> — <code>duffel.api.air.airports.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-airports-get">Supporting Resources: Get a single airport</a> — <code>duffel.api.air.airports.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-batch-offer-requests-create">Flights: Create a batch offer request</a> — <code>duffel.api.air.batch-offer-requests.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-batch-offer-requests-get">Flights: Get a single batch offer request</a> — <code>duffel.api.air.batch-offer-requests.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-bookings-payment-instructions-create">Stays: Creating a booking payment instruction</a> — <code>duffel.api.stays.bookings.payment-instructions.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-bookings-list">Stays: List bookings</a> — <code>duffel.api.stays.bookings.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-bookings-create">Stays: Creating a booking</a> — <code>duffel.api.stays.bookings.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-bookings-cancel">Stays: Cancel booking</a> — <code>duffel.api.stays.bookings.cancel</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-bookings-get">Stays: Get booking</a> — <code>duffel.api.stays.bookings.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-bookings-update">Stays: Update booking</a> — <code>duffel.api.stays.bookings.update</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-brands-get">Stays: Get hotel brand</a> — <code>duffel.api.stays.brands.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-brands-list">Stays: List hotel brands</a> — <code>duffel.api.stays.brands.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-payments-cards-create">Payments: Create a Card</a> — <code>duffel.api.payments.cards.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-payments-cards-delete">Payments: Delete a Card</a> — <code>duffel.api.payments.cards.delete</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-cars-bookings-get">Cars: Get a Booking</a> — <code>duffel.api.cars.bookings.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-cars-bookings-cancel">Cars: Cancel a Booking</a> — <code>duffel.api.cars.bookings.cancel</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-cars-bookings-create">Cars: Create a Booking</a> — <code>duffel.api.cars.bookings.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-cars-quotes-create">Cars: Create a Quote</a> — <code>duffel.api.cars.quotes.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-cars-search-create">Cars: Search for Cars</a> — <code>duffel.api.cars.search.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-chains-get">Stays: Get hotel chain</a> — <code>duffel.api.stays.chains.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-chains-list">Stays: List hotel chains</a> — <code>duffel.api.stays.chains.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-cities-list">Supporting Resources: List cities</a> — <code>duffel.api.air.cities.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-cities-get">Supporting Resources: Get a single city</a> — <code>duffel.api.air.cities.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-component-client-keys-create">Identity: Create a component client key</a> — <code>duffel.api.identity.component-client-keys.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-user-groups-list">Identity: List Customer User Groups</a> — <code>duffel.api.identity.customer.user-groups.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-user-groups-create">Identity: Create a Customer User Group</a> — <code>duffel.api.identity.customer.user-groups.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-user-groups-delete">Identity: Delete a single customer user group</a> — <code>duffel.api.identity.customer.user-groups.delete</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-user-groups-get">Identity: Get a single customer user group</a> — <code>duffel.api.identity.customer.user-groups.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-user-groups-update">Identity: Update a single customer user group</a> — <code>duffel.api.identity.customer.user-groups.update</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-users-get">Identity: Get a single customer user</a> — <code>duffel.api.identity.customer.users.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-users-update">Identity: Update a single customer user</a> — <code>duffel.api.identity.customer.users.update</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-users-list">Identity: List customer users</a> — <code>duffel.api.identity.customer.users.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-identity-customer-users-create">Identity: Create a Customer User</a> — <code>duffel.api.identity.customer.users.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-loyalty-programmes-get">Supporting Resources: Get a single loyalty programme</a> — <code>duffel.api.air.loyalty-programmes.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-loyalty-programmes-list">Supporting Resources: List loyalty programmes</a> — <code>duffel.api.air.loyalty-programmes.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-negotiated-rates-delete">Stays: Delete a negotiated rate</a> — <code>duffel.api.stays.negotiated-rates.delete</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-negotiated-rates-get">Stays: Get a negotiated rate</a> — <code>duffel.api.stays.negotiated-rates.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-negotiated-rates-update">Stays: Update a negotiated rate</a> — <code>duffel.api.stays.negotiated-rates.update</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-negotiated-rates-list">Stays: List negotiated rates</a> — <code>duffel.api.stays.negotiated-rates.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-negotiated-rates-create">Stays: Creating a negotiated rate</a> — <code>duffel.api.stays.negotiated-rates.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-offer-requests-get">Flights: Get a single offer request</a> — <code>duffel.api.air.offer-requests.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-offer-requests-list">Flights: List offer requests</a> — <code>duffel.api.air.offer-requests.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-offer-requests-create">Flights: Create an offer request</a> — <code>duffel.api.air.offer-requests.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-offers-get">Flights: Get a single offer</a> — <code>duffel.api.air.offers.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-offers-passengers-update">Flights: Update a single offer passenger</a> — <code>duffel.api.air.offers.passengers.update</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-offers-price">Flights: Price an offer with intended payment methods</a> — <code>duffel.api.air.offers.price</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-offers-upsell-offers-create">Flights: Get upsell offers for an offer</a> — <code>duffel.api.air.offers.upsell-offers.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-offers-list">Flights: List offers</a> — <code>duffel.api.air.offers.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-cancellations-list">Flights: List order cancellations</a> — <code>duffel.api.air.order-cancellations.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-cancellations-create">Flights: Create a pending order cancellation</a> — <code>duffel.api.air.order-cancellations.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-cancellations-get">Flights: Get a single order cancellation</a> — <code>duffel.api.air.order-cancellations.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-cancellations-confirm">Flights: Confirm an order cancellation</a> — <code>duffel.api.air.order-cancellations.confirm</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-change-offers-list">Flights: List order change offers</a> — <code>duffel.api.air.order-change-offers.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-change-offers-get">Flights: Get a single order change offer</a> — <code>duffel.api.air.order-change-offers.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-change-requests-get">Flights: Get a single order change request</a> — <code>duffel.api.air.order-change-requests.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-change-requests-create">Flights: Create an order change request</a> — <code>duffel.api.air.order-change-requests.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-changes-get">Flights: Get a single order change</a> — <code>duffel.api.air.order-changes.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-changes-confirm">Flights: Confirm an order change</a> — <code>duffel.api.air.order-changes.confirm</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-order-changes-create">Flights: Create a pending order change</a> — <code>duffel.api.air.order-changes.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-orders-get">Flights: Get a single order</a> — <code>duffel.api.air.orders.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-orders-update">Flights: Update a single order</a> — <code>duffel.api.air.orders.update</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-orders-list">Flights: List orders</a> — <code>duffel.api.air.orders.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-orders-create">Flights: Create an order</a> — <code>duffel.api.air.orders.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-orders-services-create">Flights: Add a service to an order</a> — <code>duffel.api.air.orders.services.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-orders-price">Flights: Price an order with an intended payment method</a> — <code>duffel.api.air.orders.price</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-orders-available-services-list">Flights: List available services for an order</a> — <code>duffel.api.air.orders.available-services.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-partial-offer-requests-fares-list">Flights: Get full offer fares for selected partial offers</a> — <code>duffel.api.air.partial-offer-requests.fares.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-partial-offer-requests-create">Flights: Create a partial offer request</a> — <code>duffel.api.air.partial-offer-requests.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-partial-offer-requests-get">Flights: Get a single partial offer request</a> — <code>duffel.api.air.partial-offer-requests.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-payments-list">Flights: List payments</a> — <code>duffel.api.air.payments.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-payments-create">Flights: Create a payment</a> — <code>duffel.api.air.payments.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-payments-get">Flights: Get a single payment</a> — <code>duffel.api.air.payments.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-places-suggestions-list">Supporting Resources: List Place suggestions</a> — <code>duffel.api.places.suggestions.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-quotes-create">Stays: Create a quote for a rate</a> — <code>duffel.api.stays.quotes.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-quotes-get">Stays: Get quote</a> — <code>duffel.api.stays.quotes.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-search-results-fetch-all-rates">Stays: Fetch rates for a search result</a> — <code>duffel.api.stays.search-results.fetch-all-rates</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-stays-search-create">Stays: Search for accommodation</a> — <code>duffel.api.stays.search.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-seat-maps-list">Flights: Get seat maps</a> — <code>duffel.api.air.seat-maps.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-payments-three-d-secure-sessions-create">Payments: Create a 3DS Session</a> — <code>duffel.api.payments.three-d-secure-sessions.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-deliveries-list">Notifications: List webhook deliveries</a> — <code>duffel.api.air.webhooks.deliveries.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-deliveries-get">Notifications: Get a single webhook delivery</a> — <code>duffel.api.air.webhooks.deliveries.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-events-redeliver">Notifications: Retry delivering a webhook event</a> — <code>duffel.api.air.webhooks.events.redeliver</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-events-get">Notifications: Get a single webhook event</a> — <code>duffel.api.air.webhooks.events.get</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-events-list">Notifications: List webhook events</a> — <code>duffel.api.air.webhooks.events.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-list">Notifications: List webhooks</a> — <code>duffel.api.air.webhooks.list</code></td>
<td>Read</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-create">Notifications: Create a webhook</a> — <code>duffel.api.air.webhooks.create</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-ping">Notifications: Ping a webhook</a> — <code>duffel.api.air.webhooks.ping</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-delete">Notifications: Delete a webhook</a> — <code>duffel.api.air.webhooks.delete</code></td>
<td>Write</td>
</tr>
<tr>
<td><a href="https://help.tooluse.net/integrations/duffel#command-duffel-api-air-webhooks-update">Notifications: Update a webhook</a> — <code>duffel.api.air.webhooks.update</code></td>
<td>Write</td>
</tr>
</tbody></table>
</div>
</details>
<h2>Connect and use</h2>

<p><a href="https://www.tooluse.net/tools/integrations/duffel">Connect and use</a></p>
<p>Open the integration&#39;s connection form to check the available credential source. The source has not been resolved for this documentation export. The instructions below apply when using your own provider account.</p>
<h2>Get your provider credentials</h2>
<p>Follow these steps for Duffel, then enter the issued values in the connection form below.</p>
<ol>
<li>Create a Duffel organization and generate a test token in its dashboard. Enter Access token and select sandbox for initial tests. Use live tokens with production only after approval. Choose read-write only for commands that change resources; live orders can incur charges.</li>
</ol>
<p><a href="https://duffel.com/docs/api/overview/welcome">Official credential setup</a></p>
<h2>Where to enter credentials</h2>
<p>In the integration page, sign in, choose your workspace and open Connect. If a <strong>Credentials</strong> choice is shown, select <strong>Use my credentials</strong>. Fill the following connection fields and save. Provider credentials belong in this form, never in an MCP configuration or tool input.</p>
<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Connection field</th>
<th>Requirement</th>
</tr>
</thead>
<tbody><tr>
<td>Duffel access token</td>
<td>Required</td>
</tr>
<tr>
<td>Duffel environment</td>
<td>Optional</td>
</tr>
<tr>
<td>Token scope</td>
<td>Optional</td>
</tr>
</tbody></table>
</div><p>Open API keys and create a Tooluse.net key for the enabled commands.</p>
<p>Set TOOLUSE_API_KEY in your client and use the shared MCP configuration.</p>
<p><a href="https://help.tooluse.net/clients">Configure Claude Code, Codex or Cursor once</a></p>

<h2>Permissions and results</h2>

<p>If you have more than one workspace, check the selected workspace in the connection or API-key dialog before saving. Roles, enabled commands, expiry and revocation use Tooluse.net&#39;s existing permissions. Disabling a connection or revoking a key immediately prevents new calls.</p>

<p>Send one Claude tool_use block per request. Keep the same Idempotency-Key when retrying the same request; use a new key for a new call. The response includes the shared Tooluse.net receipt and Claude tool_result. Check both HTTP status and the returned tool result before treating a call as successful.</p>

<p>Your connection&#39;s daily allowance and key permissions also apply. Adding a connection does not make a provider request.</p>

<p>Calls return the shared execution receipt and a Claude tool_result. Provider output varies by operation; consult the provider documentation for its response fields. Unconfirmed calls should be checked before retrying.</p>

<h2>Call from your client</h2>

<p>Use the shared MCP configuration. Refresh your client&#39;s tool list after saving the connection or changing key permissions, then call the returned tool name with the example input below.</p>

<p><a href="https://help.tooluse.net/clients">Configure Claude Code, Codex or Cursor once</a></p>

<h2>Discover your enabled tools</h2>

<p>List permitted tools in Claude format. Read every page using page and size (maximum 100) until all results have been received. Use the returned name, not a catalog capability identifier, in the tool_use block.</p>

<pre><code class="language-bash">curl 'https://api.tooluse.net/v1/tools' \
  -H "Authorization: Bearer $TOOLUSE_API_KEY"
</code></pre>

<p>Find this command in the tool list permitted by your key. Replace svc_FROM_YOUR_TOOL_LIST with its returned name. Use a new Idempotency-Key for each new call and retain it when retrying that same call.</p>

<h2>HTTP call</h2>

<pre><code class="language-bash">curl 'https://api.tooluse.net/v1/tool-calls' \
  -H "Authorization: Bearer $TOOLUSE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: replace-with-a-new-call-id' \
  --data '{
  "type": "tool_use",
  "id": "toolu_example",
  "name": "svc_FROM_YOUR_TOOL_LIST",
  "input": {
    "slices": [
      {
        "origin": "SFO",
        "destination": "JFK",
        "departureDate": "2027-02-10"
      }
    ],
    "adults": 1,
    "limit": 10
  }
}'
</code></pre>

<p>Send one Claude tool_use block per request. Keep the same Idempotency-Key when retrying the same request; use a new key for a new call. The response includes the shared Tooluse.net receipt and Claude tool_result. Check both HTTP status and the returned tool result before treating a call as successful.</p>

<h2>Commands</h2>

<details id="command-duffel-offers-search">
<summary><span>Search flight offers — <code>duffel.<wbr>offers.<wbr>search</code></span></summary>
<p>Run <strong>Search flight offers</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.offers.search">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>slices</code></td>
<td>array</td>
<td>Required</td>
<td>Flight legs</td>
<td><code>minItems: 1; maxItems: 2</code></td>
</tr>
<tr>
<td><code>slices[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>slices[].origin</code></td>
<td>string</td>
<td>Required</td>
<td>Origin IATA code</td>
<td><code>minLength: 1; maxLength: 3; pattern: &quot;^[A-Z]{3}$&quot;</code></td>
</tr>
<tr>
<td><code>slices[].destination</code></td>
<td>string</td>
<td>Required</td>
<td>Destination IATA code</td>
<td><code>minLength: 1; maxLength: 3; pattern: &quot;^[A-Z]{3}$&quot;</code></td>
</tr>
<tr>
<td><code>slices[].departureDate</code></td>
<td>string</td>
<td>Required</td>
<td>Departure date</td>
<td><code>minLength: 1; maxLength: 10; pattern: &quot;^[0-9]{4}-[0-9]{2}-[0-9]{2}$&quot;</code></td>
</tr>
<tr>
<td><code>slices[].departureTime</code></td>
<td>object</td>
<td>Optional</td>
<td>Inclusive airport-local departure window</td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>slices[].departureTime.from</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 5; pattern: &quot;^(?:[01][0-9]|2[0-3]):[0-5][0-9]$&quot;</code></td>
</tr>
<tr>
<td><code>slices[].departureTime.to</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 5; pattern: &quot;^(?:[01][0-9]|2[0-3]):[0-5][0-9]$&quot;</code></td>
</tr>
<tr>
<td><code>adults</code></td>
<td>integer</td>
<td>Optional</td>
<td>Adult passengers</td>
<td><code>minimum: 1; maximum: 9</code></td>
</tr>
<tr>
<td><code>cabinClass</code></td>
<td>string</td>
<td>Optional</td>
<td>Cabin class</td>
<td><code>enum: [&quot;economy&quot;,&quot;premium_economy&quot;,&quot;business&quot;,&quot;first&quot;]; minLength: 1; maxLength: 30</code></td>
</tr>
<tr>
<td><code>limit</code></td>
<td>integer</td>
<td>Optional</td>
<td>Maximum returned offers</td>
<td><code>minimum: 1; maximum: 20</code></td>
</tr>
<tr>
<td><code>childAges</code></td>
<td>array</td>
<td>Optional</td>
<td>Children ages on final travel date</td>
<td><code>minItems: 0; maxItems: 8</code></td>
</tr>
<tr>
<td><code>childAges[]</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>minimum: 2; maximum: 17</code></td>
</tr>
<tr>
<td><code>lapInfants</code></td>
<td>integer</td>
<td>Optional</td>
<td>Lap infants, each with a different adult</td>
<td><code>minimum: 0; maximum: 4</code></td>
</tr>
<tr>
<td><code>maxConnections</code></td>
<td>integer</td>
<td>Optional</td>
<td>Maximum connections per slice; zero requires one segment, not verified absence of technical stops</td>
<td><code>minimum: 0; maximum: 2</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.offers.search">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "slices": [
    {
      "origin": "SFO",
      "destination": "JFK",
      "departureDate": "2027-02-10"
    }
  ],
  "adults": 1,
  "limit": 10
}
</code></pre>

<p>At most 2 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-loyalty-programmes-list">
<summary><span>Stays: List loyalty programmes — <code>duffel.<wbr>api.<wbr>stays.<wbr>loyalty-<wbr>programmes.<wbr>list</code></span></summary>
<p>Run <strong>Stays: List loyalty programmes</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.loyalty-programmes.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<p>This tool has no input parameters.</p>

<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.loyalty-programmes.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-accommodation-reviews-list">
<summary><span>Stays: Get accommodation reviews — <code>duffel.<wbr>api.<wbr>stays.<wbr>accommodation.<wbr>reviews.<wbr>list</code></span></summary>
<p>Run <strong>Stays: Get accommodation reviews</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.accommodation.reviews.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.accommodation.reviews.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "query": {
    "limit": 10
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-accommodation-suggestions-create">
<summary><span>Stays: Search for accommodation suggestions — <code>duffel.<wbr>api.<wbr>stays.<wbr>accommodation.<wbr>suggestions.<wbr>create</code></span></summary>
<p>Run <strong>Stays: Search for accommodation suggestions</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.accommodation.suggestions.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.location</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.location</code></td>
<td>object</td>
<td>Optional</td>
<td>This optional parameter can limit results to a given radius centered on the given coordinates</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.location.geographic_coordinates</code></td>
<td>object</td>
<td>Required</td>
<td>The center of the search criteria&#39;s radius. Represented by an object containing latitude and longitude.</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.location.geographic_coordinates.latitude</code></td>
<td>number</td>
<td>Required</td>
<td>The latitude position of the search&#39;s center, represented in <a href="https://en.wikipedia.org/wiki/Decimal_degrees">Decimal degrees</a> with 6 decimal points with a range between -90° and 90°</td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.location.geographic_coordinates.longitude</code></td>
<td>number</td>
<td>Required</td>
<td>The longitude position of the search&#39;s center, represented in <a href="https://en.wikipedia.org/wiki/Decimal_degrees">Decimal degrees</a> with 6 decimal points with a range between -180° and 180°</td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.location.radius</code></td>
<td>integer</td>
<td>Optional</td>
<td>The search area&#39;s extent from the provided coordinates in kilometers. Can only be between 1 and 100. Default of 5km is subject to change.</td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.location</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.query</code></td>
<td>string</td>
<td>Required</td>
<td>The search query for getting accommodation suggestions. Requires a minimum of three characters.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.accommodation.suggestions.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "query": "rits",
    "location": {
      "radius": 5,
      "geographic_coordinates": {
        "longitude": -0.1416,
        "latitude": 51.5071
      }
    }
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-accommodation-get">
<summary><span>Stays: Get accommodation — <code>duffel.<wbr>api.<wbr>stays.<wbr>accommodation.<wbr>get</code></span></summary>
<p>Run <strong>Stays: Get accommodation</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.accommodation.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.accommodation.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-accommodation-list">
<summary><span>Stays: List accommodation — <code>duffel.<wbr>api.<wbr>stays.<wbr>accommodation.<wbr>list</code></span></summary>
<p>Run <strong>Stays: List accommodation</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.accommodation.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.latitude</code></td>
<td>number</td>
<td>Required</td>
<td>The latitude position of the search&#39;s center, represented in <a href="https://en.wikipedia.org/wiki/Decimal_degrees">Decimal degrees</a> with 6 decimal points with a range between -90° and 90°</td>
<td></td>
</tr>
<tr>
<td><code>query.longitude</code></td>
<td>number</td>
<td>Required</td>
<td>The longitude position of the search&#39;s center, represented in <a href="https://en.wikipedia.org/wiki/Decimal_degrees">Decimal degrees</a> with 6 decimal points with a range between -180° and 180°</td>
<td></td>
</tr>
<tr>
<td><code>query.radius</code></td>
<td>integer</td>
<td>Required</td>
<td>The search area&#39;s extent from the provided coordinates in kilometers. Can only be between 1 and 100. Default of 5km is subject to change.</td>
<td></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.accommodation.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "latitude": 51.5071,
    "longitude": -0.1416,
    "radius": 5
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-aircraft-list">
<summary><span>Supporting Resources: List aircraft — <code>duffel.<wbr>api.<wbr>air.<wbr>aircraft.<wbr>list</code></span></summary>
<p>Run <strong>Supporting Resources: List aircraft</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.aircraft.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.aircraft.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-aircraft-get">
<summary><span>Supporting Resources: Get a single aircraft — <code>duffel.<wbr>api.<wbr>air.<wbr>aircraft.<wbr>get</code></span></summary>
<p>Run <strong>Supporting Resources: Get a single aircraft</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.aircraft.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.aircraft.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airline-credits-list">
<summary><span>Flights: List airline credits — <code>duffel.<wbr>api.<wbr>air.<wbr>airline-<wbr>credits.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List airline credits</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airline-credits.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.user_id</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airline-credits.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "user_id": "icu_00009hj8USM7Ncg31cBCLL"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airline-credits-create">
<summary><span>Flights: Create an airline credit — <code>duffel.<wbr>api.<wbr>air.<wbr>airline-<wbr>credits.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create an airline credit</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airline-credits.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.airline_iata_code</code></td>
<td>string</td>
<td>Required</td>
<td>The two-character IATA code for the airline that issued this credit</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.amount</code></td>
<td>string</td>
<td>Required</td>
<td>The monetary value of this airline credit</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.amount_currency</code></td>
<td>string</td>
<td>Required</td>
<td>The currency of the <code>amount</code>, as an <a href="https://en.wikipedia.org/wiki/ISO_4217">ISO 4217</a> currency code.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.code</code></td>
<td>string</td>
<td>Required</td>
<td>The code which identifies the airline credit to the airline and will be used to redeem the airline credit</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.expires_at</code></td>
<td>string</td>
<td>Required</td>
<td>The datetime at which the airline credit expires and will no longer be eligible for payment</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The family name of the customer this credit is for.  Required if <code>user_id</code> is not provided.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The given name of the customer this credit is for.  Required if <code>user_id</code> is not provided.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.issued_on</code></td>
<td>string</td>
<td>Required</td>
<td>The date the airline credit was issued by the airline</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.type</code></td>
<td>string</td>
<td>Required</td>
<td>Type of the airline credit</td>
<td><code>enum: [&quot;eticket&quot;,&quot;mco&quot;,&quot;emd&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>Duffel&#39;s unique identifier for the customer user that the credit should be associated with.  Either provide <code>user_id</code> or both <code>given_name</code> and <code>family_name</code>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airline-credits.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "user_id": "icu_00009hj8USM7Ncg31cBCLL",
    "type": "eticket",
    "issued_on": "2020-04-11",
    "given_name": "John",
    "family_name": "Smith",
    "expires_at": "2024-04-11T15:48:11.642Z",
    "code": "1234567890123",
    "amount_currency": "GBP",
    "amount": "90.80",
    "airline_iata_code": "AA"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airline-credits-get">
<summary><span>Flights: Get a single airline credit — <code>duffel.<wbr>api.<wbr>air.<wbr>airline-<wbr>credits.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single airline credit</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airline-credits.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airline-credits.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airline-initiated-changes-update">
<summary><span>Flights: Update an airline-initiated change — <code>duffel.<wbr>api.<wbr>air.<wbr>airline-<wbr>initiated-<wbr>changes.<wbr>update</code></span></summary>
<p>Run <strong>Flights: Update an airline-initiated change</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airline-initiated-changes.update">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.action_taken</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.action_taken</code></td>
<td>string</td>
<td>Required</td>
<td>The action taken in response to this airline-initiated change.  Accepted, cancelled and changed reflect your action in accepting the change, cancelling the order or changing the order respectively.</td>
<td><code>anyOf[1]; enum: [&quot;accepted&quot;,&quot;cancelled&quot;,&quot;changed&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.action_taken</code></td>
<td>null</td>
<td>Required</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airline-initiated-changes.update">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "action_taken": "accepted"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airline-initiated-changes-list">
<summary><span>Flights: List airline-initiated changes — <code>duffel.<wbr>api.<wbr>air.<wbr>airline-<wbr>initiated-<wbr>changes.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List airline-initiated changes</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airline-initiated-changes.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.order_id</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airline-initiated-changes.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "order_id": "ord_00009hthhsUZ8W4LxQgkjo"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airline-initiated-changes-accept">
<summary><span>Flights: Accept the airline-initiated change — <code>duffel.<wbr>api.<wbr>air.<wbr>airline-<wbr>initiated-<wbr>changes.<wbr>accept</code></span></summary>
<p>Run <strong>Flights: Accept the airline-initiated change</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airline-initiated-changes.accept">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airline-initiated-changes.accept">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airlines-get">
<summary><span>Supporting Resources: Get a single airline — <code>duffel.<wbr>api.<wbr>air.<wbr>airlines.<wbr>get</code></span></summary>
<p>Run <strong>Supporting Resources: Get a single airline</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airlines.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airlines.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airlines-list">
<summary><span>Supporting Resources: List airlines — <code>duffel.<wbr>api.<wbr>air.<wbr>airlines.<wbr>list</code></span></summary>
<p>Run <strong>Supporting Resources: List airlines</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airlines.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airlines.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airports-list">
<summary><span>Supporting Resources: List airports — <code>duffel.<wbr>api.<wbr>air.<wbr>airports.<wbr>list</code></span></summary>
<p>Run <strong>Supporting Resources: List airports</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airports.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.iata_country_code</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airports.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "iata_country_code": "GB"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-airports-get">
<summary><span>Supporting Resources: Get a single airport — <code>duffel.<wbr>api.<wbr>air.<wbr>airports.<wbr>get</code></span></summary>
<p>Run <strong>Supporting Resources: Get a single airport</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.airports.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.airports.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-batch-offer-requests-create">
<summary><span>Flights: Create a batch offer request — <code>duffel.<wbr>api.<wbr>air.<wbr>batch-<wbr>offer-<wbr>requests.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create a batch offer request</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.batch-offer-requests.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.supplier_timeout</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.airline_credit_ids</code></td>
<td>array</td>
<td>Optional</td>
<td>The list of airline credit IDs that Duffel received as input.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.airline_credit_ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>string</td>
<td>Optional</td>
<td>The cabin that the passengers want to travel in</td>
<td><code>anyOf[1]; enum: [&quot;first&quot;,&quot;business&quot;,&quot;premium_economy&quot;,&quot;economy&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.include_split_ticket</code></td>
<td>boolean</td>
<td>Optional</td>
<td>When set to <code>true</code> and the search has more than one slice, additional one-way searches will be fired per slice to find split-ticket candidates. These results are only included in the response when <code>view</code> is set to <code>itineraries</code>. Please get in touch with the Duffel support team at &lt;<a href="mailto:help@duffel.com">help@duffel.com</a>&gt; to access this feature.</td>
<td></td>
</tr>
<tr>
<td><code>data.max_connections</code></td>
<td>integer</td>
<td>Optional</td>
<td>The maximum number of connections within any slice of the offer. For example 0 means a direct flight which will have a single segment within each slice and 1 means a maximum of two segments within each slice of the offer.</td>
<td><code>minimum: 0; maximum: 2</code></td>
</tr>
<tr>
<td><code>data.passengers</code></td>
<td>array</td>
<td>Required</td>
<td>The passengers who want to travel. If you specify an <code>age</code> for a passenger, the <code>type</code> may differ for the same passenger in different offers due to airline&#39;s different rules. e.g. one airline may treat a 14 year old as an adult, and another as a young adult. You may only specify an <code>age</code> or a <code>type</code> – not both.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their type</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[1]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of the passenger. If the passenger is aged 18 or over, you should specify a <code>type</code> of <code>adult</code>. If a passenger is aged under 18, you should specify their <code>age</code> instead of a <code>type</code>. A passenger can have only a type or an age, but not both.</td>
<td><code>anyOf[1]; enum: [&quot;adult&quot;,&quot;child&quot;,&quot;infant_without_seat&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their age</td>
<td><code>anyOf[2]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].age</code></td>
<td>integer</td>
<td>Required</td>
<td>The age of the passenger on the <code>departure_date</code> of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an <code>age</code> for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though.</td>
<td><code>anyOf[2]; minimum: 0; maximum: 130</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[2]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their fare type. This is used for leisure private fares.</td>
<td><code>anyOf[3]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].age</code></td>
<td>integer</td>
<td>Optional</td>
<td>The age of the passenger on the <code>departure_date</code> of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an <code>age</code> for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though.</td>
<td><code>anyOf[3]; minimum: 0; maximum: 130</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].fare_type</code></td>
<td>string</td>
<td>Required</td>
<td>The fare type of the passenger. If the passenger is aged less than 18, you should pass in age as well.</td>
<td><code>anyOf[3]; enum: [&quot;accompanying_adult&quot;,&quot;contract_bulk&quot;,&quot;contract_bulk_child&quot;,&quot;contract_bulk_infant_with_seat&quot;,&quot;contract_bulk_infant_without_seat&quot;,&quot;frequent_flyer&quot;,&quot;group_inclusive_tour&quot;,&quot;group_inclusive_tour_child&quot;,&quot;humanitarian&quot;,&quot;individual_inclusive_tour_child&quot;,&quot;marine&quot;,&quot;seat_only&quot;,&quot;student&quot;,&quot;teacher&quot;,&quot;tour_operator_inclusive&quot;,&quot;tour_operator_inclusive_infant&quot;,&quot;unaccompanied_child&quot;,&quot;visiting_friends_and_family&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[3]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[3]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.private_fares</code></td>
<td>object</td>
<td>Optional</td>
<td>The private fare codes for this offer request. You can pass in multiple airlines with their specific private fare codes. The key is the airline&#39;s IATA code that provided the private fare code. The <code>corporate_code</code> and <code>tour_code</code> are provided to you by the airline and the <code>tracking_reference</code> is to identify your business by the airlines.</td>
<td><code>maxProperties: 100; additionalProperties: true</code></td>
</tr>
<tr>
<td><code>data.slices</code></td>
<td>array</td>
<td>Required</td>
<td>The <a href="https://duffel.com/docs/api/overview/key-concepts">slices</a> that make up this offer request. One-way journeys can be expressed using one slice, whereas return trips will need two.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.slices[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>object</td>
<td>Optional</td>
<td>The inclusive time range for the arrival of the slice</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the destination airport at or after which the slice should arrive. Defaults to <code>00:00</code> when only <code>to</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the destination airport at or before which the slice should arrive. Defaults to <code>23:59</code> when only <code>from</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_date</code></td>
<td>string</td>
<td>Required</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date on which the passengers want to depart</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>object</td>
<td>Optional</td>
<td>The inclusive time range for the departure of the slice</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the origin airport at or after which the slice should depart. Defaults to current time at airport when only <code>to</code> is provided or <code>from</code> value is in the past</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the origin airport at or before which the slice should depart. Defaults to <code>23:59</code> when only <code>from</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].destination</code></td>
<td>string</td>
<td>Required</td>
<td>The 3-letter IATA code for the city or airport where this slice ends</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].origin</code></td>
<td>string</td>
<td>Required</td>
<td>The 3-letter IATA code for the city or airport where this slice starts</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.batch-offer-requests.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "supplier_timeout": 10000
  },
  "data": {
    "slices": [
      {
        "origin": "LHR",
        "destination": "JFK",
        "departure_time": {
          "to": "17:00",
          "from": "09:45"
        },
        "departure_date": "2020-04-24",
        "arrival_time": {
          "to": "17:00",
          "from": "09:45"
        }
      }
    ],
    "private_fares": {
      "QF": [
        {
          "corporate_code": "FLX53",
          "tracking_reference": "ABN:2345678"
        }
      ],
      "UA": [
        {
          "corporate_code": "1234",
          "tour_code": "578DFL"
        }
      ]
    },
    "passengers": [
      {
        "family_name": "Earhart",
        "given_name": "Amelia",
        "loyalty_programme_accounts": [
          {
            "account_number": "12901014",
            "airline_iata_code": "BA"
          }
        ],
        "type": "adult"
      },
      {
        "age": 14
      },
      {
        "fare_type": "student"
      },
      {
        "age": 5,
        "fare_type": "contract_bulk_child"
      }
    ],
    "max_connections": 0,
    "include_split_ticket": true,
    "cabin_class": "economy",
    "airline_credit_ids": [
      "acd_00009hthhsUZ8W4LxQgkjo",
      "acd_0000thhsUZ8W4LxQgkjo00"
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-batch-offer-requests-get">
<summary><span>Flights: Get a single batch offer request — <code>duffel.<wbr>api.<wbr>air.<wbr>batch-<wbr>offer-<wbr>requests.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single batch offer request</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.batch-offer-requests.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.view</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>enum: [&quot;offers&quot;,&quot;itineraries&quot;]; maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.batch-offer-requests.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-bookings-payment-instructions-create">
<summary><span>Stays: Creating a booking payment instruction — <code>duffel.<wbr>api.<wbr>stays.<wbr>bookings.<wbr>payment-<wbr>instructions.<wbr>create</code></span></summary>
<p>Run <strong>Stays: Creating a booking payment instruction</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.bookings.payment-instructions.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.booking_id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.approved_charges</code></td>
<td>object</td>
<td>Required</td>
<td>Describes what kinds of charges are approved for this payment instruction.  The accommodation should charge the provided card for all approved charges, and charge the guest for the rest.</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.approved_charges.base</code></td>
<td>boolean</td>
<td>Required</td>
<td>Whether the accommodation should charge the provided card for the base price of the booking.</td>
<td></td>
</tr>
<tr>
<td><code>data.approved_charges.fees</code></td>
<td>boolean</td>
<td>Required</td>
<td>Whether the accommodation should charge the provided card for the fees of the booking.</td>
<td></td>
</tr>
<tr>
<td><code>data.approved_charges.other</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.approved_charges.other</code></td>
<td>string</td>
<td>Optional</td>
<td>Any other approved charges, as free text items.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.approved_charges.other</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.approved_charges.taxes</code></td>
<td>boolean</td>
<td>Required</td>
<td>Whether the accommodation should charge the provided card for the taxes of the booking.</td>
<td></td>
</tr>
<tr>
<td><code>data.card_id</code></td>
<td>string</td>
<td>Required</td>
<td>The <code>id</code> of the payment card to use for payment.  The card must be a lodged card (created with <code>multi_use</code> set to <code>true</code>).</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.invoice</code></td>
<td>object</td>
<td>Required</td>
<td>Describes where to send the invoice for this charge.</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.invoice.address_city</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.invoice.address_country_code</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.invoice.address_line_1</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.invoice.address_line_2</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.invoice.address_postal_code</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.invoice.address_region</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.invoice.company_name</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.invoice.send_to</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.limit_amount</code></td>
<td>string</td>
<td>Required</td>
<td>The limit of the approved amount. The accommodation should not charge the provided card more than this amount.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.limit_currency</code></td>
<td>string</td>
<td>Required</td>
<td>The currency of the <code>limit_amount</code>, as an <a href="https://en.wikipedia.org/wiki/ISO_4217">ISO 4217</a> currency code.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.bookings.payment-instructions.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "booking_id": "resource_fixture"
  },
  "data": {
    "limit_currency": "USD",
    "limit_amount": "1437.55",
    "invoice": {
      "send_to": "invoice@merchant.io",
      "company_name": "Merchant",
      "address_region": "London",
      "address_postal_code": "SW1A 2AA",
      "address_line_2": "Westminster",
      "address_line_1": "10 Downing St",
      "address_country_code": "GB",
      "address_city": "London"
    },
    "card_id": "tcd_0000AS0NZdKjjnnHZmSUbI",
    "approved_charges": {
      "taxes": true,
      "other": "Parking up to $50. Food up to $20",
      "fees": true,
      "base": true
    }
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-bookings-list">
<summary><span>Stays: List bookings — <code>duffel.<wbr>api.<wbr>stays.<wbr>bookings.<wbr>list</code></span></summary>
<p>Run <strong>Stays: List bookings</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.bookings.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.user_id</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.bookings.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "user_id": "icu_00009htyDGjIfajdNBZRlw"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-bookings-create">
<summary><span>Stays: Creating a booking — <code>duffel.<wbr>api.<wbr>stays.<wbr>bookings.<wbr>create</code></span></summary>
<p>Run <strong>Stays: Creating a booking</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.bookings.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.accommodation_special_requests</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.accommodation_special_requests</code></td>
<td>string</td>
<td>Optional</td>
<td>Guest&#39;s specific requests about this booking to be forwarded to the accommodation. This field should not be used to provide medical or otherwise sensitive information.</td>
<td><code>anyOf[1]; maxLength: 1000</code></td>
</tr>
<tr>
<td><code>data.accommodation_special_requests</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.email</code></td>
<td>string</td>
<td>Required</td>
<td>Lead guest&#39;s email address</td>
<td><code>maxLength: 16000; format: &quot;email&quot;</code></td>
</tr>
<tr>
<td><code>data.guests</code></td>
<td>array</td>
<td>Required</td>
<td>List of guests that will stay on this booking. A minimum of one guest must be provided. For bookings of more than one room, the reservation will be made under the name of the first guest provided. We recommend (though optional) that you pass an additional guest name per additional room.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.guests[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.guests[].family_name</code></td>
<td>string</td>
<td>Required</td>
<td>Guest&#39;s family name</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.guests[].given_name</code></td>
<td>string</td>
<td>Required</td>
<td>Guest&#39;s given name</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.guests[].user_id</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.guests[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>Creates an association between the guest and a previously created user.  This is intended to allow guests the ability to manage their own bookings.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.guests[].user_id</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.loyalty_programme_account_number</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.loyalty_programme_account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>Loyalty programme account number to associate with this booking.  Use this only when the quote has a <a href="https://duffel.com/docs/api/v2/quotes/create-quote#quotes-schema-supported-loyalty-programme">supported_loyalty_programme</a> indicated. Otherwise, this will result in an error.  Account number is relayed to the hotel on a best-effort basis, it is at the hotel&#39;s discretion to honour the loyalty programme.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.loyalty_programme_account_number</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.metadata</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.metadata</code></td>
<td>object</td>
<td>Optional</td>
<td>Metadata contains a set of key-value pairs that you can attach to an object. It can be useful for storing additional information about the object, in a structured format. Duffel does not use this information. You should not store sensitive information in this field.  The metadata is a collection of key-value pairs, both of which are strings. You can store a maximum of 50 key-value pairs, where each key has a maximum length of 40 characters and each value has a maximum length of 500 characters.  Keys must only contain numbers, letters, dashes, or underscores.</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.metadata</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>object</td>
<td>Optional</td>
<td>The payment details to use to pay for the booking.  When you want to pay using the &quot;balance&quot; payment method, this must be omitted.  When you want to pay using the &quot;card&quot; payment method, this object is required.</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.payment.three_d_secure_session_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the ThreeDSecureSession</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.phone_number</code></td>
<td>string</td>
<td>Required</td>
<td>Lead guest&#39;s phone number in <a href="https://www.twilio.com/docs/glossary/what-e164">E.164</a> (international) format.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.quote_id</code></td>
<td>string</td>
<td>Required</td>
<td>The <code>id</code> of the stay quote you want to book.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.users</code></td>
<td>array</td>
<td>Optional</td>
<td>The <code>id</code>s of customer users that would be allowed to manage the booking.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.users[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.bookings.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "users": [
      "icu_00009htyDGjIfajdNBZRlw"
    ],
    "quote_id": "quo_0000AS0NZdKjjnnHZmSUbI",
    "phone_number": "+442080160509",
    "payment": {
      "three_d_secure_session_id": "3ds_0000AWr2XsTRIF1Vp34gh5"
    },
    "metadata": {
      "customer_reference_number": "DLXYYZ5"
    },
    "loyalty_programme_account_number": "201154908",
    "guests": [
      {
        "user_id": "icu_00009htyDGjIfajdNBZRlw",
        "given_name": "Amelia",
        "family_name": "Earheart"
      }
    ],
    "email": "amelia.earheart@duffel.com",
    "accommodation_special_requests": "2:00 PM early check-in required"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-bookings-cancel">
<summary><span>Stays: Cancel booking — <code>duffel.<wbr>api.<wbr>stays.<wbr>bookings.<wbr>cancel</code></span></summary>
<p>Run <strong>Stays: Cancel booking</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.bookings.cancel">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.booking_id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.bookings.cancel">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "booking_id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-bookings-get">
<summary><span>Stays: Get booking — <code>duffel.<wbr>api.<wbr>stays.<wbr>bookings.<wbr>get</code></span></summary>
<p>Run <strong>Stays: Get booking</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.bookings.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.bookings.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-bookings-update">
<summary><span>Stays: Update booking — <code>duffel.<wbr>api.<wbr>stays.<wbr>bookings.<wbr>update</code></span></summary>
<p>Run <strong>Stays: Update booking</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.bookings.update">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.users</code></td>
<td>array</td>
<td>Required</td>
<td>The <code>id</code>s of customer users that would be allowed to manage the booking.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.users[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.bookings.update">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "users": [
      "icu_00009htyDGjIfajdNBZRlw"
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-brands-get">
<summary><span>Stays: Get hotel brand — <code>duffel.<wbr>api.<wbr>stays.<wbr>brands.<wbr>get</code></span></summary>
<p>Run <strong>Stays: Get hotel brand</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.brands.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.brands.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-brands-list">
<summary><span>Stays: List hotel brands — <code>duffel.<wbr>api.<wbr>stays.<wbr>brands.<wbr>list</code></span></summary>
<p>Run <strong>Stays: List hotel brands</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.brands.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<p>This tool has no input parameters.</p>

<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.brands.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-payments-cards-create">
<summary><span>Payments: Create a Card — <code>duffel.<wbr>api.<wbr>payments.<wbr>cards.<wbr>create</code></span></summary>
<p>Run <strong>Payments: Create a Card</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.payments.cards.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.address_city</code></td>
<td>string</td>
<td>Required</td>
<td>The city of the billing address associated with the card.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.address_country_code</code></td>
<td>string</td>
<td>Required</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-1 alpha-2</a> code for the country of the billing address associated with the card.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.address_line_1</code></td>
<td>string</td>
<td>Required</td>
<td>The first line of the billing address associated with the card.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.address_line_2</code></td>
<td>string</td>
<td>Optional</td>
<td>The second line of the billing address associated with the card.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.address_postal_code</code></td>
<td>string</td>
<td>Required</td>
<td>The postal code of the billing address associated with the card.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.address_region</code></td>
<td>string</td>
<td>Required</td>
<td>The region of the billing address associated with the card.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.card_id</code></td>
<td>string</td>
<td>Optional</td>
<td>Duffel&#39;s unique identifier for the multi-use card that should be used to create a single-use card record.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.cvc</code></td>
<td>string</td>
<td>Required</td>
<td>The Card Verification Code (CVC). Value not accepted when creating multi-use cards.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.expiry_month</code></td>
<td>string</td>
<td>Required</td>
<td>The card expiry month as an integer with two digits, e.g. for February use <code>02</code>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.expiry_year</code></td>
<td>string</td>
<td>Required</td>
<td>The card expiry year as an integer with two digits, e.g. for 2023 use <code>23</code>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.multi_use</code></td>
<td>boolean</td>
<td>Optional</td>
<td>Set to <code>true</code> to indicate that this card can be used multiple times. Should not be provided when creating a card from a multi-use card record.</td>
<td></td>
</tr>
<tr>
<td><code>data.name</code></td>
<td>string</td>
<td>Required</td>
<td>The name on the card. The name must match the cardholder&#39;s name as it appears on the issued card. This information may be verified during payment authorisation, and any discrepancies could result in the payment being declined.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.number</code></td>
<td>string</td>
<td>Required</td>
<td>The card number.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.payments.cards.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "number": "4242424242424242",
    "name": "Neil Armstrong",
    "multi_use": false,
    "expiry_year": "23",
    "expiry_month": "02",
    "cvc": "123",
    "card_id": "tcd_00009hthhsUZ8W4LxQgkjb",
    "address_region": "London",
    "address_postal_code": "SW1A 2AA",
    "address_line_2": "Westminster",
    "address_line_1": "10 Downing St",
    "address_country_code": "GB",
    "address_city": "London"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-payments-cards-delete">
<summary><span>Payments: Delete a Card — <code>duffel.<wbr>api.<wbr>payments.<wbr>cards.<wbr>delete</code></span></summary>
<p>Run <strong>Payments: Delete a Card</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.payments.cards.delete">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.payments.cards.delete">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-cars-bookings-get">
<summary><span>Cars: Get a Booking — <code>duffel.<wbr>api.<wbr>cars.<wbr>bookings.<wbr>get</code></span></summary>
<p>Run <strong>Cars: Get a Booking</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.cars.bookings.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.cars.bookings.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-cars-bookings-cancel">
<summary><span>Cars: Cancel a Booking — <code>duffel.<wbr>api.<wbr>cars.<wbr>bookings.<wbr>cancel</code></span></summary>
<p>Run <strong>Cars: Cancel a Booking</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.cars.bookings.cancel">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.cars.bookings.cancel">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-cars-bookings-create">
<summary><span>Cars: Create a Booking — <code>duffel.<wbr>api.<wbr>cars.<wbr>bookings.<wbr>create</code></span></summary>
<p>Run <strong>Cars: Create a Booking</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.cars.bookings.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.driver</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.driver.date_of_birth</code></td>
<td>string</td>
<td>Required</td>
<td>The driver date of birth.</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.driver.email</code></td>
<td>string</td>
<td>Required</td>
<td>The driver email address.</td>
<td><code>maxLength: 16000; pattern: &quot;.+@.+&quot;; format: &quot;email&quot;</code></td>
</tr>
<tr>
<td><code>data.driver.family_name</code></td>
<td>string</td>
<td>Required</td>
<td>The driver family name.</td>
<td><code>minLength: 2; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.driver.given_name</code></td>
<td>string</td>
<td>Required</td>
<td>The driver given name.</td>
<td><code>minLength: 2; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.driver.phone_number</code></td>
<td>string</td>
<td>Required</td>
<td>The driver phone number in E.164 format.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.driver.user_id</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.driver.user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The customer user <code>id</code> that is associated with the driver. This will allow the driver to manage their booking.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.driver.user_id</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.inbound_flight_number</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.inbound_flight_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The inbound flight number, if applicable.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.inbound_flight_number</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.metadata</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.metadata</code></td>
<td>object</td>
<td>Optional</td>
<td>Metadata contains a set of key-value pairs that you can attach to an object. It can be useful for storing additional information about the object, in a structured format. Duffel does not use this information. You should not store sensitive information in this field. The metadata is a collection of key-value pairs, both of which are strings. You can store a maximum of 50 key-value pairs, where each key has a maximum length of 40 characters and each value has a maximum length of 500 characters. Keys must only contain numbers, letters, dashes, or underscores.</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.metadata</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>object</td>
<td>Optional</td>
<td>Payment information for the booking.</td>
<td><code>anyOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.payment.method</code></td>
<td>string</td>
<td>Required</td>
<td>The payment method.</td>
<td><code>anyOf[1]; enum: [&quot;card&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.three_d_secure_session_id</code></td>
<td>string</td>
<td>Required</td>
<td>The identifier of the 3DS session to use for payment.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.quote_id</code></td>
<td>string</td>
<td>Required</td>
<td>The identifier of the quote to book.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.supplier_loyalty_programme_account_number</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.supplier_loyalty_programme_account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The supplier loyalty programme account number, if applicable.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.supplier_loyalty_programme_account_number</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.users</code></td>
<td>array</td>
<td>Optional</td>
<td>The <code>id</code>s of customer users that would be allowed to manage the booking.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.users[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.cars.bookings.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "users": [
      "icu_0000B0nwceAOyWuOFJ23NJ"
    ],
    "quote_id": "qut_0000Bx4Af0b5l45AT50eqO",
    "payment": {
      "three_d_secure_session_id": "3ds_0000A3t2sL46m5eDF45kWW",
      "method": "card"
    },
    "metadata": {
      "custom_field": "custom_value_123"
    },
    "driver": {
      "user_id": "icu_0000B0nwceAOyWuOF3pz1M",
      "phone_number": "+442080160509",
      "given_name": "Amelia",
      "family_name": "Earheart",
      "email": "amelia.earheart@duffel.com",
      "date_of_birth": "1990-01-01"
    }
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-cars-quotes-create">
<summary><span>Cars: Create a Quote — <code>duffel.<wbr>api.<wbr>cars.<wbr>quotes.<wbr>create</code></span></summary>
<p>Run <strong>Cars: Create a Quote</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.cars.quotes.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.rate_id</code></td>
<td>string</td>
<td>Required</td>
<td>The identifier of the rate to create a quote from.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.cars.quotes.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "rate_id": "rae_0000Bx4Af0b5l45AT50eqO"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-cars-search-create">
<summary><span>Cars: Search for Cars — <code>duffel.<wbr>api.<wbr>cars.<wbr>search.<wbr>create</code></span></summary>
<p>Run <strong>Cars: Search for Cars</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.cars.search.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.driver</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.driver</code></td>
<td>object</td>
<td>Required</td>
<td>Information about the driver such as the age and country of residence.</td>
<td><code>allOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.driver.age</code></td>
<td>integer</td>
<td>Required</td>
<td>The age of the driver.</td>
<td><code>allOf[1]; minimum: 18</code></td>
</tr>
<tr>
<td><code>data.driver.residence_country_code</code></td>
<td>string</td>
<td>Required</td>
<td>The ISO 3166-1 alpha-2 country code of the driver&#39;s country of residence.</td>
<td><code>allOf[1]; maxLength: 16000; pattern: &quot;^[A-Z]{2}$&quot;</code></td>
</tr>
<tr>
<td><code>data.driver</code></td>
<td>—</td>
<td>Required</td>
<td>The driver this search is for.</td>
<td><code>allOf[2]</code></td>
</tr>
<tr>
<td><code>data.dropoff_date</code></td>
<td>string</td>
<td>Required</td>
<td>The date when the car will be dropped off.</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.dropoff_location</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.dropoff_location</code></td>
<td>object</td>
<td>Required</td>
<td>A search location with geographic coordinates and search radius.</td>
<td><code>allOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.dropoff_location.geographic_coordinates</code></td>
<td>object</td>
<td>Required</td>
<td>The geographic coordinates of the location.</td>
<td><code>allOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.dropoff_location.geographic_coordinates.latitude</code></td>
<td>number</td>
<td>Required</td>
<td>The latitude coordinate.</td>
<td><code>allOf[1]; minimum: -90; maximum: 90</code></td>
</tr>
<tr>
<td><code>data.dropoff_location.geographic_coordinates.longitude</code></td>
<td>number</td>
<td>Required</td>
<td>The longitude coordinate.</td>
<td><code>allOf[1]; minimum: -180; maximum: 180</code></td>
</tr>
<tr>
<td><code>data.dropoff_location.radius</code></td>
<td>integer</td>
<td>Optional</td>
<td>Search radius in kilometres around the coordinates.</td>
<td><code>allOf[1]; minimum: 1; maximum: 10</code></td>
</tr>
<tr>
<td><code>data.dropoff_location</code></td>
<td>—</td>
<td>Required</td>
<td>The location where the car will be dropped off.</td>
<td><code>allOf[2]</code></td>
</tr>
<tr>
<td><code>data.dropoff_time</code></td>
<td>string</td>
<td>Required</td>
<td>The time the car will be dropped off, in HH:MM format.</td>
<td><code>maxLength: 16000; pattern: &quot;^\\d{2}:\\d{2}$&quot;</code></td>
</tr>
<tr>
<td><code>data.pickup_date</code></td>
<td>string</td>
<td>Required</td>
<td>The date the car will be picked up.</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.pickup_location</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.pickup_location</code></td>
<td>object</td>
<td>Required</td>
<td>A search location with geographic coordinates and search radius.</td>
<td><code>allOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.pickup_location.geographic_coordinates</code></td>
<td>object</td>
<td>Required</td>
<td>The geographic coordinates of the location.</td>
<td><code>allOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.pickup_location.geographic_coordinates.latitude</code></td>
<td>number</td>
<td>Required</td>
<td>The latitude coordinate.</td>
<td><code>allOf[1]; minimum: -90; maximum: 90</code></td>
</tr>
<tr>
<td><code>data.pickup_location.geographic_coordinates.longitude</code></td>
<td>number</td>
<td>Required</td>
<td>The longitude coordinate.</td>
<td><code>allOf[1]; minimum: -180; maximum: 180</code></td>
</tr>
<tr>
<td><code>data.pickup_location.radius</code></td>
<td>integer</td>
<td>Optional</td>
<td>Search radius in kilometres around the coordinates.</td>
<td><code>allOf[1]; minimum: 1; maximum: 10</code></td>
</tr>
<tr>
<td><code>data.pickup_location</code></td>
<td>—</td>
<td>Required</td>
<td>The location where the car will be picked up.</td>
<td><code>allOf[2]</code></td>
</tr>
<tr>
<td><code>data.pickup_time</code></td>
<td>string</td>
<td>Required</td>
<td>The time the car will be picked up, in HH:MM format.</td>
<td><code>maxLength: 16000; pattern: &quot;^\\d{2}:\\d{2}$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.cars.search.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "pickup_time": "10:30",
    "pickup_location": {
      "radius": 5,
      "geographic_coordinates": {
        "longitude": -0.1278,
        "latitude": 51.5074
      }
    },
    "pickup_date": "2024-01-15",
    "dropoff_time": "15:00",
    "dropoff_location": {
      "radius": 5,
      "geographic_coordinates": {
        "longitude": -0.1278,
        "latitude": 51.5074
      }
    },
    "dropoff_date": "2024-01-20",
    "driver": {
      "residence_country_code": "US",
      "age": 30
    }
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-chains-get">
<summary><span>Stays: Get hotel chain — <code>duffel.<wbr>api.<wbr>stays.<wbr>chains.<wbr>get</code></span></summary>
<p>Run <strong>Stays: Get hotel chain</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.chains.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.chains.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-chains-list">
<summary><span>Stays: List hotel chains — <code>duffel.<wbr>api.<wbr>stays.<wbr>chains.<wbr>list</code></span></summary>
<p>Run <strong>Stays: List hotel chains</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.chains.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<p>This tool has no input parameters.</p>

<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.chains.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-cities-list">
<summary><span>Supporting Resources: List cities — <code>duffel.<wbr>api.<wbr>air.<wbr>cities.<wbr>list</code></span></summary>
<p>Run <strong>Supporting Resources: List cities</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.cities.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.cities.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-cities-get">
<summary><span>Supporting Resources: Get a single city — <code>duffel.<wbr>api.<wbr>air.<wbr>cities.<wbr>get</code></span></summary>
<p>Run <strong>Supporting Resources: Get a single city</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.cities.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.cities.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-component-client-keys-create">
<summary><span>Identity: Create a component client key — <code>duffel.<wbr>api.<wbr>identity.<wbr>component-<wbr>client-<wbr>keys.<wbr>create</code></span></summary>
<p>Run <strong>Identity: Create a component client key</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.component-client-keys.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>—</td>
<td>Required</td>
<td>Claims to sign into the client key.  You may provide a <code>user_id</code>, a <code>user_id</code> and <code>order_id</code>, or a <code>user_id</code> and <code>booking_id</code>. You can also omit the request body to create a key with no extra claims.  This endpoint does not check that the claims are valid, complete, or appropriate for a later request. Downstream endpoints that accept the key decide whether the claims make sense; if they are missing or incorrect, creating the key will still succeed and the failure happens when the key is used.</td>
<td></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td>Use this payload to create a client key scoped to a customer user</td>
<td><code>anyOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the user for whom the client key will be created.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td>Use this payload to create a client key scoped to a customer user and order.</td>
<td><code>anyOf[2]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.order_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the order for which the client key will be created.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the user for whom the client key will be created.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td>Use this payload to create a client key scoped to a customer user and booking.</td>
<td><code>anyOf[3]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.booking_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the booking for which the client key will be created.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the user for whom the client key will be created.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.component-client-keys.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "user_id": "icu_0000AgZitpOnQtd3NQxjwO"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-user-groups-list">
<summary><span>Identity: List Customer User Groups — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>user-<wbr>groups.<wbr>list</code></span></summary>
<p>Run <strong>Identity: List Customer User Groups</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.user-groups.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<p>This tool has no input parameters.</p>

<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.user-groups.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-user-groups-create">
<summary><span>Identity: Create a Customer User Group — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>user-<wbr>groups.<wbr>create</code></span></summary>
<p>Run <strong>Identity: Create a Customer User Group</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.user-groups.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.name</code></td>
<td>string</td>
<td>Required</td>
<td>The customer user group&#39;s name</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.user_ids</code></td>
<td>array</td>
<td>Optional</td>
<td>The list of customer users that belong to this group</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.user_ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.user-groups.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "user_ids": [
      "icu_0000AgZitpOnQtd3NQxjwX"
    ],
    "name": "Northwind Solutions"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-user-groups-delete">
<summary><span>Identity: Delete a single customer user group — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>user-<wbr>groups.<wbr>delete</code></span></summary>
<p>Run <strong>Identity: Delete a single customer user group</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.user-groups.delete">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.user-groups.delete">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-user-groups-get">
<summary><span>Identity: Get a single customer user group — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>user-<wbr>groups.<wbr>get</code></span></summary>
<p>Run <strong>Identity: Get a single customer user group</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.user-groups.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.user-groups.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-user-groups-update">
<summary><span>Identity: Update a single customer user group — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>user-<wbr>groups.<wbr>update</code></span></summary>
<p>Run <strong>Identity: Update a single customer user group</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.user-groups.update">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.name</code></td>
<td>string</td>
<td>Optional</td>
<td>The customer user group&#39;s name</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.user_ids</code></td>
<td>array</td>
<td>Optional</td>
<td>The list of customer users that belong to this group</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.user_ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.user-groups.update">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "user_ids": [
      "icu_00009zg3q4J9z4z3"
    ],
    "name": "Northwind Solutions"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-users-get">
<summary><span>Identity: Get a single customer user — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>users.<wbr>get</code></span></summary>
<p>Run <strong>Identity: Get a single customer user</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.users.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.users.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-users-update">
<summary><span>Identity: Update a single customer user — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>users.<wbr>update</code></span></summary>
<p>Run <strong>Identity: Update a single customer user</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.users.update">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.email</code></td>
<td>string</td>
<td>Required</td>
<td>The customer user&#39;s email address</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.family_name</code></td>
<td>string</td>
<td>Required</td>
<td>The customer user&#39;s family name used for display purposes only. This can be the user&#39;s preferred name and does not need to match their legal name. Must be between 1 and 255 characters.</td>
<td><code>minLength: 1; maxLength: 255</code></td>
</tr>
<tr>
<td><code>data.given_name</code></td>
<td>string</td>
<td>Required</td>
<td>The customer user&#39;s given name used for display purposes only. This can be the user&#39;s preferred name and does not need to match their legal name. Must be between 1 and 255 characters.</td>
<td><code>minLength: 1; maxLength: 255</code></td>
</tr>
<tr>
<td><code>data.group_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The group you&#39;d like to associate the customer user to</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.phone_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The customer user&#39;s phone number in <a href="https://www.twilio.com/docs/glossary/what-e164">E.164</a> (international) format.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.preferred_language</code></td>
<td>string</td>
<td>Optional</td>
<td>The customer&#39;s preferred language. Provide an ISO 639-1 language code (e.g. &quot;en&quot;, &quot;fr&quot;).</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.users.update">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "preferred_language": "en",
    "phone_number": "+442080160509",
    "group_id": "usg_0000AgZitpOnQtd3NQxjwO",
    "given_name": "Amelia",
    "family_name": "Earhart",
    "email": "amelia@duffel.com"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-users-list">
<summary><span>Identity: List customer users — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>users.<wbr>list</code></span></summary>
<p>Run <strong>Identity: List customer users</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.users.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.email</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.users.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "email": "email@example.com"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-identity-customer-users-create">
<summary><span>Identity: Create a Customer User — <code>duffel.<wbr>api.<wbr>identity.<wbr>customer.<wbr>users.<wbr>create</code></span></summary>
<p>Run <strong>Identity: Create a Customer User</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.identity.customer.users.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.email</code></td>
<td>string</td>
<td>Required</td>
<td>The customer user&#39;s email address</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.family_name</code></td>
<td>string</td>
<td>Required</td>
<td>The customer user&#39;s family name used for display purposes only. This can be the user&#39;s preferred name and does not need to match their legal name. Must be between 1 and 255 characters.</td>
<td><code>minLength: 1; maxLength: 255</code></td>
</tr>
<tr>
<td><code>data.given_name</code></td>
<td>string</td>
<td>Required</td>
<td>The customer user&#39;s given name used for display purposes only. This can be the user&#39;s preferred name and does not need to match their legal name. Must be between 1 and 255 characters.</td>
<td><code>minLength: 1; maxLength: 255</code></td>
</tr>
<tr>
<td><code>data.group_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The group you&#39;d like to associate the customer user to</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.phone_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The customer user&#39;s phone number in <a href="https://www.twilio.com/docs/glossary/what-e164">E.164</a> (international) format.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.preferred_language</code></td>
<td>string</td>
<td>Optional</td>
<td>The customer&#39;s preferred language. Provide an ISO 639-1 language code (e.g. &quot;en&quot;, &quot;fr&quot;).</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.identity.customer.users.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "preferred_language": "en",
    "phone_number": "+442080160509",
    "group_id": "usg_0000AgZitpOnQtd3NQxjwO",
    "given_name": "Amelia",
    "family_name": "Earhart",
    "email": "amelia@duffel.com"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-loyalty-programmes-get">
<summary><span>Supporting Resources: Get a single loyalty programme — <code>duffel.<wbr>api.<wbr>air.<wbr>loyalty-<wbr>programmes.<wbr>get</code></span></summary>
<p>Run <strong>Supporting Resources: Get a single loyalty programme</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.loyalty-programmes.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.loyalty-programmes.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-loyalty-programmes-list">
<summary><span>Supporting Resources: List loyalty programmes — <code>duffel.<wbr>api.<wbr>air.<wbr>loyalty-<wbr>programmes.<wbr>list</code></span></summary>
<p>Run <strong>Supporting Resources: List loyalty programmes</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.loyalty-programmes.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.loyalty-programmes.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-negotiated-rates-delete">
<summary><span>Stays: Delete a negotiated rate — <code>duffel.<wbr>api.<wbr>stays.<wbr>negotiated-<wbr>rates.<wbr>delete</code></span></summary>
<p>Run <strong>Stays: Delete a negotiated rate</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.negotiated-rates.delete">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.negotiated-rates.delete">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-negotiated-rates-get">
<summary><span>Stays: Get a negotiated rate — <code>duffel.<wbr>api.<wbr>stays.<wbr>negotiated-<wbr>rates.<wbr>get</code></span></summary>
<p>Run <strong>Stays: Get a negotiated rate</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.negotiated-rates.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.negotiated-rates.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-negotiated-rates-update">
<summary><span>Stays: Update a negotiated rate — <code>duffel.<wbr>api.<wbr>stays.<wbr>negotiated-<wbr>rates.<wbr>update</code></span></summary>
<p>Run <strong>Stays: Update a negotiated rate</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.negotiated-rates.update">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.accommodation_ids</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.accommodation_ids</code></td>
<td>array</td>
<td>Required</td>
<td>The hotel accommodation IDs this negotiated rate is valid for. Mutually exclusive with <code>chain_id</code>&#39;</td>
<td><code>anyOf[1]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.accommodation_ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.accommodation_ids</code></td>
<td>null</td>
<td>Required</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.chain_id</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.chain_id</code></td>
<td>string</td>
<td>Required</td>
<td>The ID of the hotel <a href="https://duffel.com/docs/api/v2/chains">chain</a> this negotiated rate is valid for. Mutually exclusive with <code>accommodation_ids</code></td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.chain_id</code></td>
<td>null</td>
<td>Required</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.display_name</code></td>
<td>string</td>
<td>Required</td>
<td>The display name of the negotiated rate</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.negotiated-rates.update">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "display_name": "2025 Negotiated Rate",
    "chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
    "accommodation_ids": [
      "acc_0000AWr2VsUNIF1Vl91xg0"
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-negotiated-rates-list">
<summary><span>Stays: List negotiated rates — <code>duffel.<wbr>api.<wbr>stays.<wbr>negotiated-<wbr>rates.<wbr>list</code></span></summary>
<p>Run <strong>Stays: List negotiated rates</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.negotiated-rates.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.negotiated-rates.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-negotiated-rates-create">
<summary><span>Stays: Creating a negotiated rate — <code>duffel.<wbr>api.<wbr>stays.<wbr>negotiated-<wbr>rates.<wbr>create</code></span></summary>
<p>Run <strong>Stays: Creating a negotiated rate</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.negotiated-rates.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.accommodation_ids</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.accommodation_ids</code></td>
<td>array</td>
<td>Required</td>
<td>The hotel accommodation IDs this negotiated rate is valid for. Mutually exclusive with <code>chain_id</code></td>
<td><code>anyOf[1]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.accommodation_ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.accommodation_ids</code></td>
<td>null</td>
<td>Required</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.chain_id</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.chain_id</code></td>
<td>string</td>
<td>Required</td>
<td>The ID of the hotel chain this negotiated rate is valid for. Mutually exclusive with <code>accommodation_ids</code></td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.chain_id</code></td>
<td>null</td>
<td>Required</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.display_name</code></td>
<td>string</td>
<td>Required</td>
<td>The display name of the negotiated rate</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.rate_access_code</code></td>
<td>string</td>
<td>Required</td>
<td>The rate access code to be utilised when using this negotiated rate</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.negotiated-rates.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "rate_access_code": "DUFFEL",
    "display_name": "2025 Negotiated Rate",
    "chain_id": "chn_0000B6QFxO9EOY5cqw5kYK",
    "accommodation_ids": [
      "acc_0000AWr2VsUNIF1Vl91xg0"
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-offer-requests-get">
<summary><span>Flights: Get a single offer request — <code>duffel.<wbr>api.<wbr>air.<wbr>offer-<wbr>requests.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single offer request</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.offer-requests.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.view</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>enum: [&quot;offers&quot;,&quot;itineraries&quot;]; maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.offer-requests.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-offer-requests-list">
<summary><span>Flights: List offer requests — <code>duffel.<wbr>api.<wbr>air.<wbr>offer-<wbr>requests.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List offer requests</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.offer-requests.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.offer-requests.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-offer-requests-create">
<summary><span>Flights: Create an offer request — <code>duffel.<wbr>api.<wbr>air.<wbr>offer-<wbr>requests.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create an offer request</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.offer-requests.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.return_offers</code></td>
<td>boolean</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.supplier_timeout</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.view</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>enum: [&quot;offers&quot;,&quot;itineraries&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.airline_credit_ids</code></td>
<td>array</td>
<td>Optional</td>
<td>The list of airline credit IDs that Duffel received as input.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.airline_credit_ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>string</td>
<td>Optional</td>
<td>The cabin that the passengers want to travel in</td>
<td><code>anyOf[1]; enum: [&quot;first&quot;,&quot;business&quot;,&quot;premium_economy&quot;,&quot;economy&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.include_split_ticket</code></td>
<td>boolean</td>
<td>Optional</td>
<td>When set to <code>true</code> and the search has more than one slice, additional one-way searches will be fired per slice to find split-ticket candidates. These results are only included in the response when <code>view</code> is set to <code>itineraries</code>. Please get in touch with the Duffel support team at &lt;<a href="mailto:help@duffel.com">help@duffel.com</a>&gt; to access this feature.</td>
<td></td>
</tr>
<tr>
<td><code>data.max_connections</code></td>
<td>integer</td>
<td>Optional</td>
<td>The maximum number of connections within any slice of the offer. For example 0 means a direct flight which will have a single segment within each slice and 1 means a maximum of two segments within each slice of the offer.</td>
<td><code>minimum: 0; maximum: 2</code></td>
</tr>
<tr>
<td><code>data.passengers</code></td>
<td>array</td>
<td>Required</td>
<td>The passengers who want to travel. If you specify an <code>age</code> for a passenger, the <code>type</code> may differ for the same passenger in different offers due to airline&#39;s different rules. e.g. one airline may treat a 14 year old as an adult, and another as a young adult. You may only specify an <code>age</code> or a <code>type</code> – not both.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their type</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[1]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of the passenger. If the passenger is aged 18 or over, you should specify a <code>type</code> of <code>adult</code>. If a passenger is aged under 18, you should specify their <code>age</code> instead of a <code>type</code>. A passenger can have only a type or an age, but not both.</td>
<td><code>anyOf[1]; enum: [&quot;adult&quot;,&quot;child&quot;,&quot;infant_without_seat&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their age</td>
<td><code>anyOf[2]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].age</code></td>
<td>integer</td>
<td>Required</td>
<td>The age of the passenger on the <code>departure_date</code> of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an <code>age</code> for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though.</td>
<td><code>anyOf[2]; minimum: 0; maximum: 130</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[2]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their fare type. This is used for leisure private fares.</td>
<td><code>anyOf[3]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].age</code></td>
<td>integer</td>
<td>Optional</td>
<td>The age of the passenger on the <code>departure_date</code> of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an <code>age</code> for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though.</td>
<td><code>anyOf[3]; minimum: 0; maximum: 130</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].fare_type</code></td>
<td>string</td>
<td>Required</td>
<td>The fare type of the passenger. If the passenger is aged less than 18, you should pass in age as well.</td>
<td><code>anyOf[3]; enum: [&quot;accompanying_adult&quot;,&quot;contract_bulk&quot;,&quot;contract_bulk_child&quot;,&quot;contract_bulk_infant_with_seat&quot;,&quot;contract_bulk_infant_without_seat&quot;,&quot;frequent_flyer&quot;,&quot;group_inclusive_tour&quot;,&quot;group_inclusive_tour_child&quot;,&quot;humanitarian&quot;,&quot;individual_inclusive_tour_child&quot;,&quot;marine&quot;,&quot;seat_only&quot;,&quot;student&quot;,&quot;teacher&quot;,&quot;tour_operator_inclusive&quot;,&quot;tour_operator_inclusive_infant&quot;,&quot;unaccompanied_child&quot;,&quot;visiting_friends_and_family&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[3]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[3]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.private_fares</code></td>
<td>object</td>
<td>Optional</td>
<td>The private fare codes for this offer request. You can pass in multiple airlines with their specific private fare codes. The key is the airline&#39;s IATA code that provided the private fare code. The <code>corporate_code</code> and <code>tour_code</code> are provided to you by the airline and the <code>tracking_reference</code> is to identify your business by the airlines.</td>
<td><code>maxProperties: 100; additionalProperties: true</code></td>
</tr>
<tr>
<td><code>data.slices</code></td>
<td>array</td>
<td>Required</td>
<td>The <a href="https://duffel.com/docs/api/overview/key-concepts">slices</a> that make up this offer request. One-way journeys can be expressed using one slice, whereas return trips will need two.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.slices[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>object</td>
<td>Optional</td>
<td>The inclusive time range for the arrival of the slice</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the destination airport at or after which the slice should arrive. Defaults to <code>00:00</code> when only <code>to</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the destination airport at or before which the slice should arrive. Defaults to <code>23:59</code> when only <code>from</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_date</code></td>
<td>string</td>
<td>Required</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date on which the passengers want to depart</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>object</td>
<td>Optional</td>
<td>The inclusive time range for the departure of the slice</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the origin airport at or after which the slice should depart. Defaults to current time at airport when only <code>to</code> is provided or <code>from</code> value is in the past</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the origin airport at or before which the slice should depart. Defaults to <code>23:59</code> when only <code>from</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].destination</code></td>
<td>string</td>
<td>Required</td>
<td>The 3-letter IATA code for the city or airport where this slice ends</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].origin</code></td>
<td>string</td>
<td>Required</td>
<td>The 3-letter IATA code for the city or airport where this slice starts</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.offer-requests.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "return_offers": false,
    "supplier_timeout": 10000
  },
  "data": {
    "slices": [
      {
        "origin": "LHR",
        "destination": "JFK",
        "departure_time": {
          "to": "17:00",
          "from": "09:45"
        },
        "departure_date": "2020-04-24",
        "arrival_time": {
          "to": "17:00",
          "from": "09:45"
        }
      }
    ],
    "private_fares": {
      "QF": [
        {
          "corporate_code": "FLX53",
          "tracking_reference": "ABN:2345678"
        }
      ],
      "UA": [
        {
          "corporate_code": "1234",
          "tour_code": "578DFL"
        }
      ]
    },
    "passengers": [
      {
        "family_name": "Earhart",
        "given_name": "Amelia",
        "loyalty_programme_accounts": [
          {
            "account_number": "12901014",
            "airline_iata_code": "BA"
          }
        ],
        "type": "adult"
      },
      {
        "age": 14
      },
      {
        "fare_type": "student"
      },
      {
        "age": 5,
        "fare_type": "contract_bulk_child"
      }
    ],
    "max_connections": 0,
    "include_split_ticket": true,
    "cabin_class": "economy",
    "airline_credit_ids": [
      "acd_00009hthhsUZ8W4LxQgkjo",
      "acd_0000thhsUZ8W4LxQgkjo00"
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-offers-get">
<summary><span>Flights: Get a single offer — <code>duffel.<wbr>api.<wbr>air.<wbr>offers.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single offer</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.offers.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.return_available_services</code></td>
<td>boolean</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.offers.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "query": {
    "return_available_services": true
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-offers-passengers-update">
<summary><span>Flights: Update a single offer passenger — <code>duffel.<wbr>api.<wbr>air.<wbr>offers.<wbr>passengers.<wbr>update</code></span></summary>
<p>Run <strong>Flights: Update a single offer passenger</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.offers.passengers.update">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.offer_id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>path.offer_passenger_id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.family_name</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.given_name</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.offers.passengers.update">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "offer_id": "resource_fixture",
    "offer_passenger_id": "resource_fixture"
  },
  "data": {
    "loyalty_programme_accounts": [
      {
        "airline_iata_code": "BA",
        "account_number": "12901014"
      }
    ],
    "given_name": "Amelia",
    "family_name": "Earhart"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-offers-price">
<summary><span>Flights: Price an offer with intended payment methods — <code>duffel.<wbr>api.<wbr>air.<wbr>offers.<wbr>price</code></span></summary>
<p>Run <strong>Flights: Price an offer with intended payment methods</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.offers.price">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods</code></td>
<td>array</td>
<td>Required</td>
<td>The payment methods you intend to use to pay for the offer.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[]</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>oneOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[].card_id</code></td>
<td>string</td>
<td>Required</td>
<td>The ID of the card you intend to pay with</td>
<td><code>oneOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of payment method you intend to use</td>
<td><code>oneOf[1]; enum: [&quot;card&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>oneOf[2]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[].airline_credit_id</code></td>
<td>string</td>
<td>Required</td>
<td>The ID of the airilne credit you intend to pay with</td>
<td><code>oneOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of payment method you intend to use</td>
<td><code>oneOf[2]; enum: [&quot;airline_credit&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.intended_services</code></td>
<td>array</td>
<td>Required</td>
<td>The services you intend to book along with the offer.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.intended_services[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.intended_services[].id</code></td>
<td>string</td>
<td>Required</td>
<td>Duffel&#39;s unique identifier for the resource</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.intended_services[].quantity</code></td>
<td>integer</td>
<td>Required</td>
<td>The quantity of the service you intend to book. This will always be <code>1</code> for seat services.</td>
<td><code>minimum: 1</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.offers.price">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "intended_services": [
      {
        "quantity": 1,
        "id": "ase_00009UhD4ongolulWd9123"
      }
    ],
    "intended_payment_methods": [
      {
        "type": "card",
        "card_id": "tcd_0000A3t2sL46m5eDF45kWW"
      },
      {
        "type": "airline_credit",
        "airline_credit_id": "acd_0000A3t2sL46m5eDF45kWW"
      }
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-offers-upsell-offers-create">
<summary><span>Flights: Get upsell offers for an offer — <code>duffel.<wbr>api.<wbr>air.<wbr>offers.<wbr>upsell-<wbr>offers.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Get upsell offers for an offer</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.offers.upsell-offers.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.offers.upsell-offers.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-offers-list">
<summary><span>Flights: List offers — <code>duffel.<wbr>api.<wbr>air.<wbr>offers.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List offers</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.offers.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.offer_request_id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.sort</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>enum: [&quot;total_amount&quot;,&quot;total_duration&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.max_connections</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>minimum: 0; maximum: 2</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.offers.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "offer_request_id": "orq_00009htyDGjIfajdNBZRlw",
    "sort": "total_amount",
    "max_connections": 0
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-cancellations-list">
<summary><span>Flights: List order cancellations — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>cancellations.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List order cancellations</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-cancellations.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.order_id</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-cancellations.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "order_id": "ord_00009hthhsUZ8W4LxQgkjo"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-cancellations-create">
<summary><span>Flights: Create a pending order cancellation — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>cancellations.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create a pending order cancellation</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-cancellations.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.order_id</code></td>
<td>string</td>
<td>Required</td>
<td>Duffel&#39;s unique identifier for the order</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-cancellations.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "order_id": "ord_001"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-cancellations-get">
<summary><span>Flights: Get a single order cancellation — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>cancellations.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single order cancellation</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-cancellations.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-cancellations.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-cancellations-confirm">
<summary><span>Flights: Confirm an order cancellation — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>cancellations.<wbr>confirm</code></span></summary>
<p>Run <strong>Flights: Confirm an order cancellation</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-cancellations.confirm">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-cancellations.confirm">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-change-offers-list">
<summary><span>Flights: List order change offers — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>change-<wbr>offers.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List order change offers</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-change-offers.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.order_change_request_id</code></td>
<td>string</td>
<td>Required</td>
<td>The ID of your order change request</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.sort</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>enum: [&quot;change_total_amount&quot;,&quot;total_duration&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.max_connections</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>minimum: 0; maximum: 2</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-change-offers.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "order_change_request_id": "ocr_0000A3bQP9RLVfNUcdpLpw",
    "sort": "change_total_amount",
    "max_connections": 0
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-change-offers-get">
<summary><span>Flights: Get a single order change offer — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>change-<wbr>offers.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single order change offer</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-change-offers.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-change-offers.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-change-requests-get">
<summary><span>Flights: Get a single order change request — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>change-<wbr>requests.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single order change request</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-change-requests.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-change-requests.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-change-requests-create">
<summary><span>Flights: Create an order change request — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>change-<wbr>requests.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create an order change request</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-change-requests.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.order_id</code></td>
<td>string</td>
<td>Required</td>
<td>The order ID you wish to change</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.private_fares</code></td>
<td>object</td>
<td>Optional</td>
<td>The private fare codes for this order change request. The key is the airline&#39;s IATA code that provided the private fare code. The <code>corporate_code</code> and <code>tour_code</code> are provided to you by the airline and the <code>tracking_reference</code> is to identify your business by the airlines. The private fares for Order Change Requests work in much the same way as they do when searching for an offer request</td>
<td><code>maxProperties: 100; additionalProperties: true</code></td>
</tr>
<tr>
<td><code>data.slices</code></td>
<td>object</td>
<td>Optional</td>
<td>The <a href="https://duffel.com/docs/api/overview/key-concepts">slices</a> that make up this offer request. One-way journeys can be expressed using one slice, whereas return trips will need two.</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices.add</code></td>
<td>array</td>
<td>Optional</td>
<td>The search criteria for slices which you wish to add to your order</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.slices.add[]</code></td>
<td>object</td>
<td>Optional</td>
<td>The search criteria for a slice to be added</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices.add[].cabin_class</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.slices.add[].cabin_class</code></td>
<td>string</td>
<td>Optional</td>
<td>The cabin that the passengers want to travel in</td>
<td><code>anyOf[1]; enum: [&quot;first&quot;,&quot;business&quot;,&quot;premium_economy&quot;,&quot;economy&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices.add[].cabin_class</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices.add[].departure_date</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date on which the passengers want to depart</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.slices.add[].destination</code></td>
<td>string</td>
<td>Optional</td>
<td>The 3-letter IATA code for the city or airport where this slice ends</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices.add[].origin</code></td>
<td>string</td>
<td>Optional</td>
<td>The 3-letter IATA code for the city or airport where this slice starts</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices.remove</code></td>
<td>array</td>
<td>Optional</td>
<td>The slices that you wish to remove from your order</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.slices.remove[]</code></td>
<td>object</td>
<td>Optional</td>
<td>The slice ID for the slice to be removed</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices.remove[].slice_id</code></td>
<td>string</td>
<td>Optional</td>
<td>Duffel&#39;s unique identifier for the resource</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-change-requests.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "slices": {
      "remove": [
        {
          "slice_id": "xxx_00009hthhsUZ8W4LxQgkjo"
        }
      ],
      "add": [
        {
          "origin": "LHR",
          "destination": "JFK",
          "departure_date": "2020-04-24",
          "cabin_class": "economy"
        }
      ]
    },
    "private_fares": {
      "UA": [
        {
          "corporate_code": "1234",
          "tour_code": "578DFL"
        }
      ]
    },
    "order_id": "ord_0000A3bQ8FJIQoEfuC07n6"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-changes-get">
<summary><span>Flights: Get a single order change — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>changes.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single order change</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-changes.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-changes.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-changes-confirm">
<summary><span>Flights: Confirm an order change — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>changes.<wbr>confirm</code></span></summary>
<p>Run <strong>Flights: Confirm an order change</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-changes.confirm">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>object</td>
<td>Optional</td>
<td>The payment details to use to pay for the order change, if there is an amount to be paid.  Some order changes may not need this. If the <code>change_total_amount</code> is zero or negative, there is no need to pass a <code>payment</code> object.</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.payment.amount</code></td>
<td>string</td>
<td>Required</td>
<td>The amount of the payment. This should be the same as the <code>change_total_amount</code> of the order change.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.currency</code></td>
<td>string</td>
<td>Required</td>
<td>The currency of the <code>change_total_amount</code>, as an <a href="https://en.wikipedia.org/wiki/ISO_4217">ISO 4217</a> currency code.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.three_d_secure_session_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The <code>id</code> of the 3DSecure Session ID. This is the authentication when paying by <a href="https://duffel.com/docs/api/v2/card">card</a>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of payment you want to use for the order change. If you are an IATA agent with your own agreements with airlines, in some cases, you can pay using ARC/BSP cash by specifying <code>arc_bsp_cash</code>. You can pay using your Duffel account&#39;s balance by specifying <code>balance</code>. In <a href="https://duffel.com/docs/api/overview/test-mode">test mode</a>, your balance is unlimited. Otherwise, you can pay by <a href="https://duffel.com/docs/api/v2/card">card</a>. If you&#39;re not sure which of these options applies to you, get in touch with the Duffel support team at &lt;<a href="mailto:help@duffel.com">help@duffel.com</a>&gt;.</td>
<td><code>enum: [&quot;arc_bsp_cash&quot;,&quot;balance&quot;,&quot;card&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-changes.confirm">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "payment": {
      "type": "balance",
      "three_d_secure_session_id": "3ds_0000AWr2XsTRIF1Vp34gh5",
      "currency": "GBP",
      "amount": "30.20"
    }
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-order-changes-create">
<summary><span>Flights: Create a pending order change — <code>duffel.<wbr>api.<wbr>air.<wbr>order-<wbr>changes.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create a pending order change</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.order-changes.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.selected_order_change_offer</code></td>
<td>string</td>
<td>Required</td>
<td>Duffel&#39;s unique identifier for the order change offer</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.order-changes.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "selected_order_change_offer": "oco_0000A4QasEUIjJ6jHKfhHU"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-orders-get">
<summary><span>Flights: Get a single order — <code>duffel.<wbr>api.<wbr>air.<wbr>orders.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single order</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.orders.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.orders.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-orders-update">
<summary><span>Flights: Update a single order — <code>duffel.<wbr>api.<wbr>air.<wbr>orders.<wbr>update</code></span></summary>
<p>Run <strong>Flights: Update a single order</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.orders.update">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.metadata</code></td>
<td>object</td>
<td>Optional</td>
<td>Metadata contains a set of key-value pairs that you can attach to an object. It can be useful for storing additional information about the object, in a structured format. Duffel does not use this information. You should not store sensitive information in this field.  The metadata is a collection of key-value pairs, both of which are strings. You can store a maximum of 50 key-value pairs, where each key has a maximum length of 40 characters and each value has a maximum length of 500 characters.  Keys must only contain numbers, letters, dashes, or underscores.  To clear this field, set it to an</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.users</code></td>
<td>array</td>
<td>Optional</td>
<td>The <code>id</code>s of customer users that would be allowed to manage the booking.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.users[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.orders.update">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "users": [
      "icu_00009htyDGjIfajdNBZRlw"
    ],
    "metadata": {
      "customer_prefs": "window seat",
      "payment_intent_id": "pit_00009htYpSCXrwaB9DnUm2"
    }
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-orders-list">
<summary><span>Flights: List orders — <code>duffel.<wbr>api.<wbr>air.<wbr>orders.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List orders</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.orders.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.booking_reference</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.offer_id</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.awaiting_payment</code></td>
<td>boolean</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.sort</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>enum: [&quot;payment_required_by&quot;,&quot;total_amount&quot;,&quot;created_at&quot;,&quot;next_departure&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.owner_id[]</code></td>
<td>array</td>
<td>Optional</td>
<td></td>
<td><code>maxItems: 20</code></td>
</tr>
<tr>
<td><code>query.owner_id[][]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.origin_id[]</code></td>
<td>array</td>
<td>Optional</td>
<td></td>
<td><code>maxItems: 20</code></td>
</tr>
<tr>
<td><code>query.origin_id[][]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.destination_id[]</code></td>
<td>array</td>
<td>Optional</td>
<td></td>
<td><code>maxItems: 20</code></td>
</tr>
<tr>
<td><code>query.destination_id[][]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.departing_at</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 2; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.departing_at.after</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime at which a segment departs after. This should be the local time of the place of departure and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.departing_at.before</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime at which a segment departs before. This should be the local time of the place of departure and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.arriving_at</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 2; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.arriving_at.after</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime at which a segment arrives after. This should be the local time of the place of arrival and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.arriving_at.before</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime at which a segment arrives before. This should be the local time of the place of arrival and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.created_at</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 2; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.created_at.after</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime after which orders created will be returned. This is UTC and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.created_at.before</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime before which orders created will be returned. This is UTC and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.passenger_name[]</code></td>
<td>array</td>
<td>Optional</td>
<td></td>
<td><code>maxItems: 20</code></td>
</tr>
<tr>
<td><code>query.passenger_name[][]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.requires_action</code></td>
<td>boolean</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.user_id</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.orders.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "booking_reference": "RZPNX8",
    "offer_id": "off_00009htYpSCXrwaB9DnUm0",
    "awaiting_payment": false,
    "sort": "payment_required_by",
    "owner_id[]": [
      "arl_00009VME7DBKeMags5CliQ",
      "arl_00009VME7DCOaPRQvNhcMu"
    ],
    "origin_id[]": [
      "arp_lhr_gb",
      "arp_jfk_us"
    ],
    "destination_id[]": [
      "arp_lhr_gb",
      "arp_jfk_us"
    ],
    "passenger_name[]": [
      "Earhart",
      "Smith"
    ],
    "requires_action": true,
    "user_id": "icu_00009htyDGjIfajdNBZRlw"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-orders-create">
<summary><span>Flights: Create an order — <code>duffel.<wbr>api.<wbr>air.<wbr>orders.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create an order</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.orders.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.metadata</code></td>
<td>object</td>
<td>Optional</td>
<td>Metadata contains a set of key-value pairs that you can attach to an object. It can be useful for storing additional information about the object, in a structured format. Duffel does not use this information. You should not store sensitive information in this field.  The metadata is a collection of key-value pairs, both of which are strings. You can store a maximum of 50 key-value pairs, where each key has a maximum length of 40 characters and each value has a maximum length of 500 characters.  Keys must only contain numbers, letters, dashes, or underscores.</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers</code></td>
<td>array</td>
<td>Required</td>
<td>The personal details of the passengers, expanding on the information initially provided when creating the offer request</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].born_on</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s date of birth</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.passengers[].email</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s email address</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 or 2 characters, and the maximum, combined with <code>given_name</code>, is 40 characters. The requirements vary by airline. We recommend using a minimum length of</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].gender</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s gender</td>
<td><code>enum: [&quot;m&quot;,&quot;f&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 or 2 characters, and the maximum, combined with <code>family_name</code>, is 40 characters. The requirements vary by airline. We recommend using a minimum length of</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].id</code></td>
<td>string</td>
<td>Required</td>
<td>The <code>id</code> of the passenger, returned when the <a href="https://duffel.com/docs/api/offer-requests">offer request</a> was created</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].identity_documents</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.passengers[].identity_documents</code></td>
<td>array</td>
<td>Optional</td>
<td>The passenger&#39;s identity documents. You may only provide one identity document per type per passenger. The identity document&#39;s type supported by the airline can be found in the offer&#39;s <code>supported_passenger_identity_document_types</code>. If the offer&#39;s <code>passenger_identity_documents_required</code> is set to <code>true</code>, then a passport document must be provided.</td>
<td><code>anyOf[1]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].identity_documents[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].identity_documents[].expires_on</code></td>
<td>string</td>
<td>Required</td>
<td>Must only be provided for <code>passport</code> type. The date on which the identity document expires</td>
<td><code>anyOf[1]; maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.passengers[].identity_documents[].issuing_country_code</code></td>
<td>string</td>
<td>Required</td>
<td>Must only be provided for <code>passport</code>, <code>known_traveler_number</code>, and <code>passenger_redress_number</code> types. The <a href="https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-1 alpha-2</a> code of the country that issued this identity document</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].identity_documents[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of the identity document. Currently, the only supported types are <code>passport</code>, <code>tax_id</code>, <code>known_traveler_number</code>, and <code>passenger_redress_number</code>. The identity document&#39;s type supported by the airline can be found in the offer&#39;s <code>supported_passenger_identity_document_types</code>.</td>
<td><code>anyOf[1]; enum: [&quot;passport&quot;,&quot;tax_id&quot;,&quot;known_traveler_number&quot;,&quot;passenger_redress_number&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].identity_documents[].unique_identifier</code></td>
<td>string</td>
<td>Required</td>
<td>The unique identifier of the identity document. e.g. the passport number. For <code>known_traveler_number</code>, spaces and hyphens are removed and the rest must be letters and digits only.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].identity_documents</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.passengers[].infant_passenger_id</code></td>
<td>string</td>
<td>Optional</td>
<td>Infant passengers, with an <code>age</code> of 0 or 1, must be associated with an adult passenger. This field should be used to make this association. It should contain the <code>id</code> of the infant passenger as returned in the <a href="https://duffel.com/docs/api/offer-requests">offer request</a>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].phone_number</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s phone number in <a href="https://www.twilio.com/docs/glossary/what-e164">E.164</a> (international) format</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].title</code></td>
<td>string</td>
<td>Required</td>
<td>The passenger&#39;s title (the <code>dr</code> title is not supported by certain airlines, where a <a href="https://duffel.com/docs/api/overview/response-handling"><code>ValidationError</code></a> will be returned instead if used)</td>
<td><code>enum: [&quot;mr&quot;,&quot;ms&quot;,&quot;mrs&quot;,&quot;miss&quot;,&quot;dr&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>Creates an association between the passenger and a previously created user.  This is intended to allow passengers the ability to manage their own orders.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payments</code></td>
<td>array</td>
<td>Optional</td>
<td>The payment details to use to pay for the order. This key should be omitted when the order’s <code>type</code> is <code>hold</code>.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.payments[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.payments[].amount</code></td>
<td>string</td>
<td>Required</td>
<td>The amount of the payment. This should be the same as the <code>total_amount</code> of the offer specified in <code>selected_offers</code>, plus the <code>total_amount</code> of all the services specified in <code>services</code>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payments[].currency</code></td>
<td>string</td>
<td>Required</td>
<td>The currency of the <code>amount</code>, as an <a href="https://en.wikipedia.org/wiki/ISO_4217">ISO 4217</a> currency code. This should be the same as the <code>total_currency</code> of the offer specified in <code>selected_offers</code>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payments[].three_d_secure_session_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The <code>id</code> of the 3DSecure Session ID. This is the authentication when paying by <a href="https://duffel.com/docs/api/v2/card">card</a>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payments[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of payment you want to apply to the order. If you are an IATA agent with your own agreements with airlines, in some cases, you can pay using ARC/BSP cash by specifying <code>arc_bsp_cash</code>. You can pay using your Duffel account&#39;s balance by specifying <code>balance</code>. Otherwise, you can pay by <a href="https://duffel.com/docs/api/v2/card">card</a>. In <a href="https://duffel.com/docs/api/overview/test-mode">test mode</a>, your balance is unlimited. If you&#39;re not sure which of these options applies to you, get in touch with the Duffel support team at &lt;<a href="mailto:help@duffel.com">help@duffel.com</a>&gt;.</td>
<td><code>enum: [&quot;arc_bsp_cash&quot;,&quot;balance&quot;,&quot;card&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.selected_offers</code></td>
<td>array</td>
<td>Required</td>
<td>The <code>id</code>s of the offers you want to book. You must specify an array containing exactly one selected offer.  Note that you can only book one offer per offer request.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.selected_offers[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.services</code></td>
<td>array</td>
<td>Optional</td>
<td>The services you want to book along with the first selected offer.  If the offer was priced with <code>intended_services</code>, you must either send those same services here or omit this key entirely. Any other set of services is rejected.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.services[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.services[].id</code></td>
<td>string</td>
<td>Required</td>
<td>The <code>id</code> of the service from the offer&#39;s <code>available_services</code> that you want to book</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.services[].quantity</code></td>
<td>integer</td>
<td>Required</td>
<td>The quantity of the service to book. This will always be <code>1</code> for seat services.</td>
<td><code>minimum: 1</code></td>
</tr>
<tr>
<td><code>data.type</code></td>
<td>string</td>
<td>Optional</td>
<td>The type of order. You can only use <code>hold</code> with offers where <code>payment_requirements.requires_instant_payment</code> is <code>false</code>.  When booking an offer with type <code>hold</code>, do not specify <code>payments</code> key.</td>
<td><code>enum: [&quot;instant&quot;,&quot;hold&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.users</code></td>
<td>array</td>
<td>Optional</td>
<td>The <code>id</code>s of users that would be allowed to manage the order.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.users[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>—</td>
<td>Required</td>
<td></td>
<td><code>allOf[1]</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.orders.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "users": [
      "icu_00009htyDGjIfajdNBZRlw"
    ],
    "type": "instant",
    "services": [
      {
        "quantity": 1,
        "id": "ase_00009hj8USM7Ncg31cB123"
      }
    ],
    "selected_offers": [
      "off_00009htyDGjIfajdNBZRlw"
    ],
    "payments": [
      {
        "type": "balance",
        "three_d_secure_session_id": "3ds_0000AWr2XsTRIF1Vp34gh5",
        "currency": "GBP",
        "amount": "30.20"
      }
    ],
    "passengers": [
      {
        "user_id": "icu_00009htyDGjIfajdNBZRlw",
        "title": "mrs",
        "phone_number": "+442080160509",
        "infant_passenger_id": "pas_00009hj8USM8Ncg32aTGHL",
        "identity_documents": [
          {
            "unique_identifier": "19KL56147",
            "type": "passport",
            "issuing_country_code": "GB",
            "expires_on": "2025-04-25"
          }
        ],
        "id": "pas_00009hj8USM7Ncg31cBCLL",
        "given_name": "Amelia",
        "gender": "f",
        "family_name": "Earhart",
        "email": "amelia@duffel.com",
        "born_on": "1987-07-24"
      }
    ],
    "metadata": {
      "payment_intent_id": "pit_00009htYpSCXrwaB9DnUm2"
    }
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-orders-services-create">
<summary><span>Flights: Add a service to an order — <code>duffel.<wbr>api.<wbr>air.<wbr>orders.<wbr>services.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Add a service to an order</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.orders.services.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.add_services</code></td>
<td>array</td>
<td>Required</td>
<td>The services you want to add to the order.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.add_services[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.add_services[].id</code></td>
<td>string</td>
<td>Required</td>
<td>The <code>id</code> of the service from the offer&#39;s <code>available_services</code> that you want to book</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.add_services[].quantity</code></td>
<td>integer</td>
<td>Required</td>
<td>The quantity of the service to book. This will always be <code>1</code> for seat services.</td>
<td><code>minimum: 1</code></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>object</td>
<td>Required</td>
<td>The payment details to pay for the services.</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.payment.amount</code></td>
<td>string</td>
<td>Required</td>
<td>The amount of the payment.  This should be the same as the <code>total_amount</code> of all the services specified in <code>add_services</code>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.currency</code></td>
<td>string</td>
<td>Required</td>
<td>The currency of the <code>amount</code>, as an <a href="https://en.wikipedia.org/wiki/ISO_4217">ISO 4217</a> currency code.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of payment you want to apply to the services.  You must pay using your Duffel account&#39;s balance by specifying <code>balance</code>. In <a href="https://duffel.com/docs/api/overview/test-mode">test mode</a>, your balance is unlimited.</td>
<td><code>enum: [&quot;balance&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.orders.services.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "payment": {
      "type": "balance",
      "currency": "GBP",
      "amount": "30.20"
    },
    "add_services": [
      {
        "quantity": 1,
        "id": "ase_00009hj8USM7Ncg31cB123"
      }
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-orders-price">
<summary><span>Flights: Price an order with an intended payment method — <code>duffel.<wbr>api.<wbr>air.<wbr>orders.<wbr>price</code></span></summary>
<p>Run <strong>Flights: Price an order with an intended payment method</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.orders.price">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods</code></td>
<td>array</td>
<td>Required</td>
<td>The payment methods you intend to use to pay for the order.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[]</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>oneOf[1]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[].card_id</code></td>
<td>string</td>
<td>Required</td>
<td>The ID of the card you intend to pay with</td>
<td><code>oneOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of payment method you intend to use</td>
<td><code>oneOf[1]; enum: [&quot;card&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>oneOf[2]; maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[].airline_credit_id</code></td>
<td>string</td>
<td>Required</td>
<td>The ID of the airilne credit you intend to pay with</td>
<td><code>oneOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.intended_payment_methods[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of payment method you intend to use</td>
<td><code>oneOf[2]; enum: [&quot;airline_credit&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.orders.price">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "intended_payment_methods": [
      {
        "type": "card",
        "card_id": "tcd_0000A3t2sL46m5eDF45kWW"
      },
      {
        "type": "airline_credit",
        "airline_credit_id": "acd_0000A3t2sL46m5eDF45kWW"
      }
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-orders-available-services-list">
<summary><span>Flights: List available services for an order — <code>duffel.<wbr>api.<wbr>air.<wbr>orders.<wbr>available-<wbr>services.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List available services for an order</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.orders.available-services.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.orders.available-services.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-partial-offer-requests-fares-list">
<summary><span>Flights: Get full offer fares for selected partial offers — <code>duffel.<wbr>api.<wbr>air.<wbr>partial-<wbr>offer-<wbr>requests.<wbr>fares.<wbr>list</code></span></summary>
<p>Run <strong>Flights: Get full offer fares for selected partial offers</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.partial-offer-requests.fares.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>query</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.selected_partial_offer[]</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.partial-offer-requests.fares.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "query": {
    "selected_partial_offer[]": "?selected_partial_offer[]=off_0000AJyeTUCEoY5PhVPN8k_0&amp;selected_partial_offer[]=off_0000AJyeTUCEoY5PhVPN8k_1"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-partial-offer-requests-create">
<summary><span>Flights: Create a partial offer request — <code>duffel.<wbr>api.<wbr>air.<wbr>partial-<wbr>offer-<wbr>requests.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create a partial offer request</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.partial-offer-requests.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.supplier_timeout</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.airline_credit_ids</code></td>
<td>array</td>
<td>Optional</td>
<td>The list of airline credit IDs that Duffel received as input.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.airline_credit_ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>string</td>
<td>Optional</td>
<td>The cabin that the passengers want to travel in</td>
<td><code>anyOf[1]; enum: [&quot;first&quot;,&quot;business&quot;,&quot;premium_economy&quot;,&quot;economy&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.cabin_class</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.include_split_ticket</code></td>
<td>boolean</td>
<td>Optional</td>
<td>When set to <code>true</code> and the search has more than one slice, additional one-way searches will be fired per slice to find split-ticket candidates. These results are only included in the response when <code>view</code> is set to <code>itineraries</code>. Please get in touch with the Duffel support team at &lt;<a href="mailto:help@duffel.com">help@duffel.com</a>&gt; to access this feature.</td>
<td></td>
</tr>
<tr>
<td><code>data.max_connections</code></td>
<td>integer</td>
<td>Optional</td>
<td>The maximum number of connections within any slice of the offer. For example 0 means a direct flight which will have a single segment within each slice and 1 means a maximum of two segments within each slice of the offer.</td>
<td><code>minimum: 0; maximum: 2</code></td>
</tr>
<tr>
<td><code>data.passengers</code></td>
<td>array</td>
<td>Required</td>
<td>The passengers who want to travel. If you specify an <code>age</code> for a passenger, the <code>type</code> may differ for the same passenger in different offers due to airline&#39;s different rules. e.g. one airline may treat a 14 year old as an adult, and another as a young adult. You may only specify an <code>age</code> or a <code>type</code> – not both.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their type</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[1]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].type</code></td>
<td>string</td>
<td>Required</td>
<td>The type of the passenger. If the passenger is aged 18 or over, you should specify a <code>type</code> of <code>adult</code>. If a passenger is aged under 18, you should specify their <code>age</code> instead of a <code>type</code>. A passenger can have only a type or an age, but not both.</td>
<td><code>anyOf[1]; enum: [&quot;adult&quot;,&quot;child&quot;,&quot;infant_without_seat&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their age</td>
<td><code>anyOf[2]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].age</code></td>
<td>integer</td>
<td>Required</td>
<td>The age of the passenger on the <code>departure_date</code> of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an <code>age</code> for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though.</td>
<td><code>anyOf[2]; minimum: 0; maximum: 130</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[2]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[2]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[]</code></td>
<td>object</td>
<td>Optional</td>
<td>A passenger specified by their fare type. This is used for leisure private fares.</td>
<td><code>anyOf[3]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].age</code></td>
<td>integer</td>
<td>Optional</td>
<td>The age of the passenger on the <code>departure_date</code> of the final slice. e.g. if you are searching for a round trip and the passenger is 15 years old at the time of the outbound flight, but they then have their birthday and are 16 years old for the inbound flight, you must set the age to 16. You should specify an <code>age</code> for passengers who are under 18 years old. A passenger can have only a type or an age, but not both. You can optionally pass age with fare_type though.</td>
<td><code>anyOf[3]; minimum: 0; maximum: 130</code></td>
</tr>
<tr>
<td><code>data.passengers[].family_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s family name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].fare_type</code></td>
<td>string</td>
<td>Required</td>
<td>The fare type of the passenger. If the passenger is aged less than 18, you should pass in age as well.</td>
<td><code>anyOf[3]; enum: [&quot;accompanying_adult&quot;,&quot;contract_bulk&quot;,&quot;contract_bulk_child&quot;,&quot;contract_bulk_infant_with_seat&quot;,&quot;contract_bulk_infant_without_seat&quot;,&quot;frequent_flyer&quot;,&quot;group_inclusive_tour&quot;,&quot;group_inclusive_tour_child&quot;,&quot;humanitarian&quot;,&quot;individual_inclusive_tour_child&quot;,&quot;marine&quot;,&quot;seat_only&quot;,&quot;student&quot;,&quot;teacher&quot;,&quot;tour_operator_inclusive&quot;,&quot;tour_operator_inclusive_infant&quot;,&quot;unaccompanied_child&quot;,&quot;visiting_friends_and_family&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].given_name</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s given name. Only <code>space</code>, <code>-</code>, <code>&#39;</code>, and letters from the <a href="https://www.unicode.org/charts/PDF/U0000.pdf"><code>ASCII</code></a>, <a href="https://www.unicode.org/charts/PDF/U0080.pdf"><code>Latin-1 Supplement</code></a> and <a href="https://www.unicode.org/charts/PDF/U0100.pdf"><code>Latin Extended-A</code></a> (with the exceptions of <code>Æ</code>, <code>æ</code>, <code>Ĳ</code>, <code>ĳ</code>, <code>Œ</code>, <code>œ</code>, <code>Þ</code>, and <code>ð</code>) Unicode charts are accepted. All other characters will result in a validation error. The minimum length is 1 character, and the maximum is 20 characters.  This is only required if you&#39;re also including loyalty programme accounts.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts</code></td>
<td>array</td>
<td>Optional</td>
<td>The loyalty programme accounts for this passenger</td>
<td><code>anyOf[3]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[3]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].account_number</code></td>
<td>string</td>
<td>Optional</td>
<td>The passenger&#39;s account number for this loyalty programme account</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].loyalty_programme_accounts[].airline_iata_code</code></td>
<td>string</td>
<td>Optional</td>
<td>The IATA code for the airline that this loyalty programme account belongs to</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.passengers[].user_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The ID of the customer user that associates with this passenger.</td>
<td><code>anyOf[3]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.private_fares</code></td>
<td>object</td>
<td>Optional</td>
<td>The private fare codes for this offer request. You can pass in multiple airlines with their specific private fare codes. The key is the airline&#39;s IATA code that provided the private fare code. The <code>corporate_code</code> and <code>tour_code</code> are provided to you by the airline and the <code>tracking_reference</code> is to identify your business by the airlines.</td>
<td><code>maxProperties: 100; additionalProperties: true</code></td>
</tr>
<tr>
<td><code>data.slices</code></td>
<td>array</td>
<td>Required</td>
<td>The <a href="https://duffel.com/docs/api/overview/key-concepts">slices</a> that make up this offer request. One-way journeys can be expressed using one slice, whereas return trips will need two.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.slices[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>object</td>
<td>Optional</td>
<td>The inclusive time range for the arrival of the slice</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the destination airport at or after which the slice should arrive. Defaults to <code>00:00</code> when only <code>to</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.from</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the destination airport at or before which the slice should arrive. Defaults to <code>23:59</code> when only <code>from</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time.to</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].arrival_time</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_date</code></td>
<td>string</td>
<td>Required</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date on which the passengers want to depart</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>object</td>
<td>Optional</td>
<td>The inclusive time range for the departure of the slice</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the origin airport at or after which the slice should depart. Defaults to current time at airport when only <code>to</code> is provided or <code>from</code> value is in the past</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.from</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>string</td>
<td>Optional</td>
<td>The local time in the format <code>hh:mm</code> of the origin airport at or before which the slice should depart. Defaults to <code>23:59</code> when only <code>from</code> is provided</td>
<td><code>anyOf[1]; anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time.to</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].departure_time</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.slices[].destination</code></td>
<td>string</td>
<td>Required</td>
<td>The 3-letter IATA code for the city or airport where this slice ends</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.slices[].origin</code></td>
<td>string</td>
<td>Required</td>
<td>The 3-letter IATA code for the city or airport where this slice starts</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.partial-offer-requests.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "supplier_timeout": 10000
  },
  "data": {
    "slices": [
      {
        "origin": "LHR",
        "destination": "JFK",
        "departure_time": {
          "to": "17:00",
          "from": "09:45"
        },
        "departure_date": "2020-04-24",
        "arrival_time": {
          "to": "17:00",
          "from": "09:45"
        }
      }
    ],
    "private_fares": {
      "QF": [
        {
          "corporate_code": "FLX53",
          "tracking_reference": "ABN:2345678"
        }
      ],
      "UA": [
        {
          "corporate_code": "1234",
          "tour_code": "578DFL"
        }
      ]
    },
    "passengers": [
      {
        "family_name": "Earhart",
        "given_name": "Amelia",
        "loyalty_programme_accounts": [
          {
            "account_number": "12901014",
            "airline_iata_code": "BA"
          }
        ],
        "type": "adult"
      },
      {
        "age": 14
      },
      {
        "fare_type": "student"
      },
      {
        "age": 5,
        "fare_type": "contract_bulk_child"
      }
    ],
    "max_connections": 0,
    "include_split_ticket": true,
    "cabin_class": "economy",
    "airline_credit_ids": [
      "acd_00009hthhsUZ8W4LxQgkjo",
      "acd_0000thhsUZ8W4LxQgkjo00"
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-partial-offer-requests-get">
<summary><span>Flights: Get a single partial offer request — <code>duffel.<wbr>api.<wbr>air.<wbr>partial-<wbr>offer-<wbr>requests.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single partial offer request</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.partial-offer-requests.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.selected_partial_offer[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.partial-offer-requests.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "query": {
    "selected_partial_offer[]": "?selected_partial_offer[]=off_0000AJyeTUCEoY5PhVPN8k_0&amp;selected_partial_offer[]=off_0000AJyeTUCEoY5PhVPN8k_1"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-payments-list">
<summary><span>Flights: List payments — <code>duffel.<wbr>api.<wbr>air.<wbr>payments.<wbr>list</code></span></summary>
<p>Run <strong>Flights: List payments</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.payments.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.order_id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.payments.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "order_id": "ord_00009hthhsUZ8W4LxQgkjo"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-payments-create">
<summary><span>Flights: Create a payment — <code>duffel.<wbr>api.<wbr>air.<wbr>payments.<wbr>create</code></span></summary>
<p>Run <strong>Flights: Create a payment</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.payments.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.order_id</code></td>
<td>string</td>
<td>Required</td>
<td>The <code>id</code> of the order you want to pay for.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment</code></td>
<td>object</td>
<td>Required</td>
<td>The payment details to use to pay for the order</td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.payment.amount</code></td>
<td>string</td>
<td>Required</td>
<td>The amount of the payment for the order, plus selected services. This should be the <code>total_amount</code> of the order you&#39;re paying for plus the <code>total_amount</code>s of all of the services specified under the <code>services</code> of the order.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.currency</code></td>
<td>string</td>
<td>Required</td>
<td>The currency of the <code>amount</code>, as an <a href="https://en.wikipedia.org/wiki/ISO_4217">ISO 4217</a> currency code. This should be the <code>total_currency</code> of the order.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.three_d_secure_session_id</code></td>
<td>string</td>
<td>Optional</td>
<td>The <code>id</code> of the 3DSecure Session ID. This is the authentication when paying by <a href="https://duffel.com/docs/api/v2/card">card</a>.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.payment.type</code></td>
<td>string</td>
<td>Required</td>
<td>The payment method you want to use for this order. If you are an IATA agent with your own agreements with airlines, in some cases, you can pay using ARC/BSP cash by specifying <code>arc_bsp_cash</code>. You must pay using your Duffel account&#39;s balance by specifying <code>balance</code>. In <a href="https://duffel.com/docs/api/overview/test-mode">test mode</a>, your balance is unlimited. Otherwise, you can pay by <a href="https://duffel.com/docs/api/v2/card">card</a>. If you&#39;re not sure which of these options applies to you, get in touch with the Duffel support team at &lt;<a href="mailto:help@duffel.com">help@duffel.com</a>&gt;.</td>
<td><code>enum: [&quot;arc_bsp_cash&quot;,&quot;balance&quot;,&quot;card&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.payments.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "payment": {
      "type": "balance",
      "three_d_secure_session_id": "3ds_0000AWr2XsTRIF1Vp34gh5",
      "currency": "GBP",
      "amount": "30.20"
    },
    "order_id": "ord_00003x8pVDGcS8y2AWCoWv"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-payments-get">
<summary><span>Flights: Get a single payment — <code>duffel.<wbr>api.<wbr>air.<wbr>payments.<wbr>get</code></span></summary>
<p>Run <strong>Flights: Get a single payment</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.payments.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.payments.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-places-suggestions-list">
<summary><span>Supporting Resources: List Place suggestions — <code>duffel.<wbr>api.<wbr>places.<wbr>suggestions.<wbr>list</code></span></summary>
<p>Run <strong>Supporting Resources: List Place suggestions</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.places.suggestions.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.query</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.rad</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.lat</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.lng</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.places.suggestions.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "query": "heathr",
    "rad": "10",
    "lat": "40.735",
    "lng": "-73.973717"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-quotes-create">
<summary><span>Stays: Create a quote for a rate — <code>duffel.<wbr>api.<wbr>stays.<wbr>quotes.<wbr>create</code></span></summary>
<p>Run <strong>Stays: Create a quote for a rate</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.quotes.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.rate_id</code></td>
<td>string</td>
<td>Required</td>
<td>The <code>id</code> of the rate you want to book.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.quotes.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "rate_id": "rat_0000ARxBI85qTkbVapZDD2"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-quotes-get">
<summary><span>Stays: Get quote — <code>duffel.<wbr>api.<wbr>stays.<wbr>quotes.<wbr>get</code></span></summary>
<p>Run <strong>Stays: Get quote</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.quotes.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.quotes.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-search-results-fetch-all-rates">
<summary><span>Stays: Fetch rates for a search result — <code>duffel.<wbr>api.<wbr>stays.<wbr>search-<wbr>results.<wbr>fetch-<wbr>all-<wbr>rates</code></span></summary>
<p>Run <strong>Stays: Fetch rates for a search result</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.search-results.fetch-all-rates">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.search_result_id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.search-results.fetch-all-rates">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "search_result_id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-stays-search-create">
<summary><span>Stays: Search for accommodation — <code>duffel.<wbr>api.<wbr>stays.<wbr>search.<wbr>create</code></span></summary>
<p>Run <strong>Stays: Search for accommodation</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.stays.search.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.accommodation</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.accommodation</code></td>
<td>object</td>
<td>Optional</td>
<td>The accommodation to search for. You must use either this object or the <code>location</code> object in your request</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.accommodation.fetch_rates</code></td>
<td>boolean</td>
<td>Optional</td>
<td>Indicates if the accommodation search should return rooms and rates for each search result</td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.accommodation.ids</code></td>
<td>array</td>
<td>Required</td>
<td>The unique identifiers of the accommodation to search for. The maximum number of IDs is 10 when fetching room and rates, otherwise the maximum number of IDs is 200.</td>
<td><code>anyOf[1]; maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.accommodation.ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.accommodation</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.check_in_date</code></td>
<td>string</td>
<td>Required</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date on which the guest wants to check in. Check-in date can be no more than 330 days in the future.</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.check_out_date</code></td>
<td>string</td>
<td>Required</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> date on which the guest wants to check out. A stay can be up to 99 nights.</td>
<td><code>maxLength: 16000; format: &quot;date&quot;</code></td>
</tr>
<tr>
<td><code>data.free_cancellation_only</code></td>
<td>boolean</td>
<td>Optional</td>
<td>Whether this search is only for rates with free cancellation available. This can affect the rates and accommodation which are returned. If this is false, or omitted, all rates will be searched for.</td>
<td></td>
</tr>
<tr>
<td><code>data.guests</code></td>
<td>array</td>
<td>Required</td>
<td>The list of guests travelling.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.guests[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>data.guests[].age</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.guests[].age</code></td>
<td>number</td>
<td>Optional</td>
<td>The age of the guest at the time of booking. Required for guests of type <code>child</code>. Child age must be between 0 and 17. Do not supply an age for guests of type <code>adult</code>.</td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.guests[].age</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.guests[].type</code></td>
<td>string</td>
<td>Optional</td>
<td>The type of guest. An age is required for guests with a type <code>child</code>.</td>
<td><code>enum: [&quot;child&quot;,&quot;adult&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.instant_payment</code></td>
<td>boolean</td>
<td>Optional</td>
<td>When <code>true</code>, only accommodation and rates are returned where payment is collected at the time of booking by Duffel or the source. When <code>false</code>, only rates where payment is collected by the accommodation are returned. When omitted, all rates are returned.</td>
<td></td>
</tr>
<tr>
<td><code>data.location</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>data.location</code></td>
<td>object</td>
<td>Optional</td>
<td>Descriptor for an area to search for a stay. Accepts latitude-longitude paired with radius. You must use either this object or the <code>accommodation</code> object in your request</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.location.geographic_coordinates</code></td>
<td>object</td>
<td>Required</td>
<td>The center of the search criteria&#39;s radius. Represented by an object containing latitude and longitude.</td>
<td><code>anyOf[1]; maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.location.geographic_coordinates.latitude</code></td>
<td>number</td>
<td>Required</td>
<td>The latitude position of the search&#39;s center, represented in <a href="https://en.wikipedia.org/wiki/Decimal_degrees">Decimal degrees</a> with 6 decimal points with a range between -90° and 90°</td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.location.geographic_coordinates.longitude</code></td>
<td>number</td>
<td>Required</td>
<td>The longitude position of the search&#39;s center, represented in <a href="https://en.wikipedia.org/wiki/Decimal_degrees">Decimal degrees</a> with 6 decimal points with a range between -180° and 180°</td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.location.radius</code></td>
<td>integer</td>
<td>Optional</td>
<td>The search area&#39;s extent from the provided coordinates in kilometers. Can only be between 1 and 100. Default of 5km is subject to change.</td>
<td><code>anyOf[1]</code></td>
</tr>
<tr>
<td><code>data.location</code></td>
<td>null</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]</code></td>
</tr>
<tr>
<td><code>data.mobile</code></td>
<td>boolean</td>
<td>Optional</td>
<td>Whether this search has come from a mobile device. This can affect rates and content returned for this search.</td>
<td></td>
</tr>
<tr>
<td><code>data.negotiated_rate_ids</code></td>
<td>array</td>
<td>Optional</td>
<td>A list of <a href="https://duffel.com/docs/api/v2/negotiated-rates#negotiated-rates-schema-id">negotiated rate ids</a> to perform the search with. Will return negotiated alongside public rates on a best effort basis for matching <a href="https://duffel.com/docs/api/v2/negotiated-rates#negotiated-rates-schema-accommodation-ids">accommodation ids</a> on the negotiated rate.</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.negotiated_rate_ids[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.rooms</code></td>
<td>integer</td>
<td>Required</td>
<td>The number of rooms required</td>
<td></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.stays.search.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "rooms": 1,
    "negotiated_rate_ids": [
      "nre_0000ATOwpuYnZohiSmlmym"
    ],
    "mobile": false,
    "location": {
      "radius": 5,
      "geographic_coordinates": {
        "longitude": -0.1416,
        "latitude": 51.5071
      }
    },
    "instant_payment": false,
    "guests": [
      {
        "type": "adult"
      },
      {
        "age": 7,
        "type": "child"
      }
    ],
    "free_cancellation_only": false,
    "check_out_date": "2023-06-07",
    "check_in_date": "2023-06-04"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-seat-maps-list">
<summary><span>Flights: Get seat maps — <code>duffel.<wbr>api.<wbr>air.<wbr>seat-<wbr>maps.<wbr>list</code></span></summary>
<p>Run <strong>Flights: Get seat maps</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.seat-maps.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.offer_id</code></td>
<td>string</td>
<td>Required</td>
<td>Duffel&#39;s unique identifier for the resource</td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.seat-maps.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "offer_id": "xxx_00009hthhsUZ8W4LxQgkjo"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-payments-three-d-secure-sessions-create">
<summary><span>Payments: Create a 3DS Session — <code>duffel.<wbr>api.<wbr>payments.<wbr>three-<wbr>d-<wbr>secure-<wbr>sessions.<wbr>create</code></span></summary>
<p>Run <strong>Payments: Create a 3DS Session</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.payments.three-d-secure-sessions.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.card_id</code></td>
<td>string</td>
<td>Required</td>
<td>The card ID. This should be the card ID that&#39;s going to be submitted for payment.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.exception</code></td>
<td>string</td>
<td>Optional</td>
<td>The name of the exception to opt out of authenticating the payment with the card issuer.</td>
<td><code>enum: [&quot;secure_corporate_payment&quot;]; maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.resource_id</code></td>
<td>string</td>
<td>Required</td>
<td>The resource that is going to be submitted for payment after a 3DS session <code>status</code> is <strong>ready for payment</strong>. This is used together with <code>services</code> to calculate the payment amount in the currency to be paid.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.services</code></td>
<td>array</td>
<td>Optional</td>
<td></td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.services[]</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.services[].id</code></td>
<td>string</td>
<td>Optional</td>
<td>The service ID to be paid together with the <code>resource_id</code></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.services[].quantity</code></td>
<td>number</td>
<td>Optional</td>
<td>The number of services intended to pay for. Quantity must be greater than 0.</td>
<td></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.payments.three-d-secure-sessions.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "services": [
      {
        "quantity": 1,
        "id": "ser_00009UhD4ongolulWd9123"
      }
    ],
    "resource_id": "off_0000AKTurT99qsmGTujhis",
    "exception": "secure_corporate_payment",
    "card_id": "tcd_00009hthhsUZ8W4LxQgkjb"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-deliveries-list">
<summary><span>Notifications: List webhook deliveries — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>deliveries.<wbr>list</code></span></summary>
<p>Run <strong>Notifications: List webhook deliveries</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.deliveries.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.created_at</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 2; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.created_at.after</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime after which webhook deliveries created will be returned. This is UTC and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.created_at.before</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime before which webhook deliveries created will be returned. This is UTC and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.type</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.delivery_success</code></td>
<td>boolean</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.endpoint_id</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.deliveries.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "type": "order.created",
    "delivery_success": true,
    "endpoint_id": "end_0000A3tQSmKyqOrcySrGbo"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-deliveries-get">
<summary><span>Notifications: Get a single webhook delivery — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>deliveries.<wbr>get</code></span></summary>
<p>Run <strong>Notifications: Get a single webhook delivery</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.deliveries.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.deliveries.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-events-redeliver">
<summary><span>Notifications: Retry delivering a webhook event — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>events.<wbr>redeliver</code></span></summary>
<p>Run <strong>Notifications: Retry delivering a webhook event</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.events.redeliver">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.events.redeliver">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-events-get">
<summary><span>Notifications: Get a single webhook event — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>events.<wbr>get</code></span></summary>
<p>Run <strong>Notifications: Get a single webhook event</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.events.get">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.events.get">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-events-list">
<summary><span>Notifications: List webhook events — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>events.<wbr>list</code></span></summary>
<p>Run <strong>Notifications: List webhook events</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.events.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.created_at</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 2; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.created_at.after</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime after which webhook events created will be returned. This is UTC and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.created_at.before</code></td>
<td>string</td>
<td>Optional</td>
<td>The <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> datetime before which webhook events created will be returned. This is UTC and must not contain timezone information.</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.type</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.delivery_success</code></td>
<td>boolean</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.events.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10,
    "type": "order.created",
    "delivery_success": true
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-list">
<summary><span>Notifications: List webhooks — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>list</code></span></summary>
<p>Run <strong>Notifications: List webhooks</strong> with Duffel. This is a read command; it does not grant access beyond the connected account&#39;s permissions.</p>

<p>This is a read operation. Provider rate limits and data access rules still apply.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.list">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>object</td>
<td>Optional</td>
<td></td>
<td><code>maxProperties: 30; additionalProperties: false</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>—</td>
<td>Optional</td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>integer</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[1]; minimum: 1; maximum: 50</code></td>
</tr>
<tr>
<td><code>query.limit</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>anyOf[2]; pattern: &quot;^(?:[1-9]|[1-4][0-9]|50)$&quot;</code></td>
</tr>
<tr>
<td><code>query.before</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>query.after</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.list">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "query": {
    "limit": 10
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-create">
<summary><span>Notifications: Create a webhook — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>create</code></span></summary>
<p>Run <strong>Notifications: Create a webhook</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.create">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.events</code></td>
<td>array</td>
<td>Required</td>
<td>The events that this webhook will be subscribed to</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.events[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.url</code></td>
<td>string</td>
<td>Required</td>
<td>The URL where your webhook will be received</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.create">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "data": {
    "url": "https://www.example.com/webhooks",
    "events": [
      "order.created",
      "order.airline_initiated_change_detected"
    ]
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-ping">
<summary><span>Notifications: Ping a webhook — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>ping</code></span></summary>
<p>Run <strong>Notifications: Ping a webhook</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.ping">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.ping">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-delete">
<summary><span>Notifications: Delete a webhook — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>delete</code></span></summary>
<p>Run <strong>Notifications: Delete a webhook</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.delete">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.delete">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<details id="command-duffel-api-air-webhooks-update">
<summary><span>Notifications: Update a webhook — <code>duffel.<wbr>api.<wbr>air.<wbr>webhooks.<wbr>update</code></span></summary>
<p>Run <strong>Notifications: Update a webhook</strong> with Duffel. This command can change provider data. Review the target and input before invoking it.</p>

<p>This operation can change provider data. Review the input before allowing an agent to call it.</p>

<p><a href="https://www.tooluse.net/tools/integrations/duffel?command=duffel.api.air.webhooks.update">Connect and use</a></p>

<p><strong>Parameters</strong></p>

<p>Requiredness is local to the containing object. A required child is required only when its parent object or array item is provided. Alternative schemas are identified in the Constraints column; the linked full JSON Schema is authoritative.</p>

<div class="nb-table-scroll"><table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required in parent</th>
<th>Description</th>
<th>Constraints</th>
</tr>
</thead>
<tbody><tr>
<td><code>path</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>additionalProperties: false</code></td>
</tr>
<tr>
<td><code>path.id</code></td>
<td>string</td>
<td>Required</td>
<td></td>
<td><code>minLength: 2; maxLength: 100; pattern: &quot;^[A-Za-z][A-Za-z0-9_-]+$&quot;</code></td>
</tr>
<tr>
<td><code>data</code></td>
<td>object</td>
<td>Required</td>
<td></td>
<td><code>maxProperties: 100</code></td>
</tr>
<tr>
<td><code>data.active</code></td>
<td>boolean</td>
<td>Optional</td>
<td>The desired active status of the webhook</td>
<td></td>
</tr>
<tr>
<td><code>data.events</code></td>
<td>array</td>
<td>Optional</td>
<td>The desired events that the webhook should subscribe to</td>
<td><code>maxItems: 100</code></td>
</tr>
<tr>
<td><code>data.events[]</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>data.url</code></td>
<td>string</td>
<td>Optional</td>
<td>The desired url of the webhook</td>
<td><code>maxLength: 16000</code></td>
</tr>
<tr>
<td><code>deviceIp</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 45</code></td>
</tr>
<tr>
<td><code>deviceUserAgent</code></td>
<td>string</td>
<td>Optional</td>
<td></td>
<td><code>maxLength: 1000</code></td>
</tr>
</tbody></table>
</div>
<p><strong>Full JSON Schema</strong></p>

<p><a href="https://api.tooluse.net/v1/integrations/duffel/commands/duffel.api.air.webhooks.update">Full JSON Schema</a></p>

<p><strong>Example input</strong></p>

<pre><code class="language-json">{
  "path": {
    "id": "resource_fixture"
  },
  "data": {
    "url": "https://example.com/duffel/webhook",
    "events": [
      "order.created",
      "order.airline_initiated_change_detected"
    ],
    "active": true
  }
}
</code></pre>

<p>At most 1 provider requests per invocation; timeout: 30 seconds.</p>

</details>
<h2>Errors</h2>

<p>Check the key&#39;s expiry, revocation, workspace and allowed operations.</p>

<p>Reuse the same idempotency key only for the same request.</p>

<p>The connection or provider limit has been reached. Check the receipt before retrying.</p>

<h2>Test the connection</h2>

<p>Open the integration&#39;s commands below to inspect parameters and examples. Start with a read command for an account or resource you can access. Refresh your client&#39;s tool list, use the returned tool name, and check the execution result and usage. Provider charges and permissions still apply. Never test a write against production data without reviewing it.</p>

<p><a href="https://duffel.com/docs/api/overview/welcome">Official provider documentation</a></p>

Source: https://help.tooluse.net/integrations/duffel/index.mdx
