---
title: "List Campground Zones"
method: GET
path: "/api/v1/parks/campgrounds/{campground_id}/zones"
tags: ["parks"]
---

# List Campground Zones

`GET /api/v1/parks/campgrounds/{campground_id}/zones`

## 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/parks/campgrounds/{campground_id}/zones`
- Auth: none declared

List all zones for a specific campground.

Each zone includes site_count and accommodation_types to help with
zone selection in the alert wizard.

This endpoint is public and does not require authentication.

## Path parameters

- `campground_id` string, required

## Query parameters

- `active_only` boolean: Only return active zones

## Response `200`

Successful Response

- ZoneListResponse: Schema for list of zones response.
  - `zones` ZoneResponse[], required
    - `id` string, required
    - `campground_id` string, required
    - `name` string, required
    - `name_en` string, nullable, required
    - `description` string, nullable, required
    - `is_active` boolean, required
    - `is_default` boolean: Whether this is a default/collapsed zone (campground name == zone name). UI should auto-select and skip zone selection step.
    - `op_map_id` integer, nullable: GoingToCamp map ID this zone corresponds to. Used by mobile to match zones with their CampgroundMap (gtc_map_id) when filtering the site-map picker to only the zones the user has selected.
    - `op_booking_category_id` integer, nullable: Ontario Parks booking category ID (0=camping, 2=roofed accommodation). Null for SEPAQ zones.
    - `op_min_nights` integer, nullable: Ontario Parks minimum nights required for roofed accommodation zones. Null for SEPAQ zones and OP camping zones.
    - `has_roofed_sites` boolean: Whether this zone contains any roofed accommodation sites (op_booking_category_id=2). Used for mixed-zone filtering.
    - `has_canoe_sites` boolean: Whether this zone contains any canoe-camping sites (camp_type='CanoeCamping'). Used to filter zones for the Canoe-Camping activity tile in the wizard.
    - `has_backcountry_sites` boolean: Whether this zone contains any backcountry sites (camp_type='Backcountry'). Used to filter zones for the Backcountry activity tile in the wizard.
    - `has_day_use_sites` boolean: Whether this zone contains day-use sites (Parks Canada parking time slots, Banff shuttle departures). Defaults False so builds predating the activity are unaffected.
    - `has_camping_sites` boolean: Whether this zone contains any standard camping sites (camp_type='Camping' — ready-to-camp accommodations roll up into the same bucket). Defaults TRUE so legacy zones without computed flags still appear under the Camping activity.
    - `site_count` integer: Number of sites in this zone
    - `accommodation_types` string[]: Unique accommodation types available in this zone
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `total` integer, required
  - `campground_id` string, nullable: Campground ID if filtered by campground

## 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)
