# Endpoints & Capabilities

OCTO defines several [Core Endpoints](#octo-api-core-endpoints) that apply to most use cases and are **required** for the implementation.&#x20;

Since not all use cases can be fulfilled with just the core endpoints, OCTO provides a concept of [Capabilities](#capabilities), allowing for enhancement to the integrations based on specific needs. Capabilities are **optional** for implementation and to enhance integration by, for example, adding additional information about pricing, content, pickups, etc. &#x20;

## OCTO API Core Endpoints&#x20;

### [Supplier](#suppliers)

<table data-full-width="false"><thead><tr><th width="215">Name</th><th width="102">Method </th><th width="428">Description</th></tr></thead><tbody><tr><td><a href="../octo-api-core/supplier">Get Supplier</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns a single Supplier and associated details for a given Supplier ID.</td></tr></tbody></table>

### [Products](#products)

<table data-header-hidden><thead><tr><th width="217.33333333333331">Name</th><th width="98">Method</th><th>Description</th></tr></thead><tbody><tr><td><a href="../../octo-api-core/products#get-product-list">Get Product List</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns a list of Products and associated details. </td></tr><tr><td><a href="../../octo-api-core/products#get-product">Get Product</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns a single Product and associated details for a given Product ID. </td></tr></tbody></table>

### [Availability](#availability)

<table data-header-hidden><thead><tr><th width="221.33333333333331">Name</th><th width="92">Method</th><th>Description</th></tr></thead><tbody><tr><td><a href="../../octo-api-core/availability#availability-calendar">Availablity Calendar</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Returns availability for a given Product &#x26; Option as a single object per day. Optimized to be queried for large date ranges and to populate an availability calendar.  </td></tr><tr><td><a href="../../octo-api-core/availability#availability-check">Availability Check</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Returns availability for a given Product &#x26; Option as a single object per start time (or day). You have to perform this step to retrieve an <code>availabilityId</code> required for <a href="broken-reference">Bookings</a>. </td></tr></tbody></table>

### [Bookings](#bookings)

<table data-header-hidden><thead><tr><th width="220.33333333333331">Name</th><th width="102">Method</th><th>Description</th></tr></thead><tbody><tr><td><a href="../../octo-api-core/bookings#create-booking">Create Booking</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Creates a booking that reserves the availability (e.g. while you collect payment and contact information from the customer) for a given <code>availabilityId</code>. The booking will remain with the status <code>ON_HOLD</code> until <a href="broken-reference">Booking Confirmation</a> or when the reservation hold expires.</td></tr><tr><td><a href="../../octo-api-core/bookings#confirm-booking">Confirm Booking</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Confirms previously placed <a href="broken-reference">Booking Reservation</a>, finalizing the booking and making it ready to be used.</td></tr><tr><td><a href="../../octo-api-core/bookings#update-booking">Update Booking</a></td><td><mark style="color:orange;"><code>PATCH</code></mark></td><td>Updates/changes your booking before and after it has been confirmed as long as it hasn't yet been redeemed or within the cancellation cutoff window.</td></tr><tr><td><a href="../../octo-api-core/bookings#cancel-booking">Cancel Booking</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Cancels your booking. You can only cancel a booking if <code>booking.cancellable</code> is <code>TRUE</code>, and is within the booking cancellation cut-off window.</td></tr><tr><td><a href="../../octo-api-core/bookings#extend-pending-booking-expiration">Extend Pending Booking Expiration</a></td><td><mark style="color:green;"><code>POST</code></mark></td><td>Extends the <a href="broken-reference">Booking Reservation</a> availability hold if the booking status is <code>ON_HOLD</code>. </td></tr><tr><td><a href="../../octo-api-core/bookings#get-booking">Get Booking</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns the status and details of your existing booking.</td></tr><tr><td><a href="../../octo-api-core/bookings#get-booking-list">Get Booking List</a></td><td><mark style="color:blue;"><code>GET</code></mark></td><td>Returns the list of the bookings you made for the given filters.</td></tr></tbody></table>

## Capabilities

<table data-full-width="true"><thead><tr><th width="273.3046875" data-type="content-ref">Name</th><th width="166">ID</th><th>Description</th></tr></thead><tbody><tr><td><a href="../capabilities-optional/pickups-new">pickups-new</a></td><td><code>pricing</code></td><td>Adds pricing to most endpoints, giving you advanced static and dynamic pricing capabilities. </td></tr><tr><td><a href="../capabilities-optional/notifications">notifications</a></td><td><code>notifications</code></td><td>Allows to subscribe to be notified when something changes against products, availability or bookings. </td></tr><tr><td><a href="../capabilities-optional/content">content</a></td><td><code>content</code></td><td>Extends the core product, option, and unit schemas to provide rich content and images. </td></tr><tr><td><a href="../capabilities-optional/pickups-new">pickups-new</a></td><td><code>pickups</code></td><td>Adds structured pickup support, allowing predefined or customer-defined pickup locations, including pickup time windows.</td></tr><tr><td><a href="../capabilities-optional/dropoffs-new">dropoffs-new</a></td><td><code>dropoffs</code></td><td>Adds structured dropoff support, allowing predefined or customer-defined end-of-tour return locations, including time-window details.</td></tr><tr><td><a href="../capabilities-optional/promotions-in-dev">promotions-in-dev</a></td><td><code>promotions</code></td><td><em>🚨 In development, not reviewed or ratified.</em> <br><br>Adds promotional pricing to availability and bookings, exposing promotional offers and their details.</td></tr></tbody></table>

You control which capabilities you want to enable by using the `Octo-Capabilities` [header](https://docs.octo.travel/getting-started/headers). For example:

```http
GET /availability HTTP/1.1
Host: {host}
Authorization: Bearer {your_API_key}
Octo-Capabilities: octo/content, octo/offers
```

It's also possible to use the `_capabilities` query parameter if you're unable to use headers:

```http
GET /availability?_capabilities=octo/content,octo/pricing HTTP/1.1
Host: {host}
Authorization: Bearer {your_API_key}
```

You can list all the capabilities with a comma to separate each one.&#x20;
