---
title: "Get Zone Adjacency"
method: GET
path: "/api/v1/zone-adjacency"
tags: ["itineraries"]
---

# Get Zone Adjacency

`GET /api/v1/zone-adjacency`

## Request

- Base URL: `https://api.alert.camp` (the document declares no server; this is the origin it was published from)
- URL: `https://api.alert.camp/api/v1/zone-adjacency`
- Auth: none declared

Which zone may follow which, for one park's zones.

Drives the custom-route picker: night N+1 offers only zones reachable from
night N's selection, so the route the user builds is bookable rather than
being rejected at creation.

The ``constrained`` flag is what the client must branch on, NOT the
emptiness of ``adjacency``:

* ``constrained=false`` → this provider's graph has not been crawled, or
  the provider has no sequence constraint at all.  Free-pick.  (For a
  constrained provider that also means custom routes are refused at
  creation — the wizard should offer curated routes only.)
* ``constrained=true`` with an empty entry for a zone → that zone genuinely
  leads nowhere; it is not a "no data" case.

Collapsing those two would either block routes in parks that permit
everything, or offer routes the provider will refuse.

## Query parameters

- `park_id` string, required

## Headers

- `authorization` string, nullable
- `x-dev-user-id` string, nullable
- `x-app-version` string, nullable

## Response `200`

Successful Response

- ZoneAdjacencyResponse
  - `park_id` string, required
  - `provider` string, required
  - `constrained` boolean, required
  - `adjacency` object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/alert/apis/alertcamp.md) · [All operations](https://skmtc.dev/alert/apis/alertcamp/llms.txt) · [OpenAPI document](https://skmtc.dev/alert/apis/alertcamp/revisions/864c8c9ef833?raw)
