> ## Documentation Index
> Fetch the complete documentation index at: https://mcp.theoryofevolution.com.au/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Endpoints AAG uses

> OperatorHub V1 endpoints AAG tools call, with real request shapes and example responses.

All requests take a per-brand `token` query parameter (shown as `<token>`). Base URL is `https://api.operatorhub.travel/jsonservice/v1` unless noted.

## availability

Live event availability for a product over a date range.

* **Required:** `productid` (or `productcode`)
* **Optional:** `date`, or `startdate` + `enddate` (`Y-m-d`). With no date, defaults to today.
* **Response:** `{ "response": [ EventObject, … ] }`

```bash Request theme={null}
GET /v1/availability?productid=10001&startdate=2026-11-01&enddate=2026-11-02&token=<token>
```

```json Response (excerpt — example values) theme={null}
{
  "response": [
    {
      "APIObjectType": "EventObject",
      "ID": 1000001,
      "ProductID": "10001",
      "Date": "2026-11-01",
      "Quantity": "93",
      "Remaining": 70,
      "CanBook": true,
      "Unlimited": "0",
      "Description": "TRIPLE DEPARTURE\n\nAgent allocation - 6 pax booked\n\nAgent allocation - 11 pax + 1 leader booked",
      "ManifestStatus": "Open",
      "IsPastCutoff": false,
      "StatusAndTitle": "Sun 1 November 2026 ",
      "PurchasableVariationIDs": [20001],
      "PurchasableVariationPrices": [
        { "VariationID": 20001, "PriceOnDate": "659.00", "BaseTitle": "Adult", "AppliedTitle": "Adult" }
      ]
    },
    {
      "APIObjectType": "EventObject",
      "ID": 1000002,
      "ProductID": "10001",
      "Date": "2026-11-02",
      "Quantity": "31",
      "Remaining": 8,
      "CanBook": true,
      "Description": "DOUBLE DEPARTURE",
      "ManifestStatus": "Open",
      "PurchasableVariationPrices": [
        { "VariationID": 20001, "PriceOnDate": "659.00", "BaseTitle": "Adult", "AppliedTitle": "Adult" }
      ]
    }
  ]
}
```

Key fields: `Quantity` = total seats before bookings (the allocation); `Remaining` = bookable seats left; `Description` = free-text note (departure type + group holds, `\n`-separated); `PurchasableVariationPrices[].PriceOnDate` = the per-date price (dynamic-pricing-aware). See [objects](https://mcp.theoryofevolution.com.au/docs/api-reference/operatorhub/objects.md#eventobject).

## orders

A single order by id, or the first match of a filter. Note the `/&` form (trailing slash then `&`).

* **Required (one of):** `orderid`, or `filter[AgentReference]`, or `filter[ExternalOrderID]`
* **Optional:** `limit`
* **Response:** an `OrderObject`

```bash By order id theme={null}
GET /v1/orders/&orderid=10200345&token=<token>
```

```bash By agent reference theme={null}
GET /v1/orders/&filter[AgentReference]=ABC25001-100000&token=<token>
```

```bash By external order id theme={null}
GET /v1/orders/&filter[ExternalOrderID]=EXT25001-100000&limit=1&token=<token>
```

See [OrderObject](https://mcp.theoryofevolution.com.au/docs/api-reference/operatorhub/objects.md#orderobject) (includes `Items[]`, `Customer`, `Status`, `Agency`, `ExtraCustomers[]`).

## customerorders

The order ids a customer belongs to.

* **Required:** `customerid`
* **Optional:** `limit`

```bash Request theme={null}
GET /v1/customerorders/&customerid=1000001&token=<token>&limit=1
```

The response is a list of order ids (commonly scalar ids under `response`).

## customers

Find customers by a filter.

* **Required:** a `filter[...]` (e.g. `filter[Email]`, `filter[Surname]`)
* **Optional:** `limit`
* **Response:** `CustomerObject`(s)

```bash By email theme={null}
GET /v1/customers/?filter[Email]=guest@example.com&token=<token>&limit=1
```

```bash By surname theme={null}
GET /v1/customers/?filter[Surname]=example&token=<token>&limit=1
```

See [CustomerObject](https://mcp.theoryofevolution.com.au/docs/api-reference/operatorhub/objects.md#customerobject).

## products

Product detail + pickup locations.

* **Optional:** `productid` (single id or comma-separated list), `productcode`, `live`. With no parameters, returns **all** products.
* **Response:** a `ProductObject` or array of them

```bash Request theme={null}
GET /v1/products?productid=10001&token=<token>
```

See [ProductObject](https://mcp.theoryofevolution.com.au/docs/api-reference/operatorhub/objects.md#productobject) — carries `Price`, `Variations[]`, `ProductPickupLocations[]`, `SpecialPrices[]`.

## setcustomer

Edit an existing customer's fields (a GET that mutates). Set field params first, `customerid` + `token` last.

* **Required:** `customerid`
* **Optional:** any [CustomerObject](https://mcp.theoryofevolution.com.au/docs/api-reference/operatorhub/objects.md#customerobject) field, plus tag groups (`Tag<GroupID>`)
* **Response:** the updated `CustomerObject`

## checkinview (unversioned)

The check-in manifest for a date. **Unversioned** — no `/v1`, path is `/jsonservice/checkinview/search`.

* **Required:** `checkinviewid`, `date` (`Y-m-d`)
* **Response:** `{ "response": { "Headers": [...], "Rows": [...] } }` — a tabular manifest; columns vary per view.

```bash Request theme={null}
GET /jsonservice/checkinview/search?checkinviewid=8001&date=2026-02-15&token=<token>
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.