# Products

This endpoint returns all products the operator has enabled for your connection.

## List Products

<mark style="color:blue;">`GET`</mark> `https://octo.peek.com/integrations/octo/products`

Returns all products the operator has enabled for the connection

{% tabs %}
{% tab title="200: OK " %}

```javascript
[
  {
    "id": "av_123",
    "internalName": "Rent-a-Kayak",
    "reference": "BRC-KAYAK",
    "locale": "en",
    "timeZone": "America/Los_Angeles",
    "allowFreesale": true,
    "availabilityType": "START_TIME",
    "deliveryFormats": ["QRCODE"],
    "deliveryMethods": ["VOUCHER"],
    "redemptionMethod": "DIGITAL",
    "capabilities": [
      {
        "id": "octo/pricing",
        "revision": 1,
        "required": true,
        "dependencies": []
      },
      {
        "id": "octo/webhooks",
        "revision": 1,
        "required": false,
        "dependencies": []
      }
    ],
    "options": [
      {
        "id": "av_123",
        "default": true,
        "internalName": "Rent-a-Kayak",
        "reference": null,
        "restrictions": {},
        "units": [
          {
            "id": "ea5fbd4c-9c2a-42f5-80c5-251a9f04da04",
            "internalName": "1-Seater Kayak",
            "reference": "1seat",
            "type": "ADULT",
            "restrictions": {
              "minAge": 18,
              "maxAge": 99,
              "idRequired": false,
              "minQuantity": 1,
              "maxQuantity": null,
              "paxCount": 1,
              "accompaniedBy": []
            }
          },
          {
            "id": "582fd9d7-43fd-4685-a9b2-35b102eaec3a",
            "internalName": "2-Seater Kayak",
            "reference": "2seat",
            "type": "ADULT",
            "restrictions": {
              "minAge": 18,
              "maxAge": 99,
              "idRequired": false,
              "minQuantity": 2,
              "maxQuantity": null,
              "paxCount": 1,
              "accompaniedBy": []
            }
          }
        ]
      }
    ]
  },
  //...rest of the products
]
```

{% endtab %}
{% endtabs %}

A description of each of the keys is given below:

| Field                                   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id                                      | The product id, you'll need to save this.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| internalName                            | The name this supplier calls the product                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| reference                               | An optional code this supplier might use to identify the product                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| locale                                  | A language code indicating what language this product content is in                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| timeZone                                | The IANA timeZone name this product is located in.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| allowFreesale                           | Whether a booking can be made for this product without having to query availability first.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| instantConfirmation                     | Whether bookings will be immediately confirmed when a sale is made, otherwise the supplier will later either accept or reject the booking.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `availabilityRequired`                  | Whether an `availabilityId` is required when creating a booking. Without this the booking will be open-dated and not have a specified travel date.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `availabilityType`                      | What type of availability this product has, possible values are: `START_TIME` if there are fixed departure times which you must pick one. Typical for day tours or activities. `OPENING_HOURS` if you just select a date and can visit any time when the venue is open.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `deliveryFormats`                       | <p>An array of formats the API will deliver the tickets as. Possible values are:</p><p><code>QRCODE</code> A code to be presented as a QR CODE barcode</p><p><code>CODE128</code>A code to be presented as a CODE 128 barcode</p><p><code>PDF\_URL</code> A URL to a PDF file which contains all the ticket details</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `deliveryMethods`                       | <p>How the formats described in <code>deliveryFormats</code> will be delivered in the booking response, possible values are:</p><p><code>TICKET</code> Individually per unit in the order (i.e. single ticket for each person)</p><p><code>VOUCHER</code> One ticket for the whole booking</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `redemptionMethod`                      | <p>How must the guest present the ticket or voucher when they arrive at the venue. Possible values are:</p><p><code>MANIFEST</code> The guest name will be written down and they just need to show up</p><p><code>DIGITAL</code> The tickets/voucher must be scanned but can be on mobile</p><p><code>PRINT</code> The tickets/voucher must be printed and presented on arrival</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `capabilities`                          | Capabilities define API extensions that this product supports. Capabilities can be enabled using a special HTTP header that's described in the next section.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `capabilities[].id`                     | The capability id which identifies it                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `capabilities[].revision`               | An integer which will increment each time the specification for this capability is updated.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `capabilities[].required`               | Whether this product cannot be sold without this capability being used.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `capabilities[].dependencies`           | An array of other capability ids that this capability depends on.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `capabilities[].docs`                   | A url to the documentation for this capability is.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `capabilities[].default`                | Whether this capability is enabled by default.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `options`                               | An array of all options for this product. All products must have at least one option.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `options[].id`                          | The id that identifies this option, it is only unique within the product                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `options[].default`                     | If there is only one option this value is `true` to indicate it is the default and therefore doesn't need to be displayed.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `options[].internalName`                | Like product internalName except for each option                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `options[].reference`                   | Like product reference except for each option                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `options[].restrictions`                | <p>An object containing a fixed list of restrictions. Keys and values are:</p><p><code>minUnits</code> The minimum number of tickets that can be purchased in a single booking (null = 0)</p><p><code>maxUnits</code> The maximum number of tickets that can be purchased in a single booking (null = unlimited)</p><p><code>options\[].availabilityLocalStartTimes</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `options[].availabilityLocalStartTimes` | This will be an array of all possible start times that can be returned during availability. For example an all day attraction may just have a single value like `["00:00"]` but a tour with multiple departure times may have:`["09:00", "14:00", "17:00"]`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `options[].cancellationCutoff`          | This is how long before the tour the booking can be still be cancelled. We also provide `booking.cancellable` (boolean) which we recommend you use instead to know if the booking can be cancelled. e.g. (1 Hour)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `options[].cancellationCutoffAmount`    | The numeric amount for the cutoff (e.g. 1)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `options[].cancellationCutoffUnit`      | The cutoff unit (e.g. hour). Possible values are: `hour`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `options[].requiredContactFields[]`     | <p>An array of the contact fields required to confirm a booking. These just apply to the lead traveller on the booking and not for every ticket. Possible values are:<br><code>-fullName</code><br><code>-emailAddress</code><br><code>-phoneNumber</code><br><code>-country</code><br><code>-notes</code><br><code>-locales</code></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `options[].units`                       | The list of ticket types (units) available for sale                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `options[].units[].id`                  | The id of the unit, this will be unique to the option                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `options[].units[].internalName`        | Like product/option internalName but for units                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `options[].units[].reference`           | Like product/option reference but for units                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `options[].units[].type`                | <p>This is the ticket type of the unit, values are:</p><p><code>ADULT</code> <code>YOUTH</code> <code>CHILD</code> <code>INFANT</code> <code>FAMILY</code> <code>SENIOR</code> <code>STUDENT</code> <code>MILITARY</code> <code>OTHER</code>The "other" type typically is used for an add-on, e.g. Bottle of Champaign, or a rental product like a bicycle.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `options[].units[].restrictions`        | <p>An object containing restrictions about this unit. Possible keys and values are:</p><p><code>minAge</code> An integer indicating the minimum age for the person this unit is for.</p><p><code>maxAge</code> An integer indicating the maximum age for the person this unit is for.</p><p><code>idRequired</code> A boolean value indicating whether the person this unit is for must show ID on arrival.</p><p><code>minQuantity</code> The minimum quantity of this unit required per booking (null = no minimum) <code>maxQuantity</code> The maximum quantity of this unit required per booking (null = no limit)</p><p><code>paxCount</code> The number of people this unit allows. Typically this is 1 but for a family ticket for example, it could be 4 or 5. <code>accompaniedBy</code> An array of unit ids one of which must accompany this unit if it is purchased.</p> |

If your server wants to query specific information about a product at a later stage, either to refresh your inventory or check for updates, you can call the following endpoint:

## Get Product

<mark style="color:blue;">`GET`</mark> `https://octo.peek.com/integrations/octo/products/:id`

#### Path Parameters

| Name                               | Type   | Description    |
| ---------------------------------- | ------ | -------------- |
| <mark style="color:red;">\*</mark> | String | The product id |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  "id": "av_123",
  "internalName": "Rent-a-Kayak",
  "reference": "BRC-KAYAK",
  "locale": "en",
  "timeZone": "America/Los_Angeles",
  "allowFreesale": true,
  "availabilityType": "START_TIME",
  "deliveryFormats": ["QRCODE"],
  "deliveryMethods": ["VOUCHER"],
  "redemptionMethod": "DIGITAL",
  "capabilities": [
    {
      "id": "octo/pricing",
      "revision": 1,
      "required": true,
      "dependencies": []
    },
    {
      "id": "octo/webhooks",
      "revision": 1,
      "required": false,
      "dependencies": []
    }
  ],
  "options": [
    {
      "id": "av_123",
      "default": true,
      "internalName": "Rent-a-Kayak",
      "reference": null,
      "restrictions": {},
      "units": [
        {
          "id": "ea5fbd4c-9c2a-42f5-80c5-251a9f04da04",
          "internalName": "1-Seater Kayak",
          "reference": "1seat",
          "type": "ADULT",
          "restrictions": {
            "minAge": 18,
            "maxAge": 99,
            "idRequired": false,
            "minQuantity": 1,
            "maxQuantity": null,
            "paxCount": 1,
            "accompaniedBy": []
          }
        },
        {
          "id": "582fd9d7-43fd-4685-a9b2-35b102eaec3a",
          "internalName": "2-Seater Kayak",
          "reference": "2seat",
          "type": "ADULT",
          "restrictions": {
            "minAge": 18,
            "maxAge": 99,
            "idRequired": false,
            "minQuantity": 2,
            "maxQuantity": null,
            "paxCount": 1,
            "accompaniedBy": []
          }
        }
      ]
    }
  ]
}
```

{% endtab %}
{% endtabs %}
