# Content

To use this capability, add `octo/content` to your `Octo-Capabilities` header.

This capability extends the Supplier, Destination, Category, Product, Option, Unit, Item, Availability and Booking schemas with additional content fields. When used with `octo/cart` it also extends Order responses.

{% hint style="warning" %}
The content provided by this endpoint belongs to the supplier, so please make sure you have their express permission before using it online.
{% endhint %}

* `itinerary.type`: Enum with one of the following values:
  * `START`: The starting or meeting location.
  * `POI`: A point of interest visited en route.
  * `EVENT`: An event that happens, for example `Lunch` or `Shopping Break`.
  * `END`: The ending or final location.
* `itinerary.travelTime`: The travel time required to get to this location.
* `itinerary.duration`: How much time is spent on this itinerary item.

The following helper objects are also used by this capability:

* `notice`: `id`, `title`, `shortDescription`, `coverImageUrl`
* `tourGroup`: `id`, `internalName`, `title`, `shortDescription`, `icon`
* `fare`: `id`, `internalName`, `title`, `shortDescription`, `fareGroup`
* `fareGroup`: `id`, `internalName`, `title`, `shortDescription`
* `point`: `id`, `internalName`, `title`, `shortDescription`, `pointGroup`
* `pointGroup`: `id`, `internalName`, `title`, `shortDescription`
* `font`: `id`, `name`, `normalTtfUrl`, `boldTtfUrl`, `italicTtfUrl`, `boldItalicTtfUrl`

When `octo/extras` is also enabled, each `extra` object includes:

* `title`
* `shortDescription`
* `coverImageUrl`
* `duration`
* `durationAmount`
* `durationUnit`

## Products

This capability extends product routes documented in [Products](/octo-core/products.md):

* `GET /products`
* `GET /products/{productId}`

This capability extends the `GET /products` endpoint with additional content filtering parameters.

## Booking and Order Parameters

`termsAccepted` is supported by content capability as an input field and response field.

### Booking Endpoints

`termsAccepted` can be sent in the request body for these routes:

* `POST /bookings`
* `PATCH /bookings/{uuid}`
* `POST /bookings/{uuid}/confirm`

Base booking schema: [Bookings](/octo-core/bookings.md#endpoints). This page documents only the `termsAccepted` addition.

### Order Endpoints (with `octo/cart`)

`termsAccepted` can be sent in the request body for these routes:

* `POST /orders`
* `PATCH /orders/{orderId}`
* `PATCH /orders/{orderId}/preview`
* `POST /orders/{orderId}/confirm`

It is accepted:

* At the order root (`termsAccepted`) and applies to all standalone bookings in the order.
* Inside nested booking payloads (`bookings[].termsAccepted`) when creating/updating bookings through order requests.

If both are supplied, the order-level `termsAccepted` value takes precedence.

Base order schema: [Multi-Booking Cart](/capabilities/cart.md).

## Schema Additions (JSON)

These are additive fragments showing only fields introduced by this capability.

### `Booking`

```json
{
  "// ...rest of booking object": "...",
  "termsAccepted": true
}
```

### `BookingWriteRequest`

```json
{
  "// ...rest of booking write request object": "...",
  "termsAccepted": true
}
```

### `Gift`

```json
{
  "// ...rest of gift object": "...",
  "termsAccepted": true
}
```

### `GiftCreateRequest`

```json
{
  "// ...rest of gift create request object": "...",
  "termsAccepted": true
}
```

### `Option`

```json
{
  "// ...rest of option object": "...",
  "itinerary": [
    {
      "name": "Morning City Tour",
      "type": "STANDARD",
      "description": "Morning departure with central pickup included.",
      "address": "123 Main St, San Francisco, CA"
    }
  ]
}
```

### `Order`

```json
{
  "// ...rest of order object": "...",
  "termsAccepted": true
}
```

### `OrderCreateRequest`

```json
{
  "// ...rest of order create request object": "...",
  "termsAccepted": true
}
```

### `OrderUpdateRequest`

```json
{
  "// ...rest of order update request object": "...",
  "termsAccepted": true
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ventrata.com/capabilities/content.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
