{
  "openapi": "3.1.0",
  "info": {
    "title": "PG Pulse API",
    "version": "1.1.0",
    "summary": "Local data for Prince George, British Columbia.",
    "description": "Everything on PG Pulse as JSON: the business directory, neighbourhoods, news links, stories, guides, events, nightlife, local artists, jobs, awards, live weather, air, rivers, wildfire, power, roads, climate, census, housing, economy, civic data, maps, key services, property taxes and fees, transit and garbage days. No key, no sign-up, CORS enabled. Rate limit: 120 requests per minute per IP. Every response names its source, licence and attribution; please credit them. Versioning: additive changes (new endpoints, fields, parameters) ship within v1 and are listed in the changelog; nothing is removed or renamed without a new version and notice. Docs: https://princegeorgepulse.ca/developers/",
    "contact": {
      "name": "PG Pulse",
      "email": "hello@princegeorgepulse.ca",
      "url": "https://princegeorgepulse.ca/developers/"
    },
    "license": {
      "name": "CC BY 4.0 for PG Pulse content; third-party data under each source’s licence (see meta.license)",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    }
  },
  "servers": [
    {
      "url": "https://princegeorgepulse.ca/api/v1"
    }
  ],
  "externalDocs": {
    "url": "https://princegeorgepulse.ca/developers/",
    "description": "Guides, examples and Markdown docs"
  },
  "tags": [
    {
      "name": "About the API"
    },
    {
      "name": "Directory"
    },
    {
      "name": "Neighbourhoods"
    },
    {
      "name": "Food & nightlife"
    },
    {
      "name": "Events"
    },
    {
      "name": "Sports"
    },
    {
      "name": "Local artists"
    },
    {
      "name": "Awards"
    },
    {
      "name": "News & stories"
    },
    {
      "name": "Guides"
    },
    {
      "name": "Live conditions"
    },
    {
      "name": "Weather"
    },
    {
      "name": "Climate"
    },
    {
      "name": "Air & water"
    },
    {
      "name": "Hazards"
    },
    {
      "name": "Power"
    },
    {
      "name": "Safety"
    },
    {
      "name": "People & economy"
    },
    {
      "name": "Jobs"
    },
    {
      "name": "City data"
    },
    {
      "name": "Civic"
    },
    {
      "name": "Indigenous Prince George"
    },
    {
      "name": "Maps"
    },
    {
      "name": "Transit"
    },
    {
      "name": "Garbage & recycling"
    },
    {
      "name": "Datasets"
    },
    {
      "name": "History"
    },
    {
      "name": "Key services"
    },
    {
      "name": "Emergency"
    },
    {
      "name": "Taxes & fees"
    },
    {
      "name": "Getting around"
    },
    {
      "name": "Advertising"
    },
    {
      "name": "Community"
    },
    {
      "name": "Living"
    },
    {
      "name": "City"
    },
    {
      "name": "Outdoors"
    },
    {
      "name": "City spending"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "operationId": "get",
        "tags": [
          "About the API"
        ],
        "summary": "API index: every endpoint with a link",
        "description": "Example: `/api/v1/`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string"
                            },
                            "version": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "docs": {
                              "type": "string"
                            },
                            "openapi": {
                              "type": "string"
                            },
                            "llms": {
                              "type": "string"
                            },
                            "rateLimit": {
                              "type": "string"
                            },
                            "endpoints": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "path": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  },
                                  "docs": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "path",
                                  "group",
                                  "summary",
                                  "docs"
                                ]
                              }
                            }
                          },
                          "required": [
                            "name",
                            "version",
                            "description",
                            "docs",
                            "openapi",
                            "llms",
                            "rateLimit",
                            "endpoints"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "name": "string",
                        "version": "string",
                        "description": "string",
                        "docs": "string",
                        "openapi": "https://example.org/",
                        "llms": "string",
                        "rateLimit": "string",
                        "endpoints": [
                          {
                            "path": "string",
                            "group": "string",
                            "summary": "string",
                            "docs": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/meta": {
      "get": {
        "operationId": "get-meta",
        "tags": [
          "About the API"
        ],
        "summary": "Site facts, counts and data freshness",
        "description": "Example: `/api/v1/meta`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "site": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "longName": {
                                  "type": "string"
                                },
                                "tagline": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                },
                                "city": {
                                  "type": "string"
                                },
                                "region": {
                                  "type": "string"
                                },
                                "country": {
                                  "type": "string"
                                },
                                "lat": {
                                  "type": "number"
                                },
                                "lng": {
                                  "type": "number"
                                },
                                "timezone": {
                                  "type": "string"
                                },
                                "contact": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name",
                                "longName",
                                "tagline",
                                "description",
                                "url",
                                "city",
                                "region",
                                "country",
                                "lat",
                                "lng",
                                "timezone",
                                "contact"
                              ]
                            },
                            "modules": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "counts": {
                              "type": "object",
                              "additionalProperties": {
                                "type": "number"
                              }
                            },
                            "updated": {
                              "type": "object",
                              "properties": {
                                "events": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "news": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "businesses": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              }
                            },
                            "jobs": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "api": {
                              "type": "object",
                              "properties": {
                                "version": {
                                  "type": "string"
                                },
                                "base": {
                                  "type": "string"
                                },
                                "docs": {
                                  "type": "string"
                                },
                                "openapi": {
                                  "type": "string"
                                },
                                "rateLimit": {
                                  "type": "object",
                                  "properties": {
                                    "limit": {
                                      "type": "number"
                                    },
                                    "windowSec": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "limit",
                                    "windowSec"
                                  ]
                                },
                                "auth": {
                                  "type": "string"
                                },
                                "cost": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "version",
                                "base",
                                "docs",
                                "openapi",
                                "rateLimit",
                                "auth",
                                "cost"
                              ]
                            }
                          },
                          "required": [
                            "site",
                            "modules",
                            "counts",
                            "updated",
                            "jobs",
                            "api"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "site": {
                          "name": "string",
                          "longName": "string",
                          "tagline": "string",
                          "description": "string",
                          "url": "https://example.org/",
                          "city": "string",
                          "region": "string",
                          "country": "string",
                          "lat": 0,
                          "lng": 0,
                          "timezone": "string",
                          "contact": "string"
                        },
                        "modules": [
                          "string"
                        ],
                        "counts": {},
                        "updated": {
                          "events": "string",
                          "news": "string",
                          "businesses": "string"
                        },
                        "jobs": null,
                        "api": {
                          "version": "string",
                          "base": "string",
                          "docs": "string",
                          "openapi": "https://example.org/",
                          "rateLimit": {
                            "limit": 0,
                            "windowSec": 0
                          },
                          "auth": "string",
                          "cost": "string"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/meta",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/pages": {
      "get": {
        "operationId": "get-pages",
        "tags": [
          "About the API"
        ],
        "summary": "Every public page on the site, with its Markdown version",
        "description": "Example: `/api/v1/pages?prefix=/dashboard/`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "prefix",
            "in": "query",
            "required": false,
            "description": "Only paths starting with this.",
            "schema": {
              "type": "string",
              "examples": [
                "/dashboard/"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 500).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "path": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "markdown": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "path",
                              "url",
                              "markdown"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "path": "string",
                          "url": "https://example.org/",
                          "markdown": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/pages",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/search": {
      "get": {
        "operationId": "get-search",
        "tags": [
          "About the API"
        ],
        "summary": "Search across site pages, public places, awards categories, schools, outdoor places, businesses, categories, neighbourhoods (and subdivision names), answers, guides, stories, events, jobs, artists, map layers, resources, news, sports teams and clubs",
        "description": "Example: `/api/v1/search?q=dog%20park`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Search text.",
            "schema": {
              "type": "string",
              "examples": [
                "dog park"
              ]
            }
          },
          {
            "name": "per",
            "in": "query",
            "required": false,
            "description": "Results per type (default 5, max 25).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "pages": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "description",
                                  "url"
                                ]
                              }
                            },
                            "answers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "categories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "services": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "area": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "description",
                                  "area",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "awards": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "description",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "schools": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "area": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "description",
                                  "area",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "outdoors": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "area": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "description",
                                  "area",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "businesses": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "area": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "category",
                                  "area",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "neighbourhoods": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "guides": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "markdown": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url",
                                  "markdown"
                                ]
                              }
                            },
                            "stories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              }
                            },
                            "events": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "start": {
                                    "type": "string"
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "start",
                                  "venue",
                                  "url",
                                  "sourceUrl"
                                ]
                              }
                            },
                            "jobs": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "employer": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "employer",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "djs": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              }
                            },
                            "mapLayers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "resources": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              }
                            },
                            "news": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "date": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "source",
                                  "date",
                                  "url"
                                ]
                              }
                            },
                            "sports": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "description",
                                  "url",
                                  "api"
                                ]
                              }
                            }
                          },
                          "required": [
                            "pages",
                            "answers",
                            "categories",
                            "services",
                            "awards",
                            "schools",
                            "outdoors",
                            "businesses",
                            "neighbourhoods",
                            "guides",
                            "stories",
                            "events",
                            "jobs",
                            "djs",
                            "mapLayers",
                            "resources",
                            "news",
                            "sports"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "pages": [
                          {
                            "name": "string",
                            "description": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "answers": [
                          {
                            "name": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "categories": [
                          {
                            "name": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "services": [
                          {
                            "name": "string",
                            "description": "string",
                            "area": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "awards": [
                          {
                            "name": "string",
                            "description": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "schools": [
                          {
                            "name": "string",
                            "description": "string",
                            "area": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "outdoors": [
                          {
                            "name": "string",
                            "description": "string",
                            "area": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "businesses": [
                          {
                            "name": "string",
                            "category": "string",
                            "area": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "neighbourhoods": [
                          {
                            "name": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "guides": [
                          {
                            "name": "string",
                            "url": "https://example.org/",
                            "markdown": "string"
                          }
                        ],
                        "stories": [
                          {
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "events": [
                          {
                            "name": "string",
                            "start": "2026-01-01T00:00:00Z",
                            "venue": "string",
                            "url": "https://example.org/",
                            "sourceUrl": "https://example.org/"
                          }
                        ],
                        "jobs": [
                          {
                            "name": "string",
                            "employer": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "djs": [
                          {
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "mapLayers": [
                          {
                            "name": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "resources": [
                          {
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "news": [
                          {
                            "name": "string",
                            "source": "string",
                            "date": "2026-01-01T00:00:00Z",
                            "url": "https://example.org/"
                          }
                        ],
                        "sports": [
                          {
                            "name": "string",
                            "description": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/search",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/changes": {
      "get": {
        "operationId": "get-changes",
        "tags": [
          "About the API"
        ],
        "summary": "Stable incremental discovery for businesses, events and jobs",
        "description": "Use a full ISO since date-time with Z or an offset no older than 90 days, then follow cursor until complete. Keep watermark only after all pages finish. Removals are explicit tombstones. Fetch current entities from their API URL. Edits during paging appear in the next window. A cursor belongs to one city. An expired window returns 410 and requires a new full sync.\n\nExample: `/api/v1/changes`\n\nCache: 0s.",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "UTC date-time, e.g. 2026-10-01T00:00:00.000Z (seconds, milliseconds or an offset like -07:00 are normalised)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Opaque cursor from the previous response; overrides since",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Between 1 and 500",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "required": [
                            "changes",
                            "cursor",
                            "watermark",
                            "complete"
                          ],
                          "properties": {
                            "changes": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/Change"
                              }
                            },
                            "cursor": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "watermark": {
                              "type": "string"
                            },
                            "complete": {
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "changes": [
                          {
                            "kind": "event",
                            "id": "example-event",
                            "action": "remove",
                            "updatedAt": "2026-01-01T00:00:00.000Z",
                            "url": "/api/v1/events/example-event"
                          }
                        ],
                        "cursor": "string",
                        "watermark": "string",
                        "complete": false
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/changes",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/businesses": {
      "get": {
        "operationId": "get-businesses",
        "tags": [
          "Directory"
        ],
        "summary": "Search and list local businesses",
        "description": "Every business in the PG Pulse directory (licensed Prince George businesses), read live from the database: new City business licences appear after the nightly import. Each record has `source` (researched or licence), `licenceNumber`, `firstSeen` and `updatedAt`. Default order is the site ranking: featured listings, then most complete listings, then A to Z. With `near`, results are sorted by distance and include `distanceKm`.\n\nExample: `/api/v1/businesses?category=restaurants&neighbourhood=downtown&limit=2`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search over name, tagline, description, tags, services, products and street.",
            "schema": {
              "type": "string",
              "examples": [
                "pizza"
              ]
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Category slug (see /categories).",
            "schema": {
              "type": "string",
              "examples": [
                "restaurants"
              ]
            }
          },
          {
            "name": "group",
            "in": "query",
            "required": false,
            "description": "Group slug (see /groups).",
            "schema": {
              "type": "string",
              "examples": [
                "food-drink"
              ]
            }
          },
          {
            "name": "neighbourhood",
            "in": "query",
            "required": false,
            "description": "Neighbourhood slug or name (see /neighbourhoods). Alias: `community`.",
            "schema": {
              "type": "string",
              "examples": [
                "downtown"
              ]
            }
          },
          {
            "name": "updated_since",
            "in": "query",
            "required": false,
            "description": "Only listings added or changed after this ISO date or date-time (alias `since`). For a full sync of removals use /businesses/changes.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-09-01"
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\".",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "radius",
            "in": "query",
            "required": false,
            "description": "With `near`: only within this many km.",
            "schema": {
              "type": "number",
              "examples": [
                2
              ]
            }
          },
          {
            "name": "has",
            "in": "query",
            "required": false,
            "description": "Comma list of fields that must be present: website, phone, email, facebook, instagram, description, thumb, bookingUrl, menuUrl, location.",
            "schema": {
              "type": "string",
              "examples": [
                "website,phone"
              ]
            }
          },
          {
            "name": "sponsored",
            "in": "query",
            "required": false,
            "description": "Only featured (sponsored) listings.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "Ignored with `near`. `updated`: most recently changed first.",
            "schema": {
              "type": "string",
              "enum": [
                "rank",
                "name",
                "updated"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset, e.g. `slug,name,lat,lng`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of business records.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "distanceKm": {
                                    "type": "number"
                                  },
                                  "neighbourhood": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "neighbourhoodSlug": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "categories": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "slug": {
                                          "type": "string"
                                        },
                                        "label": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "slug",
                                        "label"
                                      ]
                                    }
                                  },
                                  "groupLabel": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sponsored": {
                                    "type": "boolean"
                                  },
                                  "closed": {
                                    "type": "boolean"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "neighbourhood",
                                  "neighbourhoodSlug",
                                  "categories",
                                  "groupLabel",
                                  "sponsored",
                                  "closed",
                                  "url"
                                ]
                              },
                              {
                                "$ref": "#/components/schemas/Business"
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "distanceKm": 0,
                          "neighbourhood": "string",
                          "neighbourhoodSlug": "string",
                          "categories": [
                            {
                              "slug": "string",
                              "label": "string"
                            }
                          ],
                          "groupLabel": "string",
                          "sponsored": false,
                          "closed": false,
                          "url": "https://city.example/business/example-business/",
                          "slug": "example-business-ltd",
                          "publicSlug": "example-business",
                          "path": "/business/example-business/",
                          "name": "Example business (fictional)",
                          "updatedAt": "2026-01-01T00:00:00.000Z",
                          "source": "Example licensed directory",
                          "phone": null,
                          "website": null
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/businesses",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/businesses/changes": {
      "get": {
        "operationId": "get-businesses-changes",
        "tags": [
          "Directory"
        ],
        "summary": "Listings added, changed or removed since a date (incremental sync)",
        "description": "Oldest change first. Removed listings (closed, hidden, or gone from the sources) come back as `{ slug, status: \"removed\", updatedAt }` so a copy can drop them. Store `meta.updatedAt` and pass it as `since` next time.\n\nExample: `/api/v1/businesses/changes?since=2026-09-01&limit=5`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": true,
            "description": "ISO date or date-time.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-09-01"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "slug": {
                                    "type": "string"
                                  },
                                  "status": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "slug",
                                  "status",
                                  "updatedAt"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string"
                                  },
                                  "distanceKm": {
                                    "type": "number"
                                  },
                                  "neighbourhood": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "neighbourhoodSlug": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "categories": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "slug": {
                                          "type": "string"
                                        },
                                        "label": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "slug",
                                        "label"
                                      ]
                                    }
                                  },
                                  "groupLabel": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sponsored": {
                                    "type": "boolean"
                                  },
                                  "closed": {
                                    "type": "boolean"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "null"
                                  },
                                  "updatedAt": {
                                    "type": "null"
                                  }
                                },
                                "required": [
                                  "status",
                                  "neighbourhood",
                                  "neighbourhoodSlug",
                                  "categories",
                                  "groupLabel",
                                  "sponsored",
                                  "closed",
                                  "url"
                                ]
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "status": "string",
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/businesses/changes",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/businesses/new": {
      "get": {
        "operationId": "get-businesses-new",
        "tags": [
          "Directory"
        ],
        "summary": "New in town: businesses that opened recently (new City business licences), newest first",
        "description": "Directory listings whose City business licence was issued in the window: a licence period that starts on a day other than 1 January (renewals start on 1 January), or a licence first seen by the nightly import. `since` is that date, `licensedFrom` the licence start. Out-of-town contractors are left out unless `outOfTown=true`.\n\nExample: `/api/v1/businesses/new?days=90&limit=5`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "Window in days, 1 to 730 (default 365).",
            "schema": {
              "type": "integer",
              "examples": [
                90
              ]
            }
          },
          {
            "name": "group",
            "in": "query",
            "required": false,
            "description": "Group slug (see /groups).",
            "schema": {
              "type": "string",
              "examples": [
                "food-drink"
              ]
            }
          },
          {
            "name": "outOfTown",
            "in": "query",
            "required": false,
            "description": "Include out-of-town contractors licensed to work in the city.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ slug, name, group, groupLabel, categories, area, community, tagline, url, licensedFrom, firstSeen, since, homeBased }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "group": {
                                "type": "string"
                              },
                              "groupLabel": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "categories": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "area": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "community": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "tagline": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": "string"
                              },
                              "licensedFrom": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "since": {
                                "type": "string"
                              },
                              "outOfTown": {
                                "type": "boolean"
                              },
                              "homeBased": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "slug",
                              "name",
                              "group",
                              "groupLabel",
                              "categories",
                              "area",
                              "community",
                              "tagline",
                              "url",
                              "licensedFrom",
                              "firstSeen",
                              "since",
                              "outOfTown",
                              "homeBased"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "name": "string",
                          "group": "string",
                          "groupLabel": "string",
                          "categories": [
                            "string"
                          ],
                          "area": "string",
                          "community": "string",
                          "tagline": "string",
                          "url": "https://example.org/",
                          "licensedFrom": "string",
                          "firstSeen": "string",
                          "since": "2026-01-01T00:00:00Z",
                          "outOfTown": false,
                          "homeBased": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/businesses/new",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/businesses/{slug}": {
      "get": {
        "operationId": "get-businesses-slug",
        "tags": [
          "Directory"
        ],
        "summary": "One business, with categories, awards and similar businesses",
        "description": "Closed listings are left out of every list but still answer here with `closed: true` and `closure` (state, source: google | licence | manual, since, checkedAt): only the derived fact, never Google Places data.\n\nExample: `/api/v1/businesses/camelot-restaurant`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Business slug (`slug`), or the public slug of its page address (`publicSlug`, the last segment of `url`).",
            "schema": {
              "type": "string",
              "examples": [
                "camelot-restaurant"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "awards": {
                                  "type": "array",
                                  "items": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  }
                                },
                                "similar": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "slug": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "slug",
                                      "name",
                                      "url"
                                    ]
                                  }
                                },
                                "distanceKm": {
                                  "type": "number"
                                },
                                "neighbourhood": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "neighbourhoodSlug": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "categories": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "slug": {
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "slug",
                                      "label"
                                    ]
                                  }
                                },
                                "groupLabel": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "sponsored": {
                                  "type": "boolean"
                                },
                                "closed": {
                                  "type": "boolean"
                                },
                                "url": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "awards",
                                "similar",
                                "neighbourhood",
                                "neighbourhoodSlug",
                                "categories",
                                "groupLabel",
                                "sponsored",
                                "closed",
                                "url"
                              ]
                            },
                            {
                              "$ref": "#/components/schemas/Business"
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "awards": [
                          null
                        ],
                        "similar": [
                          {
                            "slug": "string",
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "distanceKm": 0,
                        "neighbourhood": "string",
                        "neighbourhoodSlug": "string",
                        "categories": [
                          {
                            "slug": "string",
                            "label": "string"
                          }
                        ],
                        "groupLabel": "string",
                        "sponsored": false,
                        "closed": false,
                        "url": "https://city.example/business/example-business/",
                        "slug": "example-business-ltd",
                        "publicSlug": "example-business",
                        "path": "/business/example-business/",
                        "name": "Example business (fictional)",
                        "updatedAt": "2026-01-01T00:00:00.000Z",
                        "source": "Example licensed directory",
                        "phone": null,
                        "website": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/businesses/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/categories": {
      "get": {
        "operationId": "get-categories",
        "tags": [
          "Directory"
        ],
        "summary": "Business categories with counts",
        "description": "Example: `/api/v1/categories`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "group",
            "in": "query",
            "required": false,
            "description": "Only categories in this group.",
            "schema": {
              "type": "string",
              "examples": [
                "food-drink"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search on the label.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "groupLabel": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "group": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "groupLabel",
                              "url",
                              "api",
                              "slug",
                              "group",
                              "label",
                              "title",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "groupLabel": "string",
                          "url": "https://example.org/",
                          "api": "https://example.org/",
                          "slug": "string",
                          "group": "string",
                          "label": "string",
                          "title": "string",
                          "count": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/categories",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/categories/{slug}": {
      "get": {
        "operationId": "get-categories-slug",
        "tags": [
          "Directory"
        ],
        "summary": "One category: its guide copy (intro, tips, FAQ) and its businesses",
        "description": "Example: `/api/v1/categories/restaurants?businesses=3`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Category slug.",
            "schema": {
              "type": "string",
              "examples": [
                "restaurants"
              ]
            }
          },
          {
            "name": "businesses",
            "in": "query",
            "required": false,
            "description": "How many businesses to embed (default 25, max 500; 0 for none).",
            "schema": {
              "type": "integer",
              "examples": [
                5
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "copy": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "h1": {
                                      "type": "string"
                                    },
                                    "metaDescription": {
                                      "type": "string"
                                    },
                                    "intro": {
                                      "type": "string"
                                    },
                                    "tips": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "faq": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "q": {
                                            "type": "string"
                                          },
                                          "a": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "q",
                                          "a"
                                        ]
                                      }
                                    }
                                  }
                                }
                              ]
                            },
                            "businessCount": {
                              "type": "number"
                            },
                            "businesses": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "distanceKm": {
                                    "type": "number"
                                  },
                                  "neighbourhood": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "neighbourhoodSlug": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "categories": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "slug": {
                                          "type": "string"
                                        },
                                        "label": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "slug",
                                        "label"
                                      ]
                                    }
                                  },
                                  "groupLabel": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sponsored": {
                                    "type": "boolean"
                                  },
                                  "closed": {
                                    "type": "boolean"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "neighbourhood",
                                  "neighbourhoodSlug",
                                  "categories",
                                  "groupLabel",
                                  "sponsored",
                                  "closed",
                                  "url"
                                ]
                              }
                            },
                            "groupLabel": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "url": {
                              "type": "string"
                            },
                            "api": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "group": {
                              "type": "string"
                            },
                            "label": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "count": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "copy",
                            "businessCount",
                            "businesses",
                            "groupLabel",
                            "url",
                            "api",
                            "slug",
                            "group",
                            "label",
                            "title",
                            "count"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "copy": {
                          "h1": "string",
                          "metaDescription": "string",
                          "intro": "string",
                          "tips": [
                            "string"
                          ],
                          "faq": [
                            {
                              "q": "string",
                              "a": "string"
                            }
                          ]
                        },
                        "businessCount": 0,
                        "businesses": [
                          {
                            "distanceKm": 0,
                            "neighbourhood": "string",
                            "neighbourhoodSlug": "string",
                            "categories": [
                              {
                                "slug": "string",
                                "label": "string"
                              }
                            ],
                            "groupLabel": "string",
                            "sponsored": false,
                            "closed": false,
                            "url": "https://example.org/"
                          }
                        ],
                        "groupLabel": "string",
                        "url": "https://example.org/",
                        "api": "https://example.org/",
                        "slug": "string",
                        "group": "string",
                        "label": "string",
                        "title": "string",
                        "count": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/categories/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/groups": {
      "get": {
        "operationId": "get-groups",
        "tags": [
          "Directory"
        ],
        "summary": "Top-level business groups (Food & Drink, Health, Trades…)",
        "description": "Example: `/api/v1/groups`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string"
                              },
                              "categories": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "slug": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "icon": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "url",
                              "categories",
                              "slug",
                              "label",
                              "icon",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "url": "https://example.org/",
                          "categories": [
                            "string"
                          ],
                          "slug": "string",
                          "label": "string",
                          "icon": "string",
                          "count": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/groups",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/groups/{slug}": {
      "get": {
        "operationId": "get-groups-slug",
        "tags": [
          "Directory"
        ],
        "summary": "One group with its categories",
        "description": "Example: `/api/v1/groups/food-drink`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Group slug.",
            "schema": {
              "type": "string",
              "examples": [
                "food-drink"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "categories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "groupLabel": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "count": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "groupLabel",
                                  "url",
                                  "api",
                                  "slug",
                                  "group",
                                  "label",
                                  "title",
                                  "count"
                                ]
                              }
                            },
                            "url": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "label": {
                              "type": "string"
                            },
                            "icon": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "count": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "categories",
                            "url",
                            "slug",
                            "label",
                            "icon",
                            "count"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "categories": [
                          {
                            "groupLabel": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/",
                            "slug": "string",
                            "group": "string",
                            "label": "string",
                            "title": "string",
                            "count": 0
                          }
                        ],
                        "url": "https://example.org/",
                        "slug": "string",
                        "label": "string",
                        "icon": "string",
                        "count": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/groups/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/neighbourhoods": {
      "get": {
        "operationId": "get-neighbourhoods",
        "tags": [
          "Neighbourhoods"
        ],
        "summary": "The 31 City-mapped neighbourhoods (communities) with area, centre and counts",
        "description": "Example: `/api/v1/neighbourhoods`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "areaKm2": {
                                "type": "number"
                              },
                              "center": {
                                "type": "object",
                                "properties": {
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "lat",
                                  "lng"
                                ]
                              },
                              "businesses": {
                                "type": "number"
                              },
                              "url": {
                                "type": "string"
                              },
                              "geojson": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "slug",
                              "name",
                              "areaKm2",
                              "center",
                              "businesses",
                              "url",
                              "geojson"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "name": "string",
                          "areaKm2": 0,
                          "center": {
                            "lat": 0,
                            "lng": 0
                          },
                          "businesses": 0,
                          "url": "https://example.org/",
                          "geojson": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/neighbourhoods",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/neighbourhoods/geojson": {
      "get": {
        "operationId": "get-neighbourhoods-geojson",
        "tags": [
          "Neighbourhoods"
        ],
        "summary": "All neighbourhood boundaries as GeoJSON",
        "description": "Example: `/api/v1/neighbourhoods/geojson`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string"
                            },
                            "features": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/JsonValue"
                              }
                            }
                          },
                          "required": [
                            "type",
                            "features"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "type": "string",
                        "features": [
                          null
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/neighbourhoods/geojson",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/neighbourhoods/lookup": {
      "get": {
        "operationId": "get-neighbourhoods-lookup",
        "tags": [
          "Neighbourhoods"
        ],
        "summary": "Which neighbourhood contains a point",
        "description": "Example: `/api/v1/neighbourhoods/lookup?lat=53.9171&lng=-122.7497`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "description": "Latitude.",
            "schema": {
              "type": "number",
              "examples": [
                53.9171
              ]
            }
          },
          {
            "name": "lng",
            "in": "query",
            "required": true,
            "description": "Longitude.",
            "schema": {
              "type": "number",
              "examples": [
                -122.7497
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                },
                                "api": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "slug",
                                "name",
                                "url",
                                "api"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "slug": "string",
                        "name": "string",
                        "url": "https://example.org/",
                        "api": "https://example.org/"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/neighbourhoods/lookup",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/neighbourhoods/aliases": {
      "get": {
        "operationId": "get-neighbourhoods-aliases",
        "tags": [
          "Neighbourhoods"
        ],
        "summary": "Subdivision and local area names (Southridge, Highland Park, the Hart) and the City neighbourhoods they are in",
        "description": "Each name with its kind (subdivision, local name, outside the city), the neighbourhood slugs it belongs to (empty = outside city limits) and a note. `q` finds a name (exact first, then prefix, then contains). Compiled from published subdivision lists placed in the City’s community boundaries; correctable in the admin (dataset `neighbourhood-aliases`).\n\nExample: `/api/v1/neighbourhoods/aliases`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "A place name.",
            "schema": {
              "type": "string",
              "examples": [
                "Southridge"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ name, kind, neighbourhoods: [{ slug, name, url }], outsideCity, note, source }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "neighbourhoods": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "slug": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "slug",
                                    "name",
                                    "url"
                                  ]
                                }
                              },
                              "outsideCity": {
                                "type": "boolean"
                              },
                              "note": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "label",
                                      "url"
                                    ]
                                  }
                                ]
                              }
                            },
                            "required": [
                              "name",
                              "kind",
                              "neighbourhoods",
                              "outsideCity",
                              "note",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "name": "string",
                          "kind": "string",
                          "neighbourhoods": [
                            {
                              "slug": "string",
                              "name": "string",
                              "url": "https://example.org/"
                            }
                          ],
                          "outsideCity": false,
                          "note": "string",
                          "source": {
                            "id": "string",
                            "label": "string",
                            "url": "https://example.org/"
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/neighbourhoods/aliases",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/neighbourhoods/{slug}": {
      "get": {
        "operationId": "get-neighbourhoods-slug",
        "tags": [
          "Neighbourhoods"
        ],
        "summary": "One neighbourhood: area, property-crime summary and top businesses",
        "description": "Example: `/api/v1/neighbourhoods/downtown`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Neighbourhood slug.",
            "schema": {
              "type": "string",
              "examples": [
                "downtown"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "areaKm2": {
                              "type": "number"
                            },
                            "center": {
                              "type": "object",
                              "properties": {
                                "lat": {
                                  "type": "number"
                                },
                                "lng": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "lat",
                                "lng"
                              ]
                            },
                            "url": {
                              "type": "string"
                            },
                            "crime": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "months": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "byMonth": {
                                      "type": "object",
                                      "properties": {
                                        "theft": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "fromauto": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "mischief": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "bne": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "auto": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "bike": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        }
                                      },
                                      "required": [
                                        "theft",
                                        "fromauto",
                                        "mischief",
                                        "bne",
                                        "auto",
                                        "bike"
                                      ]
                                    },
                                    "last12": {
                                      "type": "number"
                                    },
                                    "prev12": {
                                      "type": "number"
                                    },
                                    "byType12": {
                                      "type": "object",
                                      "properties": {
                                        "theft": {
                                          "type": "number"
                                        },
                                        "fromauto": {
                                          "type": "number"
                                        },
                                        "mischief": {
                                          "type": "number"
                                        },
                                        "bne": {
                                          "type": "number"
                                        },
                                        "auto": {
                                          "type": "number"
                                        },
                                        "bike": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "theft",
                                        "fromauto",
                                        "mischief",
                                        "bne",
                                        "auto",
                                        "bike"
                                      ]
                                    },
                                    "byCommunity12": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string"
                                          },
                                          "count": {
                                            "type": "number"
                                          },
                                          "perKm2": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "name",
                                          "count",
                                          "perKm2"
                                        ]
                                      }
                                    },
                                    "byYear": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "count": {
                                            "type": "number"
                                          },
                                          "partial": {
                                            "type": "boolean"
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "count",
                                          "partial"
                                        ]
                                      }
                                    },
                                    "byHour": {
                                      "type": "array",
                                      "items": {
                                        "type": "number"
                                      }
                                    },
                                    "byWeekday": {
                                      "type": "array",
                                      "items": {
                                        "type": "number"
                                      }
                                    },
                                    "periodLabel": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "months",
                                    "byMonth",
                                    "last12",
                                    "prev12",
                                    "byType12",
                                    "byCommunity12",
                                    "byYear",
                                    "byHour",
                                    "byWeekday",
                                    "periodLabel"
                                  ]
                                }
                              ]
                            },
                            "businessCount": {
                              "type": "number"
                            },
                            "topCategories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "slug": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "count": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "slug",
                                  "label",
                                  "count"
                                ]
                              }
                            },
                            "businesses": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "street": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "slug",
                                  "name",
                                  "category",
                                  "street",
                                  "url"
                                ]
                              }
                            },
                            "businessesApi": {
                              "type": "string"
                            },
                            "geojson": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "slug",
                            "name",
                            "areaKm2",
                            "center",
                            "url",
                            "crime",
                            "businessCount",
                            "topCategories",
                            "businesses",
                            "businessesApi",
                            "geojson"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "slug": "string",
                        "name": "string",
                        "areaKm2": 0,
                        "center": {
                          "lat": 0,
                          "lng": 0
                        },
                        "url": "https://example.org/",
                        "crime": {
                          "months": [
                            "string"
                          ],
                          "byMonth": {
                            "theft": [
                              0
                            ],
                            "fromauto": [
                              0
                            ],
                            "mischief": [
                              0
                            ],
                            "bne": [
                              0
                            ],
                            "auto": [
                              0
                            ],
                            "bike": [
                              0
                            ]
                          },
                          "last12": 0,
                          "prev12": 0,
                          "byType12": {
                            "theft": 0,
                            "fromauto": 0,
                            "mischief": 0,
                            "bne": 0,
                            "auto": 0,
                            "bike": 0
                          },
                          "byCommunity12": [
                            {
                              "name": "string",
                              "count": 0,
                              "perKm2": 0
                            }
                          ],
                          "byYear": [
                            {
                              "year": 0,
                              "count": 0,
                              "partial": false
                            }
                          ],
                          "byHour": [
                            0
                          ],
                          "byWeekday": [
                            0
                          ],
                          "periodLabel": "string"
                        },
                        "businessCount": 0,
                        "topCategories": [
                          {
                            "slug": "string",
                            "label": "string",
                            "count": 0
                          }
                        ],
                        "businesses": [
                          {
                            "slug": "string",
                            "name": "string",
                            "category": "string",
                            "street": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "businessesApi": "string",
                        "geojson": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/neighbourhoods/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/neighbourhoods/{slug}/geojson": {
      "get": {
        "operationId": "get-neighbourhoods-slug-geojson",
        "tags": [
          "Neighbourhoods"
        ],
        "summary": "One neighbourhood boundary as a GeoJSON Feature",
        "description": "Example: `/api/v1/neighbourhoods/downtown/geojson`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Neighbourhood slug.",
            "schema": {
              "type": "string",
              "examples": [
                "downtown"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string"
                            },
                            "features": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/JsonValue"
                              }
                            }
                          },
                          "required": [
                            "type",
                            "features"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "type": "string",
                        "features": [
                          null
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/neighbourhoods/{slug}/geojson",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/food/places": {
      "get": {
        "operationId": "get-food-places",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "Places to eat and drink, tagged by cuisine",
        "description": "Every food and drink listing from the directory with cuisine tags derived from the listing text (no rankings). `chain` marks national chains.\n\nExample: `/api/v1/food/places?cuisine=coffee&independent=true&limit=3`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "cuisine",
            "in": "query",
            "required": false,
            "description": "Cuisine id (see /food/cuisines).",
            "schema": {
              "type": "string",
              "examples": [
                "coffee"
              ]
            }
          },
          {
            "name": "independent",
            "in": "query",
            "required": false,
            "description": "Exclude chains.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "tagline": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "cuisines": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "chain": {
                                "type": "boolean"
                              },
                              "category": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "street": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "neighbourhood": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "slug",
                              "name",
                              "tagline",
                              "cuisines",
                              "chain",
                              "category",
                              "street",
                              "neighbourhood",
                              "phone",
                              "website",
                              "lat",
                              "lng",
                              "url"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "name": "string",
                          "tagline": "string",
                          "cuisines": [
                            "string"
                          ],
                          "chain": false,
                          "category": "string",
                          "street": "string",
                          "neighbourhood": "string",
                          "phone": "string",
                          "website": "https://example.org/",
                          "lat": 0,
                          "lng": 0,
                          "url": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/food/places",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/food/cuisines": {
      "get": {
        "operationId": "get-food-cuisines",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "Cuisine tags used by /food/places, with counts",
        "description": "Example: `/api/v1/food/cuisines`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "id",
                              "label",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "label": "string",
                          "count": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/food/cuisines",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/food/late-night": {
      "get": {
        "operationId": "get-food-late-night",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "Late-night and 24-hour food, with published hours",
        "description": "Hand-checked list of places serving food late, with opening hours as published by each place (`hours` uses day keys su..sa, values like \"07:00-02:00\" or \"24h\").\n\nExample: `/api/v1/food/late-night`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "checked": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "groups": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "icon",
                                  "c"
                                ]
                              }
                            },
                            "places": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "street": {
                                    "type": "string"
                                  },
                                  "area": {
                                    "type": "string"
                                  },
                                  "href": {
                                    "type": "string"
                                  },
                                  "key": {
                                    "type": [
                                      "null",
                                      "string"
                                    ],
                                    "description": "The directory listing's internal key (Places ratings are keyed by it), or null."
                                  },
                                  "external": {
                                    "type": "boolean"
                                  },
                                  "site": {
                                    "type": "string"
                                  },
                                  "hours": {
                                    "type": "object",
                                    "properties": {
                                      "all": {
                                        "type": "string"
                                      },
                                      "th": {
                                        "type": "string"
                                      },
                                      "su": {
                                        "type": "string"
                                      },
                                      "mo": {
                                        "type": "string"
                                      },
                                      "tu": {
                                        "type": "string"
                                      },
                                      "we": {
                                        "type": "string"
                                      },
                                      "fr": {
                                        "type": "string"
                                      },
                                      "sa": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "drive": {
                                    "type": "object",
                                    "properties": {
                                      "all": {
                                        "type": "string"
                                      },
                                      "th": {
                                        "type": "string"
                                      },
                                      "su": {
                                        "type": "string"
                                      },
                                      "mo": {
                                        "type": "string"
                                      },
                                      "tu": {
                                        "type": "string"
                                      },
                                      "we": {
                                        "type": "string"
                                      },
                                      "fr": {
                                        "type": "string"
                                      },
                                      "sa": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "hoursText": {
                                    "type": "string"
                                  },
                                  "driveText": {
                                    "type": "string"
                                  },
                                  "allDay": {
                                    "type": "boolean"
                                  },
                                  "driveAllDay": {
                                    "type": "boolean"
                                  },
                                  "driveThru": {
                                    "type": "boolean"
                                  },
                                  "line": {
                                    "type": "string"
                                  },
                                  "note": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceNote": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "group",
                                  "street",
                                  "href",
                                  "key",
                                  "external",
                                  "site",
                                  "hours",
                                  "hoursText",
                                  "allDay",
                                  "driveAllDay",
                                  "driveThru",
                                  "source"
                                ]
                              }
                            }
                          },
                          "required": [
                            "checked",
                            "groups",
                            "places"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "checked": "string",
                        "groups": [
                          {
                            "id": "string",
                            "label": "string",
                            "icon": "string",
                            "c": "string"
                          }
                        ],
                        "places": [
                          {
                            "id": "string",
                            "name": "string",
                            "group": "string",
                            "street": "string",
                            "area": "string",
                            "href": "https://example.org/",
                            "key": "string",
                            "external": false,
                            "site": "string",
                            "hours": {
                              "all": "string",
                              "th": "string",
                              "su": "string",
                              "mo": "string",
                              "tu": "string",
                              "we": "string",
                              "fr": "string",
                              "sa": "string"
                            },
                            "drive": {
                              "all": "string",
                              "th": "string",
                              "su": "string",
                              "mo": "string",
                              "tu": "string",
                              "we": "string",
                              "fr": "string",
                              "sa": "string"
                            },
                            "hoursText": "string",
                            "driveText": "string",
                            "allDay": false,
                            "driveAllDay": false,
                            "driveThru": false,
                            "line": "string",
                            "note": "string",
                            "source": "string",
                            "sourceNote": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/food/late-night",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/now": {
      "get": {
        "operationId": "get-now",
        "tags": [
          "Live conditions"
        ],
        "summary": "Prince George right now: one call for weather, air, river, fire, power, roads, aurora and sun",
        "description": "Each part fails independently; a missing part is null and named in `meta.unavailable`.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/now`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "weather": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "temp": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "feelsLike": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "feelsKind": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "string",
                                          "const": "humidex"
                                        },
                                        {
                                          "type": "string",
                                          "const": "wind chill"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "type": "string"
                                    },
                                    "windKmh": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "high": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "low": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "alerts": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "observedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "temp",
                                    "feelsLike",
                                    "feelsKind",
                                    "condition",
                                    "windKmh",
                                    "high",
                                    "low",
                                    "alerts",
                                    "observedAt"
                                  ]
                                }
                              ]
                            },
                            "air": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "aqhi": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "observedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "usAqi": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "pm25": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "aqhi",
                                    "observedAt",
                                    "usAqi",
                                    "pm25"
                                  ]
                                }
                              ]
                            },
                            "rivers": {
                              "anyOf": [
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "level": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "discharge": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "change24h": {
                                        "type": "object",
                                        "properties": {
                                          "level": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "discharge": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "level",
                                          "discharge"
                                        ]
                                      },
                                      "t": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "name",
                                      "level",
                                      "discharge",
                                      "change24h",
                                      "t"
                                    ]
                                  }
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "wildfire": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "active": {
                                      "type": "number"
                                    },
                                    "danger": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "evacuations": {
                                      "type": "number"
                                    },
                                    "nearest": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string"
                                            },
                                            "distanceKm": {
                                              "type": "number"
                                            },
                                            "sizeHa": {
                                              "type": "number"
                                            }
                                          },
                                          "required": [
                                            "name",
                                            "distanceKm",
                                            "sizeHa"
                                          ]
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "active",
                                    "danger",
                                    "evacuations",
                                    "nearest"
                                  ]
                                }
                              ]
                            },
                            "outages": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "count": {
                                      "type": "number"
                                    },
                                    "customers": {
                                      "type": "number"
                                    },
                                    "radiusKm": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "count",
                                    "customers",
                                    "radiusKm"
                                  ]
                                }
                              ]
                            },
                            "roads": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "count": {
                                      "type": "number"
                                    },
                                    "major": {
                                      "type": "number"
                                    },
                                    "radiusKm": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "count",
                                    "major",
                                    "radiusKm"
                                  ]
                                }
                              ]
                            },
                            "aurora": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "kp": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "maxNext24": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "kp",
                                    "maxNext24"
                                  ]
                                }
                              ]
                            },
                            "sun": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "sunrise": {
                                      "type": "string"
                                    },
                                    "sunset": {
                                      "type": "string"
                                    },
                                    "daylightH": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "sunrise",
                                    "sunset",
                                    "daylightH"
                                  ]
                                }
                              ]
                            }
                          },
                          "required": [
                            "weather",
                            "air",
                            "rivers",
                            "wildfire",
                            "outages",
                            "roads",
                            "aurora",
                            "sun"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "weather": {
                          "temp": 0,
                          "feelsLike": 0,
                          "feelsKind": "humidex",
                          "condition": "string",
                          "windKmh": 0,
                          "high": 0,
                          "low": 0,
                          "alerts": [
                            "string"
                          ],
                          "observedAt": "2026-01-01T00:00:00Z"
                        },
                        "air": {
                          "aqhi": 0,
                          "observedAt": "2026-01-01T00:00:00Z",
                          "usAqi": 0,
                          "pm25": 0
                        },
                        "rivers": [
                          {
                            "id": "string",
                            "name": "string",
                            "level": 0,
                            "discharge": 0,
                            "change24h": {
                              "level": 0,
                              "discharge": 0
                            },
                            "t": "string"
                          }
                        ],
                        "wildfire": {
                          "active": 0,
                          "danger": "string",
                          "evacuations": 0,
                          "nearest": {
                            "name": "string",
                            "distanceKm": 0,
                            "sizeHa": 0
                          }
                        },
                        "outages": {
                          "count": 0,
                          "customers": 0,
                          "radiusKm": 0
                        },
                        "roads": {
                          "count": 0,
                          "major": 0,
                          "radiusKm": 0
                        },
                        "aurora": {
                          "kp": 0,
                          "maxNext24": 0
                        },
                        "sun": {
                          "sunrise": "string",
                          "sunset": "string",
                          "daylightH": 0
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/now",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather": {
      "get": {
        "operationId": "get-weather",
        "tags": [
          "Weather"
        ],
        "summary": "Full weather payload: now, official ECCC forecast, today, yesterday, model hourly and daily, normals, alerts, almanac",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "now": {
                              "type": "object",
                              "properties": {
                                "temp": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "feelsLike": {
                                  "type": [
                                    "null",
                                    "number"
                                  ],
                                  "description": "The wind chill (at or below 0 °C with wind of 5 km/h or more) or humidex (20 °C or warmer, humidex 25 or more); otherwise the air temperature."
                                },
                                "feelsKind": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "humidex"
                                    },
                                    {
                                      "type": "string",
                                      "const": "wind chill"
                                    }
                                  ],
                                  "description": "Which index `feelsLike` is: 'wind chill', 'humidex', or null when it is just the air temperature."
                                },
                                "humidity": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "dewpoint": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "code": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "isDay": {
                                  "type": "boolean"
                                },
                                "condition": {
                                  "type": "string"
                                },
                                "icon": {
                                  "type": "string"
                                },
                                "windKmh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "windDir": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "gustKmh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ],
                                  "description": "Observed gust only (city page XML or the airport METAR); null when no gust was reported."
                                },
                                "gustSource": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ECCC"
                                    },
                                    {
                                      "type": "string",
                                      "const": "METAR"
                                    }
                                  ]
                                },
                                "modelGustKmh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ],
                                  "description": "Open-Meteo's gust for the current hour: a forecast, never an observation."
                                },
                                "pressureKpa": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "pressureTrend": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "falling"
                                    },
                                    {
                                      "type": "string",
                                      "const": "rising"
                                    },
                                    {
                                      "type": "string",
                                      "const": "steady"
                                    }
                                  ]
                                },
                                "pressureChangeKpa": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "visibilityKm": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "fog": {
                                  "type": "boolean",
                                  "description": "Visibility under 1 km or fog reported by the airport."
                                },
                                "presentWeather": {
                                  "type": [
                                    "null",
                                    "string"
                                  ],
                                  "description": "Present weather from the airport METAR in plain words (\"fog\", \"light snow\"), when reported."
                                },
                                "uv": {
                                  "type": [
                                    "null",
                                    "number"
                                  ],
                                  "description": "Model UV index for the current hour."
                                },
                                "cloud": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "observedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "station": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "temp",
                                "feelsLike",
                                "feelsKind",
                                "humidity",
                                "dewpoint",
                                "code",
                                "isDay",
                                "condition",
                                "icon",
                                "windKmh",
                                "windDir",
                                "gustKmh",
                                "gustSource",
                                "modelGustKmh",
                                "pressureKpa",
                                "pressureTrend",
                                "pressureChangeKpa",
                                "visibilityKm",
                                "fog",
                                "presentWeather",
                                "uv",
                                "cloud",
                                "observedAt",
                                "station"
                              ]
                            },
                            "official": {
                              "type": "object",
                              "properties": {
                                "issued": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "hourlyIssued": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "periods": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "summary": {
                                        "type": "string"
                                      },
                                      "short": {
                                        "type": "string"
                                      },
                                      "icon": {
                                        "type": "string"
                                      },
                                      "night": {
                                        "type": "boolean"
                                      },
                                      "high": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "low": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "pop": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "uv": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "summary",
                                      "short",
                                      "icon",
                                      "night",
                                      "high",
                                      "low",
                                      "pop",
                                      "uv"
                                    ]
                                  }
                                },
                                "hourly": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "string"
                                      },
                                      "temp": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "condition": {
                                        "type": "string"
                                      },
                                      "icon": {
                                        "type": "string"
                                      },
                                      "pop": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "windKmh": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "windDir": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "gustKmh": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "uv": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "isDay": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "temp",
                                      "condition",
                                      "icon",
                                      "pop",
                                      "windKmh",
                                      "windDir",
                                      "gustKmh",
                                      "uv",
                                      "isDay"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "issued",
                                "hourlyIssued",
                                "periods",
                                "hourly"
                              ],
                              "description": "Environment Canada's own forecast: periods (today/tonight/...) and the 24-hour hourly forecast."
                            },
                            "today": {
                              "type": "object",
                              "properties": {
                                "observedHigh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "observedLow": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "observedPrecipMm": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "mode": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "day"
                                    },
                                    {
                                      "type": "string",
                                      "const": "night"
                                    }
                                  ],
                                  "description": "'day' while ECCC's first period is today; 'night' once it is tonight."
                                },
                                "forecastHigh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "tonightLow": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "tomorrowHigh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "tomorrowName": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "high": {
                                  "type": [
                                    "null",
                                    "number"
                                  ],
                                  "description": "Best single high/low for today: observed extremes so far, with ECCC's daytime high while the day is still ahead."
                                },
                                "low": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                }
                              },
                              "required": [
                                "observedHigh",
                                "observedLow",
                                "observedPrecipMm",
                                "mode",
                                "forecastHigh",
                                "tonightLow",
                                "tomorrowHigh",
                                "tomorrowName",
                                "high",
                                "low"
                              ],
                              "description": "Today at a glance: observed so far, ECCC's forecast for the rest of the day, the normal."
                            },
                            "yesterday": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "high": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "low": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "precipMm": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "precipTrace": {
                                      "type": "boolean"
                                    },
                                    "gustKmh": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "gustDir": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "high",
                                    "low",
                                    "precipMm",
                                    "precipTrace",
                                    "gustKmh",
                                    "gustDir"
                                  ]
                                }
                              ]
                            },
                            "hourly": {
                              "type": "object",
                              "properties": {
                                "time": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "temp": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "feels": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "pop": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "precip": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "code": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "wind": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "gust": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "dir": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "uv": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "isDay": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                }
                              },
                              "required": [
                                "time",
                                "temp",
                                "feels",
                                "pop",
                                "precip",
                                "code",
                                "wind",
                                "gust",
                                "dir",
                                "uv",
                                "isDay"
                              ]
                            },
                            "daily": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "date": {
                                    "type": "string"
                                  },
                                  "code": {
                                    "type": "number"
                                  },
                                  "max": {
                                    "type": "number"
                                  },
                                  "min": {
                                    "type": "number"
                                  },
                                  "precip": {
                                    "type": "number"
                                  },
                                  "pop": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "snow": {
                                    "type": "number"
                                  },
                                  "wind": {
                                    "type": "number"
                                  },
                                  "gust": {
                                    "type": "number"
                                  },
                                  "dir": {
                                    "type": "number"
                                  },
                                  "uv": {
                                    "type": "number"
                                  },
                                  "sunshineH": {
                                    "type": "number"
                                  },
                                  "daylightH": {
                                    "type": "number"
                                  },
                                  "sunrise": {
                                    "type": "string"
                                  },
                                  "sunset": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "date",
                                  "code",
                                  "max",
                                  "min",
                                  "precip",
                                  "pop",
                                  "snow",
                                  "wind",
                                  "gust",
                                  "dir",
                                  "uv",
                                  "sunshineH",
                                  "daylightH",
                                  "sunrise",
                                  "sunset"
                                ]
                              }
                            },
                            "textForecast": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "summary"
                                ]
                              }
                            },
                            "normals": {
                              "type": "object",
                              "properties": {
                                "high": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "low": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                }
                              },
                              "required": [
                                "high",
                                "low"
                              ]
                            },
                            "alerts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "title": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  },
                                  "text": {
                                    "type": "string"
                                  },
                                  "issued": {
                                    "type": "string"
                                  },
                                  "expires": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "title",
                                  "type",
                                  "text",
                                  "issued",
                                  "expires"
                                ]
                              }
                            },
                            "sun": {
                              "type": "object",
                              "properties": {
                                "sunrise": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "sunset": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "sunrise",
                                "sunset"
                              ]
                            },
                            "almanac": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "date": {
                                      "type": "string"
                                    },
                                    "records": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "high": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "highYear": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "low": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "lowYear": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "coldestHigh": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "coldestHighYear": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "warmestLow": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "warmestLowYear": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "precipMm": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "precipYear": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "snowCm": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "snowYear": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            },
                                            "since": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            },
                                            "source": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            },
                                            "sourceUrl": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            }
                                          },
                                          "required": [
                                            "high",
                                            "highYear",
                                            "low",
                                            "lowYear",
                                            "coldestHigh",
                                            "coldestHighYear",
                                            "warmestLow",
                                            "warmestLowYear",
                                            "precipMm",
                                            "precipYear",
                                            "snowCm",
                                            "snowYear",
                                            "since",
                                            "source",
                                            "sourceUrl"
                                          ]
                                        }
                                      ]
                                    },
                                    "month": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "index": {
                                              "type": "number"
                                            },
                                            "period": {
                                              "type": "string"
                                            },
                                            "station": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            },
                                            "source": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            },
                                            "sourceUrl": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            },
                                            "values": {
                                              "type": "object",
                                              "additionalProperties": {
                                                "type": [
                                                  "null",
                                                  "number"
                                                ]
                                              }
                                            },
                                            "extremes": {
                                              "type": "object",
                                              "additionalProperties": {
                                                "anyOf": [
                                                  {
                                                    "type": "null"
                                                  },
                                                  {
                                                    "type": "object",
                                                    "properties": {
                                                      "value": {
                                                        "type": [
                                                          "null",
                                                          "number"
                                                        ]
                                                      },
                                                      "date": {
                                                        "type": [
                                                          "null",
                                                          "string"
                                                        ]
                                                      },
                                                      "dir": {
                                                        "type": "string"
                                                      }
                                                    },
                                                    "required": [
                                                      "value",
                                                      "date"
                                                    ]
                                                  }
                                                ]
                                              }
                                            }
                                          },
                                          "required": [
                                            "index",
                                            "period",
                                            "station",
                                            "source",
                                            "sourceUrl",
                                            "values",
                                            "extremes"
                                          ]
                                        }
                                      ]
                                    },
                                    "frost": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "lastSpringFrost": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            },
                                            "firstFallFrost": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            },
                                            "frostFreeDays": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            }
                                          },
                                          "required": [
                                            "lastSpringFrost",
                                            "firstFallFrost",
                                            "frostFreeDays"
                                          ]
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "date",
                                    "records",
                                    "month",
                                    "frost"
                                  ]
                                }
                              ],
                              "description": "Records for today's date and the normals for this month (ECCC LTCE records and 1991–2020 normals)."
                            }
                          },
                          "required": [
                            "now",
                            "official",
                            "today",
                            "yesterday",
                            "hourly",
                            "daily",
                            "textForecast",
                            "normals",
                            "alerts",
                            "sun",
                            "almanac"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "now": {
                          "temp": 0,
                          "feelsLike": 0,
                          "feelsKind": "humidex",
                          "humidity": 0,
                          "dewpoint": 0,
                          "code": 0,
                          "isDay": false,
                          "condition": "string",
                          "icon": "string",
                          "windKmh": 0,
                          "windDir": 0,
                          "gustKmh": 0,
                          "gustSource": "ECCC",
                          "modelGustKmh": 0,
                          "pressureKpa": 0,
                          "pressureTrend": "falling",
                          "pressureChangeKpa": 0,
                          "visibilityKm": 0,
                          "fog": false,
                          "presentWeather": "string",
                          "uv": 0,
                          "cloud": 0,
                          "observedAt": "2026-01-01T00:00:00Z",
                          "station": "string"
                        },
                        "official": {
                          "issued": "2026-01-01T00:00:00Z",
                          "hourlyIssued": "string",
                          "periods": [
                            {
                              "name": "string",
                              "summary": "string",
                              "short": "string",
                              "icon": "string",
                              "night": false,
                              "high": 0,
                              "low": 0,
                              "pop": 0,
                              "uv": 0
                            }
                          ],
                          "hourly": [
                            {
                              "t": "string",
                              "temp": 0,
                              "condition": "string",
                              "icon": "string",
                              "pop": 0,
                              "windKmh": 0,
                              "windDir": "string",
                              "gustKmh": 0,
                              "uv": 0,
                              "isDay": false
                            }
                          ]
                        },
                        "today": {
                          "observedHigh": 0,
                          "observedLow": 0,
                          "observedPrecipMm": 0,
                          "mode": "day",
                          "forecastHigh": 0,
                          "tonightLow": 0,
                          "tomorrowHigh": 0,
                          "tomorrowName": "string",
                          "high": 0,
                          "low": 0
                        },
                        "yesterday": {
                          "high": 0,
                          "low": 0,
                          "precipMm": 0,
                          "precipTrace": false,
                          "gustKmh": 0,
                          "gustDir": "string"
                        },
                        "hourly": {
                          "time": [
                            "2026-01-01T00:00:00Z"
                          ],
                          "temp": [
                            0
                          ],
                          "feels": [
                            0
                          ],
                          "pop": [
                            0
                          ],
                          "precip": [
                            0
                          ],
                          "code": [
                            0
                          ],
                          "wind": [
                            0
                          ],
                          "gust": [
                            0
                          ],
                          "dir": [
                            0
                          ],
                          "uv": [
                            0
                          ],
                          "isDay": [
                            0
                          ]
                        },
                        "daily": [
                          {
                            "date": "2026-01-01T00:00:00Z",
                            "code": 0,
                            "max": 0,
                            "min": 0,
                            "precip": 0,
                            "pop": 0,
                            "snow": 0,
                            "wind": 0,
                            "gust": 0,
                            "dir": 0,
                            "uv": 0,
                            "sunshineH": 0,
                            "daylightH": 0,
                            "sunrise": "string",
                            "sunset": "string"
                          }
                        ],
                        "textForecast": [
                          {
                            "name": "string",
                            "summary": "string"
                          }
                        ],
                        "normals": {
                          "high": 0,
                          "low": 0
                        },
                        "alerts": [
                          {
                            "title": "string",
                            "type": "string",
                            "text": "string",
                            "issued": "2026-01-01T00:00:00Z",
                            "expires": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "sun": {
                          "sunrise": "string",
                          "sunset": "string"
                        },
                        "almanac": {
                          "date": "2026-01-01T00:00:00Z",
                          "records": {
                            "high": 0,
                            "highYear": 0,
                            "low": 0,
                            "lowYear": 0,
                            "coldestHigh": 0,
                            "coldestHighYear": 0,
                            "warmestLow": 0,
                            "warmestLowYear": 0,
                            "precipMm": 0,
                            "precipYear": 0,
                            "snowCm": 0,
                            "snowYear": 0,
                            "since": "2026-01-01T00:00:00Z",
                            "source": "string",
                            "sourceUrl": "https://example.org/"
                          },
                          "month": {
                            "index": 0,
                            "period": "string",
                            "station": "string",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "values": {},
                            "extremes": {}
                          },
                          "frost": {
                            "lastSpringFrost": "string",
                            "firstFallFrost": "string",
                            "frostFreeDays": 0
                          }
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/now": {
      "get": {
        "operationId": "get-weather-now",
        "tags": [
          "Weather"
        ],
        "summary": "Current conditions (official observation), today so far and yesterday",
        "description": "`feelsLike` is the wind chill (at or below 0 °C with wind of at least 5 km/h) or the humidex (20 °C or warmer, humidex 25 or more), named in `feelsKind`; otherwise it equals `temp` and `feelsKind` is null. `gustKmh` is an observed gust only (`gustSource` ECCC or METAR); `modelGustKmh` is the model forecast for the hour. `visibilityKm`, `fog` and `presentWeather` come from the city page and the airport METAR.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/now`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "today": {
                              "type": "object",
                              "properties": {
                                "observedHigh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "observedLow": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "observedPrecipMm": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "mode": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "day"
                                    },
                                    {
                                      "type": "string",
                                      "const": "night"
                                    }
                                  ],
                                  "description": "'day' while ECCC's first period is today; 'night' once it is tonight."
                                },
                                "forecastHigh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "tonightLow": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "tomorrowHigh": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "tomorrowName": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "high": {
                                  "type": [
                                    "null",
                                    "number"
                                  ],
                                  "description": "Best single high/low for today: observed extremes so far, with ECCC's daytime high while the day is still ahead."
                                },
                                "low": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                }
                              },
                              "required": [
                                "observedHigh",
                                "observedLow",
                                "observedPrecipMm",
                                "mode",
                                "forecastHigh",
                                "tonightLow",
                                "tomorrowHigh",
                                "tomorrowName",
                                "high",
                                "low"
                              ]
                            },
                            "yesterday": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "high": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "low": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "precipMm": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "precipTrace": {
                                      "type": "boolean"
                                    },
                                    "gustKmh": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "gustDir": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "high",
                                    "low",
                                    "precipMm",
                                    "precipTrace",
                                    "gustKmh",
                                    "gustDir"
                                  ]
                                }
                              ]
                            },
                            "normals": {
                              "type": "object",
                              "properties": {
                                "high": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "low": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                }
                              },
                              "required": [
                                "high",
                                "low"
                              ]
                            },
                            "sun": {
                              "type": "object",
                              "properties": {
                                "sunrise": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "sunset": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "sunrise",
                                "sunset"
                              ]
                            },
                            "temp": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "feelsLike": {
                              "type": [
                                "null",
                                "number"
                              ],
                              "description": "The wind chill (at or below 0 °C with wind of 5 km/h or more) or humidex (20 °C or warmer, humidex 25 or more); otherwise the air temperature."
                            },
                            "feelsKind": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string",
                                  "const": "humidex"
                                },
                                {
                                  "type": "string",
                                  "const": "wind chill"
                                }
                              ],
                              "description": "Which index `feelsLike` is: 'wind chill', 'humidex', or null when it is just the air temperature."
                            },
                            "humidity": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "dewpoint": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "code": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "isDay": {
                              "type": "boolean"
                            },
                            "condition": {
                              "type": "string"
                            },
                            "icon": {
                              "type": "string"
                            },
                            "windKmh": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "windDir": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "gustKmh": {
                              "type": [
                                "null",
                                "number"
                              ],
                              "description": "Observed gust only (city page XML or the airport METAR); null when no gust was reported."
                            },
                            "gustSource": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string",
                                  "const": "ECCC"
                                },
                                {
                                  "type": "string",
                                  "const": "METAR"
                                }
                              ]
                            },
                            "modelGustKmh": {
                              "type": [
                                "null",
                                "number"
                              ],
                              "description": "Open-Meteo's gust for the current hour: a forecast, never an observation."
                            },
                            "pressureKpa": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "pressureTrend": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string",
                                  "const": "falling"
                                },
                                {
                                  "type": "string",
                                  "const": "rising"
                                },
                                {
                                  "type": "string",
                                  "const": "steady"
                                }
                              ]
                            },
                            "pressureChangeKpa": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "visibilityKm": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "fog": {
                              "type": "boolean",
                              "description": "Visibility under 1 km or fog reported by the airport."
                            },
                            "presentWeather": {
                              "type": [
                                "null",
                                "string"
                              ],
                              "description": "Present weather from the airport METAR in plain words (\"fog\", \"light snow\"), when reported."
                            },
                            "uv": {
                              "type": [
                                "null",
                                "number"
                              ],
                              "description": "Model UV index for the current hour."
                            },
                            "cloud": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "observedAt": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "station": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          },
                          "required": [
                            "today",
                            "yesterday",
                            "normals",
                            "sun",
                            "temp",
                            "feelsLike",
                            "feelsKind",
                            "humidity",
                            "dewpoint",
                            "code",
                            "isDay",
                            "condition",
                            "icon",
                            "windKmh",
                            "windDir",
                            "gustKmh",
                            "gustSource",
                            "modelGustKmh",
                            "pressureKpa",
                            "pressureTrend",
                            "pressureChangeKpa",
                            "visibilityKm",
                            "fog",
                            "presentWeather",
                            "uv",
                            "cloud",
                            "observedAt",
                            "station"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "today": {
                          "observedHigh": 0,
                          "observedLow": 0,
                          "observedPrecipMm": 0,
                          "mode": "day",
                          "forecastHigh": 0,
                          "tonightLow": 0,
                          "tomorrowHigh": 0,
                          "tomorrowName": "string",
                          "high": 0,
                          "low": 0
                        },
                        "yesterday": {
                          "high": 0,
                          "low": 0,
                          "precipMm": 0,
                          "precipTrace": false,
                          "gustKmh": 0,
                          "gustDir": "string"
                        },
                        "normals": {
                          "high": 0,
                          "low": 0
                        },
                        "sun": {
                          "sunrise": "string",
                          "sunset": "string"
                        },
                        "temp": 0,
                        "feelsLike": 0,
                        "feelsKind": "humidex",
                        "humidity": 0,
                        "dewpoint": 0,
                        "code": 0,
                        "isDay": false,
                        "condition": "string",
                        "icon": "string",
                        "windKmh": 0,
                        "windDir": 0,
                        "gustKmh": 0,
                        "gustSource": "ECCC",
                        "modelGustKmh": 0,
                        "pressureKpa": 0,
                        "pressureTrend": "falling",
                        "pressureChangeKpa": 0,
                        "visibilityKm": 0,
                        "fog": false,
                        "presentWeather": "string",
                        "uv": 0,
                        "cloud": 0,
                        "observedAt": "2026-01-01T00:00:00Z",
                        "station": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/now",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/official": {
      "get": {
        "operationId": "get-weather-official",
        "tags": [
          "Weather"
        ],
        "summary": "Environment Canada forecast: text periods (today, tonight, ...) with high/low, POP and UV, and the official 24-hour hourly forecast",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/official`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "issued": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "hourlyIssued": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "periods": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  },
                                  "short": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "night": {
                                    "type": "boolean"
                                  },
                                  "high": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "low": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "pop": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "uv": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "name",
                                  "summary",
                                  "short",
                                  "icon",
                                  "night",
                                  "high",
                                  "low",
                                  "pop",
                                  "uv"
                                ]
                              }
                            },
                            "hourly": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "t": {
                                    "type": "string"
                                  },
                                  "temp": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "condition": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "pop": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "windKmh": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "windDir": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "gustKmh": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "uv": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "isDay": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "t",
                                  "temp",
                                  "condition",
                                  "icon",
                                  "pop",
                                  "windKmh",
                                  "windDir",
                                  "gustKmh",
                                  "uv",
                                  "isDay"
                                ]
                              }
                            }
                          },
                          "required": [
                            "issued",
                            "hourlyIssued",
                            "periods",
                            "hourly"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "issued": "2026-01-01T00:00:00Z",
                        "hourlyIssued": "string",
                        "periods": [
                          {
                            "name": "string",
                            "summary": "string",
                            "short": "string",
                            "icon": "string",
                            "night": false,
                            "high": 0,
                            "low": 0,
                            "pop": 0,
                            "uv": 0
                          }
                        ],
                        "hourly": [
                          {
                            "t": "string",
                            "temp": 0,
                            "condition": "string",
                            "icon": "string",
                            "pop": 0,
                            "windKmh": 0,
                            "windDir": "string",
                            "gustKmh": 0,
                            "uv": 0,
                            "isDay": false
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/official",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/observations": {
      "get": {
        "operationId": "get-weather-observations",
        "tags": [
          "Weather"
        ],
        "summary": "Past 24 hours observed at the airport, hour by hour: temperature, dew point, humidity, wind, precipitation, snow depth, pressure, visibility, fog",
        "description": "Hourly SWOB observations from the airport auto station, with the lowest METAR visibility, present weather and highest gust in each hour. `today` is the observed high, low and precipitation since local midnight.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/observations`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "t": {
                                "type": "string"
                              },
                              "temp": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "tempMax": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "tempMin": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "dewpoint": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "humidity": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "windKmh": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "windMaxKmh": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "windDir": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "precipMm": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "snowDepthCm": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "pressureKpa": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "visibilityKm": {
                                "type": [
                                  "null",
                                  "number"
                                ],
                                "description": "km, from the nearest METAR in the hour (the auto station has no visibility sensor)."
                              },
                              "weather": {
                                "type": [
                                  "null",
                                  "string"
                                ],
                                "description": "METAR present weather in plain words, e.g. \"fog\", \"mist\", \"light snow\"."
                              },
                              "gustKmh": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "fog": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "t",
                              "temp",
                              "tempMax",
                              "tempMin",
                              "dewpoint",
                              "humidity",
                              "windKmh",
                              "windMaxKmh",
                              "windDir",
                              "precipMm",
                              "snowDepthCm",
                              "pressureKpa",
                              "visibilityKm",
                              "weather",
                              "gustKmh",
                              "fog"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "t": "string",
                          "temp": 0,
                          "tempMax": 0,
                          "tempMin": 0,
                          "dewpoint": 0,
                          "humidity": 0,
                          "windKmh": 0,
                          "windMaxKmh": 0,
                          "windDir": 0,
                          "precipMm": 0,
                          "snowDepthCm": 0,
                          "pressureKpa": 0,
                          "visibilityKm": 0,
                          "weather": "string",
                          "gustKmh": 0,
                          "fog": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/weather/observations",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/observations/summary": {
      "get": {
        "operationId": "get-weather-observations-summary",
        "tags": [
          "Weather"
        ],
        "summary": "Observed today so far, pressure trend, snow depth, latest METAR and hours of fog in the past 24 hours",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/observations/summary`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "airport": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "id": {
                                      "type": "string"
                                    },
                                    "elevationM": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "id",
                                    "elevationM"
                                  ]
                                }
                              ]
                            },
                            "today": {
                              "type": "object",
                              "properties": {
                                "high": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "highAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "low": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "lowAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "precipMm": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "hours": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "high",
                                "highAt",
                                "low",
                                "lowAt",
                                "precipMm",
                                "hours"
                              ]
                            },
                            "pressureTrend": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "trend": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "const": "falling"
                                        },
                                        {
                                          "type": "string",
                                          "const": "rising"
                                        },
                                        {
                                          "type": "string",
                                          "const": "steady"
                                        }
                                      ]
                                    },
                                    "changeKpa": {
                                      "type": "number"
                                    },
                                    "t": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "trend",
                                    "changeKpa",
                                    "t"
                                  ]
                                }
                              ]
                            },
                            "snowDepthCm": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "metar": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "visibilityKm": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "weather": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "gustKmh": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "raw": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "visibilityKm",
                                    "weather",
                                    "gustKmh",
                                    "raw"
                                  ]
                                }
                              ]
                            },
                            "fogHours24": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "airport",
                            "today",
                            "pressureTrend",
                            "snowDepthCm",
                            "metar",
                            "fogHours24"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "airport": {
                          "name": "string",
                          "id": "string",
                          "elevationM": 0
                        },
                        "today": {
                          "high": 0,
                          "highAt": "2026-01-01T00:00:00Z",
                          "low": 0,
                          "lowAt": "2026-01-01T00:00:00Z",
                          "precipMm": 0,
                          "hours": 0
                        },
                        "pressureTrend": {
                          "trend": "falling",
                          "changeKpa": 0,
                          "t": "string"
                        },
                        "snowDepthCm": 0,
                        "metar": {
                          "t": "string",
                          "visibilityKm": 0,
                          "weather": "string",
                          "gustKmh": 0,
                          "raw": "string"
                        },
                        "fogHours24": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/observations/summary",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/inversion": {
      "get": {
        "operationId": "get-weather-inversion",
        "tags": [
          "Weather"
        ],
        "summary": "Inversion watch: the airport (plateau) vs a valley station, now and for the past 24 hours",
        "description": "`diff` is valley minus airport in °C. In well-mixed air the lower valley station is slightly warmer; when it is colder, cold air is pooling in the valley (a temperature inversion), which traps smoke and pollution. `state`: strong (≤ −3), inversion (≤ −1), weak (below 0), mixed.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/inversion`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "airport": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "id": {
                                          "type": "string"
                                        },
                                        "elevationM": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "t": {
                                          "type": "string"
                                        },
                                        "temp": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "humidity": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "windKmh": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "snowDepthCm": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "id",
                                        "elevationM",
                                        "t",
                                        "temp",
                                        "humidity",
                                        "windKmh",
                                        "snowDepthCm"
                                      ]
                                    }
                                  ]
                                },
                                "valley": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "id": {
                                          "type": "string"
                                        },
                                        "elevationM": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "t": {
                                          "type": "string"
                                        },
                                        "temp": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "humidity": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "windKmh": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "snowDepthCm": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "id",
                                        "elevationM",
                                        "t",
                                        "temp",
                                        "humidity",
                                        "windKmh",
                                        "snowDepthCm"
                                      ]
                                    }
                                  ]
                                },
                                "diff": {
                                  "type": [
                                    "null",
                                    "number"
                                  ],
                                  "description": "Valley minus airport, °C. Negative = the valley is colder than the plateau: an inversion."
                                },
                                "state": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "inversion"
                                    },
                                    {
                                      "type": "string",
                                      "const": "mixed"
                                    },
                                    {
                                      "type": "string",
                                      "const": "strong"
                                    },
                                    {
                                      "type": "string",
                                      "const": "weak"
                                    }
                                  ]
                                },
                                "hours": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "string"
                                      },
                                      "airport": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "valley": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "diff": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "airport",
                                      "valley",
                                      "diff"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "airport",
                                "valley",
                                "diff",
                                "state",
                                "hours"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "airport": {
                          "name": "string",
                          "id": "string",
                          "elevationM": 0,
                          "t": "string",
                          "temp": 0,
                          "humidity": 0,
                          "windKmh": 0,
                          "snowDepthCm": 0
                        },
                        "valley": {
                          "name": "string",
                          "id": "string",
                          "elevationM": 0,
                          "t": "string",
                          "temp": 0,
                          "humidity": 0,
                          "windKmh": 0,
                          "snowDepthCm": 0
                        },
                        "diff": 0,
                        "state": "inversion",
                        "hours": [
                          {
                            "t": "string",
                            "airport": 0,
                            "valley": 0,
                            "diff": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/inversion",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/radar": {
      "get": {
        "operationId": "get-weather-radar",
        "tags": [
          "Weather"
        ],
        "summary": "Radar and lightning frame times (last 3 hours) for the ECCC GeoMet WMS layers, with the map bounding box",
        "description": "Request a frame with a WMS GetMap call to `wms` (version 1.3.0, CRS EPSG:4326, bbox lat/lng order) with `layers` set to a layer id and `time` to one of its times. Tiles are served by ECCC; this endpoint only lists what is available.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/radar`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "wms": {
                              "type": "string"
                            },
                            "bbox": {
                              "type": "array",
                              "prefixItems": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "number"
                                }
                              ],
                              "minItems": 4,
                              "maxItems": 4
                            },
                            "layers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "times": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "times"
                                ]
                              }
                            },
                            "lightning": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "times": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "times"
                                  ]
                                }
                              ]
                            }
                          },
                          "required": [
                            "wms",
                            "bbox",
                            "layers",
                            "lightning"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "wms": "string",
                        "bbox": [
                          0,
                          0,
                          0,
                          0
                        ],
                        "layers": [
                          {
                            "id": "string",
                            "label": "string",
                            "times": [
                              "string"
                            ]
                          }
                        ],
                        "lightning": {
                          "id": "string",
                          "times": [
                            "string"
                          ]
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/radar",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/almanac": {
      "get": {
        "operationId": "get-weather-almanac",
        "tags": [
          "Weather"
        ],
        "summary": "Today in Prince George weather history: records for the date and this month's 1991–2020 normals and extremes",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/almanac`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "normalToday": {
                              "type": "object",
                              "properties": {
                                "high": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "low": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                }
                              },
                              "required": [
                                "high",
                                "low"
                              ]
                            },
                            "sun": {
                              "type": "object",
                              "properties": {
                                "sunrise": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "sunset": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "sunrise",
                                "sunset"
                              ]
                            },
                            "date": {
                              "type": "string"
                            },
                            "records": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "high": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "highYear": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "low": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "lowYear": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "coldestHigh": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "coldestHighYear": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "warmestLow": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "warmestLowYear": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "precipMm": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "precipYear": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "snowCm": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "snowYear": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "since": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "source": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "sourceUrl": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "high",
                                    "highYear",
                                    "low",
                                    "lowYear",
                                    "coldestHigh",
                                    "coldestHighYear",
                                    "warmestLow",
                                    "warmestLowYear",
                                    "precipMm",
                                    "precipYear",
                                    "snowCm",
                                    "snowYear",
                                    "since",
                                    "source",
                                    "sourceUrl"
                                  ]
                                }
                              ]
                            },
                            "month": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "index": {
                                      "type": "number"
                                    },
                                    "period": {
                                      "type": "string"
                                    },
                                    "station": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "source": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "sourceUrl": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "values": {
                                      "type": "object",
                                      "additionalProperties": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "extremes": {
                                      "type": "object",
                                      "additionalProperties": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "object",
                                            "properties": {
                                              "value": {
                                                "type": [
                                                  "null",
                                                  "number"
                                                ]
                                              },
                                              "date": {
                                                "type": [
                                                  "null",
                                                  "string"
                                                ]
                                              },
                                              "dir": {
                                                "type": "string"
                                              }
                                            },
                                            "required": [
                                              "value",
                                              "date"
                                            ]
                                          }
                                        ]
                                      }
                                    }
                                  },
                                  "required": [
                                    "index",
                                    "period",
                                    "station",
                                    "source",
                                    "sourceUrl",
                                    "values",
                                    "extremes"
                                  ]
                                }
                              ]
                            },
                            "frost": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "lastSpringFrost": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "firstFallFrost": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "frostFreeDays": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "lastSpringFrost",
                                    "firstFallFrost",
                                    "frostFreeDays"
                                  ]
                                }
                              ]
                            }
                          },
                          "required": [
                            "normalToday",
                            "sun"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "normalToday": {
                          "high": 0,
                          "low": 0
                        },
                        "sun": {
                          "sunrise": "string",
                          "sunset": "string"
                        },
                        "date": "2026-01-01T00:00:00Z",
                        "records": {
                          "high": 0,
                          "highYear": 0,
                          "low": 0,
                          "lowYear": 0,
                          "coldestHigh": 0,
                          "coldestHighYear": 0,
                          "warmestLow": 0,
                          "warmestLowYear": 0,
                          "precipMm": 0,
                          "precipYear": 0,
                          "snowCm": 0,
                          "snowYear": 0,
                          "since": "2026-01-01T00:00:00Z",
                          "source": "string",
                          "sourceUrl": "https://example.org/"
                        },
                        "month": {
                          "index": 0,
                          "period": "string",
                          "station": "string",
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "values": {},
                          "extremes": {}
                        },
                        "frost": {
                          "lastSpringFrost": "string",
                          "firstFallFrost": "string",
                          "frostFreeDays": 0
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/almanac",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/hourly": {
      "get": {
        "operationId": "get-weather-hourly",
        "tags": [
          "Weather"
        ],
        "summary": "Hourly forecast (one row per hour: temp, feels, pop, precip, code, wind, gust, dir, uv, isDay)",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/hourly?limit=3`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "time": {
                                "type": "string"
                              },
                              "temp": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "feels": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "pop": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "precip": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "code": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "wind": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "gust": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "dir": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "uv": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "isDay": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              }
                            },
                            "required": [
                              "time",
                              "temp",
                              "feels",
                              "pop",
                              "precip",
                              "code",
                              "wind",
                              "gust",
                              "dir",
                              "uv",
                              "isDay"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "time": "2026-01-01T00:00:00Z",
                          "temp": 0,
                          "feels": 0,
                          "pop": 0,
                          "precip": 0,
                          "code": 0,
                          "wind": 0,
                          "gust": 0,
                          "dir": 0,
                          "uv": 0,
                          "isDay": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/weather/hourly",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/daily": {
      "get": {
        "operationId": "get-weather-daily",
        "tags": [
          "Weather"
        ],
        "summary": "Daily forecast (up to 14 days) plus the ECCC text forecast",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/daily`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "days": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "date": {
                                    "type": "string"
                                  },
                                  "code": {
                                    "type": "number"
                                  },
                                  "max": {
                                    "type": "number"
                                  },
                                  "min": {
                                    "type": "number"
                                  },
                                  "precip": {
                                    "type": "number"
                                  },
                                  "pop": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "snow": {
                                    "type": "number"
                                  },
                                  "wind": {
                                    "type": "number"
                                  },
                                  "gust": {
                                    "type": "number"
                                  },
                                  "dir": {
                                    "type": "number"
                                  },
                                  "uv": {
                                    "type": "number"
                                  },
                                  "sunshineH": {
                                    "type": "number"
                                  },
                                  "daylightH": {
                                    "type": "number"
                                  },
                                  "sunrise": {
                                    "type": "string"
                                  },
                                  "sunset": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "date",
                                  "code",
                                  "max",
                                  "min",
                                  "precip",
                                  "pop",
                                  "snow",
                                  "wind",
                                  "gust",
                                  "dir",
                                  "uv",
                                  "sunshineH",
                                  "daylightH",
                                  "sunrise",
                                  "sunset"
                                ]
                              }
                            },
                            "textForecast": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "summary"
                                ]
                              }
                            }
                          },
                          "required": [
                            "days",
                            "textForecast"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "days": [
                          {
                            "date": "2026-01-01T00:00:00Z",
                            "code": 0,
                            "max": 0,
                            "min": 0,
                            "precip": 0,
                            "pop": 0,
                            "snow": 0,
                            "wind": 0,
                            "gust": 0,
                            "dir": 0,
                            "uv": 0,
                            "sunshineH": 0,
                            "daylightH": 0,
                            "sunrise": "string",
                            "sunset": "string"
                          }
                        ],
                        "textForecast": [
                          {
                            "name": "string",
                            "summary": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/daily",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/alerts": {
      "get": {
        "operationId": "get-weather-alerts",
        "tags": [
          "Weather"
        ],
        "summary": "Active ECCC weather alerts for Prince George",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/weather/alerts`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "title": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "text": {
                                "type": "string"
                              },
                              "issued": {
                                "type": "string"
                              },
                              "expires": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "title",
                              "type",
                              "text",
                              "issued",
                              "expires"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "fictional": {
                    "summary": "Fictional illustration; not current city data",
                    "value": {
                      "data": [
                        {
                          "title": "Example alert (fictional)",
                          "type": "Example",
                          "text": "Example source summary, not a current alert.",
                          "issued": "2026-01-01T00:00:00Z",
                          "expires": null
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/alerts",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/climate": {
      "get": {
        "operationId": "get-climate",
        "tags": [
          "Climate"
        ],
        "summary": "Climate history since 1940: annual series, monthly by year, 1991–2020 baseline",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/climate`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "firstYear": {
                              "type": "number"
                            },
                            "lastDate": {
                              "type": "string"
                            },
                            "annual": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "year": {
                                    "type": "number"
                                  },
                                  "meanTemp": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "precip": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "snowCm": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "sunshineH": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "maxTemp": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "minTemp": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "daysAbove30": {
                                    "type": "number"
                                  },
                                  "daysBelowMinus30": {
                                    "type": "number"
                                  },
                                  "complete": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "year",
                                  "meanTemp",
                                  "precip",
                                  "snowCm",
                                  "sunshineH",
                                  "maxTemp",
                                  "minTemp",
                                  "daysAbove30",
                                  "daysBelowMinus30",
                                  "complete"
                                ]
                              }
                            },
                            "monthly": {
                              "type": "object",
                              "additionalProperties": {
                                "type": "object",
                                "properties": {
                                  "t": {
                                    "type": "array",
                                    "items": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "p": {
                                    "type": "array",
                                    "items": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "s": {
                                    "type": "array",
                                    "items": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "t",
                                  "p",
                                  "s"
                                ]
                              }
                            },
                            "baseline": {
                              "type": "object",
                              "properties": {
                                "period": {
                                  "type": "string"
                                },
                                "t": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "p": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "s": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                }
                              },
                              "required": [
                                "period",
                                "t",
                                "p",
                                "s"
                              ]
                            }
                          },
                          "required": [
                            "firstYear",
                            "lastDate",
                            "annual",
                            "monthly",
                            "baseline"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "firstYear": 0,
                        "lastDate": "2026-01-01T00:00:00Z",
                        "annual": [
                          {
                            "year": 0,
                            "meanTemp": 0,
                            "precip": 0,
                            "snowCm": 0,
                            "sunshineH": 0,
                            "maxTemp": 0,
                            "minTemp": 0,
                            "daysAbove30": 0,
                            "daysBelowMinus30": 0,
                            "complete": false
                          }
                        ],
                        "monthly": {},
                        "baseline": {
                          "period": "string",
                          "t": [
                            0
                          ],
                          "p": [
                            0
                          ],
                          "s": [
                            0
                          ]
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/climate",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/climate/this-day": {
      "get": {
        "operationId": "get-climate-this-day",
        "tags": [
          "Climate"
        ],
        "summary": "One calendar day in every year since 1940",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/climate/this-day?day=12-25`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "day",
            "in": "query",
            "required": false,
            "description": "MM-DD (default: today in Prince George).",
            "schema": {
              "type": "string",
              "examples": [
                "12-25"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "md": {
                              "type": "string"
                            },
                            "rows": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "year": {
                                    "type": "number"
                                  },
                                  "max": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "min": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "precip": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "snow": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "year",
                                  "max",
                                  "min",
                                  "precip",
                                  "snow"
                                ]
                              }
                            }
                          },
                          "required": [
                            "md",
                            "rows"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "md": "string",
                        "rows": [
                          {
                            "year": 0,
                            "max": 0,
                            "min": 0,
                            "precip": 0,
                            "snow": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/climate/this-day",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/climate/normals": {
      "get": {
        "operationId": "get-climate-normals",
        "tags": [
          "Climate"
        ],
        "summary": "Climate normals (1991–2020, with the 1981–2010 set) for Prince George Airport",
        "description": "Example: `/api/v1/climate/normals`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "1991-2020": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "1981-2010": {
                              "$ref": "#/components/schemas/JsonValue"
                            }
                          },
                          "required": [
                            "1991-2020",
                            "1981-2010"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "1991-2020": null,
                        "1981-2010": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/climate/normals",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/climate/records": {
      "get": {
        "operationId": "get-climate-records",
        "tags": [
          "Climate"
        ],
        "summary": "Temperature records: all-time, monthly and every calendar day",
        "description": "Example: `/api/v1/climate/records`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "day",
            "in": "query",
            "required": false,
            "description": "Only this calendar day, MM-DD.",
            "schema": {
              "type": "string",
              "examples": [
                "07-29"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "m": {
                                  "type": "number"
                                },
                                "d": {
                                  "type": "number"
                                },
                                "high": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "low": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "highYear": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "lowYear": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "pageUrl": {
                                  "type": "string"
                                },
                                "asOf": {
                                  "type": "string"
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "retrieved": {
                                  "type": "string"
                                },
                                "daily": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "m": {
                                        "type": "number"
                                      },
                                      "d": {
                                        "type": "number"
                                      },
                                      "high": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "low": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "highYear": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "lowYear": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "additionalProperties": {
                                      "anyOf": [
                                        {
                                          "type": "array",
                                          "items": {
                                            "$ref": "#/components/schemas/JsonValue"
                                          }
                                        },
                                        {
                                          "type": "boolean"
                                        },
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "object",
                                          "additionalProperties": {
                                            "$ref": "#/components/schemas/JsonValue"
                                          }
                                        },
                                        {
                                          "type": "string"
                                        }
                                      ]
                                    }
                                  }
                                },
                                "monthly": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "m": {
                                        "type": "number"
                                      },
                                      "d": {
                                        "type": "number"
                                      },
                                      "high": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "low": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "highYear": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "lowYear": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "additionalProperties": {
                                      "anyOf": [
                                        {
                                          "type": "array",
                                          "items": {
                                            "$ref": "#/components/schemas/JsonValue"
                                          }
                                        },
                                        {
                                          "type": "boolean"
                                        },
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "number"
                                        },
                                        {
                                          "type": "object",
                                          "additionalProperties": {
                                            "$ref": "#/components/schemas/JsonValue"
                                          }
                                        },
                                        {
                                          "type": "string"
                                        }
                                      ]
                                    }
                                  }
                                },
                                "allTime": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  }
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "m": 0,
                        "d": 0,
                        "high": 0,
                        "low": 0,
                        "highYear": 0,
                        "lowYear": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/climate/records",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/air": {
      "get": {
        "operationId": "get-air",
        "tags": [
          "Air & water"
        ],
        "summary": "Air quality: AQHI now/history/forecast, PM2.5 model, monitoring stations",
        "description": "Station readings in µg/m³ (ppb for gases). `stations[].pm25Avg24h` is the 24-hour PM2.5 average; `pm25_24` is the same value under its original name, kept for existing clients.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/air`\n\nCache: 1800s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "stations": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "pm25Avg24h": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "pm25": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "pm25_24": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "pm10": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "o3": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "no2": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "so2": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "trs": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "windKmh": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "updated": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "pm25Avg24h",
                                  "name",
                                  "lat",
                                  "lng",
                                  "pm25",
                                  "pm25_24",
                                  "pm10",
                                  "o3",
                                  "no2",
                                  "so2",
                                  "trs",
                                  "windKmh",
                                  "updated",
                                  "url"
                                ]
                              }
                            },
                            "aqhi": {
                              "type": "object",
                              "properties": {
                                "value": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "observedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "history": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "string"
                                      },
                                      "v": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "v"
                                    ]
                                  }
                                },
                                "forecast": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "string"
                                      },
                                      "v": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "v"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "value",
                                "observedAt",
                                "history",
                                "forecast"
                              ]
                            },
                            "model": {
                              "type": "object",
                              "properties": {
                                "usAqi": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "pm25": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "pm10": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "o3": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "no2": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "time": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "usAqi",
                                "pm25",
                                "pm10",
                                "o3",
                                "no2",
                                "time"
                              ]
                            },
                            "pm25": {
                              "type": "object",
                              "properties": {
                                "time": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "value": {
                                  "type": "array",
                                  "items": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "forecastFrom": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "time",
                                "value",
                                "forecastFrom"
                              ]
                            },
                            "daily": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "date": {
                                    "type": "string"
                                  },
                                  "pm25": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "maxAqi": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "date",
                                  "pm25",
                                  "maxAqi"
                                ]
                              }
                            }
                          },
                          "required": [
                            "stations",
                            "aqhi",
                            "model",
                            "pm25",
                            "daily"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "stations": [
                          {
                            "pm25Avg24h": 0,
                            "name": "string",
                            "lat": 0,
                            "lng": 0,
                            "pm25": 0,
                            "pm25_24": 0,
                            "pm10": 0,
                            "o3": 0,
                            "no2": 0,
                            "so2": 0,
                            "trs": 0,
                            "windKmh": 0,
                            "updated": "2026-01-01T00:00:00Z",
                            "url": "https://example.org/"
                          }
                        ],
                        "aqhi": {
                          "value": 0,
                          "observedAt": "2026-01-01T00:00:00Z",
                          "history": [
                            {
                              "t": "string",
                              "v": 0
                            }
                          ],
                          "forecast": [
                            {
                              "t": "string",
                              "v": 0
                            }
                          ]
                        },
                        "model": {
                          "usAqi": 0,
                          "pm25": 0,
                          "pm10": 0,
                          "o3": 0,
                          "no2": 0,
                          "time": "2026-01-01T00:00:00Z"
                        },
                        "pm25": {
                          "time": [
                            "2026-01-01T00:00:00Z"
                          ],
                          "value": [
                            0
                          ],
                          "forecastFrom": "string"
                        },
                        "daily": [
                          {
                            "date": "2026-01-01T00:00:00Z",
                            "pm25": 0,
                            "maxAqi": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/air",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/rivers": {
      "get": {
        "operationId": "get-rivers",
        "tags": [
          "Air & water"
        ],
        "summary": "Fraser and Nechako river gauges: latest level/flow, 24h change, hourly series",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/rivers`\n\nCache: 1800s.",
        "parameters": [
          {
            "name": "hourly",
            "in": "query",
            "required": false,
            "description": "Include the hourly series (default true).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "short": {
                                "type": "string"
                              },
                              "river": {
                                "type": "string"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "primary": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "discharge"
                                  },
                                  {
                                    "type": "string",
                                    "const": "level"
                                  }
                                ]
                              },
                              "latest": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "string"
                                      },
                                      "level": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "discharge": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "level",
                                      "discharge"
                                    ]
                                  }
                                ]
                              },
                              "change24h": {
                                "type": "object",
                                "properties": {
                                  "level": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "discharge": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "level",
                                  "discharge"
                                ]
                              },
                              "direction": {
                                "type": "object",
                                "properties": {
                                  "level": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "falling"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rising"
                                      },
                                      {
                                        "type": "string",
                                        "const": "steady"
                                      }
                                    ]
                                  },
                                  "discharge": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "falling"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rising"
                                      },
                                      {
                                        "type": "string",
                                        "const": "steady"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "level",
                                  "discharge"
                                ],
                                "description": "Direction over the last 6 hours (src/lib/data/rivers-trend.mjs): the one \"rising / falling / steady\" every page shows."
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "short",
                              "river",
                              "lat",
                              "lng",
                              "primary",
                              "latest",
                              "change24h",
                              "direction"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "short": "string",
                          "river": "string",
                          "lat": 0,
                          "lng": 0,
                          "primary": "discharge",
                          "latest": {
                            "t": "string",
                            "level": 0,
                            "discharge": 0
                          },
                          "change24h": {
                            "level": 0,
                            "discharge": 0
                          },
                          "direction": {
                            "level": "falling",
                            "discharge": "falling"
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/rivers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/rivers/stations": {
      "get": {
        "operationId": "get-rivers-stations",
        "tags": [
          "Air & water"
        ],
        "summary": "Gauge stations used by PG Pulse",
        "description": "Example: `/api/v1/rivers/stations`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "short": {
                                "type": "string"
                              },
                              "river": {
                                "type": "string"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "primary": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "discharge"
                                  },
                                  {
                                    "type": "string",
                                    "const": "level"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "short",
                              "river",
                              "lat",
                              "lng",
                              "primary"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "short": "string",
                          "river": "string",
                          "lat": 0,
                          "lng": 0,
                          "primary": "discharge"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/rivers/stations",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/rivers/history": {
      "get": {
        "operationId": "get-rivers-history",
        "tags": [
          "Air & water"
        ],
        "summary": "Historical daily statistics and records for each gauge",
        "description": "Example: `/api/v1/rivers/history`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "pageUrl": {
                                  "type": "string"
                                },
                                "asOf": {
                                  "type": "string"
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "retrieved": {
                                  "type": "string"
                                },
                                "stations": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "measure": {
                                        "type": "string"
                                      },
                                      "unit": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "type": "string"
                                      },
                                      "firstYear": {
                                        "type": "number"
                                      },
                                      "lastDate": {
                                        "type": "string"
                                      },
                                      "yearsOfRecord": {
                                        "type": "number"
                                      },
                                      "recordHigh": {
                                        "type": "object",
                                        "properties": {
                                          "date": {
                                            "type": "string"
                                          },
                                          "value": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "date",
                                          "value"
                                        ]
                                      },
                                      "recordLow": {
                                        "type": "object",
                                        "properties": {
                                          "date": {
                                            "type": "string"
                                          },
                                          "value": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "date",
                                          "value"
                                        ]
                                      },
                                      "dailyStats": {
                                        "type": "array",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "type": "array",
                                              "items": {
                                                "type": [
                                                  "null",
                                                  "number"
                                                ]
                                              }
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ]
                                        }
                                      },
                                      "latestYear": {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "series": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "d": {
                                                  "type": "string"
                                                },
                                                "v": {
                                                  "type": [
                                                    "null",
                                                    "number"
                                                  ]
                                                }
                                              },
                                              "required": [
                                                "d",
                                                "v"
                                              ]
                                            }
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "series"
                                        ]
                                      },
                                      "annualPeaks": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "year": {
                                              "type": "number"
                                            },
                                            "date": {
                                              "type": "string"
                                            },
                                            "value": {
                                              "type": [
                                                "null",
                                                "number"
                                              ]
                                            }
                                          },
                                          "required": [
                                            "year",
                                            "date",
                                            "value"
                                          ]
                                        }
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "measure",
                                      "unit",
                                      "firstYear",
                                      "lastDate",
                                      "yearsOfRecord",
                                      "recordHigh",
                                      "recordLow",
                                      "dailyStats",
                                      "latestYear",
                                      "annualPeaks"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "stations"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "pageUrl": "https://example.org/",
                        "asOf": "string",
                        "notes": "string",
                        "retrieved": "string",
                        "stations": {}
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/rivers/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/water-quality": {
      "get": {
        "operationId": "get-water-quality",
        "tags": [
          "Air & water"
        ],
        "summary": "City drinking water: wells, quality summary and monthly production",
        "description": "Example: `/api/v1/water-quality`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "pageUrl": {
                                  "type": "string"
                                },
                                "asOf": {
                                  "type": "string"
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "retrieved": {
                                  "type": "string"
                                },
                                "rawWaterReportsUrl": {
                                  "type": "string"
                                },
                                "summary": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "facts": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "wells": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "source": {
                                        "type": "string"
                                      },
                                      "type": {
                                        "type": "string"
                                      },
                                      "sharePct": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "source",
                                      "type"
                                    ]
                                  }
                                },
                                "monthlyProductionM3": {
                                  "type": "array",
                                  "items": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "pageUrl": "https://example.org/",
                        "asOf": "string",
                        "notes": "string",
                        "retrieved": "string",
                        "rawWaterReportsUrl": "https://example.org/",
                        "summary": [
                          "string"
                        ],
                        "facts": {},
                        "wells": [
                          {
                            "name": "string",
                            "source": "string",
                            "type": "string",
                            "sharePct": 0
                          }
                        ],
                        "monthlyProductionM3": [
                          0
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/water-quality",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/wildfire": {
      "get": {
        "operationId": "get-wildfire",
        "tags": [
          "Hazards"
        ],
        "summary": "Wildfires near Prince George, season stats, danger rating, bans and evacuations",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/wildfire`\n\nCache: 1800s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "active": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "status": {
                                    "type": "string"
                                  },
                                  "cause": {
                                    "type": "string"
                                  },
                                  "sizeHa": {
                                    "type": "number"
                                  },
                                  "discovered": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "out": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "location": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "ofNote": {
                                    "type": "boolean"
                                  },
                                  "distanceKm": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "status",
                                  "cause",
                                  "sizeHa",
                                  "discovered",
                                  "out",
                                  "lat",
                                  "lng",
                                  "location",
                                  "url",
                                  "ofNote",
                                  "distanceKm"
                                ]
                              }
                            },
                            "season": {
                              "type": "object",
                              "properties": {
                                "year": {
                                  "type": "number"
                                },
                                "total": {
                                  "type": "number"
                                },
                                "out": {
                                  "type": "number"
                                },
                                "active": {
                                  "type": "number"
                                },
                                "totalHa": {
                                  "type": "number"
                                },
                                "byCause": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  }
                                },
                                "byStatus": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  }
                                },
                                "byMonth": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": "number"
                                  }
                                },
                                "largest": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "status": {
                                          "type": "string"
                                        },
                                        "cause": {
                                          "type": "string"
                                        },
                                        "sizeHa": {
                                          "type": "number"
                                        },
                                        "discovered": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "out": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "lat": {
                                          "type": "number"
                                        },
                                        "lng": {
                                          "type": "number"
                                        },
                                        "location": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        },
                                        "ofNote": {
                                          "type": "boolean"
                                        },
                                        "distanceKm": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "name",
                                        "status",
                                        "cause",
                                        "sizeHa",
                                        "discovered",
                                        "out",
                                        "lat",
                                        "lng",
                                        "location",
                                        "url",
                                        "ofNote",
                                        "distanceKm"
                                      ]
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "year",
                                "total",
                                "out",
                                "active",
                                "totalHa",
                                "byCause",
                                "byStatus",
                                "byMonth",
                                "largest"
                              ]
                            },
                            "danger": {
                              "type": "object",
                              "properties": {
                                "rating": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "value": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "updated": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "rating",
                                "value",
                                "updated"
                              ]
                            },
                            "bans": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "title": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "since": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "title",
                                  "type",
                                  "url",
                                  "since"
                                ]
                              }
                            },
                            "evacuations": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "event": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  },
                                  "area": {
                                    "type": "string"
                                  },
                                  "status": {
                                    "type": "string"
                                  },
                                  "agency": {
                                    "type": "string"
                                  },
                                  "homes": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "people": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "modified": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lng": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "distanceKm": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "event",
                                  "type",
                                  "area",
                                  "status",
                                  "agency",
                                  "homes",
                                  "people",
                                  "modified",
                                  "lat",
                                  "lng",
                                  "distanceKm"
                                ]
                              }
                            }
                          },
                          "required": [
                            "active",
                            "season",
                            "danger",
                            "bans",
                            "evacuations"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "active": [
                          {
                            "id": "string",
                            "name": "string",
                            "status": "string",
                            "cause": "string",
                            "sizeHa": 0,
                            "discovered": "string",
                            "out": "string",
                            "lat": 0,
                            "lng": 0,
                            "location": "string",
                            "url": "https://example.org/",
                            "ofNote": false,
                            "distanceKm": 0
                          }
                        ],
                        "season": {
                          "year": 0,
                          "total": 0,
                          "out": 0,
                          "active": 0,
                          "totalHa": 0,
                          "byCause": {},
                          "byStatus": {},
                          "byMonth": {},
                          "largest": {
                            "id": "string",
                            "name": "string",
                            "status": "string",
                            "cause": "string",
                            "sizeHa": 0,
                            "discovered": "string",
                            "out": "string",
                            "lat": 0,
                            "lng": 0,
                            "location": "string",
                            "url": "https://example.org/",
                            "ofNote": false,
                            "distanceKm": 0
                          }
                        },
                        "danger": {
                          "rating": "string",
                          "value": 0,
                          "updated": "2026-01-01T00:00:00Z"
                        },
                        "bans": [
                          {
                            "title": "string",
                            "type": "string",
                            "url": "https://example.org/",
                            "since": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "evacuations": [
                          {
                            "event": "string",
                            "type": "string",
                            "area": "string",
                            "status": "string",
                            "agency": "string",
                            "homes": 0,
                            "people": 0,
                            "modified": "string",
                            "lat": 0,
                            "lng": 0,
                            "distanceKm": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/wildfire",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/earthquakes": {
      "get": {
        "operationId": "get-earthquakes",
        "tags": [
          "Hazards"
        ],
        "summary": "Earthquakes within about 400 km over the last year",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/earthquakes`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "events": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "time": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "depthKm": {
                                    "type": "number"
                                  },
                                  "mag": {
                                    "type": "number"
                                  },
                                  "magType": {
                                    "type": "string"
                                  },
                                  "place": {
                                    "type": "string"
                                  },
                                  "distanceKm": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "id",
                                  "time",
                                  "lat",
                                  "lng",
                                  "depthKm",
                                  "mag",
                                  "magType",
                                  "place",
                                  "distanceKm"
                                ]
                              }
                            },
                            "radiusKm": {
                              "type": "number"
                            },
                            "since": {
                              "type": "string"
                            },
                            "minMag": {
                              "type": "number"
                            },
                            "totalAllMagnitudes": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "events",
                            "radiusKm",
                            "since",
                            "minMag",
                            "totalAllMagnitudes"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "events": [
                          {
                            "id": "string",
                            "time": "2026-01-01T00:00:00Z",
                            "lat": 0,
                            "lng": 0,
                            "depthKm": 0,
                            "mag": 0,
                            "magType": "string",
                            "place": "string",
                            "distanceKm": 0
                          }
                        ],
                        "radiusKm": 0,
                        "since": "2026-01-01T00:00:00Z",
                        "minMag": 0,
                        "totalAllMagnitudes": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/earthquakes",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/roads": {
      "get": {
        "operationId": "get-roads",
        "tags": [
          "Hazards"
        ],
        "summary": "DriveBC road events within 150 km",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/roads`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "severity",
            "in": "query",
            "required": false,
            "description": "Filter by severity (e.g. MAJOR, MINOR).",
            "schema": {
              "type": "string",
              "examples": [
                "MAJOR"
              ]
            }
          },
          {
            "name": "within",
            "in": "query",
            "required": false,
            "description": "Only within this many km.",
            "schema": {
              "type": "number",
              "examples": [
                50
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "events": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "headline": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  },
                                  "subtypes": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "severity": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "roads": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "updated": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "distanceKm": {
                                    "type": "number"
                                  },
                                  "line": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "type": "number"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "headline",
                                  "summary",
                                  "type",
                                  "subtypes",
                                  "severity",
                                  "description",
                                  "roads",
                                  "updated",
                                  "lat",
                                  "lng",
                                  "distanceKm",
                                  "line"
                                ]
                              }
                            },
                            "radiusKm": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "events",
                            "radiusKm"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "events": [
                          {
                            "id": "string",
                            "headline": "string",
                            "summary": "string",
                            "type": "string",
                            "subtypes": [
                              "string"
                            ],
                            "severity": "string",
                            "description": "string",
                            "roads": [
                              "string"
                            ],
                            "updated": "2026-01-01T00:00:00Z",
                            "lat": 0,
                            "lng": 0,
                            "distanceKm": 0,
                            "line": [
                              [
                                0,
                                0
                              ]
                            ]
                          }
                        ],
                        "radiusKm": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/roads",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/aurora": {
      "get": {
        "operationId": "get-aurora",
        "tags": [
          "Hazards"
        ],
        "summary": "Planetary K-index (aurora chances): now, observed and 3-day forecast",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/aurora`\n\nCache: 900s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "now": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "kp": {
                                      "type": "number"
                                    },
                                    "t": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "kp",
                                    "t"
                                  ]
                                }
                              ]
                            },
                            "observed": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "t": {
                                    "type": "string"
                                  },
                                  "kp": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "t",
                                  "kp"
                                ]
                              }
                            },
                            "forecast": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "t": {
                                    "type": "string"
                                  },
                                  "kp": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "t",
                                  "kp"
                                ]
                              }
                            },
                            "maxNext24": {
                              "type": [
                                "null",
                                "number"
                              ]
                            }
                          },
                          "required": [
                            "now",
                            "observed",
                            "forecast",
                            "maxNext24"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "now": {
                          "kp": 0,
                          "t": "string"
                        },
                        "observed": [
                          {
                            "t": "string",
                            "kp": 0
                          }
                        ],
                        "forecast": [
                          {
                            "t": "string",
                            "kp": 0
                          }
                        ],
                        "maxNext24": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/aurora",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/power/outages": {
      "get": {
        "operationId": "get-power-outages",
        "tags": [
          "Power"
        ],
        "summary": "BC Hydro outages within 150 km, plus regional and provincial totals",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/power/outages`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "nearby": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "number"
                                  },
                                  "municipality": {
                                    "type": "string"
                                  },
                                  "area": {
                                    "type": "string"
                                  },
                                  "cause": {
                                    "type": "string"
                                  },
                                  "customers": {
                                    "type": "number"
                                  },
                                  "status": {
                                    "type": "string"
                                  },
                                  "off": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "eta": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "etr": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "updated": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "distanceKm": {
                                    "type": "number"
                                  },
                                  "polygon": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "type": "number"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "municipality",
                                  "area",
                                  "cause",
                                  "customers",
                                  "status",
                                  "off",
                                  "eta",
                                  "etr",
                                  "updated",
                                  "lat",
                                  "lng",
                                  "distanceKm",
                                  "polygon"
                                ]
                              }
                            },
                            "region": {
                              "type": "object",
                              "properties": {
                                "outages": {
                                  "type": "number"
                                },
                                "customers": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "outages",
                                "customers"
                              ]
                            },
                            "province": {
                              "type": "object",
                              "properties": {
                                "outages": {
                                  "type": "number"
                                },
                                "customers": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "outages",
                                "customers"
                              ]
                            },
                            "radiusKm": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "nearby",
                            "region",
                            "province",
                            "radiusKm"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "nearby": [
                          {
                            "id": 0,
                            "municipality": "string",
                            "area": "string",
                            "cause": "string",
                            "customers": 0,
                            "status": "string",
                            "off": "string",
                            "eta": "string",
                            "etr": "string",
                            "updated": "2026-01-01T00:00:00Z",
                            "lat": 0,
                            "lng": 0,
                            "distanceKm": 0,
                            "polygon": [
                              [
                                0,
                                0
                              ]
                            ]
                          }
                        ],
                        "region": {
                          "outages": 0,
                          "customers": 0
                        },
                        "province": {
                          "outages": 0,
                          "customers": 0
                        },
                        "radiusKm": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/power/outages",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/power/rates": {
      "get": {
        "operationId": "get-power-rates",
        "tags": [
          "Power"
        ],
        "summary": "BC Hydro residential rates (tiered, flat and time-of-day)",
        "description": "Example: `/api/v1/power/rates`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "pageUrl": {
                                  "type": "string"
                                },
                                "asOf": {
                                  "type": "string"
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "retrieved": {
                                  "type": "string"
                                },
                                "tiered": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string"
                                    },
                                    "basicChargeCentsPerDay": {
                                      "type": "number"
                                    },
                                    "tier1CentsPerKwh": {
                                      "type": "number"
                                    },
                                    "tier2CentsPerKwh": {
                                      "type": "number"
                                    },
                                    "tier1KwhPerDay": {
                                      "type": "number"
                                    },
                                    "tier1ThresholdMonthlyKwh": {
                                      "type": "number"
                                    },
                                    "tier1ThresholdBimonthlyKwh": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "basicChargeCentsPerDay",
                                    "tier1CentsPerKwh",
                                    "tier2CentsPerKwh",
                                    "tier1KwhPerDay"
                                  ]
                                },
                                "flat": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string"
                                    },
                                    "basicChargeCentsPerDay": {
                                      "type": "number"
                                    },
                                    "energyCentsPerKwh": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "basicChargeCentsPerDay",
                                    "energyCentsPerKwh"
                                  ]
                                },
                                "timeOfDay": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string"
                                    },
                                    "onPeakSurchargeCentsPerKwh": {
                                      "type": "number"
                                    },
                                    "onPeakHours": {
                                      "type": "string"
                                    },
                                    "overnightDiscountCentsPerKwh": {
                                      "type": "number"
                                    },
                                    "overnightHours": {
                                      "type": "string"
                                    },
                                    "offPeakHours": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "onPeakSurchargeCentsPerKwh",
                                    "onPeakHours",
                                    "overnightDiscountCentsPerKwh",
                                    "overnightHours"
                                  ]
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "pageUrl": "https://example.org/",
                        "asOf": "string",
                        "notes": "string",
                        "retrieved": "string",
                        "tiered": {
                          "url": "https://example.org/",
                          "basicChargeCentsPerDay": 0,
                          "tier1CentsPerKwh": 0,
                          "tier2CentsPerKwh": 0,
                          "tier1KwhPerDay": 0,
                          "tier1ThresholdMonthlyKwh": 0,
                          "tier1ThresholdBimonthlyKwh": 0
                        },
                        "flat": {
                          "url": "https://example.org/",
                          "basicChargeCentsPerDay": 0,
                          "energyCentsPerKwh": 0
                        },
                        "timeOfDay": {
                          "url": "https://example.org/",
                          "onPeakSurchargeCentsPerKwh": 0,
                          "onPeakHours": "string",
                          "overnightDiscountCentsPerKwh": 0,
                          "overnightHours": "string",
                          "offPeakHours": "string"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/power/rates",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/airport": {
      "get": {
        "operationId": "get-airport",
        "tags": [
          "Weather"
        ],
        "summary": "Prince George airport (CYXS) flying conditions: latest METAR, recent observations and the TAF",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/airport`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "metar": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "time": {
                                      "type": "string"
                                    },
                                    "raw": {
                                      "type": "string"
                                    },
                                    "category": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "tempC": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "windDir": {
                                      "type": [
                                        "null",
                                        "number",
                                        "string"
                                      ]
                                    },
                                    "windKt": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "gustKt": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "visSm": {
                                      "type": [
                                        "null",
                                        "number",
                                        "string"
                                      ]
                                    },
                                    "ceilingFt": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "clouds": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "time",
                                    "raw",
                                    "category",
                                    "tempC",
                                    "windDir",
                                    "windKt",
                                    "gustKt",
                                    "visSm",
                                    "ceilingFt",
                                    "clouds"
                                  ]
                                }
                              ]
                            },
                            "history": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "time": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "raw": {
                                    "type": "string"
                                  },
                                  "tempC": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "windKt": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "gustKt": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "visSm": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "ceilingFt": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "time",
                                  "category",
                                  "raw",
                                  "tempC",
                                  "windKt",
                                  "gustKt",
                                  "visSm",
                                  "ceilingFt"
                                ]
                              }
                            },
                            "taf": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "issued": {
                                      "type": "string"
                                    },
                                    "raw": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "issued",
                                    "raw"
                                  ]
                                }
                              ]
                            }
                          },
                          "required": [
                            "metar",
                            "history",
                            "taf"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "metar": {
                          "time": "2026-01-01T00:00:00Z",
                          "raw": "string",
                          "category": "string",
                          "tempC": 0,
                          "windDir": 0,
                          "windKt": 0,
                          "gustKt": 0,
                          "visSm": 0,
                          "ceilingFt": 0,
                          "clouds": "string"
                        },
                        "history": [
                          {
                            "time": "2026-01-01T00:00:00Z",
                            "category": "string",
                            "raw": "string",
                            "tempC": 0,
                            "windKt": 0,
                            "gustKt": 0,
                            "visSm": 0,
                            "ceilingFt": 0
                          }
                        ],
                        "taf": {
                          "issued": "2026-01-01T00:00:00Z",
                          "raw": "string"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/airport",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/markets": {
      "get": {
        "operationId": "get-markets",
        "tags": [
          "People & economy"
        ],
        "summary": "Economy pulse: USD/CAD, Bank of Canada policy rate, national and BC inflation",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/markets`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "usdcad": {
                              "type": "object",
                              "properties": {
                                "latest": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "d": {
                                          "type": "string"
                                        },
                                        "v": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "d",
                                        "v"
                                      ]
                                    }
                                  ]
                                },
                                "history": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "d": {
                                        "type": "string"
                                      },
                                      "v": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "d",
                                      "v"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "latest",
                                "history"
                              ]
                            },
                            "policyRate": {
                              "type": "object",
                              "properties": {
                                "latest": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "d": {
                                          "type": "string"
                                        },
                                        "v": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "d",
                                        "v"
                                      ]
                                    }
                                  ]
                                },
                                "changedOn": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "previous": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                }
                              },
                              "required": [
                                "latest",
                                "changedOn",
                                "previous"
                              ]
                            },
                            "cpiCanada": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "month": {
                                      "type": "string"
                                    },
                                    "yoy": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "month",
                                    "yoy"
                                  ]
                                }
                              ]
                            },
                            "cpiBC": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "month": {
                                      "type": "string"
                                    },
                                    "yoy": {
                                      "type": "number"
                                    },
                                    "index": {
                                      "type": "number"
                                    },
                                    "history": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "month": {
                                            "type": "string"
                                          },
                                          "yoy": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "month",
                                          "yoy"
                                        ]
                                      }
                                    }
                                  },
                                  "required": [
                                    "month",
                                    "yoy",
                                    "index",
                                    "history"
                                  ]
                                }
                              ]
                            }
                          },
                          "required": [
                            "usdcad",
                            "policyRate",
                            "cpiCanada",
                            "cpiBC"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "usdcad": {
                          "latest": {
                            "d": "string",
                            "v": 0
                          },
                          "history": [
                            {
                              "d": "string",
                              "v": 0
                            }
                          ]
                        },
                        "policyRate": {
                          "latest": {
                            "d": "string",
                            "v": 0
                          },
                          "changedOn": "string",
                          "previous": 0
                        },
                        "cpiCanada": {
                          "month": "string",
                          "yoy": 0
                        },
                        "cpiBC": {
                          "month": "string",
                          "yoy": 0,
                          "index": 0,
                          "history": [
                            {
                              "month": "string",
                              "yoy": 0
                            }
                          ]
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/markets",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/webcams": {
      "get": {
        "operationId": "get-webcams",
        "tags": [
          "Hazards"
        ],
        "summary": "DriveBC highway cameras within 60 km (image links are DriveBC’s own)",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/webcams`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "number"
                              },
                              "name": {
                                "type": "string"
                              },
                              "caption": {
                                "type": "string"
                              },
                              "highway": {
                                "type": "string"
                              },
                              "km": {
                                "type": "number"
                              },
                              "image": {
                                "type": "string"
                              },
                              "updated": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "stale": {
                                "type": "boolean"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "caption",
                              "highway",
                              "km",
                              "image",
                              "updated",
                              "stale",
                              "lat",
                              "lng",
                              "url"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": 0,
                          "name": "string",
                          "caption": "string",
                          "highway": "string",
                          "km": 0,
                          "image": "string",
                          "updated": "2026-01-01T00:00:00Z",
                          "stale": false,
                          "lat": 0,
                          "lng": 0,
                          "url": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/webcams",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/wildlife": {
      "get": {
        "operationId": "get-wildlife",
        "tags": [
          "Air & water"
        ],
        "summary": "Recent research-grade iNaturalist sightings within 25 km, with photo credits",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/wildlife`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "recent": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "number"
                                  },
                                  "observedOn": {
                                    "type": "string"
                                  },
                                  "common": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "scientific": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "photo": {
                                    "type": "string"
                                  },
                                  "attribution": {
                                    "type": "string"
                                  },
                                  "license": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "observedOn",
                                  "common",
                                  "scientific",
                                  "group",
                                  "photo",
                                  "attribution",
                                  "license",
                                  "url"
                                ]
                              }
                            },
                            "speciesLast30": {
                              "type": "number"
                            },
                            "observationsLast30": {
                              "type": "number"
                            },
                            "top": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "common": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "scientific": {
                                    "type": "string"
                                  },
                                  "count": {
                                    "type": "number"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "common",
                                  "scientific",
                                  "count",
                                  "url"
                                ]
                              }
                            }
                          },
                          "required": [
                            "recent",
                            "speciesLast30",
                            "observationsLast30",
                            "top"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "recent": [
                          {
                            "id": 0,
                            "observedOn": "string",
                            "common": "string",
                            "scientific": "string",
                            "group": "string",
                            "photo": "string",
                            "attribution": "string",
                            "license": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "speciesLast30": 0,
                        "observationsLast30": 0,
                        "top": [
                          {
                            "common": "string",
                            "scientific": "string",
                            "count": 0,
                            "url": "https://example.org/"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/wildlife",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/history/series": {
      "get": {
        "operationId": "get-history-series",
        "tags": [
          "History"
        ],
        "summary": "Every recorded live series: id, label, unit, number of readings and date range",
        "description": "PG Pulse records each live reading (weather, air, rivers, outages, fires, roads, Kp, airport METAR) into its database every time the source refreshes, every 5 to 30 minutes. Raw readings are kept 90 days; hourly averages, minimums and maximums are kept indefinitely.\n\nExample: `/api/v1/history/series`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "group": {
                                "type": "string"
                              },
                              "source": {
                                "type": "string"
                              },
                              "decimals": {
                                "type": "number"
                              },
                              "points": {
                                "type": "number"
                              },
                              "hours": {
                                "type": "number"
                              },
                              "first": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "last": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lastValue": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "label",
                              "unit",
                              "group",
                              "source",
                              "decimals",
                              "points",
                              "hours",
                              "first",
                              "last",
                              "lastValue"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "label": "string",
                          "unit": "string",
                          "group": "string",
                          "source": "string",
                          "decimals": 0,
                          "points": 0,
                          "hours": 0,
                          "first": "string",
                          "last": "string",
                          "lastValue": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/history/series",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/history": {
      "get": {
        "operationId": "get-history",
        "tags": [
          "History"
        ],
        "summary": "Time series for one or more recorded series (temperature, river level, outages…) between two dates",
        "description": "Pass `series` as a comma-separated list of ids from /history/series (up to 8). Each point has `t` (ISO time, or a YYYY-MM-DD local day for `interval=day`) and `value`; hourly and daily points add `min`, `max` and `n` (readings).\n\nExample: `/api/v1/history?series=weather.temp&from=48h`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "series",
            "in": "query",
            "required": true,
            "description": "Series ids, comma-separated.",
            "schema": {
              "type": "string",
              "examples": [
                "weather.temp,weather.feels_like"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/weather/history": {
      "get": {
        "operationId": "get-weather-history",
        "tags": [
          "Weather"
        ],
        "summary": "Recorded weather observations: temperature, feels like, humidity, dew point, wind, gusts, pressure, precipitation, visibility, snow depth, valley temperature and the inversion",
        "description": "Example: `/api/v1/weather/history?from=48h`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "series",
            "in": "query",
            "required": false,
            "description": "Only some of: weather.temp, weather.feels_like, weather.humidity, weather.wind, weather.gust, weather.pressure, weather.precip, weather.dewpoint, weather.visibility, weather.snow_depth, weather.valley_temp, weather.inversion.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/weather/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/air/history": {
      "get": {
        "operationId": "get-air-history",
        "tags": [
          "Air & water"
        ],
        "summary": "Recorded air quality: AQHI and PM2.5 (model and monitoring stations)",
        "description": "Example: `/api/v1/air/history?from=48h`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "series",
            "in": "query",
            "required": false,
            "description": "Only some of: air.aqhi, air.pm25, air.pm25_stations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/air/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/power/outages/history": {
      "get": {
        "operationId": "get-power-outages-history",
        "tags": [
          "Power"
        ],
        "summary": "Recorded BC Hydro outage counts and customers affected (nearby, Northern region, province)",
        "description": "Example: `/api/v1/power/outages/history?from=48h`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "series",
            "in": "query",
            "required": false,
            "description": "Only some of: outages.nearby.count, outages.nearby.customers, outages.region.count, outages.region.customers, outages.province.count, outages.province.customers.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/power/outages/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/wildfire/history": {
      "get": {
        "operationId": "get-wildfire-history",
        "tags": [
          "Hazards"
        ],
        "summary": "Recorded wildfire counts and area burned in the Prince George Fire Centre",
        "description": "Example: `/api/v1/wildfire/history?from=48h`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "series",
            "in": "query",
            "required": false,
            "description": "Only some of: fire.active, fire.season_total, fire.season_ha, fire.evacuations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/wildfire/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/roads/history": {
      "get": {
        "operationId": "get-roads-history",
        "tags": [
          "Hazards"
        ],
        "summary": "Recorded DriveBC event counts within 150 km",
        "description": "Example: `/api/v1/roads/history?from=48h`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "series",
            "in": "query",
            "required": false,
            "description": "Only some of: roads.events, roads.major.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/roads/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/aurora/history": {
      "get": {
        "operationId": "get-aurora-history",
        "tags": [
          "Hazards"
        ],
        "summary": "Recorded planetary K-index",
        "description": "Example: `/api/v1/aurora/history?from=48h`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "series",
            "in": "query",
            "required": false,
            "description": "Only some of: kp.observed, kp.estimated.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/aurora/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/airport/history": {
      "get": {
        "operationId": "get-airport-history",
        "tags": [
          "Weather"
        ],
        "summary": "Recorded CYXS METAR values: temperature, wind, gusts, visibility, ceiling, flight category",
        "description": "Example: `/api/v1/airport/history?from=48h`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "series",
            "in": "query",
            "required": false,
            "description": "Only some of: airport.temp, airport.wind, airport.gust, airport.visibility, airport.ceiling, airport.category.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/airport/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/rivers/{id}/history": {
      "get": {
        "operationId": "get-rivers-id-history",
        "tags": [
          "Air & water"
        ],
        "summary": "Recorded water level and flow for one gauge (hourly from the real-time feed)",
        "description": "Example: `/api/v1/rivers/08KE018/history?from=30d`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Station id from /rivers/stations.",
            "schema": {
              "type": "string",
              "enum": [
                "08KE018",
                "08KB001",
                "08JC002",
                "08KC001"
              ],
              "examples": [
                "08KE018"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start: ISO date/datetime, or a span back from `to` such as 48h, 7d or 30d (default 7d).",
            "schema": {
              "type": "string",
              "examples": [
                "7d"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End: ISO date/datetime (default now).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "description": "`raw` (every recorded reading; kept 90 days), `hour` or `day` (hourly rollups, kept indefinitely), or `auto` (raw up to 3 days, hourly up to 120 days, then daily).",
            "schema": {
              "type": "string",
              "enum": [
                "auto",
                "raw",
                "hour",
                "day"
              ],
              "default": "auto"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "unit": {
                                "type": "string"
                              },
                              "interval": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "day"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hour"
                                  },
                                  {
                                    "type": "string",
                                    "const": "raw"
                                  }
                                ]
                              },
                              "truncated": {
                                "type": "boolean"
                              },
                              "points": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "t": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "number"
                                    },
                                    "min": {
                                      "type": "number"
                                    },
                                    "max": {
                                      "type": "number"
                                    },
                                    "n": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "t",
                                    "value"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "series",
                              "label",
                              "unit",
                              "interval",
                              "truncated",
                              "points"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "label": "string",
                          "unit": "string",
                          "interval": "day",
                          "truncated": false,
                          "points": [
                            {
                              "t": "string",
                              "value": 0,
                              "min": 0,
                              "max": 0,
                              "n": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/rivers/{id}/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/live/sources": {
      "get": {
        "operationId": "get-live-sources",
        "tags": [
          "History"
        ],
        "summary": "Freshness of every live source: when it was last fetched, its cache lifetime and the last error",
        "description": "Example: `/api/v1/live/sources`\n\nCache: 60s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "source": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "fetchedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "ageSec": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "ttlSec": {
                                "type": "number"
                              },
                              "stale": {
                                "type": "boolean"
                              },
                              "lastError": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "failures": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "key",
                              "source",
                              "fetchedAt",
                              "ageSec",
                              "ttlSec",
                              "stale",
                              "lastError",
                              "failures"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "key": "string",
                          "source": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "ageSec": 0,
                          "ttlSec": 0,
                          "stale": false,
                          "lastError": "string",
                          "failures": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/live/sources",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/permits": {
      "get": {
        "operationId": "get-permits",
        "tags": [
          "City data"
        ],
        "summary": "Building permit applications: recent permits and totals",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/permits`\n\nCache: 43200s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "byYear": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "year": {
                                    "type": "number"
                                  },
                                  "total": {
                                    "type": "number"
                                  },
                                  "singleFamily": {
                                    "type": "number"
                                  },
                                  "multiFamily": {
                                    "type": "number"
                                  },
                                  "commercial": {
                                    "type": "number"
                                  },
                                  "plumbing": {
                                    "type": "number"
                                  },
                                  "demolition": {
                                    "type": "number"
                                  },
                                  "other": {
                                    "type": "number"
                                  },
                                  "value": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "year",
                                  "total",
                                  "singleFamily",
                                  "multiFamily",
                                  "commercial",
                                  "plumbing",
                                  "demolition",
                                  "other",
                                  "value"
                                ]
                              }
                            },
                            "recent": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "number": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  },
                                  "subject": {
                                    "type": "string"
                                  },
                                  "address": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "approved": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "status": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "number",
                                  "type",
                                  "subject",
                                  "address",
                                  "value",
                                  "approved",
                                  "status"
                                ]
                              }
                            },
                            "count": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "byYear",
                            "recent",
                            "count"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "byYear": [
                          {
                            "year": 0,
                            "total": 0,
                            "singleFamily": 0,
                            "multiFamily": 0,
                            "commercial": 0,
                            "plumbing": 0,
                            "demolition": 0,
                            "other": 0,
                            "value": 0
                          }
                        ],
                        "recent": [
                          {
                            "number": "string",
                            "type": "string",
                            "subject": "string",
                            "address": "string",
                            "value": 0,
                            "approved": "string",
                            "status": "string"
                          }
                        ],
                        "count": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/permits",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/crime": {
      "get": {
        "operationId": "get-crime",
        "tags": [
          "Safety"
        ],
        "summary": "Property-crime summary (last 12 full months vs the 12 before): by type, month, neighbourhood, hour and weekday",
        "description": "Example: `/api/v1/crime`\n\nCache: 43200s.",
        "parameters": [
          {
            "name": "neighbourhood",
            "in": "query",
            "required": false,
            "description": "Neighbourhood slug or name.",
            "schema": {
              "type": "string",
              "examples": [
                "downtown"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "types": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "auto"
                                      },
                                      {
                                        "type": "string",
                                        "const": "bike"
                                      },
                                      {
                                        "type": "string",
                                        "const": "bne"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fromauto"
                                      },
                                      {
                                        "type": "string",
                                        "const": "mischief"
                                      },
                                      {
                                        "type": "string",
                                        "const": "theft"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "short": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "key",
                                  "label",
                                  "short"
                                ]
                              }
                            },
                            "summary": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "months": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "byMonth": {
                                      "type": "object",
                                      "properties": {
                                        "theft": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "fromauto": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "mischief": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "bne": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "auto": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "bike": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        }
                                      },
                                      "required": [
                                        "theft",
                                        "fromauto",
                                        "mischief",
                                        "bne",
                                        "auto",
                                        "bike"
                                      ]
                                    },
                                    "last12": {
                                      "type": "number"
                                    },
                                    "prev12": {
                                      "type": "number"
                                    },
                                    "byType12": {
                                      "type": "object",
                                      "properties": {
                                        "theft": {
                                          "type": "number"
                                        },
                                        "fromauto": {
                                          "type": "number"
                                        },
                                        "mischief": {
                                          "type": "number"
                                        },
                                        "bne": {
                                          "type": "number"
                                        },
                                        "auto": {
                                          "type": "number"
                                        },
                                        "bike": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "theft",
                                        "fromauto",
                                        "mischief",
                                        "bne",
                                        "auto",
                                        "bike"
                                      ]
                                    },
                                    "byCommunity12": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string"
                                          },
                                          "count": {
                                            "type": "number"
                                          },
                                          "perKm2": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "name",
                                          "count",
                                          "perKm2"
                                        ]
                                      }
                                    },
                                    "byYear": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "count": {
                                            "type": "number"
                                          },
                                          "partial": {
                                            "type": "boolean"
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "count",
                                          "partial"
                                        ]
                                      }
                                    },
                                    "byHour": {
                                      "type": "array",
                                      "items": {
                                        "type": "number"
                                      }
                                    },
                                    "byWeekday": {
                                      "type": "array",
                                      "items": {
                                        "type": "number"
                                      }
                                    },
                                    "periodLabel": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "months",
                                    "byMonth",
                                    "last12",
                                    "prev12",
                                    "byType12",
                                    "byCommunity12",
                                    "byYear",
                                    "byHour",
                                    "byWeekday",
                                    "periodLabel"
                                  ]
                                }
                              ]
                            }
                          },
                          "required": [
                            "types",
                            "summary"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "types": [
                          {
                            "key": "auto",
                            "label": "string",
                            "short": "string"
                          }
                        ],
                        "summary": {
                          "months": [
                            "string"
                          ],
                          "byMonth": {
                            "theft": [
                              0
                            ],
                            "fromauto": [
                              0
                            ],
                            "mischief": [
                              0
                            ],
                            "bne": [
                              0
                            ],
                            "auto": [
                              0
                            ],
                            "bike": [
                              0
                            ]
                          },
                          "last12": 0,
                          "prev12": 0,
                          "byType12": {
                            "theft": 0,
                            "fromauto": 0,
                            "mischief": 0,
                            "bne": 0,
                            "auto": 0,
                            "bike": 0
                          },
                          "byCommunity12": [
                            {
                              "name": "string",
                              "count": 0,
                              "perKm2": 0
                            }
                          ],
                          "byYear": [
                            {
                              "year": 0,
                              "count": 0,
                              "partial": false
                            }
                          ],
                          "byHour": [
                            0
                          ],
                          "byWeekday": [
                            0
                          ],
                          "periodLabel": "string"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/crime",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/crime/points": {
      "get": {
        "operationId": "get-crime-points",
        "tags": [
          "Safety"
        ],
        "summary": "Property-crime occurrences from the last 12 full months as points",
        "description": "Locations are the City’s published (generalised) occurrence points. `type` is one of the ids in /crime `types`.\n\nExample: `/api/v1/crime/points?neighbourhood=downtown&type=bne&limit=3`\n\nCache: 43200s.",
        "parameters": [
          {
            "name": "neighbourhood",
            "in": "query",
            "required": false,
            "description": "Neighbourhood slug or name.",
            "schema": {
              "type": "string",
              "examples": [
                "downtown"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Crime type id.",
            "schema": {
              "type": "string",
              "enum": [
                "theft",
                "fromauto",
                "mischief",
                "bne",
                "auto",
                "bike"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string"
                              },
                              "geometry": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string"
                                  },
                                  "coordinates": {
                                    "type": "array",
                                    "items": {
                                      "type": "number"
                                    }
                                  }
                                },
                                "required": [
                                  "type",
                                  "coordinates"
                                ]
                              },
                              "properties": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "auto"
                                      },
                                      {
                                        "type": "string",
                                        "const": "bike"
                                      },
                                      {
                                        "type": "string",
                                        "const": "bne"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fromauto"
                                      },
                                      {
                                        "type": "string",
                                        "const": "mischief"
                                      },
                                      {
                                        "type": "string",
                                        "const": "theft"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "label"
                                ]
                              }
                            },
                            "required": [
                              "type",
                              "geometry",
                              "properties"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "type": "string",
                          "geometry": {
                            "type": "string",
                            "coordinates": [
                              0
                            ]
                          },
                          "properties": {
                            "type": "auto",
                            "label": "string"
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/crime/points",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/crime/occurrences": {
      "get": {
        "operationId": "get-crime-occurrences",
        "tags": [
          "Safety"
        ],
        "summary": "Every property-crime occurrence row since 2021 (date, type, neighbourhood, lat, lng, hour)",
        "description": "`hour` is -1 when unknown. Large: page with limit/offset or filter by `from`/`to` (YYYY-MM-DD).\n\nExample: `/api/v1/crime/occurrences?from=2026-08-01&limit=3`\n\nCache: 43200s.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start date (inclusive).",
            "schema": {
              "type": "string",
              "examples": [
                "2026-01-01"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End date (inclusive).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "neighbourhood",
            "in": "query",
            "required": false,
            "description": "Neighbourhood slug or name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Crime type id.",
            "schema": {
              "type": "string",
              "enum": [
                "theft",
                "fromauto",
                "mischief",
                "bne",
                "auto",
                "bike"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "date": {
                                "type": "string"
                              },
                              "type": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "auto"
                                  },
                                  {
                                    "type": "string",
                                    "const": "bike"
                                  },
                                  {
                                    "type": "string",
                                    "const": "bne"
                                  },
                                  {
                                    "type": "string",
                                    "const": "fromauto"
                                  },
                                  {
                                    "type": "string",
                                    "const": "mischief"
                                  },
                                  {
                                    "type": "string",
                                    "const": "theft"
                                  }
                                ]
                              },
                              "neighbourhood": {
                                "type": "string"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "hour": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "date",
                              "type",
                              "neighbourhood",
                              "lat",
                              "lng",
                              "hour"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "date": "2026-01-01T00:00:00Z",
                          "type": "auto",
                          "neighbourhood": "string",
                          "lat": 0,
                          "lng": 0,
                          "hour": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/crime/occurrences",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/crime/severity": {
      "get": {
        "operationId": "get-crime-severity",
        "tags": [
          "Safety"
        ],
        "summary": "Crime severity index and clearance rates since 2000, Prince George vs BC",
        "description": "Example: `/api/v1/crime/severity`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "pageUrl": {
                                  "type": "string"
                                },
                                "asOf": {
                                  "type": "string"
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "retrieved": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "pageUrl": "https://example.org/",
                        "asOf": "string",
                        "notes": "string",
                        "retrieved": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/crime/severity",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/people": {
      "get": {
        "operationId": "get-people",
        "tags": [
          "People & economy"
        ],
        "summary": "People of Prince George: census headline numbers and population trend",
        "description": "Example: `/api/v1/people`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "summary": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "population": {
                              "$ref": "#/components/schemas/JsonValue"
                            }
                          },
                          "required": [
                            "summary",
                            "population"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "summary": null,
                        "population": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/people",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/census": {
      "get": {
        "operationId": "get-census",
        "tags": [
          "People & economy"
        ],
        "summary": "The full 2021 Census profile for Prince George (every table)",
        "description": "Example: `/api/v1/census?table=commuteMode`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "table",
            "in": "query",
            "required": false,
            "description": "One table only, e.g. summary, ageBySex, commuteMode, industry (see the keys of the full response).",
            "schema": {
              "type": "string",
              "examples": [
                "commuteMode"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "number"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "total": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "men": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "women": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "bc": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "bcMen": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "bcWomen": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "total",
                                  "men",
                                  "women",
                                  "bc",
                                  "bcMen",
                                  "bcWomen"
                                ]
                              }
                            },
                            {
                              "type": "null"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "object",
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "number"
                                        },
                                        "label": {
                                          "type": "string"
                                        },
                                        "total": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "men": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "women": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "bc": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "bcMen": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "bcWomen": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "label",
                                        "total",
                                        "men",
                                        "women",
                                        "bc",
                                        "bcMen",
                                        "bcWomen"
                                      ]
                                    }
                                  },
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "number"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "total": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "men": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "women": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "bc": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "bcMen": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "bcWomen": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "label",
                                      "total",
                                      "men",
                                      "women",
                                      "bc",
                                      "bcMen",
                                      "bcWomen"
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "pageUrl": {
                                  "type": "string"
                                },
                                "asOf": {
                                  "type": "string"
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "retrieved": {
                                  "type": "string"
                                },
                                "geography": {
                                  "type": "string"
                                },
                                "released": {
                                  "type": "string"
                                },
                                "summary": {
                                  "type": "object",
                                  "additionalProperties": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            },
                            {
                              "type": "string"
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": 0,
                          "label": "string",
                          "total": 0,
                          "men": 0,
                          "women": 0,
                          "bc": 0,
                          "bcMen": 0,
                          "bcWomen": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/census",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/economy": {
      "get": {
        "operationId": "get-economy",
        "tags": [
          "People & economy"
        ],
        "summary": "Economy: labour force (annual and monthly), consumer prices, industries, occupations, incomes",
        "description": "Example: `/api/v1/economy`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "labourForce": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "cpi": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "census": {
                              "type": "object",
                              "properties": {
                                "labourForce": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "industry": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "occupation": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "householdIncomeGroups": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "individualIncomeGroups": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "placeOfWork": {
                                  "$ref": "#/components/schemas/JsonValue"
                                }
                              },
                              "required": [
                                "labourForce",
                                "industry",
                                "occupation",
                                "householdIncomeGroups",
                                "individualIncomeGroups",
                                "placeOfWork"
                              ]
                            }
                          },
                          "required": [
                            "labourForce",
                            "cpi",
                            "census"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "labourForce": null,
                        "cpi": null,
                        "census": {
                          "labourForce": null,
                          "industry": null,
                          "occupation": null,
                          "householdIncomeGroups": null,
                          "individualIncomeGroups": null,
                          "placeOfWork": null
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/economy",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/housing": {
      "get": {
        "operationId": "get-housing",
        "tags": [
          "People & economy"
        ],
        "summary": "Housing: rents, vacancy, prices, starts, supply, housing target and census housing",
        "description": "Example: `/api/v1/housing`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "rents": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    },
                                    "asOf": {
                                      "type": "string"
                                    },
                                    "notes": {
                                      "type": "string"
                                    },
                                    "retrieved": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "boolean"
                                      },
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "object",
                                        "additionalProperties": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "rentCompare": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    },
                                    "asOf": {
                                      "type": "string"
                                    },
                                    "notes": {
                                      "type": "string"
                                    },
                                    "retrieved": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "boolean"
                                      },
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "object",
                                        "additionalProperties": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "prices": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    },
                                    "asOf": {
                                      "type": "string"
                                    },
                                    "notes": {
                                      "type": "string"
                                    },
                                    "retrieved": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "boolean"
                                      },
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "object",
                                        "additionalProperties": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "starts": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    },
                                    "asOf": {
                                      "type": "string"
                                    },
                                    "notes": {
                                      "type": "string"
                                    },
                                    "retrieved": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "boolean"
                                      },
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "object",
                                        "additionalProperties": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "supply": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    },
                                    "asOf": {
                                      "type": "string"
                                    },
                                    "notes": {
                                      "type": "string"
                                    },
                                    "retrieved": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "boolean"
                                      },
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "object",
                                        "additionalProperties": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "target": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    },
                                    "asOf": {
                                      "type": "string"
                                    },
                                    "notes": {
                                      "type": "string"
                                    },
                                    "retrieved": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "boolean"
                                      },
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "object",
                                        "additionalProperties": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "census": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    },
                                    "asOf": {
                                      "type": "string"
                                    },
                                    "notes": {
                                      "type": "string"
                                    },
                                    "retrieved": {
                                      "type": "string"
                                    }
                                  },
                                  "additionalProperties": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "boolean"
                                      },
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "object",
                                        "additionalProperties": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      {
                                        "type": "string"
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          },
                          "required": [
                            "rents",
                            "rentCompare",
                            "prices",
                            "starts",
                            "supply",
                            "target",
                            "census"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "rents": {
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "asOf": "string",
                          "notes": "string",
                          "retrieved": "string"
                        },
                        "rentCompare": {
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "asOf": "string",
                          "notes": "string",
                          "retrieved": "string"
                        },
                        "prices": {
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "asOf": "string",
                          "notes": "string",
                          "retrieved": "string"
                        },
                        "starts": {
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "asOf": "string",
                          "notes": "string",
                          "retrieved": "string"
                        },
                        "supply": {
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "asOf": "string",
                          "notes": "string",
                          "retrieved": "string"
                        },
                        "target": {
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "asOf": "string",
                          "notes": "string",
                          "retrieved": "string"
                        },
                        "census": {
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "asOf": "string",
                          "notes": "string",
                          "retrieved": "string"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/housing",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/land": {
      "get": {
        "operationId": "get-land",
        "tags": [
          "People & economy"
        ],
        "summary": "Land and resources: geography, water, forests, mining and energy, farmland",
        "description": "Example: `/api/v1/land`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "geography": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "water": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "forests": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "miningEnergy": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "farmland": {
                              "$ref": "#/components/schemas/JsonValue"
                            }
                          },
                          "required": [
                            "geography",
                            "water",
                            "forests",
                            "miningEnergy",
                            "farmland"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "geography": null,
                        "water": null,
                        "forests": null,
                        "miningEnergy": null,
                        "farmland": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/land",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/datasets": {
      "get": {
        "operationId": "get-datasets",
        "tags": [
          "Datasets"
        ],
        "summary": "Index of every reference dataset behind the dashboards, with where it comes from and how fresh it is",
        "description": "`kind` is `fetched` (refreshed from an official machine-readable source by a scheduled job) or `seed` (hand-compiled from PDFs or web pages; `reason` says why). `stale` is true when a fetched dataset has not been confirmed recently.\n\nExample: `/api/v1/datasets`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "api": {
                                    "type": "string"
                                  },
                                  "series": {
                                    "type": "string"
                                  },
                                  "reason": {
                                    "type": "string"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "fetched"
                                      },
                                      {
                                        "type": "string",
                                        "const": "seed"
                                      }
                                    ]
                                  },
                                  "origin": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "admin"
                                      },
                                      {
                                        "type": "string",
                                        "const": "job"
                                      },
                                      {
                                        "type": "string",
                                        "const": "seed"
                                      }
                                    ]
                                  },
                                  "asOf": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "fetchedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "checkedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "stale": {
                                    "type": "boolean"
                                  },
                                  "available": {
                                    "type": "boolean"
                                  },
                                  "source": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "license": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "page": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "api",
                                  "series",
                                  "id",
                                  "title",
                                  "group",
                                  "kind",
                                  "origin",
                                  "asOf",
                                  "fetchedAt",
                                  "checkedAt",
                                  "stale",
                                  "available",
                                  "source",
                                  "sourceUrl",
                                  "license",
                                  "page"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "asOf": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "license": {
                                    "type": "string"
                                  },
                                  "page": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "group",
                                  "kind",
                                  "asOf",
                                  "license",
                                  "page",
                                  "api"
                                ]
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "api": "https://example.org/",
                          "series": "string",
                          "reason": "string",
                          "id": "string",
                          "title": "string",
                          "group": "string",
                          "kind": "fetched",
                          "origin": "admin",
                          "asOf": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "checkedAt": "2026-01-01T00:00:00Z",
                          "stale": false,
                          "available": false,
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "license": "string",
                          "page": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/datasets",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/datasets/{id}": {
      "get": {
        "operationId": "get-datasets-id",
        "tags": [
          "Datasets"
        ],
        "summary": "One reference dataset, exactly as the site uses it",
        "description": "Example: `/api/v1/datasets/population`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Dataset id from /datasets.",
            "schema": {
              "type": "string",
              "examples": [
                "population"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/JsonValue"
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": null,
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/datasets/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/datasets/{id}/records": {
      "get": {
        "operationId": "get-datasets-id-records",
        "tags": [
          "Datasets"
        ],
        "summary": "A curated dataset as records (one per item: a place, a venue, a section), with when each was last changed",
        "description": "Curated datasets (`kind: curated` in /datasets) are stored as records: list items have ids like `places/mcd-victoria`, other sections are one record each. Hidden records are left out.\n\nExample: `/api/v1/datasets/late-night/records?section=places`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Curated dataset id from /datasets.",
            "schema": {
              "type": "string",
              "examples": [
                "late-night"
              ]
            }
          },
          {
            "name": "section",
            "in": "query",
            "required": false,
            "description": "Only one section (e.g. `places`).",
            "schema": {
              "type": "string",
              "examples": [
                "places"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "data": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "updatedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "corrected": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "data",
                              "updatedAt",
                              "corrected"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "data": null,
                          "updatedAt": "2026-01-01T00:00:00Z",
                          "corrected": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/datasets/{id}/records",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/datasets/{id}/series": {
      "get": {
        "operationId": "get-datasets-id-series",
        "tags": [
          "Datasets"
        ],
        "summary": "A statistics dataset as tidy rows: series, period, value (filter by series and period)",
        "description": "Every numeric time series in the dataset as one row per period. Without `series`, also lists the available series in `meta.series`. Periods are years (2025), months (2026-08) or dates.\n\nExample: `/api/v1/datasets/housing-rents/series?series=vacancyRate&from=2015`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Statistics dataset id from /datasets (kind fetched or seed).",
            "schema": {
              "type": "string",
              "examples": [
                "housing-rents"
              ]
            }
          },
          {
            "name": "series",
            "in": "query",
            "required": false,
            "description": "One series (or a prefix: `averageRent` matches every unit type).",
            "schema": {
              "type": "string",
              "examples": [
                "averageRent.Two bedroom"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "First period (inclusive), e.g. 2015 or 2020-01.",
            "schema": {
              "type": "string",
              "examples": [
                "2015"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Last period (inclusive).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "series": {
                                "type": "string"
                              },
                              "period": {
                                "type": "string"
                              },
                              "value": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              }
                            },
                            "required": [
                              "series",
                              "period",
                              "value"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "series": "string",
                          "period": "string",
                          "value": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/datasets/{id}/series",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/indigenous": {
      "get": {
        "operationId": "get-indigenous",
        "tags": [
          "Indigenous Prince George"
        ],
        "summary": "Indigenous Prince George: the territory, key facts, timeline, places, nations, organisations, events, words, reading",
        "description": "Every fact carries its public source (`src`). PG Pulse does not speak for any Nation.\n\nExample: `/api/v1/indigenous`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "section",
            "in": "query",
            "required": false,
            "description": "Only one section.",
            "schema": {
              "type": "string",
              "enum": [
                "nameParts",
                "keyFacts",
                "acknowledgement",
                "eras",
                "timeline",
                "places",
                "nations",
                "crisisLines",
                "orgs",
                "events",
                "words",
                "languageLinks",
                "reading",
                "images",
                "sources"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/JsonValue"
                              }
                            },
                            {
                              "type": "object",
                              "additionalProperties": {
                                "$ref": "#/components/schemas/JsonValue"
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        null
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/indigenous",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/neighbourhoods/stats": {
      "get": {
        "operationId": "get-neighbourhoods-stats",
        "tags": [
          "Neighbourhoods"
        ],
        "summary": "Property crime per neighbourhood, last 12 full months (count and per km²)",
        "description": "Example: `/api/v1/neighbourhoods/stats`\n\nCache: 43200s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "crime12": {
                                "type": "number"
                              },
                              "crimePerKm2": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "slug",
                              "name",
                              "crime12",
                              "crimePerKm2"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "name": "string",
                          "crime12": 0,
                          "crimePerKm2": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/neighbourhoods/stats",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/news": {
      "get": {
        "operationId": "get-news",
        "tags": [
          "News & stories"
        ],
        "summary": "Aggregated local news feed (headline, image, short description, link) plus PG Pulse stories, newest first",
        "description": "Links only: follow `url` to read the original. Article bodies are never stored or served.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/news?topic=civic&limit=3`\n\nCache: 120s.",
        "parameters": [
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "Topic slug (see /news/topics).",
            "schema": {
              "type": "string",
              "examples": [
                "civic"
              ]
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "description": "Source id or name, comma separated (see /news/sources).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in title, description and source name (covers the whole archive; headlines are kept permanently, summaries for about 18 months).",
            "schema": {
              "type": "string",
              "examples": [
                "council"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Only items published on or after this date (YYYY-MM-DD or ISO date-time).",
            "schema": {
              "type": "string",
              "examples": [
                "2026-09-01"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Only items published on or before this date.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "Item kind.",
            "schema": {
              "type": "string",
              "enum": [
                "article",
                "reddit",
                "video",
                "social",
                "original"
              ]
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "`latest` (default): every item, newest first. `top`: one entry per story from the last 72 hours, ranked by score = source quality × (1 + 0.6 × (outlets − 1)) × 0.5^(age in hours / 12), each with `score` and `alsoCovered` (the other publishers’ copies), then the rest newest first. Editorial only: nothing paid or engagement-based.",
            "schema": {
              "type": "string",
              "enum": [
                "latest",
                "top"
              ]
            }
          },
          {
            "name": "story",
            "in": "query",
            "required": false,
            "description": "Every copy of one story (its `storyId`).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Incremental pulls: only items first collected after this ISO date-time, oldest first (PG Pulse stories by publication time). Store `meta.updatedAt` and pass it next time.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-09-30T00:00:00Z"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of items: id, url, title, description (the publisher’s own summary, at most 220 characters), image, source, sourceName, date, kind, topics, firstSeen, logo, storyId (copies of one story from different publishers share it; grouping compares headlines and stored summaries only), pinnedUntil (editor pin). With sort=top also score and alsoCovered [{ id, url, title, source, sourceName, date }].",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "storyId": {
                                "type": "string"
                              },
                              "firstSeen": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "logo": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "id": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "image": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceName": {
                                "type": "string"
                              },
                              "date": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "article"
                                  },
                                  {
                                    "type": "string",
                                    "const": "original"
                                  },
                                  {
                                    "type": "string",
                                    "const": "reddit"
                                  },
                                  {
                                    "type": "string",
                                    "const": "social"
                                  },
                                  {
                                    "type": "string",
                                    "const": "video"
                                  }
                                ]
                              },
                              "topics": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "videoId": {
                                "type": "string"
                              },
                              "author": {
                                "type": "string"
                              },
                              "platform": {
                                "type": "string"
                              },
                              "original": {
                                "type": "boolean"
                              },
                              "category": {
                                "type": "string"
                              },
                              "pinnedUntil": {
                                "type": "string",
                                "description": "An editor pinned it to the top until this time."
                              },
                              "alsoCovered": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceName": {
                                      "type": "string"
                                    },
                                    "date": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "url",
                                    "title",
                                    "source",
                                    "sourceName",
                                    "date"
                                  ]
                                },
                                "description": "Other publishers' copies of the same story (cards: \"Also covered by\")."
                              },
                              "score": {
                                "type": "number",
                                "description": "sort=top only: the story's score (docs/features/news-feed.md#top-stories)."
                              }
                            },
                            "required": [
                              "storyId",
                              "firstSeen",
                              "logo",
                              "id",
                              "url",
                              "title",
                              "description",
                              "image",
                              "source",
                              "sourceName",
                              "date",
                              "kind",
                              "topics"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "storyId": "string",
                          "firstSeen": "string",
                          "logo": "string",
                          "id": "string",
                          "url": "https://example.org/",
                          "title": "string",
                          "description": "string",
                          "image": "string",
                          "source": "string",
                          "sourceName": "string",
                          "date": "2026-01-01T00:00:00Z",
                          "kind": "article",
                          "topics": [
                            "string"
                          ],
                          "videoId": "string",
                          "author": "string",
                          "platform": "string",
                          "original": false,
                          "category": "string",
                          "pinnedUntil": "string",
                          "alsoCovered": [
                            {
                              "id": "string",
                              "url": "https://example.org/",
                              "title": "string",
                              "source": "string",
                              "sourceName": "string",
                              "date": "2026-01-01T00:00:00Z"
                            }
                          ],
                          "score": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/news",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/news/archive": {
      "get": {
        "operationId": "get-news-archive",
        "tags": [
          "News & stories"
        ],
        "summary": "The permanent headline archive: every month with headlines, with counts",
        "description": "Headlines are kept permanently (headline, source, date, link, topics); summaries and images only for about 18 months. Get a month with /news/archive/{year}/{month}.\n\nExample: `/api/v1/news/archive`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ year, month, key, count, label, url, api }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "api": {
                                "type": "string"
                              },
                              "year": {
                                "type": "number"
                              },
                              "month": {
                                "type": "number"
                              },
                              "key": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              },
                              "label": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "api",
                              "year",
                              "month",
                              "key",
                              "count",
                              "label",
                              "url"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "api": "https://example.org/",
                          "year": 0,
                          "month": 0,
                          "key": "string",
                          "count": 0,
                          "label": "string",
                          "url": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/news/archive",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/news/archive/{year}": {
      "get": {
        "operationId": "get-news-archive-year",
        "tags": [
          "News & stories"
        ],
        "summary": "One year of the headline archive: its months with headline counts",
        "description": "Example: `/api/v1/news/archive/2026`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "year",
            "in": "path",
            "required": true,
            "description": "Four-digit year (see /news/archive).",
            "schema": {
              "type": "string",
              "examples": [
                "2026"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ year, total, months: [{ year, month, key, count, label, url, api }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "year": {
                              "type": "number"
                            },
                            "total": {
                              "type": "number"
                            },
                            "url": {
                              "type": "string"
                            },
                            "months": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "api": {
                                    "type": "string"
                                  },
                                  "year": {
                                    "type": "number"
                                  },
                                  "month": {
                                    "type": "number"
                                  },
                                  "key": {
                                    "type": "string"
                                  },
                                  "count": {
                                    "type": "number"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "api",
                                  "year",
                                  "month",
                                  "key",
                                  "count",
                                  "label",
                                  "url"
                                ]
                              }
                            }
                          },
                          "required": [
                            "year",
                            "total",
                            "url",
                            "months"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "year": 0,
                        "total": 0,
                        "url": "https://example.org/",
                        "months": [
                          {
                            "api": "https://example.org/",
                            "year": 0,
                            "month": 0,
                            "key": "string",
                            "count": 0,
                            "label": "string",
                            "url": "https://example.org/"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/news/archive/{year}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/news/archive/{year}/{month}": {
      "get": {
        "operationId": "get-news-archive-year-month",
        "tags": [
          "News & stories"
        ],
        "summary": "Every headline of one month (local time), newest first: headline, source, date and link only",
        "description": "Example: `/api/v1/news/archive/2026/09`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "year",
            "in": "path",
            "required": true,
            "description": "Four-digit year.",
            "schema": {
              "type": "string",
              "examples": [
                "2026"
              ]
            }
          },
          {
            "name": "month",
            "in": "path",
            "required": true,
            "description": "Two-digit month.",
            "schema": {
              "type": "string",
              "examples": [
                "09"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the headline or source name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "description": "Source id or name, comma separated.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "Topic slug (see /news/topics).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, title, url, source, sourceName, date, day, kind, topics }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceName": {
                                "type": "string"
                              },
                              "date": {
                                "type": "string"
                              },
                              "day": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "topics": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "url",
                              "source",
                              "sourceName",
                              "date",
                              "day",
                              "kind",
                              "topics"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "title": "string",
                          "url": "https://example.org/",
                          "source": "string",
                          "sourceName": "string",
                          "date": "2026-01-01T00:00:00Z",
                          "day": "string",
                          "kind": "string",
                          "topics": [
                            "string"
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/news/archive/{year}/{month}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/news/trends": {
      "get": {
        "operationId": "get-news-trends",
        "tags": [
          "News & stories"
        ],
        "summary": "What Prince George is talking about: terms rising in local headlines and summaries this week",
        "description": "Words and two-word phrases from the headlines and publishers’ short summaries of the last 7 days, compared with the average week of the 4 weeks before: score = (items this week − baseline) / √(baseline + 1), at least 3 items from 2 publishers; single words only when written as names. Counts only, never text. Recomputed hourly.\n\nExample: `/api/v1/news/trends`\n\nCache: 900s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "How many terms (1-40, default 20).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ term (normalised), label (as usually written), rank, items (this week), sources (distinct publishers), baseline (average week before), score, sourceNames, url, api }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              },
                              "term": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "rank": {
                                "type": "number"
                              },
                              "items": {
                                "type": "number"
                              },
                              "sources": {
                                "type": "number"
                              },
                              "baseline": {
                                "type": "number"
                              },
                              "score": {
                                "type": "number"
                              },
                              "sourceNames": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "computedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url",
                              "api",
                              "term",
                              "label",
                              "rank",
                              "items",
                              "sources",
                              "baseline",
                              "score",
                              "sourceNames",
                              "computedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "url": "https://example.org/",
                          "api": "https://example.org/",
                          "term": "string",
                          "label": "string",
                          "rank": 0,
                          "items": 0,
                          "sources": 0,
                          "baseline": 0,
                          "score": 0,
                          "sourceNames": [
                            "string"
                          ],
                          "computedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/news/trends",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/news/trends/{term}": {
      "get": {
        "operationId": "get-news-trends-term",
        "tags": [
          "News & stories"
        ],
        "summary": "Daily use of one term in local news: items and distinct publishers per day",
        "description": "Example: `/api/v1/news/trends/spruce kings`\n\nCache: 900s.",
        "parameters": [
          {
            "name": "term",
            "in": "path",
            "required": true,
            "description": "A word or two-word phrase (case and plurals do not matter).",
            "schema": {
              "type": "string",
              "examples": [
                "spruce kings"
              ]
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "Days back (7-400, default 60).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ term, series: [{ day, items, sources }], total }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "term": {
                              "type": "string"
                            },
                            "series": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "day": {
                                    "type": "string"
                                  },
                                  "items": {
                                    "type": "number"
                                  },
                                  "sources": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "day",
                                  "items",
                                  "sources"
                                ]
                              }
                            },
                            "total": {
                              "type": "number"
                            },
                            "search": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "term",
                            "series",
                            "total",
                            "search"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "term": "string",
                        "series": [
                          {
                            "day": "string",
                            "items": 0,
                            "sources": 0
                          }
                        ],
                        "total": 0,
                        "search": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/news/trends/{term}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/news/topics": {
      "get": {
        "operationId": "get-news-topics",
        "tags": [
          "News & stories"
        ],
        "summary": "News topics",
        "description": "Example: `/api/v1/news/topics`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonValue"
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        null
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/news/topics",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/news/sources": {
      "get": {
        "operationId": "get-news-sources",
        "tags": [
          "News & stories"
        ],
        "summary": "Every news source with item counts and last fetch status",
        "description": "Example: `/api/v1/news/sources`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "homepage": {
                                "type": "string"
                              },
                              "quality": {
                                "type": "number"
                              },
                              "topicHints": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "logo": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "enabled": {
                                "type": "boolean"
                              },
                              "note": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "items": {
                                "type": "number"
                              },
                              "ok": {
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              },
                              "error": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lastFetched": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lastSuccess": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "type",
                              "homepage",
                              "quality",
                              "topicHints",
                              "logo",
                              "enabled",
                              "note",
                              "items",
                              "ok",
                              "error",
                              "lastFetched",
                              "lastSuccess"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "type": "string",
                          "homepage": "https://example.org/",
                          "quality": 0,
                          "topicHints": [
                            "string"
                          ],
                          "logo": "string",
                          "enabled": false,
                          "note": "string",
                          "items": 0,
                          "ok": false,
                          "error": "string",
                          "lastFetched": "string",
                          "lastSuccess": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/news/sources",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/stories": {
      "get": {
        "operationId": "get-stories",
        "tags": [
          "News & stories"
        ],
        "summary": "PG Pulse stories (original articles), newest first",
        "description": "Example: `/api/v1/stories`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Story category.",
            "schema": {
              "type": "string",
              "examples": [
                "Guide"
              ]
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Tag.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "body",
            "in": "query",
            "required": false,
            "description": "Include the Markdown body.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "body": {
                                "type": "string"
                              },
                              "date": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "readingMinutes": {
                                "type": "number"
                              },
                              "url": {
                                "type": "string"
                              },
                              "markdown": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "author": {
                                "type": "string"
                              },
                              "category": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "Business"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Data"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Events"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Explainer"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Guide"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Local story"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Opinion"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Outdoors"
                                  }
                                ]
                              },
                              "tags": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "featured": {
                                "type": "boolean"
                              },
                              "sources": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "title": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "title",
                                    "url"
                                  ]
                                }
                              },
                              "updated": {
                                "type": "string",
                                "description": "ISO date or timestamp"
                              },
                              "checked": {
                                "type": "string",
                                "description": "ISO date or timestamp"
                              },
                              "image": {
                                "type": "string"
                              },
                              "imageAlt": {
                                "type": "string"
                              },
                              "imageCredit": {
                                "type": "string"
                              },
                              "sponsor": {
                                "type": "string"
                              },
                              "sponsorBusiness": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "date",
                              "readingMinutes",
                              "url",
                              "markdown",
                              "api",
                              "title",
                              "description",
                              "author",
                              "category",
                              "tags",
                              "featured",
                              "sources",
                              "slug"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "body": "string",
                          "date": "2026-01-01T00:00:00Z",
                          "readingMinutes": 0,
                          "url": "https://example.org/",
                          "markdown": "string",
                          "api": "https://example.org/",
                          "title": "string",
                          "description": "string",
                          "author": "string",
                          "category": "Business",
                          "tags": [
                            "string"
                          ],
                          "featured": false,
                          "sources": [
                            {
                              "title": "string",
                              "url": "https://example.org/"
                            }
                          ],
                          "updated": "2026-01-01T00:00:00Z",
                          "checked": "string",
                          "image": "string",
                          "imageAlt": "string",
                          "imageCredit": "string",
                          "sponsor": "string",
                          "sponsorBusiness": "string",
                          "slug": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/stories",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/stories/{slug}": {
      "get": {
        "operationId": "get-stories-slug",
        "tags": [
          "News & stories"
        ],
        "summary": "One PG Pulse story with its Markdown body",
        "description": "Example: `/api/v1/stories/why-prince-george-sits-in-a-bowl`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Story slug.",
            "schema": {
              "type": "string",
              "examples": [
                "why-prince-george-sits-in-a-bowl"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "date": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "readingMinutes": {
                              "type": "number"
                            },
                            "url": {
                              "type": "string"
                            },
                            "body": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "author": {
                              "type": "string"
                            },
                            "category": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "Business"
                                },
                                {
                                  "type": "string",
                                  "const": "Data"
                                },
                                {
                                  "type": "string",
                                  "const": "Events"
                                },
                                {
                                  "type": "string",
                                  "const": "Explainer"
                                },
                                {
                                  "type": "string",
                                  "const": "Guide"
                                },
                                {
                                  "type": "string",
                                  "const": "Local story"
                                },
                                {
                                  "type": "string",
                                  "const": "Opinion"
                                },
                                {
                                  "type": "string",
                                  "const": "Outdoors"
                                }
                              ]
                            },
                            "tags": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "featured": {
                              "type": "boolean"
                            },
                            "sources": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "title": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "title",
                                  "url"
                                ]
                              }
                            },
                            "updated": {
                              "type": "string",
                              "description": "ISO date or timestamp"
                            },
                            "checked": {
                              "type": "string",
                              "description": "ISO date or timestamp"
                            },
                            "image": {
                              "type": "string"
                            },
                            "imageAlt": {
                              "type": "string"
                            },
                            "imageCredit": {
                              "type": "string"
                            },
                            "sponsor": {
                              "type": "string"
                            },
                            "sponsorBusiness": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "date",
                            "readingMinutes",
                            "url",
                            "body",
                            "title",
                            "description",
                            "author",
                            "category",
                            "tags",
                            "featured",
                            "sources"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "date": "2026-01-01T00:00:00Z",
                        "readingMinutes": 0,
                        "url": "https://example.org/",
                        "body": "string",
                        "title": "string",
                        "description": "string",
                        "author": "string",
                        "category": "Business",
                        "tags": [
                          "string"
                        ],
                        "featured": false,
                        "sources": [
                          {
                            "title": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "updated": "2026-01-01T00:00:00Z",
                        "checked": "string",
                        "image": "string",
                        "imageAlt": "string",
                        "imageCredit": "string",
                        "sponsor": "string",
                        "sponsorBusiness": "string",
                        "slug": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/stories/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/posts": {
      "get": {
        "operationId": "get-posts",
        "tags": [
          "News & stories"
        ],
        "summary": "Published PG Pulse posts from the site’s publishing tool (empty until posts exist)",
        "description": "Example: `/api/v1/posts`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Post category.",
            "schema": {
              "type": "string",
              "examples": [
                "Community"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonValue"
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        null
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/posts",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/posts/{slug}": {
      "get": {
        "operationId": "get-posts-slug",
        "tags": [
          "News & stories"
        ],
        "summary": "One published PG Pulse post with its Markdown body",
        "description": "Example: `/api/v1/posts/{slug}`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Post slug (see /posts).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "url": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "image": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "category": {
                              "type": "string"
                            },
                            "publishedAt": {
                              "type": "string"
                            },
                            "updatedAt": {
                              "type": "string"
                            },
                            "author": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "body": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "slug",
                            "url",
                            "title",
                            "description",
                            "image",
                            "category",
                            "publishedAt",
                            "updatedAt",
                            "author",
                            "body"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "id": 0,
                        "slug": "string",
                        "url": "https://example.org/",
                        "title": "string",
                        "description": "string",
                        "image": "string",
                        "category": "string",
                        "publishedAt": "2026-01-01T00:00:00Z",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "author": "string",
                        "body": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/posts/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/guides/sections": {
      "get": {
        "operationId": "get-guides-sections",
        "tags": [
          "Guides"
        ],
        "summary": "Guide sections: explore, city, visit, civic",
        "description": "Example: `/api/v1/guides/sections`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              },
                              "api": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "icon": {
                                "type": "string"
                              },
                              "crumb": {
                                "type": "string"
                              },
                              "id": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "city"
                                  },
                                  {
                                    "type": "string",
                                    "const": "civic"
                                  },
                                  {
                                    "type": "string",
                                    "const": "explore"
                                  },
                                  {
                                    "type": "string",
                                    "const": "visit"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "url",
                              "count",
                              "api",
                              "label",
                              "title",
                              "description",
                              "icon",
                              "crumb",
                              "id"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "url": "https://example.org/",
                          "count": 0,
                          "api": "https://example.org/",
                          "label": "string",
                          "title": "string",
                          "description": "string",
                          "icon": "string",
                          "crumb": "string",
                          "id": "city"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/guides/sections",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/guides": {
      "get": {
        "operationId": "get-guides",
        "tags": [
          "Guides"
        ],
        "summary": "Every guide (history, city services, visiting, civic life) with metadata",
        "description": "Example: `/api/v1/guides?section=city&limit=2`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "section",
            "in": "query",
            "required": false,
            "description": "Section id.",
            "schema": {
              "type": "string",
              "enum": [
                "explore",
                "city",
                "visit",
                "civic"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "body",
            "in": "query",
            "required": false,
            "description": "Include each guide’s Markdown body.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "body": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "section": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "city"
                                  },
                                  {
                                    "type": "string",
                                    "const": "civic"
                                  },
                                  {
                                    "type": "string",
                                    "const": "explore"
                                  },
                                  {
                                    "type": "string",
                                    "const": "visit"
                                  }
                                ]
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "updated": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "published": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "checked": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "order": {
                                "type": "number"
                              },
                              "image": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "imageAlt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "imageCredit": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "tags": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "summary": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "url": {
                                "type": "string"
                              },
                              "markdown": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "slug",
                              "section",
                              "title",
                              "description",
                              "updated",
                              "published",
                              "checked",
                              "order",
                              "image",
                              "imageAlt",
                              "imageCredit",
                              "tags",
                              "summary",
                              "url",
                              "markdown",
                              "api"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "body": "string",
                          "slug": "string",
                          "section": "city",
                          "title": "string",
                          "description": "string",
                          "updated": "2026-01-01T00:00:00Z",
                          "published": "2026-01-01T00:00:00Z",
                          "checked": "string",
                          "order": 0,
                          "image": "string",
                          "imageAlt": "string",
                          "imageCredit": "string",
                          "tags": [
                            "string"
                          ],
                          "summary": [
                            "string"
                          ],
                          "url": "https://example.org/",
                          "markdown": "string",
                          "api": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/guides",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/guides/{section}/{slug}": {
      "get": {
        "operationId": "get-guides-section-slug",
        "tags": [
          "Guides"
        ],
        "summary": "One guide: metadata, at-a-glance facts, FAQ, official links, sources and the full Markdown body",
        "description": "Example: `/api/v1/guides/city/garbage-and-recycling`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "section",
            "in": "path",
            "required": true,
            "description": "Section id.",
            "schema": {
              "type": "string",
              "examples": [
                "city"
              ]
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Guide slug.",
            "schema": {
              "type": "string",
              "examples": [
                "garbage-and-recycling"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "faq": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "q": {
                                    "type": "string"
                                  },
                                  "a": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "q",
                                  "a"
                                ]
                              }
                            },
                            "officialLinks": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            },
                            "sources": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "title": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "title",
                                  "url"
                                ]
                              }
                            },
                            "body": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "section": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "city"
                                },
                                {
                                  "type": "string",
                                  "const": "civic"
                                },
                                {
                                  "type": "string",
                                  "const": "explore"
                                },
                                {
                                  "type": "string",
                                  "const": "visit"
                                }
                              ]
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "updated": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "published": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "checked": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "order": {
                              "type": "number"
                            },
                            "image": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "imageAlt": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "imageCredit": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "tags": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "summary": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "url": {
                              "type": "string"
                            },
                            "markdown": {
                              "type": "string"
                            },
                            "api": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "faq",
                            "officialLinks",
                            "sources",
                            "body",
                            "slug",
                            "section",
                            "title",
                            "description",
                            "updated",
                            "published",
                            "checked",
                            "order",
                            "image",
                            "imageAlt",
                            "imageCredit",
                            "tags",
                            "summary",
                            "url",
                            "markdown",
                            "api"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "faq": [
                          {
                            "q": "string",
                            "a": "string"
                          }
                        ],
                        "officialLinks": [
                          {
                            "label": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "sources": [
                          {
                            "title": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "body": "string",
                        "slug": "string",
                        "section": "city",
                        "title": "string",
                        "description": "string",
                        "updated": "2026-01-01T00:00:00Z",
                        "published": "2026-01-01T00:00:00Z",
                        "checked": "string",
                        "order": 0,
                        "image": "string",
                        "imageAlt": "string",
                        "imageCredit": "string",
                        "tags": [
                          "string"
                        ],
                        "summary": [
                          "string"
                        ],
                        "url": "https://example.org/",
                        "markdown": "string",
                        "api": "https://example.org/"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/guides/{section}/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/resources": {
      "get": {
        "operationId": "get-resources",
        "tags": [
          "Guides"
        ],
        "summary": "Resource hub: forms, PDFs, maps, data, apps and phone numbers",
        "description": "Example: `/api/v1/resources`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Category name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "Kind.",
            "schema": {
              "type": "string",
              "enum": [
                "link",
                "pdf",
                "form",
                "map",
                "data",
                "app",
                "phone"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "app"
                                  },
                                  {
                                    "type": "string",
                                    "const": "data"
                                  },
                                  {
                                    "type": "string",
                                    "const": "form"
                                  },
                                  {
                                    "type": "string",
                                    "const": "link"
                                  },
                                  {
                                    "type": "string",
                                    "const": "map"
                                  },
                                  {
                                    "type": "string",
                                    "const": "pdf"
                                  },
                                  {
                                    "type": "string",
                                    "const": "phone"
                                  }
                                ]
                              },
                              "category": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "publisher": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "url",
                              "kind",
                              "category",
                              "description",
                              "publisher"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "title": "string",
                          "url": "https://example.org/",
                          "kind": "app",
                          "category": "string",
                          "description": "string",
                          "publisher": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/resources",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/events": {
      "get": {
        "operationId": "get-events",
        "tags": [
          "Events"
        ],
        "summary": "Upcoming events in Prince George (aggregated calendar), soonest first",
        "description": "Times carry their UTC offset (Prince George local time).\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/events?limit=3`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Only events running on or after this date (YYYY-MM-DD). Dates before today search past events (history is kept about two years).",
            "schema": {
              "type": "string",
              "examples": [
                "2026-10-01"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Only events starting on or before this date.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "month",
            "in": "query",
            "required": false,
            "description": "Only events in this local month (YYYY-MM), as on the site’s month pages; instead of `from`/`to`. See /events/months.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-11"
              ]
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Category name or slug (see /events/categories).",
            "schema": {
              "type": "string",
              "examples": [
                "music-nightlife"
              ]
            }
          },
          {
            "name": "venue",
            "in": "query",
            "required": false,
            "description": "Venue name contains.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "description": "Automated calendar source id (see /events/sources).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in title, summary, venue and source.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "past",
            "in": "query",
            "required": false,
            "description": "Include events that already ended.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Incremental sync: only events added or changed after this ISO date-time, oldest change first, including ones a source stopped listing (`status: removed`). Store `meta.updatedAt` and pass it next time.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-09-30T00:00:00Z"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of events: id, title, start, end, allDay, venue, address, lat, lng, category, summary, image, url, source, sourceId, origin, status, firstSeen, updatedAt.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "removedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "pageUrl": {
                                    "type": "string"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "start": {
                                    "type": "string"
                                  },
                                  "end": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "allDay": {
                                    "type": "boolean"
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  },
                                  "image": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "until": {
                                    "type": "string"
                                  },
                                  "sourceId": {
                                    "type": "string"
                                  },
                                  "origin": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "aggregated"
                                      },
                                      {
                                        "type": "string",
                                        "const": "manual"
                                      }
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "active"
                                      },
                                      {
                                        "type": "string",
                                        "const": "merged"
                                      },
                                      {
                                        "type": "string",
                                        "const": "removed"
                                      }
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  },
                                  "lastSeen": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "pageUrl",
                                  "id",
                                  "title",
                                  "start",
                                  "end",
                                  "allDay",
                                  "venue",
                                  "address",
                                  "category",
                                  "summary",
                                  "image",
                                  "url",
                                  "source"
                                ]
                              },
                              {
                                "$ref": "#/components/schemas/Event"
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "removedAt": "2026-01-01T00:00:00Z",
                          "pageUrl": "https://example.org/",
                          "id": "example-event",
                          "title": "Example event (fictional)",
                          "start": "2026-01-01T18:00:00.000Z",
                          "end": null,
                          "allDay": false,
                          "venue": "string",
                          "address": "string",
                          "lat": 0,
                          "lng": 0,
                          "category": "string",
                          "summary": "Fictional response illustrating the contract.",
                          "image": "string",
                          "url": "https://organiser.example/event",
                          "source": "Example organiser",
                          "until": "2026-01-01T00:00:00Z",
                          "sourceId": "string",
                          "origin": "aggregated",
                          "status": "active",
                          "firstSeen": "string",
                          "updatedAt": "2026-01-01T00:00:00.000Z",
                          "lastSeen": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/events",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/events/months": {
      "get": {
        "operationId": "get-events-months",
        "tags": [
          "Events"
        ],
        "summary": "Months with upcoming events, with counts and their month pages",
        "description": "The current month and every later month that has upcoming events, as on the site’s “Browse by month” links. Read one month with `/events?month=YYYY-MM`.\n\nExample: `/api/v1/events/months`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ month, label, count, url, api }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "month": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              },
                              "url": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "month",
                              "label",
                              "count",
                              "url",
                              "api"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "month": "string",
                          "label": "string",
                          "count": 0,
                          "url": "https://example.org/",
                          "api": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/events/months",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/events/categories": {
      "get": {
        "operationId": "get-events-categories",
        "tags": [
          "Events"
        ],
        "summary": "Event categories with upcoming counts",
        "description": "Example: `/api/v1/events/categories`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "upcoming": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "name",
                              "slug",
                              "upcoming"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "name": "string",
                          "slug": "string",
                          "upcoming": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/events/categories",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/events/sources": {
      "get": {
        "operationId": "get-events-sources",
        "tags": [
          "Events"
        ],
        "summary": "Calendars the events feed is built from, with status",
        "description": "Example: `/api/v1/events/sources`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "type": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "ok": {
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              },
                              "count": {
                                "type": "number"
                              },
                              "raw": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "ms": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "error": {
                                "type": "string"
                              },
                              "kept": {
                                "type": "boolean"
                              },
                              "checkedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lastSuccess": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "ok",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "type": "string",
                          "url": "https://example.org/",
                          "ok": false,
                          "count": 0,
                          "raw": 0,
                          "ms": 0,
                          "error": "string",
                          "kept": false,
                          "checkedAt": "2026-01-01T00:00:00Z",
                          "lastSuccess": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/events/sources",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/events/{id}": {
      "get": {
        "operationId": "get-events-id",
        "tags": [
          "Events"
        ],
        "summary": "One event",
        "description": "Example: `/api/v1/events/{id}`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Event id (from /events), or the last segment of its page address (`pageUrl`).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "pageUrl": {
                                  "type": "string"
                                },
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "start": {
                                  "type": "string"
                                },
                                "end": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "allDay": {
                                  "type": "boolean"
                                },
                                "venue": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "address": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "lat": {
                                  "type": "number"
                                },
                                "lng": {
                                  "type": "number"
                                },
                                "category": {
                                  "type": "string"
                                },
                                "summary": {
                                  "type": "string"
                                },
                                "image": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "url": {
                                  "type": "string"
                                },
                                "source": {
                                  "type": "string"
                                },
                                "until": {
                                  "type": "string"
                                },
                                "sourceId": {
                                  "type": "string"
                                },
                                "origin": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "aggregated"
                                    },
                                    {
                                      "type": "string",
                                      "const": "manual"
                                    }
                                  ]
                                },
                                "status": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "active"
                                    },
                                    {
                                      "type": "string",
                                      "const": "merged"
                                    },
                                    {
                                      "type": "string",
                                      "const": "removed"
                                    }
                                  ]
                                },
                                "firstSeen": {
                                  "type": "string"
                                },
                                "updatedAt": {
                                  "type": "string"
                                },
                                "lastSeen": {
                                  "type": "string"
                                },
                                "removedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "pageUrl",
                                "id",
                                "title",
                                "start",
                                "end",
                                "allDay",
                                "venue",
                                "address",
                                "category",
                                "summary",
                                "image",
                                "url",
                                "source"
                              ]
                            },
                            {
                              "$ref": "#/components/schemas/Event"
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "pageUrl": "https://example.org/",
                        "id": "example-event",
                        "title": "Example event (fictional)",
                        "start": "2026-01-01T18:00:00.000Z",
                        "end": null,
                        "allDay": false,
                        "venue": "string",
                        "address": "string",
                        "lat": 0,
                        "lng": 0,
                        "category": "string",
                        "summary": "Fictional response illustrating the contract.",
                        "image": "string",
                        "url": "https://organiser.example/event",
                        "source": "Example organiser",
                        "until": "2026-01-01T00:00:00Z",
                        "sourceId": "string",
                        "origin": "aggregated",
                        "status": "active",
                        "firstSeen": "string",
                        "updatedAt": "2026-01-01T00:00:00.000Z",
                        "lastSeen": "string",
                        "removedAt": "2026-01-01T00:00:00Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/events/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/nightlife": {
      "get": {
        "operationId": "get-nightlife",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "Nightlife overview: tonight, this weekend, weekly regulars, venues, bars, services, rides and night plans",
        "description": "Example: `/api/v1/nightlife`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "today": {
                              "type": "string"
                            },
                            "weekend": {
                              "type": "object",
                              "properties": {
                                "from": {
                                  "type": "string"
                                },
                                "to": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "from",
                                "to"
                              ]
                            },
                            "tonight": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "start": {
                                    "type": "string"
                                  },
                                  "end": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "allDay": {
                                    "type": "boolean"
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  },
                                  "image": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "until": {
                                    "type": "string"
                                  },
                                  "sourceId": {
                                    "type": "string"
                                  },
                                  "origin": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "aggregated"
                                      },
                                      {
                                        "type": "string",
                                        "const": "manual"
                                      }
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "active"
                                      },
                                      {
                                        "type": "string",
                                        "const": "merged"
                                      },
                                      {
                                        "type": "string",
                                        "const": "removed"
                                      }
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  },
                                  "lastSeen": {
                                    "type": "string"
                                  },
                                  "removedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "start",
                                  "end",
                                  "allDay",
                                  "venue",
                                  "address",
                                  "category",
                                  "summary",
                                  "image",
                                  "url",
                                  "source"
                                ]
                              }
                            },
                            "thisWeekend": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "start": {
                                    "type": "string"
                                  },
                                  "end": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "allDay": {
                                    "type": "boolean"
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  },
                                  "image": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "until": {
                                    "type": "string"
                                  },
                                  "sourceId": {
                                    "type": "string"
                                  },
                                  "origin": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "aggregated"
                                      },
                                      {
                                        "type": "string",
                                        "const": "manual"
                                      }
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "active"
                                      },
                                      {
                                        "type": "string",
                                        "const": "merged"
                                      },
                                      {
                                        "type": "string",
                                        "const": "removed"
                                      }
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  },
                                  "lastSeen": {
                                    "type": "string"
                                  },
                                  "removedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "start",
                                  "end",
                                  "allDay",
                                  "venue",
                                  "address",
                                  "category",
                                  "summary",
                                  "image",
                                  "url",
                                  "source"
                                ]
                              }
                            },
                            "later": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "start": {
                                    "type": "string"
                                  },
                                  "end": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "allDay": {
                                    "type": "boolean"
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "summary": {
                                    "type": "string"
                                  },
                                  "image": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "until": {
                                    "type": "string"
                                  },
                                  "sourceId": {
                                    "type": "string"
                                  },
                                  "origin": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "aggregated"
                                      },
                                      {
                                        "type": "string",
                                        "const": "manual"
                                      }
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "active"
                                      },
                                      {
                                        "type": "string",
                                        "const": "merged"
                                      },
                                      {
                                        "type": "string",
                                        "const": "removed"
                                      }
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  },
                                  "lastSeen": {
                                    "type": "string"
                                  },
                                  "removedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "start",
                                  "end",
                                  "allDay",
                                  "venue",
                                  "address",
                                  "category",
                                  "summary",
                                  "image",
                                  "url",
                                  "source"
                                ]
                              }
                            },
                            "weekly": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "day": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "fr"
                                      },
                                      {
                                        "type": "string",
                                        "const": "mo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "sa"
                                      },
                                      {
                                        "type": "string",
                                        "const": "su"
                                      },
                                      {
                                        "type": "string",
                                        "const": "th"
                                      },
                                      {
                                        "type": "string",
                                        "const": "tu"
                                      },
                                      {
                                        "type": "string",
                                        "const": "we"
                                      }
                                    ]
                                  },
                                  "name": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "offset": {
                                    "type": "number"
                                  },
                                  "list": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "place": {
                                          "type": "object",
                                          "properties": {
                                            "id": {
                                              "type": "string"
                                            },
                                            "name": {
                                              "type": "string"
                                            },
                                            "href": {
                                              "type": "string"
                                            }
                                          },
                                          "required": [
                                            "id",
                                            "name",
                                            "href"
                                          ]
                                        },
                                        "day": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "fr"
                                            },
                                            {
                                              "type": "string",
                                              "const": "mo"
                                            },
                                            {
                                              "type": "string",
                                              "const": "sa"
                                            },
                                            {
                                              "type": "string",
                                              "const": "su"
                                            },
                                            {
                                              "type": "string",
                                              "const": "th"
                                            },
                                            {
                                              "type": "string",
                                              "const": "tu"
                                            },
                                            {
                                              "type": "string",
                                              "const": "we"
                                            }
                                          ]
                                        },
                                        "what": {
                                          "type": "string"
                                        },
                                        "time": {
                                          "type": "string"
                                        },
                                        "end": {
                                          "type": "string"
                                        },
                                        "note": {
                                          "type": "string"
                                        },
                                        "source": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "place",
                                        "day",
                                        "what",
                                        "source"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "offset",
                                  "list"
                                ]
                              }
                            },
                            "venues": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "street": {
                                    "type": "string"
                                  },
                                  "area": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "blurb": {
                                    "type": "string"
                                  },
                                  "match": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "club": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "kind",
                                  "street",
                                  "area",
                                  "url",
                                  "blurb",
                                  "match",
                                  "source"
                                ]
                              }
                            },
                            "bars": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "set": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "href": {
                                    "type": "string"
                                  },
                                  "external": {
                                    "type": "boolean"
                                  },
                                  "street": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "area": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "thumb": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lng": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "line": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "hours": {
                                    "type": "object",
                                    "properties": {
                                      "all": {
                                        "type": "string"
                                      },
                                      "th": {
                                        "type": "string"
                                      },
                                      "su": {
                                        "type": "string"
                                      },
                                      "mo": {
                                        "type": "string"
                                      },
                                      "tu": {
                                        "type": "string"
                                      },
                                      "we": {
                                        "type": "string"
                                      },
                                      "fr": {
                                        "type": "string"
                                      },
                                      "sa": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "hoursSource": {
                                    "type": "string"
                                  },
                                  "hoursNote": {
                                    "type": "string"
                                  },
                                  "hoursLabel": {
                                    "type": "string"
                                  },
                                  "nights": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "day": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "fr"
                                            },
                                            {
                                              "type": "string",
                                              "const": "mo"
                                            },
                                            {
                                              "type": "string",
                                              "const": "sa"
                                            },
                                            {
                                              "type": "string",
                                              "const": "su"
                                            },
                                            {
                                              "type": "string",
                                              "const": "th"
                                            },
                                            {
                                              "type": "string",
                                              "const": "tu"
                                            },
                                            {
                                              "type": "string",
                                              "const": "we"
                                            }
                                          ]
                                        },
                                        "what": {
                                          "type": "string"
                                        },
                                        "time": {
                                          "type": "string"
                                        },
                                        "end": {
                                          "type": "string"
                                        },
                                        "note": {
                                          "type": "string"
                                        },
                                        "source": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "day",
                                        "what",
                                        "source"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "set",
                                  "kind",
                                  "name",
                                  "href",
                                  "external",
                                  "nights"
                                ]
                              }
                            },
                            "barSets": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "type": "string"
                                  },
                                  "blurb": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "icon",
                                  "c",
                                  "blurb"
                                ]
                              }
                            },
                            "services": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "line": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "kind",
                                  "line",
                                  "url",
                                  "source"
                                ]
                              }
                            },
                            "rides": {
                              "type": "object",
                              "properties": {
                                "taxis": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "slug": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "slug",
                                      "name",
                                      "phone",
                                      "url"
                                    ]
                                  }
                                },
                                "charters": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "slug": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "slug",
                                      "name",
                                      "phone",
                                      "url"
                                    ]
                                  }
                                },
                                "rideshare": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "line": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        },
                                        "source": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "line",
                                        "url",
                                        "source"
                                      ]
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "taxis",
                                "charters",
                                "rideshare"
                              ]
                            },
                            "plans": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "type": "string"
                                  },
                                  "pitch": {
                                    "type": "string"
                                  },
                                  "area": {
                                    "type": "string"
                                  },
                                  "picks": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "late": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "icon",
                                  "c",
                                  "pitch",
                                  "area",
                                  "picks",
                                  "late"
                                ]
                              }
                            },
                            "checked": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "removed": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "reason": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "reason",
                                  "source"
                                ]
                              }
                            }
                          },
                          "required": [
                            "today",
                            "weekend",
                            "tonight",
                            "thisWeekend",
                            "later",
                            "weekly",
                            "venues",
                            "bars",
                            "barSets",
                            "services",
                            "rides",
                            "plans",
                            "checked",
                            "removed"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "today": "string",
                        "weekend": {
                          "from": "string",
                          "to": "string"
                        },
                        "tonight": [
                          {
                            "id": "string",
                            "title": "string",
                            "start": "2026-01-01T00:00:00Z",
                            "end": "2026-01-01T00:00:00Z",
                            "allDay": false,
                            "venue": "string",
                            "address": "string",
                            "lat": 0,
                            "lng": 0,
                            "category": "string",
                            "summary": "string",
                            "image": "string",
                            "url": "https://example.org/",
                            "source": "string",
                            "until": "2026-01-01T00:00:00Z",
                            "sourceId": "string",
                            "origin": "aggregated",
                            "status": "active",
                            "firstSeen": "string",
                            "updatedAt": "2026-01-01T00:00:00Z",
                            "lastSeen": "string",
                            "removedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "thisWeekend": [
                          {
                            "id": "string",
                            "title": "string",
                            "start": "2026-01-01T00:00:00Z",
                            "end": "2026-01-01T00:00:00Z",
                            "allDay": false,
                            "venue": "string",
                            "address": "string",
                            "lat": 0,
                            "lng": 0,
                            "category": "string",
                            "summary": "string",
                            "image": "string",
                            "url": "https://example.org/",
                            "source": "string",
                            "until": "2026-01-01T00:00:00Z",
                            "sourceId": "string",
                            "origin": "aggregated",
                            "status": "active",
                            "firstSeen": "string",
                            "updatedAt": "2026-01-01T00:00:00Z",
                            "lastSeen": "string",
                            "removedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "later": [
                          {
                            "id": "string",
                            "title": "string",
                            "start": "2026-01-01T00:00:00Z",
                            "end": "2026-01-01T00:00:00Z",
                            "allDay": false,
                            "venue": "string",
                            "address": "string",
                            "lat": 0,
                            "lng": 0,
                            "category": "string",
                            "summary": "string",
                            "image": "string",
                            "url": "https://example.org/",
                            "source": "string",
                            "until": "2026-01-01T00:00:00Z",
                            "sourceId": "string",
                            "origin": "aggregated",
                            "status": "active",
                            "firstSeen": "string",
                            "updatedAt": "2026-01-01T00:00:00Z",
                            "lastSeen": "string",
                            "removedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "weekly": [
                          {
                            "day": "fr",
                            "name": null,
                            "offset": 0,
                            "list": [
                              {
                                "place": {
                                  "id": "string",
                                  "name": "string",
                                  "href": "https://example.org/"
                                },
                                "day": "fr",
                                "what": "string",
                                "time": "2026-01-01T00:00:00Z",
                                "end": "2026-01-01T00:00:00Z",
                                "note": "string",
                                "source": "string"
                              }
                            ]
                          }
                        ],
                        "venues": [
                          {
                            "id": "string",
                            "name": "string",
                            "kind": "string",
                            "street": "string",
                            "area": "string",
                            "url": "https://example.org/",
                            "blurb": "string",
                            "match": [
                              "string"
                            ],
                            "source": "string",
                            "slug": "string",
                            "lat": 0,
                            "lng": 0,
                            "club": false
                          }
                        ],
                        "bars": [
                          {
                            "id": "string",
                            "set": "string",
                            "kind": "string",
                            "name": "string",
                            "href": "https://example.org/",
                            "external": false,
                            "street": "string",
                            "area": "string",
                            "phone": "string",
                            "website": "https://example.org/",
                            "thumb": "string",
                            "lat": 0,
                            "lng": 0,
                            "line": "string",
                            "hours": {
                              "all": "string",
                              "th": "string",
                              "su": "string",
                              "mo": "string",
                              "tu": "string",
                              "we": "string",
                              "fr": "string",
                              "sa": "string"
                            },
                            "hoursSource": "string",
                            "hoursNote": "string",
                            "hoursLabel": "string",
                            "nights": [
                              {
                                "day": "fr",
                                "what": "string",
                                "time": "2026-01-01T00:00:00Z",
                                "end": "2026-01-01T00:00:00Z",
                                "note": "string",
                                "source": "string"
                              }
                            ]
                          }
                        ],
                        "barSets": [
                          {
                            "id": "string",
                            "label": "string",
                            "icon": "string",
                            "c": "string",
                            "blurb": "string"
                          }
                        ],
                        "services": [
                          {
                            "name": "string",
                            "kind": "string",
                            "line": "string",
                            "url": "https://example.org/",
                            "source": "string",
                            "slug": "string"
                          }
                        ],
                        "rides": {
                          "taxis": [
                            {
                              "slug": "string",
                              "name": "string",
                              "phone": "string",
                              "url": "https://example.org/"
                            }
                          ],
                          "charters": [
                            {
                              "slug": "string",
                              "name": "string",
                              "phone": "string",
                              "url": "https://example.org/"
                            }
                          ],
                          "rideshare": {
                            "name": "string",
                            "line": "string",
                            "url": "https://example.org/",
                            "source": "string"
                          }
                        },
                        "plans": [
                          {
                            "id": "string",
                            "label": "string",
                            "icon": "string",
                            "c": "string",
                            "pitch": "string",
                            "area": "string",
                            "picks": [
                              "string"
                            ],
                            "late": [
                              "string"
                            ]
                          }
                        ],
                        "checked": "string",
                        "removed": [
                          {
                            "name": "string",
                            "reason": "string",
                            "source": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/nightlife",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/nightlife/venues": {
      "get": {
        "operationId": "get-nightlife-venues",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "Concert halls, arenas, clubs and stages",
        "description": "Example: `/api/v1/nightlife/venues`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "street": {
                                "type": "string"
                              },
                              "area": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "blurb": {
                                "type": "string"
                              },
                              "match": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "source": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "club": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "kind",
                              "street",
                              "area",
                              "url",
                              "blurb",
                              "match",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "kind": "string",
                          "street": "string",
                          "area": "string",
                          "url": "https://example.org/",
                          "blurb": "string",
                          "match": [
                            "string"
                          ],
                          "source": "string",
                          "slug": "string",
                          "lat": 0,
                          "lng": 0,
                          "club": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/nightlife/venues",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/nightlife/bars": {
      "get": {
        "operationId": "get-nightlife-bars",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "Bars, pubs, breweries, lounges, clubs and games venues with hours and weekly nights",
        "description": "Example: `/api/v1/nightlife/bars`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "set",
            "in": "query",
            "required": false,
            "description": "Only one set.",
            "schema": {
              "type": "string",
              "enum": [
                "brew",
                "pub",
                "lounge",
                "club",
                "play"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "set": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "href": {
                                "type": "string"
                              },
                              "external": {
                                "type": "boolean"
                              },
                              "street": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "area": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "thumb": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "line": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "hours": {
                                "type": "object",
                                "properties": {
                                  "all": {
                                    "type": "string"
                                  },
                                  "th": {
                                    "type": "string"
                                  },
                                  "su": {
                                    "type": "string"
                                  },
                                  "mo": {
                                    "type": "string"
                                  },
                                  "tu": {
                                    "type": "string"
                                  },
                                  "we": {
                                    "type": "string"
                                  },
                                  "fr": {
                                    "type": "string"
                                  },
                                  "sa": {
                                    "type": "string"
                                  }
                                }
                              },
                              "hoursSource": {
                                "type": "string"
                              },
                              "hoursNote": {
                                "type": "string"
                              },
                              "hoursLabel": {
                                "type": "string"
                              },
                              "nights": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "day": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "const": "fr"
                                        },
                                        {
                                          "type": "string",
                                          "const": "mo"
                                        },
                                        {
                                          "type": "string",
                                          "const": "sa"
                                        },
                                        {
                                          "type": "string",
                                          "const": "su"
                                        },
                                        {
                                          "type": "string",
                                          "const": "th"
                                        },
                                        {
                                          "type": "string",
                                          "const": "tu"
                                        },
                                        {
                                          "type": "string",
                                          "const": "we"
                                        }
                                      ]
                                    },
                                    "what": {
                                      "type": "string"
                                    },
                                    "time": {
                                      "type": "string"
                                    },
                                    "end": {
                                      "type": "string"
                                    },
                                    "note": {
                                      "type": "string"
                                    },
                                    "source": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "day",
                                    "what",
                                    "source"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "id",
                              "set",
                              "kind",
                              "name",
                              "href",
                              "external",
                              "nights"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "set": "string",
                          "kind": "string",
                          "name": "string",
                          "href": "https://example.org/",
                          "external": false,
                          "street": "string",
                          "area": "string",
                          "phone": "string",
                          "website": "https://example.org/",
                          "thumb": "string",
                          "lat": 0,
                          "lng": 0,
                          "line": "string",
                          "hours": {
                            "all": "string",
                            "th": "string",
                            "su": "string",
                            "mo": "string",
                            "tu": "string",
                            "we": "string",
                            "fr": "string",
                            "sa": "string"
                          },
                          "hoursSource": "string",
                          "hoursNote": "string",
                          "hoursLabel": "string",
                          "nights": [
                            {
                              "day": "fr",
                              "what": "string",
                              "time": "2026-01-01T00:00:00Z",
                              "end": "2026-01-01T00:00:00Z",
                              "note": "string",
                              "source": "string"
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/nightlife/bars",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/nightlife/events": {
      "get": {
        "operationId": "get-nightlife-events",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "Upcoming music and nightlife events (evening shows, concerts, DJ nights)",
        "description": "Example: `/api/v1/nightlife/events`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "start": {
                                "type": "string"
                              },
                              "end": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "allDay": {
                                "type": "boolean"
                              },
                              "venue": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "category": {
                                "type": "string"
                              },
                              "summary": {
                                "type": "string"
                              },
                              "image": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": "string"
                              },
                              "source": {
                                "type": "string"
                              },
                              "until": {
                                "type": "string"
                              },
                              "sourceId": {
                                "type": "string"
                              },
                              "origin": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "aggregated"
                                  },
                                  {
                                    "type": "string",
                                    "const": "manual"
                                  }
                                ]
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "active"
                                  },
                                  {
                                    "type": "string",
                                    "const": "merged"
                                  },
                                  {
                                    "type": "string",
                                    "const": "removed"
                                  }
                                ]
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "updatedAt": {
                                "type": "string"
                              },
                              "lastSeen": {
                                "type": "string"
                              },
                              "removedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "start",
                              "end",
                              "allDay",
                              "venue",
                              "address",
                              "category",
                              "summary",
                              "image",
                              "url",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "title": "string",
                          "start": "2026-01-01T00:00:00Z",
                          "end": "2026-01-01T00:00:00Z",
                          "allDay": false,
                          "venue": "string",
                          "address": "string",
                          "lat": 0,
                          "lng": 0,
                          "category": "string",
                          "summary": "string",
                          "image": "string",
                          "url": "https://example.org/",
                          "source": "string",
                          "until": "2026-01-01T00:00:00Z",
                          "sourceId": "string",
                          "origin": "aggregated",
                          "status": "active",
                          "firstSeen": "string",
                          "updatedAt": "2026-01-01T00:00:00Z",
                          "lastSeen": "string",
                          "removedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/nightlife/events",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/artists": {
      "get": {
        "operationId": "get-artists",
        "tags": [
          "Local artists"
        ],
        "summary": "Approved local artist profiles: DJs, bands, musicians, comedians, visual artists, dancers and other talent",
        "description": "Only approved, live profiles. Private contact details are never exposed; booking goes through each profile page. Profiles marked listedFromPublicInfo were added from the artist's own public pages and can be claimed by them.\n\nExample: `/api/v1/artists`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "group",
            "in": "query",
            "required": false,
            "description": "Kind group (see /artists/taxonomy).",
            "schema": {
              "type": "string",
              "enum": [
                "djs",
                "bands",
                "musicians",
                "ensembles",
                "comedy",
                "visual",
                "photo",
                "dance",
                "words",
                "other"
              ],
              "examples": [
                "bands"
              ]
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "Kind id (see /artists/taxonomy).",
            "schema": {
              "type": "string",
              "examples": [
                "band"
              ]
            }
          },
          {
            "name": "genre",
            "in": "query",
            "required": false,
            "description": "Genre or style id (see /artists/taxonomy).",
            "schema": {
              "type": "string",
              "examples": [
                "hip-hop"
              ]
            }
          },
          {
            "name": "service",
            "in": "query",
            "required": false,
            "description": "Service id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "area",
            "in": "query",
            "required": false,
            "description": "Area id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "availability",
            "in": "query",
            "required": false,
            "description": "Availability.",
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "limited",
                "closed"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name and bio.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "bio": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "realName": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "kind": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "band"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedian"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "company"
                                      },
                                      {
                                        "type": "string",
                                        "const": "crew"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dancer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dj"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensemble"
                                      },
                                      {
                                        "type": "string",
                                        "const": "group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musician"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "poet"
                                      },
                                      {
                                        "type": "string",
                                        "const": "producer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "songwriter"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      }
                                    ]
                                  },
                                  "kindLabel": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bands"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "djs"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensembles"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musicians"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "featured": {
                                    "type": "boolean"
                                  },
                                  "claimed": {
                                    "type": "boolean"
                                  },
                                  "listedFromPublicInfo": {
                                    "type": "boolean"
                                  },
                                  "genres": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "genreLabels": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "services": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "areas": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "availability": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "closed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "limited"
                                      },
                                      {
                                        "type": "string",
                                        "const": "open"
                                      }
                                    ]
                                  },
                                  "photo": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "bio",
                                  "slug",
                                  "name",
                                  "realName",
                                  "kind",
                                  "kindLabel",
                                  "group",
                                  "featured",
                                  "claimed",
                                  "listedFromPublicInfo",
                                  "genres",
                                  "genreLabels",
                                  "services",
                                  "areas",
                                  "availability",
                                  "photo",
                                  "url",
                                  "updatedAt"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "bio": {
                                    "type": "string"
                                  },
                                  "socials": {
                                    "type": "object",
                                    "properties": {
                                      "instagram": {
                                        "type": "string"
                                      },
                                      "facebook": {
                                        "type": "string"
                                      },
                                      "tiktok": {
                                        "type": "string"
                                      },
                                      "soundcloud": {
                                        "type": "string"
                                      },
                                      "mixcloud": {
                                        "type": "string"
                                      },
                                      "bandcamp": {
                                        "type": "string"
                                      },
                                      "youtube": {
                                        "type": "string"
                                      },
                                      "spotify": {
                                        "type": "string"
                                      },
                                      "website": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "mixUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "gigs": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "date": {
                                          "type": "string"
                                        },
                                        "time": {
                                          "type": "string"
                                        },
                                        "title": {
                                          "type": "string"
                                        },
                                        "venue": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        },
                                        "from": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "calendar"
                                            },
                                            {
                                              "type": "string",
                                              "const": "dj"
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "date",
                                        "time",
                                        "title",
                                        "venue",
                                        "url",
                                        "from"
                                      ]
                                    }
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "contact": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "realName": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "kind": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "band"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedian"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "company"
                                      },
                                      {
                                        "type": "string",
                                        "const": "crew"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dancer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dj"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensemble"
                                      },
                                      {
                                        "type": "string",
                                        "const": "group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musician"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "poet"
                                      },
                                      {
                                        "type": "string",
                                        "const": "producer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "songwriter"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      }
                                    ]
                                  },
                                  "kindLabel": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bands"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "djs"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensembles"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musicians"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "featured": {
                                    "type": "boolean"
                                  },
                                  "claimed": {
                                    "type": "boolean"
                                  },
                                  "listedFromPublicInfo": {
                                    "type": "boolean"
                                  },
                                  "genres": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "genreLabels": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "services": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "areas": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "availability": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "closed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "limited"
                                      },
                                      {
                                        "type": "string",
                                        "const": "open"
                                      }
                                    ]
                                  },
                                  "photo": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "bio",
                                  "socials",
                                  "mixUrl",
                                  "gigs",
                                  "sourceUrl",
                                  "contact",
                                  "slug",
                                  "name",
                                  "realName",
                                  "kind",
                                  "kindLabel",
                                  "group",
                                  "featured",
                                  "claimed",
                                  "listedFromPublicInfo",
                                  "genres",
                                  "genreLabels",
                                  "services",
                                  "areas",
                                  "availability",
                                  "photo",
                                  "url",
                                  "updatedAt"
                                ]
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "bio": "string",
                          "slug": "string",
                          "name": "string",
                          "realName": "string",
                          "kind": "band",
                          "kindLabel": "string",
                          "group": "bands",
                          "featured": false,
                          "claimed": false,
                          "listedFromPublicInfo": false,
                          "genres": [
                            "string"
                          ],
                          "genreLabels": [
                            "string"
                          ],
                          "services": [
                            "string"
                          ],
                          "areas": [
                            "string"
                          ],
                          "availability": "closed",
                          "photo": "string",
                          "url": "https://example.org/",
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/artists",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/artists/taxonomy": {
      "get": {
        "operationId": "get-artists-taxonomy",
        "tags": [
          "Local artists"
        ],
        "summary": "Artist kinds, kind groups, genres and styles, services, areas and availability",
        "description": "Example: `/api/v1/artists/taxonomy`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "groups": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bands"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "djs"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensembles"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musicians"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "one": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "alert"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ember"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fraser"
                                      },
                                      {
                                        "type": "string",
                                        "const": "gold"
                                      },
                                      {
                                        "type": "string",
                                        "const": "nechako"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rose"
                                      },
                                      {
                                        "type": "string",
                                        "const": "silt"
                                      },
                                      {
                                        "type": "string",
                                        "const": "spruce"
                                      },
                                      {
                                        "type": "string",
                                        "const": "violet"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "one",
                                  "icon",
                                  "c"
                                ]
                              }
                            },
                            "kinds": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "band"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedian"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "company"
                                      },
                                      {
                                        "type": "string",
                                        "const": "crew"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dancer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dj"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensemble"
                                      },
                                      {
                                        "type": "string",
                                        "const": "group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musician"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "poet"
                                      },
                                      {
                                        "type": "string",
                                        "const": "producer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "songwriter"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bands"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "djs"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensembles"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musicians"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "family": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dj"
                                      },
                                      {
                                        "type": "string",
                                        "const": "music"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "ld": {
                                    "type": "string"
                                  },
                                  "role": {
                                    "type": "string"
                                  },
                                  "alias": {
                                    "type": "string"
                                  },
                                  "team": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "group",
                                  "family",
                                  "ld",
                                  "role",
                                  "alias",
                                  "team"
                                ]
                              }
                            },
                            "genres": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "alert"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ember"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fraser"
                                      },
                                      {
                                        "type": "string",
                                        "const": "gold"
                                      },
                                      {
                                        "type": "string",
                                        "const": "nechako"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rose"
                                      },
                                      {
                                        "type": "string",
                                        "const": "silt"
                                      },
                                      {
                                        "type": "string",
                                        "const": "spruce"
                                      },
                                      {
                                        "type": "string",
                                        "const": "violet"
                                      }
                                    ]
                                  },
                                  "f": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "const": "comedy"
                                        },
                                        {
                                          "type": "string",
                                          "const": "dance"
                                        },
                                        {
                                          "type": "string",
                                          "const": "dj"
                                        },
                                        {
                                          "type": "string",
                                          "const": "music"
                                        },
                                        {
                                          "type": "string",
                                          "const": "other"
                                        },
                                        {
                                          "type": "string",
                                          "const": "photo"
                                        },
                                        {
                                          "type": "string",
                                          "const": "visual"
                                        },
                                        {
                                          "type": "string",
                                          "const": "words"
                                        }
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "c",
                                  "f"
                                ]
                              }
                            },
                            "services": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "icon"
                                ]
                              }
                            },
                            "areas": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label"
                                ]
                              }
                            },
                            "availability": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "closed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "limited"
                                      },
                                      {
                                        "type": "string",
                                        "const": "open"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "alert"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ember"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fraser"
                                      },
                                      {
                                        "type": "string",
                                        "const": "gold"
                                      },
                                      {
                                        "type": "string",
                                        "const": "nechako"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rose"
                                      },
                                      {
                                        "type": "string",
                                        "const": "silt"
                                      },
                                      {
                                        "type": "string",
                                        "const": "spruce"
                                      },
                                      {
                                        "type": "string",
                                        "const": "violet"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "c"
                                ]
                              }
                            }
                          },
                          "required": [
                            "groups",
                            "kinds",
                            "genres",
                            "services",
                            "areas",
                            "availability"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "groups": [
                          {
                            "id": "bands",
                            "label": "string",
                            "one": "string",
                            "icon": "string",
                            "c": "alert"
                          }
                        ],
                        "kinds": [
                          {
                            "id": "band",
                            "label": "string",
                            "group": "bands",
                            "family": "comedy",
                            "ld": "string",
                            "role": "string",
                            "alias": "string",
                            "team": false
                          }
                        ],
                        "genres": [
                          {
                            "id": "string",
                            "label": "string",
                            "c": "alert",
                            "f": [
                              "comedy"
                            ]
                          }
                        ],
                        "services": [
                          {
                            "id": "string",
                            "label": "string",
                            "icon": "string"
                          }
                        ],
                        "areas": [
                          {
                            "id": "string",
                            "label": "string"
                          }
                        ],
                        "availability": [
                          {
                            "id": "closed",
                            "label": "string",
                            "c": "alert"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/artists/taxonomy",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/artists/{slug}": {
      "get": {
        "operationId": "get-artists-slug",
        "tags": [
          "Local artists"
        ],
        "summary": "One artist profile with bio, socials, featured track and upcoming shows",
        "description": "Example: `/api/v1/artists/{slug}`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Artist slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "awards": {
                                  "type": "array",
                                  "items": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  }
                                },
                                "bio": {
                                  "type": "string"
                                },
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "realName": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "kind": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "band"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedian"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedy-group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "company"
                                    },
                                    {
                                      "type": "string",
                                      "const": "crew"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dance-group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dancer"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dj"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ensemble"
                                    },
                                    {
                                      "type": "string",
                                      "const": "group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "musician"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    },
                                    {
                                      "type": "string",
                                      "const": "photo"
                                    },
                                    {
                                      "type": "string",
                                      "const": "poet"
                                    },
                                    {
                                      "type": "string",
                                      "const": "producer"
                                    },
                                    {
                                      "type": "string",
                                      "const": "songwriter"
                                    },
                                    {
                                      "type": "string",
                                      "const": "visual"
                                    }
                                  ]
                                },
                                "kindLabel": {
                                  "type": "string"
                                },
                                "group": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "bands"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedy"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dance"
                                    },
                                    {
                                      "type": "string",
                                      "const": "djs"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ensembles"
                                    },
                                    {
                                      "type": "string",
                                      "const": "musicians"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    },
                                    {
                                      "type": "string",
                                      "const": "photo"
                                    },
                                    {
                                      "type": "string",
                                      "const": "visual"
                                    },
                                    {
                                      "type": "string",
                                      "const": "words"
                                    }
                                  ]
                                },
                                "featured": {
                                  "type": "boolean"
                                },
                                "claimed": {
                                  "type": "boolean"
                                },
                                "listedFromPublicInfo": {
                                  "type": "boolean"
                                },
                                "genres": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "genreLabels": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "services": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "areas": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "availability": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "closed"
                                    },
                                    {
                                      "type": "string",
                                      "const": "limited"
                                    },
                                    {
                                      "type": "string",
                                      "const": "open"
                                    }
                                  ]
                                },
                                "photo": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "url": {
                                  "type": "string"
                                },
                                "updatedAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "awards",
                                "bio",
                                "slug",
                                "name",
                                "realName",
                                "kind",
                                "kindLabel",
                                "group",
                                "featured",
                                "claimed",
                                "listedFromPublicInfo",
                                "genres",
                                "genreLabels",
                                "services",
                                "areas",
                                "availability",
                                "photo",
                                "url",
                                "updatedAt"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {
                                "awards": {
                                  "type": "array",
                                  "items": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  }
                                },
                                "bio": {
                                  "type": "string"
                                },
                                "socials": {
                                  "type": "object",
                                  "properties": {
                                    "instagram": {
                                      "type": "string"
                                    },
                                    "facebook": {
                                      "type": "string"
                                    },
                                    "tiktok": {
                                      "type": "string"
                                    },
                                    "soundcloud": {
                                      "type": "string"
                                    },
                                    "mixcloud": {
                                      "type": "string"
                                    },
                                    "bandcamp": {
                                      "type": "string"
                                    },
                                    "youtube": {
                                      "type": "string"
                                    },
                                    "spotify": {
                                      "type": "string"
                                    },
                                    "website": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "mixUrl": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "gigs": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "date": {
                                        "type": "string"
                                      },
                                      "time": {
                                        "type": "string"
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "venue": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      },
                                      "from": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "calendar"
                                          },
                                          {
                                            "type": "string",
                                            "const": "dj"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "date",
                                      "time",
                                      "title",
                                      "venue",
                                      "url",
                                      "from"
                                    ]
                                  }
                                },
                                "sourceUrl": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "contact": {
                                  "type": "string"
                                },
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "realName": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "kind": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "band"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedian"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedy-group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "company"
                                    },
                                    {
                                      "type": "string",
                                      "const": "crew"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dance-group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dancer"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dj"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ensemble"
                                    },
                                    {
                                      "type": "string",
                                      "const": "group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "musician"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    },
                                    {
                                      "type": "string",
                                      "const": "photo"
                                    },
                                    {
                                      "type": "string",
                                      "const": "poet"
                                    },
                                    {
                                      "type": "string",
                                      "const": "producer"
                                    },
                                    {
                                      "type": "string",
                                      "const": "songwriter"
                                    },
                                    {
                                      "type": "string",
                                      "const": "visual"
                                    }
                                  ]
                                },
                                "kindLabel": {
                                  "type": "string"
                                },
                                "group": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "bands"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedy"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dance"
                                    },
                                    {
                                      "type": "string",
                                      "const": "djs"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ensembles"
                                    },
                                    {
                                      "type": "string",
                                      "const": "musicians"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    },
                                    {
                                      "type": "string",
                                      "const": "photo"
                                    },
                                    {
                                      "type": "string",
                                      "const": "visual"
                                    },
                                    {
                                      "type": "string",
                                      "const": "words"
                                    }
                                  ]
                                },
                                "featured": {
                                  "type": "boolean"
                                },
                                "claimed": {
                                  "type": "boolean"
                                },
                                "listedFromPublicInfo": {
                                  "type": "boolean"
                                },
                                "genres": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "genreLabels": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "services": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "areas": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "availability": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "closed"
                                    },
                                    {
                                      "type": "string",
                                      "const": "limited"
                                    },
                                    {
                                      "type": "string",
                                      "const": "open"
                                    }
                                  ]
                                },
                                "photo": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "url": {
                                  "type": "string"
                                },
                                "updatedAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "awards",
                                "bio",
                                "socials",
                                "mixUrl",
                                "gigs",
                                "sourceUrl",
                                "contact",
                                "slug",
                                "name",
                                "realName",
                                "kind",
                                "kindLabel",
                                "group",
                                "featured",
                                "claimed",
                                "listedFromPublicInfo",
                                "genres",
                                "genreLabels",
                                "services",
                                "areas",
                                "availability",
                                "photo",
                                "url",
                                "updatedAt"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "awards": [
                          null
                        ],
                        "bio": "string",
                        "slug": "string",
                        "name": "string",
                        "realName": "string",
                        "kind": "band",
                        "kindLabel": "string",
                        "group": "bands",
                        "featured": false,
                        "claimed": false,
                        "listedFromPublicInfo": false,
                        "genres": [
                          "string"
                        ],
                        "genreLabels": [
                          "string"
                        ],
                        "services": [
                          "string"
                        ],
                        "areas": [
                          "string"
                        ],
                        "availability": "closed",
                        "photo": "string",
                        "url": "https://example.org/",
                        "updatedAt": "2026-01-01T00:00:00Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/artists/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/djs": {
      "get": {
        "operationId": "get-djs",
        "tags": [
          "Local artists"
        ],
        "summary": "Approved DJ profiles (kinds dj, crew and company; /artists lists every kind)",
        "description": "Only approved, live profiles. Private contact details are never exposed; booking goes through each profile page. Profiles marked listedFromPublicInfo were added from the artist's own public pages and can be claimed by them.\n\nExample: `/api/v1/djs`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "genre",
            "in": "query",
            "required": false,
            "description": "Genre or style id (see /djs/taxonomy).",
            "schema": {
              "type": "string",
              "examples": [
                "hip-hop"
              ]
            }
          },
          {
            "name": "service",
            "in": "query",
            "required": false,
            "description": "Service id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "area",
            "in": "query",
            "required": false,
            "description": "Area id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "availability",
            "in": "query",
            "required": false,
            "description": "Availability.",
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "limited",
                "closed"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name and bio.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "bio": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "realName": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "kind": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "band"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedian"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "company"
                                      },
                                      {
                                        "type": "string",
                                        "const": "crew"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dancer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dj"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensemble"
                                      },
                                      {
                                        "type": "string",
                                        "const": "group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musician"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "poet"
                                      },
                                      {
                                        "type": "string",
                                        "const": "producer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "songwriter"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      }
                                    ]
                                  },
                                  "kindLabel": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bands"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "djs"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensembles"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musicians"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "featured": {
                                    "type": "boolean"
                                  },
                                  "claimed": {
                                    "type": "boolean"
                                  },
                                  "listedFromPublicInfo": {
                                    "type": "boolean"
                                  },
                                  "genres": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "genreLabels": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "services": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "areas": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "availability": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "closed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "limited"
                                      },
                                      {
                                        "type": "string",
                                        "const": "open"
                                      }
                                    ]
                                  },
                                  "photo": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "bio",
                                  "slug",
                                  "name",
                                  "realName",
                                  "kind",
                                  "kindLabel",
                                  "group",
                                  "featured",
                                  "claimed",
                                  "listedFromPublicInfo",
                                  "genres",
                                  "genreLabels",
                                  "services",
                                  "areas",
                                  "availability",
                                  "photo",
                                  "url",
                                  "updatedAt"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "bio": {
                                    "type": "string"
                                  },
                                  "socials": {
                                    "type": "object",
                                    "properties": {
                                      "instagram": {
                                        "type": "string"
                                      },
                                      "facebook": {
                                        "type": "string"
                                      },
                                      "tiktok": {
                                        "type": "string"
                                      },
                                      "soundcloud": {
                                        "type": "string"
                                      },
                                      "mixcloud": {
                                        "type": "string"
                                      },
                                      "bandcamp": {
                                        "type": "string"
                                      },
                                      "youtube": {
                                        "type": "string"
                                      },
                                      "spotify": {
                                        "type": "string"
                                      },
                                      "website": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "mixUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "gigs": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "date": {
                                          "type": "string"
                                        },
                                        "time": {
                                          "type": "string"
                                        },
                                        "title": {
                                          "type": "string"
                                        },
                                        "venue": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        },
                                        "from": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "calendar"
                                            },
                                            {
                                              "type": "string",
                                              "const": "dj"
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "date",
                                        "time",
                                        "title",
                                        "venue",
                                        "url",
                                        "from"
                                      ]
                                    }
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "contact": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "realName": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "kind": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "band"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedian"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "company"
                                      },
                                      {
                                        "type": "string",
                                        "const": "crew"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dancer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dj"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensemble"
                                      },
                                      {
                                        "type": "string",
                                        "const": "group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musician"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "poet"
                                      },
                                      {
                                        "type": "string",
                                        "const": "producer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "songwriter"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      }
                                    ]
                                  },
                                  "kindLabel": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bands"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "djs"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensembles"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musicians"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "featured": {
                                    "type": "boolean"
                                  },
                                  "claimed": {
                                    "type": "boolean"
                                  },
                                  "listedFromPublicInfo": {
                                    "type": "boolean"
                                  },
                                  "genres": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "genreLabels": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "services": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "areas": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "availability": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "closed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "limited"
                                      },
                                      {
                                        "type": "string",
                                        "const": "open"
                                      }
                                    ]
                                  },
                                  "photo": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "bio",
                                  "socials",
                                  "mixUrl",
                                  "gigs",
                                  "sourceUrl",
                                  "contact",
                                  "slug",
                                  "name",
                                  "realName",
                                  "kind",
                                  "kindLabel",
                                  "group",
                                  "featured",
                                  "claimed",
                                  "listedFromPublicInfo",
                                  "genres",
                                  "genreLabels",
                                  "services",
                                  "areas",
                                  "availability",
                                  "photo",
                                  "url",
                                  "updatedAt"
                                ]
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "bio": "string",
                          "slug": "string",
                          "name": "string",
                          "realName": "string",
                          "kind": "band",
                          "kindLabel": "string",
                          "group": "bands",
                          "featured": false,
                          "claimed": false,
                          "listedFromPublicInfo": false,
                          "genres": [
                            "string"
                          ],
                          "genreLabels": [
                            "string"
                          ],
                          "services": [
                            "string"
                          ],
                          "areas": [
                            "string"
                          ],
                          "availability": "closed",
                          "photo": "string",
                          "url": "https://example.org/",
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/djs",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/djs/taxonomy": {
      "get": {
        "operationId": "get-djs-taxonomy",
        "tags": [
          "Local artists"
        ],
        "summary": "Artist kinds, kind groups, genres and styles, services, areas and availability",
        "description": "Example: `/api/v1/djs/taxonomy`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "groups": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bands"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "djs"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensembles"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musicians"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "one": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "alert"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ember"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fraser"
                                      },
                                      {
                                        "type": "string",
                                        "const": "gold"
                                      },
                                      {
                                        "type": "string",
                                        "const": "nechako"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rose"
                                      },
                                      {
                                        "type": "string",
                                        "const": "silt"
                                      },
                                      {
                                        "type": "string",
                                        "const": "spruce"
                                      },
                                      {
                                        "type": "string",
                                        "const": "violet"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "one",
                                  "icon",
                                  "c"
                                ]
                              }
                            },
                            "kinds": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "band"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedian"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "company"
                                      },
                                      {
                                        "type": "string",
                                        "const": "crew"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance-group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dancer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dj"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensemble"
                                      },
                                      {
                                        "type": "string",
                                        "const": "group"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musician"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "poet"
                                      },
                                      {
                                        "type": "string",
                                        "const": "producer"
                                      },
                                      {
                                        "type": "string",
                                        "const": "songwriter"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bands"
                                      },
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "djs"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ensembles"
                                      },
                                      {
                                        "type": "string",
                                        "const": "musicians"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "family": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "comedy"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dance"
                                      },
                                      {
                                        "type": "string",
                                        "const": "dj"
                                      },
                                      {
                                        "type": "string",
                                        "const": "music"
                                      },
                                      {
                                        "type": "string",
                                        "const": "other"
                                      },
                                      {
                                        "type": "string",
                                        "const": "photo"
                                      },
                                      {
                                        "type": "string",
                                        "const": "visual"
                                      },
                                      {
                                        "type": "string",
                                        "const": "words"
                                      }
                                    ]
                                  },
                                  "ld": {
                                    "type": "string"
                                  },
                                  "role": {
                                    "type": "string"
                                  },
                                  "alias": {
                                    "type": "string"
                                  },
                                  "team": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "group",
                                  "family",
                                  "ld",
                                  "role",
                                  "alias",
                                  "team"
                                ]
                              }
                            },
                            "genres": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "alert"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ember"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fraser"
                                      },
                                      {
                                        "type": "string",
                                        "const": "gold"
                                      },
                                      {
                                        "type": "string",
                                        "const": "nechako"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rose"
                                      },
                                      {
                                        "type": "string",
                                        "const": "silt"
                                      },
                                      {
                                        "type": "string",
                                        "const": "spruce"
                                      },
                                      {
                                        "type": "string",
                                        "const": "violet"
                                      }
                                    ]
                                  },
                                  "f": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "const": "comedy"
                                        },
                                        {
                                          "type": "string",
                                          "const": "dance"
                                        },
                                        {
                                          "type": "string",
                                          "const": "dj"
                                        },
                                        {
                                          "type": "string",
                                          "const": "music"
                                        },
                                        {
                                          "type": "string",
                                          "const": "other"
                                        },
                                        {
                                          "type": "string",
                                          "const": "photo"
                                        },
                                        {
                                          "type": "string",
                                          "const": "visual"
                                        },
                                        {
                                          "type": "string",
                                          "const": "words"
                                        }
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "c",
                                  "f"
                                ]
                              }
                            },
                            "services": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "icon"
                                ]
                              }
                            },
                            "areas": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label"
                                ]
                              }
                            },
                            "availability": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "closed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "limited"
                                      },
                                      {
                                        "type": "string",
                                        "const": "open"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "c": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "alert"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ember"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fraser"
                                      },
                                      {
                                        "type": "string",
                                        "const": "gold"
                                      },
                                      {
                                        "type": "string",
                                        "const": "nechako"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rose"
                                      },
                                      {
                                        "type": "string",
                                        "const": "silt"
                                      },
                                      {
                                        "type": "string",
                                        "const": "spruce"
                                      },
                                      {
                                        "type": "string",
                                        "const": "violet"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "c"
                                ]
                              }
                            }
                          },
                          "required": [
                            "groups",
                            "kinds",
                            "genres",
                            "services",
                            "areas",
                            "availability"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "groups": [
                          {
                            "id": "bands",
                            "label": "string",
                            "one": "string",
                            "icon": "string",
                            "c": "alert"
                          }
                        ],
                        "kinds": [
                          {
                            "id": "band",
                            "label": "string",
                            "group": "bands",
                            "family": "comedy",
                            "ld": "string",
                            "role": "string",
                            "alias": "string",
                            "team": false
                          }
                        ],
                        "genres": [
                          {
                            "id": "string",
                            "label": "string",
                            "c": "alert",
                            "f": [
                              "comedy"
                            ]
                          }
                        ],
                        "services": [
                          {
                            "id": "string",
                            "label": "string",
                            "icon": "string"
                          }
                        ],
                        "areas": [
                          {
                            "id": "string",
                            "label": "string"
                          }
                        ],
                        "availability": [
                          {
                            "id": "closed",
                            "label": "string",
                            "c": "alert"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/djs/taxonomy",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/djs/{slug}": {
      "get": {
        "operationId": "get-djs-slug",
        "tags": [
          "Local artists"
        ],
        "summary": "One artist profile with bio, socials, featured track and upcoming shows",
        "description": "Example: `/api/v1/djs/{slug}`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Artist slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "awards": {
                                  "type": "array",
                                  "items": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  }
                                },
                                "bio": {
                                  "type": "string"
                                },
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "realName": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "kind": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "band"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedian"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedy-group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "company"
                                    },
                                    {
                                      "type": "string",
                                      "const": "crew"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dance-group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dancer"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dj"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ensemble"
                                    },
                                    {
                                      "type": "string",
                                      "const": "group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "musician"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    },
                                    {
                                      "type": "string",
                                      "const": "photo"
                                    },
                                    {
                                      "type": "string",
                                      "const": "poet"
                                    },
                                    {
                                      "type": "string",
                                      "const": "producer"
                                    },
                                    {
                                      "type": "string",
                                      "const": "songwriter"
                                    },
                                    {
                                      "type": "string",
                                      "const": "visual"
                                    }
                                  ]
                                },
                                "kindLabel": {
                                  "type": "string"
                                },
                                "group": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "bands"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedy"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dance"
                                    },
                                    {
                                      "type": "string",
                                      "const": "djs"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ensembles"
                                    },
                                    {
                                      "type": "string",
                                      "const": "musicians"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    },
                                    {
                                      "type": "string",
                                      "const": "photo"
                                    },
                                    {
                                      "type": "string",
                                      "const": "visual"
                                    },
                                    {
                                      "type": "string",
                                      "const": "words"
                                    }
                                  ]
                                },
                                "featured": {
                                  "type": "boolean"
                                },
                                "claimed": {
                                  "type": "boolean"
                                },
                                "listedFromPublicInfo": {
                                  "type": "boolean"
                                },
                                "genres": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "genreLabels": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "services": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "areas": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "availability": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "closed"
                                    },
                                    {
                                      "type": "string",
                                      "const": "limited"
                                    },
                                    {
                                      "type": "string",
                                      "const": "open"
                                    }
                                  ]
                                },
                                "photo": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "url": {
                                  "type": "string"
                                },
                                "updatedAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "awards",
                                "bio",
                                "slug",
                                "name",
                                "realName",
                                "kind",
                                "kindLabel",
                                "group",
                                "featured",
                                "claimed",
                                "listedFromPublicInfo",
                                "genres",
                                "genreLabels",
                                "services",
                                "areas",
                                "availability",
                                "photo",
                                "url",
                                "updatedAt"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {
                                "awards": {
                                  "type": "array",
                                  "items": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  }
                                },
                                "bio": {
                                  "type": "string"
                                },
                                "socials": {
                                  "type": "object",
                                  "properties": {
                                    "instagram": {
                                      "type": "string"
                                    },
                                    "facebook": {
                                      "type": "string"
                                    },
                                    "tiktok": {
                                      "type": "string"
                                    },
                                    "soundcloud": {
                                      "type": "string"
                                    },
                                    "mixcloud": {
                                      "type": "string"
                                    },
                                    "bandcamp": {
                                      "type": "string"
                                    },
                                    "youtube": {
                                      "type": "string"
                                    },
                                    "spotify": {
                                      "type": "string"
                                    },
                                    "website": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "mixUrl": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "gigs": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "date": {
                                        "type": "string"
                                      },
                                      "time": {
                                        "type": "string"
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "venue": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      },
                                      "from": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "calendar"
                                          },
                                          {
                                            "type": "string",
                                            "const": "dj"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "date",
                                      "time",
                                      "title",
                                      "venue",
                                      "url",
                                      "from"
                                    ]
                                  }
                                },
                                "sourceUrl": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "contact": {
                                  "type": "string"
                                },
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "realName": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "kind": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "band"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedian"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedy-group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "company"
                                    },
                                    {
                                      "type": "string",
                                      "const": "crew"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dance-group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dancer"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dj"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ensemble"
                                    },
                                    {
                                      "type": "string",
                                      "const": "group"
                                    },
                                    {
                                      "type": "string",
                                      "const": "musician"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    },
                                    {
                                      "type": "string",
                                      "const": "photo"
                                    },
                                    {
                                      "type": "string",
                                      "const": "poet"
                                    },
                                    {
                                      "type": "string",
                                      "const": "producer"
                                    },
                                    {
                                      "type": "string",
                                      "const": "songwriter"
                                    },
                                    {
                                      "type": "string",
                                      "const": "visual"
                                    }
                                  ]
                                },
                                "kindLabel": {
                                  "type": "string"
                                },
                                "group": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "bands"
                                    },
                                    {
                                      "type": "string",
                                      "const": "comedy"
                                    },
                                    {
                                      "type": "string",
                                      "const": "dance"
                                    },
                                    {
                                      "type": "string",
                                      "const": "djs"
                                    },
                                    {
                                      "type": "string",
                                      "const": "ensembles"
                                    },
                                    {
                                      "type": "string",
                                      "const": "musicians"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    },
                                    {
                                      "type": "string",
                                      "const": "photo"
                                    },
                                    {
                                      "type": "string",
                                      "const": "visual"
                                    },
                                    {
                                      "type": "string",
                                      "const": "words"
                                    }
                                  ]
                                },
                                "featured": {
                                  "type": "boolean"
                                },
                                "claimed": {
                                  "type": "boolean"
                                },
                                "listedFromPublicInfo": {
                                  "type": "boolean"
                                },
                                "genres": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "genreLabels": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "services": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "areas": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "availability": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "closed"
                                    },
                                    {
                                      "type": "string",
                                      "const": "limited"
                                    },
                                    {
                                      "type": "string",
                                      "const": "open"
                                    }
                                  ]
                                },
                                "photo": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "url": {
                                  "type": "string"
                                },
                                "updatedAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "awards",
                                "bio",
                                "socials",
                                "mixUrl",
                                "gigs",
                                "sourceUrl",
                                "contact",
                                "slug",
                                "name",
                                "realName",
                                "kind",
                                "kindLabel",
                                "group",
                                "featured",
                                "claimed",
                                "listedFromPublicInfo",
                                "genres",
                                "genreLabels",
                                "services",
                                "areas",
                                "availability",
                                "photo",
                                "url",
                                "updatedAt"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "awards": [
                          null
                        ],
                        "bio": "string",
                        "slug": "string",
                        "name": "string",
                        "realName": "string",
                        "kind": "band",
                        "kindLabel": "string",
                        "group": "bands",
                        "featured": false,
                        "claimed": false,
                        "listedFromPublicInfo": false,
                        "genres": [
                          "string"
                        ],
                        "genreLabels": [
                          "string"
                        ],
                        "services": [
                          "string"
                        ],
                        "areas": [
                          "string"
                        ],
                        "availability": "closed",
                        "photo": "string",
                        "url": "https://example.org/",
                        "updatedAt": "2026-01-01T00:00:00Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/djs/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/awards/seasons": {
      "get": {
        "operationId": "get-awards-seasons",
        "tags": [
          "Awards"
        ],
        "summary": "PG Pulse Awards seasons with phase and key dates",
        "description": "Example: `/api/v1/awards/seasons`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "blurb": {
                                "type": "string"
                              },
                              "phase": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "counting"
                                  },
                                  {
                                    "type": "string",
                                    "const": "nominations"
                                  },
                                  {
                                    "type": "string",
                                    "const": "results"
                                  },
                                  {
                                    "type": "string",
                                    "const": "review"
                                  },
                                  {
                                    "type": "string",
                                    "const": "upcoming"
                                  },
                                  {
                                    "type": "string",
                                    "const": "voting"
                                  }
                                ]
                              },
                              "phaseLabel": {
                                "type": "string"
                              },
                              "dates": {
                                "type": "object",
                                "properties": {
                                  "nominationsOpen": {
                                    "type": "string"
                                  },
                                  "nominationsClose": {
                                    "type": "string"
                                  },
                                  "votingOpen": {
                                    "type": "string"
                                  },
                                  "votingClose": {
                                    "type": "string"
                                  },
                                  "resultsAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "nominationsOpen",
                                  "nominationsClose",
                                  "votingOpen",
                                  "votingClose",
                                  "resultsAt"
                                ]
                              },
                              "nextMilestone": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "label": {
                                        "type": "string"
                                      },
                                      "date": {
                                        "type": "string"
                                      },
                                      "days": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "label",
                                      "date",
                                      "days"
                                    ]
                                  }
                                ]
                              },
                              "nominees": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "voters": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "url": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "slug",
                              "name",
                              "blurb",
                              "phase",
                              "phaseLabel",
                              "dates",
                              "nextMilestone",
                              "nominees",
                              "voters",
                              "url",
                              "api"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "name": "string",
                          "blurb": "string",
                          "phase": "counting",
                          "phaseLabel": "string",
                          "dates": {
                            "nominationsOpen": "string",
                            "nominationsClose": "string",
                            "votingOpen": "string",
                            "votingClose": "string",
                            "resultsAt": "2026-01-01T00:00:00Z"
                          },
                          "nextMilestone": {
                            "label": "string",
                            "date": "2026-01-01T00:00:00Z",
                            "days": 0
                          },
                          "nominees": 0,
                          "voters": 0,
                          "url": "https://example.org/",
                          "api": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/awards/seasons",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/awards/seasons/{season}": {
      "get": {
        "operationId": "get-awards-seasons-season",
        "tags": [
          "Awards"
        ],
        "summary": "One season with its categories",
        "description": "Example: `/api/v1/awards/seasons/{season}`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "season",
            "in": "path",
            "required": true,
            "description": "Season slug (see /awards/seasons).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "categories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "groupLabel": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "slug",
                                  "name",
                                  "group",
                                  "groupLabel",
                                  "description",
                                  "url",
                                  "api"
                                ]
                              }
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "blurb": {
                              "type": "string"
                            },
                            "phase": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "counting"
                                },
                                {
                                  "type": "string",
                                  "const": "nominations"
                                },
                                {
                                  "type": "string",
                                  "const": "results"
                                },
                                {
                                  "type": "string",
                                  "const": "review"
                                },
                                {
                                  "type": "string",
                                  "const": "upcoming"
                                },
                                {
                                  "type": "string",
                                  "const": "voting"
                                }
                              ]
                            },
                            "phaseLabel": {
                              "type": "string"
                            },
                            "dates": {
                              "type": "object",
                              "properties": {
                                "nominationsOpen": {
                                  "type": "string"
                                },
                                "nominationsClose": {
                                  "type": "string"
                                },
                                "votingOpen": {
                                  "type": "string"
                                },
                                "votingClose": {
                                  "type": "string"
                                },
                                "resultsAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "nominationsOpen",
                                "nominationsClose",
                                "votingOpen",
                                "votingClose",
                                "resultsAt"
                              ]
                            },
                            "nextMilestone": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "date": {
                                      "type": "string"
                                    },
                                    "days": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "date",
                                    "days"
                                  ]
                                }
                              ]
                            },
                            "nominees": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "voters": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "url": {
                              "type": "string"
                            },
                            "api": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "categories",
                            "slug",
                            "name",
                            "blurb",
                            "phase",
                            "phaseLabel",
                            "dates",
                            "nextMilestone",
                            "nominees",
                            "voters",
                            "url",
                            "api"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "categories": [
                          {
                            "slug": "string",
                            "name": "string",
                            "group": "string",
                            "groupLabel": "string",
                            "description": "string",
                            "url": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "slug": "string",
                        "name": "string",
                        "blurb": "string",
                        "phase": "counting",
                        "phaseLabel": "string",
                        "dates": {
                          "nominationsOpen": "string",
                          "nominationsClose": "string",
                          "votingOpen": "string",
                          "votingClose": "string",
                          "resultsAt": "2026-01-01T00:00:00Z"
                        },
                        "nextMilestone": {
                          "label": "string",
                          "date": "2026-01-01T00:00:00Z",
                          "days": 0
                        },
                        "nominees": 0,
                        "voters": 0,
                        "url": "https://example.org/",
                        "api": "https://example.org/"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/awards/seasons/{season}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/awards/seasons/{season}/{category}": {
      "get": {
        "operationId": "get-awards-seasons-season-category",
        "tags": [
          "Awards"
        ],
        "summary": "One award category: nominees, ballot (with trending bands) or winners and finalists, depending on the phase",
        "description": "Mirrors the public page. Raw vote counts are never returned while a season keeps them hidden, and results never include totals.\n\nExample: `/api/v1/awards/seasons/{season}/best-restaurant`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "season",
            "in": "path",
            "required": true,
            "description": "Season slug.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "path",
            "required": true,
            "description": "Category slug.",
            "schema": {
              "type": "string",
              "examples": [
                "best-restaurant"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "phase": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "counting"
                                    },
                                    {
                                      "type": "string",
                                      "const": "voting"
                                    }
                                  ]
                                },
                                "ballot": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "votes": {
                                        "type": "number"
                                      },
                                      "trending": {
                                        "$ref": "#/components/schemas/JsonValue"
                                      },
                                      "slug": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "business"
                                          },
                                          {
                                            "type": "string",
                                            "const": "dj"
                                          },
                                          {
                                            "type": "string",
                                            "const": "other"
                                          },
                                          {
                                            "type": "string",
                                            "const": "realtor"
                                          }
                                        ]
                                      },
                                      "ref": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "subtitle": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "profile": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "trending",
                                      "slug",
                                      "name",
                                      "kind",
                                      "ref",
                                      "subtitle",
                                      "profile",
                                      "url"
                                    ]
                                  }
                                },
                                "note": {
                                  "type": "string"
                                },
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "group": {
                                  "type": "string"
                                },
                                "groupLabel": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "phase",
                                "ballot",
                                "note",
                                "slug",
                                "name",
                                "group",
                                "groupLabel",
                                "description",
                                "url"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {
                                "phase": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "nominations"
                                    },
                                    {
                                      "type": "string",
                                      "const": "review"
                                    }
                                  ]
                                },
                                "nominees": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "slug": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "business"
                                          },
                                          {
                                            "type": "string",
                                            "const": "dj"
                                          },
                                          {
                                            "type": "string",
                                            "const": "other"
                                          },
                                          {
                                            "type": "string",
                                            "const": "realtor"
                                          }
                                        ]
                                      },
                                      "ref": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "subtitle": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "profile": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "slug",
                                      "name",
                                      "kind",
                                      "ref",
                                      "subtitle",
                                      "profile",
                                      "url"
                                    ]
                                  }
                                },
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "group": {
                                  "type": "string"
                                },
                                "groupLabel": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "phase",
                                "nominees",
                                "slug",
                                "name",
                                "group",
                                "groupLabel",
                                "description",
                                "url"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {
                                "phase": {
                                  "type": "string",
                                  "const": "results"
                                },
                                "winners": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "slug": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "business"
                                          },
                                          {
                                            "type": "string",
                                            "const": "dj"
                                          },
                                          {
                                            "type": "string",
                                            "const": "other"
                                          },
                                          {
                                            "type": "string",
                                            "const": "realtor"
                                          }
                                        ]
                                      },
                                      "ref": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "subtitle": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "profile": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "slug",
                                      "name",
                                      "kind",
                                      "ref",
                                      "subtitle",
                                      "profile",
                                      "url"
                                    ]
                                  }
                                },
                                "finalists": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "slug": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "business"
                                          },
                                          {
                                            "type": "string",
                                            "const": "dj"
                                          },
                                          {
                                            "type": "string",
                                            "const": "other"
                                          },
                                          {
                                            "type": "string",
                                            "const": "realtor"
                                          }
                                        ]
                                      },
                                      "ref": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "subtitle": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "profile": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "slug",
                                      "name",
                                      "kind",
                                      "ref",
                                      "subtitle",
                                      "profile",
                                      "url"
                                    ]
                                  }
                                },
                                "note": {
                                  "type": "string"
                                },
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "group": {
                                  "type": "string"
                                },
                                "groupLabel": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "phase",
                                "winners",
                                "finalists",
                                "note",
                                "slug",
                                "name",
                                "group",
                                "groupLabel",
                                "description",
                                "url"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {
                                "phase": {
                                  "type": "string",
                                  "const": "upcoming"
                                },
                                "slug": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "group": {
                                  "type": "string"
                                },
                                "groupLabel": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "phase",
                                "slug",
                                "name",
                                "group",
                                "groupLabel",
                                "description",
                                "url"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "phase": "counting",
                        "ballot": [
                          {
                            "votes": 0,
                            "trending": null,
                            "slug": "string",
                            "name": "string",
                            "kind": "business",
                            "ref": "string",
                            "subtitle": "string",
                            "profile": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "note": "string",
                        "slug": "string",
                        "name": "string",
                        "group": "string",
                        "groupLabel": "string",
                        "description": "string",
                        "url": "https://example.org/"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/awards/seasons/{season}/{category}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/awards/honours": {
      "get": {
        "operationId": "get-awards-honours",
        "tags": [
          "Awards"
        ],
        "summary": "Awards and nominations for one business, artist or real estate agent",
        "description": "Example: `/api/v1/awards/honours?kind=business&ref=camelot-restaurant`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "business, dj (any local artist profile) or realtor.",
            "schema": {
              "type": "string",
              "enum": [
                "business",
                "dj",
                "realtor"
              ],
              "examples": [
                "business"
              ]
            }
          },
          {
            "name": "ref",
            "in": "query",
            "required": true,
            "description": "Business, artist or agent slug.",
            "schema": {
              "type": "string",
              "examples": [
                "camelot-restaurant"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "ballot"
                                  },
                                  {
                                    "type": "string",
                                    "const": "finalist"
                                  },
                                  {
                                    "type": "string",
                                    "const": "nominee"
                                  },
                                  {
                                    "type": "string",
                                    "const": "winner"
                                  }
                                ]
                              },
                              "season": {
                                "type": "string"
                              },
                              "seasonSlug": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "categorySlug": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "status",
                              "season",
                              "seasonSlug",
                              "category",
                              "categorySlug",
                              "url"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "status": "ballot",
                          "season": "string",
                          "seasonSlug": "string",
                          "category": "string",
                          "categorySlug": "string",
                          "url": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/awards/honours",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/maps/layers": {
      "get": {
        "operationId": "get-maps-layers",
        "tags": [
          "Maps"
        ],
        "summary": "Every map layer (parks, trails, playgrounds, washrooms, EV chargers, schools…)",
        "description": "Example: `/api/v1/maps/layers`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "boat-launches-region"
                                  },
                                  {
                                    "type": "string",
                                    "const": "boat-launches"
                                  },
                                  {
                                    "type": "string",
                                    "const": "campgrounds"
                                  },
                                  {
                                    "type": "string",
                                    "const": "car-washes"
                                  },
                                  {
                                    "type": "string",
                                    "const": "child-care"
                                  },
                                  {
                                    "type": "string",
                                    "const": "community-centres"
                                  },
                                  {
                                    "type": "string",
                                    "const": "disc-golf"
                                  },
                                  {
                                    "type": "string",
                                    "const": "dog-parks"
                                  },
                                  {
                                    "type": "string",
                                    "const": "drinking-water"
                                  },
                                  {
                                    "type": "string",
                                    "const": "ev-chargers"
                                  },
                                  {
                                    "type": "string",
                                    "const": "facilities"
                                  },
                                  {
                                    "type": "string",
                                    "const": "fire-halls"
                                  },
                                  {
                                    "type": "string",
                                    "const": "fishing-waters"
                                  },
                                  {
                                    "type": "string",
                                    "const": "fuel"
                                  },
                                  {
                                    "type": "string",
                                    "const": "future-land-use"
                                  },
                                  {
                                    "type": "string",
                                    "const": "garbage-zones"
                                  },
                                  {
                                    "type": "string",
                                    "const": "government-offices"
                                  },
                                  {
                                    "type": "string",
                                    "const": "health-care"
                                  },
                                  {
                                    "type": "string",
                                    "const": "heritage-sites"
                                  },
                                  {
                                    "type": "string",
                                    "const": "huts"
                                  },
                                  {
                                    "type": "string",
                                    "const": "lakes"
                                  },
                                  {
                                    "type": "string",
                                    "const": "libraries"
                                  },
                                  {
                                    "type": "string",
                                    "const": "outdoor-rinks"
                                  },
                                  {
                                    "type": "string",
                                    "const": "parks"
                                  },
                                  {
                                    "type": "string",
                                    "const": "pharmacies"
                                  },
                                  {
                                    "type": "string",
                                    "const": "places-of-worship"
                                  },
                                  {
                                    "type": "string",
                                    "const": "playgrounds"
                                  },
                                  {
                                    "type": "string",
                                    "const": "police-ambulance"
                                  },
                                  {
                                    "type": "string",
                                    "const": "post-offices"
                                  },
                                  {
                                    "type": "string",
                                    "const": "provincial-parks"
                                  },
                                  {
                                    "type": "string",
                                    "const": "public-art"
                                  },
                                  {
                                    "type": "string",
                                    "const": "rec-sites"
                                  },
                                  {
                                    "type": "string",
                                    "const": "rec-trails"
                                  },
                                  {
                                    "type": "string",
                                    "const": "recycling"
                                  },
                                  {
                                    "type": "string",
                                    "const": "rural-zoning"
                                  },
                                  {
                                    "type": "string",
                                    "const": "schools"
                                  },
                                  {
                                    "type": "string",
                                    "const": "shooting-ranges"
                                  },
                                  {
                                    "type": "string",
                                    "const": "ski-hills"
                                  },
                                  {
                                    "type": "string",
                                    "const": "sledding"
                                  },
                                  {
                                    "type": "string",
                                    "const": "sports-fields"
                                  },
                                  {
                                    "type": "string",
                                    "const": "summits"
                                  },
                                  {
                                    "type": "string",
                                    "const": "swimming"
                                  },
                                  {
                                    "type": "string",
                                    "const": "trails"
                                  },
                                  {
                                    "type": "string",
                                    "const": "transit-stops"
                                  },
                                  {
                                    "type": "string",
                                    "const": "viewpoints"
                                  },
                                  {
                                    "type": "string",
                                    "const": "washrooms"
                                  },
                                  {
                                    "type": "string",
                                    "const": "waste-sites"
                                  },
                                  {
                                    "type": "string",
                                    "const": "waterfalls"
                                  },
                                  {
                                    "type": "string",
                                    "const": "wildlife-management-units"
                                  },
                                  {
                                    "type": "string",
                                    "const": "zoning"
                                  }
                                ]
                              },
                              "label": {
                                "type": "string"
                              },
                              "singular": {
                                "type": "string"
                              },
                              "group": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "Amenities"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Around the region"
                                  },
                                  {
                                    "type": "string",
                                    "const": "City services"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Getting around"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Key services"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Land use"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Outdoors"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Waste and recycling"
                                  }
                                ]
                              },
                              "geometry": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "line"
                                  },
                                  {
                                    "type": "string",
                                    "const": "point"
                                  },
                                  {
                                    "type": "string",
                                    "const": "polygon"
                                  }
                                ]
                              },
                              "description": {
                                "type": "string"
                              },
                              "sources": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                }
                              },
                              "url": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              },
                              "geojson": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "label",
                              "singular",
                              "group",
                              "geometry",
                              "description",
                              "sources",
                              "url",
                              "api",
                              "geojson"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "fictional": {
                    "summary": "Fictional illustration; not current city data",
                    "value": {
                      "data": [
                        {
                          "id": "parks",
                          "label": "Example layer (fictional)",
                          "description": "Illustrates a configurable map layer.",
                          "singular": "Example place",
                          "group": "Outdoors",
                          "geometry": "point",
                          "sources": [
                            {
                              "name": "Example source",
                              "url": "https://source.example/"
                            }
                          ],
                          "url": "/maps/parks/",
                          "api": "/api/v1/maps/layers/parks",
                          "geojson": "/api/v1/maps/layers/parks?format=geojson"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/maps/layers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/maps/layers/{id}": {
      "get": {
        "operationId": "get-maps-layers-id",
        "tags": [
          "Maps"
        ],
        "summary": "One map layer as a GeoJSON FeatureCollection",
        "description": "Add `?format=geojson` for a bare FeatureCollection (application/geo+json) you can drop into any map library. Point-like features carry `properties.at` = [lat, lng]. Narrow large layers with `bbox` (features whose bounds overlap the box) or sort by distance with `near` (adds `properties.distanceM`, measured to the feature’s point or the centre of its bounds).\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/maps/layers/dog-parks?limit=2`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Layer id.",
            "schema": {
              "type": "string",
              "enum": [
                "parks",
                "trails",
                "playgrounds",
                "sports-fields",
                "outdoor-rinks",
                "dog-parks",
                "disc-golf",
                "viewpoints",
                "boat-launches",
                "public-art",
                "washrooms",
                "drinking-water",
                "ev-chargers",
                "fuel",
                "car-washes",
                "transit-stops",
                "schools",
                "community-centres",
                "fire-halls",
                "garbage-zones",
                "waste-sites",
                "recycling",
                "health-care",
                "pharmacies",
                "libraries",
                "government-offices",
                "post-offices",
                "police-ambulance",
                "zoning",
                "future-land-use",
                "rural-zoning",
                "provincial-parks",
                "rec-sites",
                "rec-trails",
                "campgrounds",
                "lakes",
                "boat-launches-region",
                "swimming",
                "waterfalls",
                "summits",
                "huts",
                "ski-hills",
                "sledding",
                "fishing-waters",
                "wildlife-management-units",
                "shooting-ranges",
                "places-of-worship",
                "child-care",
                "heritage-sites",
                "facilities"
              ],
              "examples": [
                "dog-parks"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in feature names.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "bbox",
            "in": "query",
            "required": false,
            "description": "Only features overlapping this box: west,south,east,north in degrees (WGS84).",
            "schema": {
              "type": "string",
              "examples": [
                "-122.770,53.907,-122.730,53.927"
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" and add `properties.distanceM`.",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "const": "Feature"
                              },
                              "geometry": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "const": "LineString"
                                      },
                                      "coordinates": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "number"
                                            },
                                            {
                                              "type": "number"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      }
                                    },
                                    "required": [
                                      "type",
                                      "coordinates"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "const": "MultiLineString"
                                      },
                                      "coordinates": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "items": {
                                            "type": "array",
                                            "prefixItems": [
                                              {
                                                "type": "number"
                                              },
                                              {
                                                "type": "number"
                                              }
                                            ],
                                            "minItems": 2,
                                            "maxItems": 2
                                          }
                                        }
                                      }
                                    },
                                    "required": [
                                      "type",
                                      "coordinates"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "const": "MultiPolygon"
                                      },
                                      "coordinates": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "items": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "prefixItems": [
                                                {
                                                  "type": "number"
                                                },
                                                {
                                                  "type": "number"
                                                }
                                              ],
                                              "minItems": 2,
                                              "maxItems": 2
                                            }
                                          }
                                        }
                                      }
                                    },
                                    "required": [
                                      "type",
                                      "coordinates"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "const": "Point"
                                      },
                                      "coordinates": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "number"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "required": [
                                      "type",
                                      "coordinates"
                                    ]
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "const": "Polygon"
                                      },
                                      "coordinates": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "items": {
                                            "type": "array",
                                            "prefixItems": [
                                              {
                                                "type": "number"
                                              },
                                              {
                                                "type": "number"
                                              }
                                            ],
                                            "minItems": 2,
                                            "maxItems": 2
                                          }
                                        }
                                      }
                                    },
                                    "required": [
                                      "type",
                                      "coordinates"
                                    ]
                                  }
                                ]
                              },
                              "properties": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string",
                                    "description": "Kind of place, sentence case (\"Neighbourhood park\", \"DC fast charger\")."
                                  },
                                  "info": {
                                    "type": "array",
                                    "items": {
                                      "type": "array",
                                      "prefixItems": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "string"
                                        }
                                      ],
                                      "minItems": 2,
                                      "maxItems": 2
                                    },
                                    "description": "Label/value rows for the popup and landing list."
                                  },
                                  "addr": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "at": {
                                    "type": "array",
                                    "prefixItems": [
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "number"
                                      }
                                    ],
                                    "minItems": 2,
                                    "maxItems": 2,
                                    "description": "Anchor point [lat, lng] for markers, lists and directions."
                                  },
                                  "tone": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "alert"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ember"
                                      },
                                      {
                                        "type": "string",
                                        "const": "fraser"
                                      },
                                      {
                                        "type": "string",
                                        "const": "gold"
                                      },
                                      {
                                        "type": "string",
                                        "const": "ink"
                                      },
                                      {
                                        "type": "string",
                                        "const": "muted"
                                      },
                                      {
                                        "type": "string",
                                        "const": "nechako"
                                      },
                                      {
                                        "type": "string",
                                        "const": "rose"
                                      },
                                      {
                                        "type": "string",
                                        "const": "silt"
                                      },
                                      {
                                        "type": "string",
                                        "const": "spruce"
                                      },
                                      {
                                        "type": "string",
                                        "const": "violet"
                                      }
                                    ],
                                    "description": "Colour token override (garbage zones)."
                                  },
                                  "src": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "bc"
                                      },
                                      {
                                        "type": "string",
                                        "const": "bcparks"
                                      },
                                      {
                                        "type": "string",
                                        "const": "bctransit"
                                      },
                                      {
                                        "type": "string",
                                        "const": "city"
                                      },
                                      {
                                        "type": "string",
                                        "const": "curated"
                                      },
                                      {
                                        "type": "string",
                                        "const": "directory"
                                      },
                                      {
                                        "type": "string",
                                        "const": "nrcan"
                                      },
                                      {
                                        "type": "string",
                                        "const": "osm"
                                      }
                                    ],
                                    "description": "Where this feature came from."
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "kind",
                                  "at",
                                  "src"
                                ]
                              }
                            },
                            "required": [
                              "type",
                              "geometry",
                              "properties"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "type": "Feature",
                          "geometry": {
                            "type": "LineString",
                            "coordinates": [
                              [
                                0,
                                0
                              ]
                            ]
                          },
                          "properties": {
                            "id": "string",
                            "name": "string",
                            "kind": "string",
                            "info": [
                              [
                                "string",
                                "string"
                              ]
                            ],
                            "addr": "string",
                            "url": "https://example.org/",
                            "at": [
                              0,
                              0
                            ],
                            "tone": "alert",
                            "src": "bc"
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/maps/layers/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/routes": {
      "get": {
        "operationId": "get-transit-routes",
        "tags": [
          "Transit"
        ],
        "summary": "Prince George Transit routes with colours and headsigns",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/transit/routes`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "short": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "color": {
                                "type": "string"
                              },
                              "text": {
                                "type": "string"
                              },
                              "headsigns": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            },
                            "required": [
                              "id",
                              "short",
                              "name",
                              "color",
                              "text",
                              "headsigns"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "short": "string",
                          "name": "string",
                          "color": "string",
                          "text": "string",
                          "headsigns": [
                            "string"
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/transit/routes",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/stops": {
      "get": {
        "operationId": "get-transit-stops",
        "tags": [
          "Transit"
        ],
        "summary": "Bus stops (search by name, route or distance)",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/transit/stops?near=53.9171,-122.7497&limit=3`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Stop name or code contains.",
            "schema": {
              "type": "string",
              "examples": [
                "Pine Centre"
              ]
            }
          },
          {
            "name": "route",
            "in": "query",
            "required": false,
            "description": "Route id or short name.",
            "schema": {
              "type": "string",
              "examples": [
                "15"
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" (adds `distanceM`).",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "routeNames": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "departures": {
                                "type": "string"
                              },
                              "id": {
                                "type": "string"
                              },
                              "code": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "wc": {
                                "type": "boolean"
                              },
                              "routes": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            },
                            "required": [
                              "routeNames",
                              "departures",
                              "id",
                              "code",
                              "name",
                              "lat",
                              "lng",
                              "wc",
                              "routes"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "routeNames": [
                            "string"
                          ],
                          "departures": "string",
                          "id": "string",
                          "code": "string",
                          "name": "string",
                          "lat": 0,
                          "lng": 0,
                          "wc": false,
                          "routes": [
                            "string"
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/transit/stops",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/stops/{id}/departures": {
      "get": {
        "operationId": "get-transit-stops-id-departures",
        "tags": [
          "Transit"
        ],
        "summary": "Next departures at a stop (real-time where available) plus relevant service alerts",
        "description": "`scheduledAt` and `expectedAt` are ISO 8601 times; `scheduled` and `expected` give the same instants in epoch milliseconds. `live` is true when `expected` comes from real-time data rather than the timetable.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/transit/stops/180053/departures`\n\nCache: 20s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Stop id or stop code (see /transit/stops).",
            "schema": {
              "type": "string",
              "examples": [
                "180053"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "departures": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "scheduledAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "expectedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "route": {
                                    "type": "string"
                                  },
                                  "headsign": {
                                    "type": "string"
                                  },
                                  "tripId": {
                                    "type": "string"
                                  },
                                  "scheduled": {
                                    "type": "number"
                                  },
                                  "expected": {
                                    "type": "number"
                                  },
                                  "delaySec": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "live": {
                                    "type": "boolean"
                                  },
                                  "cancelled": {
                                    "type": "boolean"
                                  },
                                  "terminates": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "scheduledAt",
                                  "expectedAt",
                                  "route",
                                  "headsign",
                                  "tripId",
                                  "scheduled",
                                  "expected",
                                  "delaySec",
                                  "live",
                                  "cancelled",
                                  "terminates"
                                ]
                              }
                            },
                            "stop": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "code": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "lat": {
                                  "type": "number"
                                },
                                "lng": {
                                  "type": "number"
                                },
                                "wc": {
                                  "type": "boolean"
                                },
                                "routes": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              },
                              "required": [
                                "id",
                                "code",
                                "name",
                                "lat",
                                "lng",
                                "wc",
                                "routes"
                              ]
                            },
                            "alerts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "start": {
                                    "type": "number"
                                  },
                                  "end": {
                                    "type": "number"
                                  },
                                  "routes": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "stops": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "cause": {
                                    "type": "number"
                                  },
                                  "effect": {
                                    "type": "number"
                                  },
                                  "header": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "routes",
                                  "stops",
                                  "header",
                                  "description"
                                ]
                              }
                            },
                            "realtime": {
                              "type": "object",
                              "properties": {
                                "ok": {
                                  "type": "boolean"
                                },
                                "timestamp": {
                                  "type": "number"
                                },
                                "trips": {
                                  "type": "number"
                                },
                                "error": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "ok",
                                "timestamp",
                                "trips"
                              ]
                            }
                          },
                          "required": [
                            "departures",
                            "stop",
                            "alerts",
                            "realtime"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "departures": [
                          {
                            "scheduledAt": "2026-01-01T00:00:00Z",
                            "expectedAt": "2026-01-01T00:00:00Z",
                            "route": "string",
                            "headsign": "string",
                            "tripId": "string",
                            "scheduled": 0,
                            "expected": 0,
                            "delaySec": 0,
                            "live": false,
                            "cancelled": false,
                            "terminates": false
                          }
                        ],
                        "stop": {
                          "id": "string",
                          "code": "string",
                          "name": "string",
                          "lat": 0,
                          "lng": 0,
                          "wc": false,
                          "routes": [
                            "string"
                          ]
                        },
                        "alerts": [
                          {
                            "id": "string",
                            "start": 0,
                            "end": 0,
                            "routes": [
                              "string"
                            ],
                            "stops": [
                              "string"
                            ],
                            "cause": 0,
                            "effect": 0,
                            "header": "string",
                            "description": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "realtime": {
                          "ok": false,
                          "timestamp": 0,
                          "trips": 0,
                          "error": "string"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/transit/stops/{id}/departures",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/shapes": {
      "get": {
        "operationId": "get-transit-shapes",
        "tags": [
          "Transit"
        ],
        "summary": "Route lines as GeoJSON (one MultiLineString per route)",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/transit/shapes`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string"
                            },
                            "features": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string"
                                  },
                                  "geometry": {
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "type": "string"
                                      },
                                      "coordinates": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "items": {
                                            "type": "array",
                                            "items": {
                                              "type": "number"
                                            }
                                          }
                                        }
                                      }
                                    },
                                    "required": [
                                      "type",
                                      "coordinates"
                                    ]
                                  },
                                  "properties": {
                                    "type": "object",
                                    "properties": {
                                      "route": {
                                        "type": "string"
                                      },
                                      "short": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "name": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "color": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "route",
                                      "short",
                                      "name",
                                      "color"
                                    ]
                                  }
                                },
                                "required": [
                                  "type",
                                  "geometry",
                                  "properties"
                                ]
                              }
                            }
                          },
                          "required": [
                            "type",
                            "features"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "type": "string",
                        "features": [
                          {
                            "type": "string",
                            "geometry": {
                              "type": "string",
                              "coordinates": [
                                [
                                  [
                                    0
                                  ]
                                ]
                              ]
                            },
                            "properties": {
                              "route": "string",
                              "short": "string",
                              "name": "string",
                              "color": "string"
                            }
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/transit/shapes",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/routes/{id}": {
      "get": {
        "operationId": "get-transit-routes-id",
        "tags": [
          "Transit"
        ],
        "summary": "One route: colours, headsigns, its stops and its line as GeoJSON",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/transit/routes/15`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Route id or short name (see /transit/routes).",
            "schema": {
              "type": "string",
              "examples": [
                "15"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "stops": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "code": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "wheelchair": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "id",
                                  "code",
                                  "name",
                                  "lat",
                                  "lng",
                                  "wheelchair"
                                ]
                              }
                            },
                            "line": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "geometry": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string"
                                    },
                                    "coordinates": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "coordinates"
                                  ]
                                },
                                "properties": {
                                  "type": "object",
                                  "properties": {
                                    "route": {
                                      "type": "string"
                                    },
                                    "color": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "route",
                                    "color"
                                  ]
                                }
                              },
                              "required": [
                                "type",
                                "geometry",
                                "properties"
                              ]
                            },
                            "id": {
                              "type": "string"
                            },
                            "short": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "color": {
                              "type": "string"
                            },
                            "text": {
                              "type": "string"
                            },
                            "headsigns": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "stops",
                            "line",
                            "id",
                            "short",
                            "name",
                            "color",
                            "text",
                            "headsigns"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "stops": [
                          {
                            "id": "string",
                            "code": "string",
                            "name": "string",
                            "lat": 0,
                            "lng": 0,
                            "wheelchair": false
                          }
                        ],
                        "line": {
                          "type": "string",
                          "geometry": {
                            "type": "string",
                            "coordinates": [
                              [
                                [
                                  0
                                ]
                              ]
                            ]
                          },
                          "properties": {
                            "route": "string",
                            "color": "string"
                          }
                        },
                        "id": "string",
                        "short": "string",
                        "name": "string",
                        "color": "string",
                        "text": "string",
                        "headsigns": [
                          "string"
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/transit/routes/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/feed": {
      "get": {
        "operationId": "get-transit-feed",
        "tags": [
          "Transit"
        ],
        "summary": "The schedule PG Pulse holds: GTFS feed version, service dates and counts, and when it was loaded",
        "description": "Example: `/api/v1/transit/feed`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "version": {
                                  "type": "string"
                                },
                                "start": {
                                  "type": "string"
                                },
                                "end": {
                                  "type": "string"
                                },
                                "builtAt": {
                                  "type": "string"
                                },
                                "routes": {
                                  "type": "number"
                                },
                                "stops": {
                                  "type": "number"
                                },
                                "trips": {
                                  "type": "number"
                                },
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "licence": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "version",
                                "start",
                                "end",
                                "builtAt",
                                "routes",
                                "stops",
                                "trips",
                                "source",
                                "sourceUrl",
                                "licence"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "version": "string",
                        "start": "2026-01-01T00:00:00Z",
                        "end": "2026-01-01T00:00:00Z",
                        "builtAt": "2026-01-01T00:00:00Z",
                        "routes": 0,
                        "stops": 0,
                        "trips": 0,
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "licence": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/transit/feed",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/alerts": {
      "get": {
        "operationId": "get-transit-alerts",
        "tags": [
          "Transit"
        ],
        "summary": "BC Transit service alerts for Prince George (detours, cancellations), current and recent, kept in the PG Pulse database",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/transit/alerts`\n\nCache: 60s.",
        "parameters": [
          {
            "name": "history",
            "in": "query",
            "required": false,
            "description": "Include alerts that ended in the last `days` days.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "History window in days (default 90, max 365).",
            "schema": {
              "type": "integer",
              "examples": [
                30
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "header": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "routes": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "stops": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "startsAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "endsAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "lastSeen": {
                                "type": "string"
                              },
                              "active": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "header",
                              "description",
                              "url",
                              "routes",
                              "stops",
                              "startsAt",
                              "endsAt",
                              "firstSeen",
                              "lastSeen",
                              "active"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "header": "string",
                          "description": "string",
                          "url": "https://example.org/",
                          "routes": [
                            "string"
                          ],
                          "stops": [
                            "string"
                          ],
                          "startsAt": "2026-01-01T00:00:00Z",
                          "endsAt": "2026-01-01T00:00:00Z",
                          "firstSeen": "string",
                          "lastSeen": "string",
                          "active": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/transit/alerts",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/fares": {
      "get": {
        "operationId": "get-transit-fares",
        "tags": [
          "Transit"
        ],
        "summary": "Prince George Transit fares and passes, copied from BC Transit's fares page",
        "description": "Example: `/api/v1/transit/fares`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "source": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                },
                                "checked": {
                                  "type": "string"
                                },
                                "effective": {
                                  "type": "string"
                                },
                                "fares": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "product": {
                                        "type": "string"
                                      },
                                      "rider": {
                                        "type": "string"
                                      },
                                      "price": {
                                        "type": "number"
                                      },
                                      "note": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "source": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string"
                                          },
                                          "url": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "name",
                                          "url"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "product",
                                      "price"
                                    ]
                                  }
                                },
                                "paymentMethods": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "discontinued": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "product": {
                                        "type": "string"
                                      },
                                      "previousPrice": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "product"
                                    ]
                                  }
                                },
                                "relatedSources": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "fares"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "source": {
                          "name": "string",
                          "url": "https://example.org/"
                        },
                        "checked": "string",
                        "effective": "string",
                        "fares": [
                          {
                            "id": "string",
                            "product": "string",
                            "rider": "string",
                            "price": 0,
                            "note": "string",
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            }
                          }
                        ],
                        "paymentMethods": [
                          "string"
                        ],
                        "notes": "string",
                        "discontinued": [
                          {
                            "product": "string",
                            "previousPrice": 0
                          }
                        ],
                        "relatedSources": [
                          {
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/transit/fares",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/handydart": {
      "get": {
        "operationId": "get-transit-handydart",
        "tags": [
          "Transit"
        ],
        "summary": "handyDART accessible door-to-door service in Prince George: who can use it, how to register and book, fare and contacts",
        "description": "Example: `/api/v1/transit/handydart`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "description": {
                                  "type": "string"
                                },
                                "phone": {
                                  "type": "string"
                                },
                                "fax": {
                                  "type": "string"
                                },
                                "hours": {
                                  "type": "string"
                                },
                                "open": {
                                  "type": "object",
                                  "properties": {
                                    "always": {
                                      "type": "boolean"
                                    },
                                    "sun": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "mon": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "tue": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "wed": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "thu": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "fri": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "sat": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    }
                                  }
                                },
                                "officeHours": {
                                  "type": "string"
                                },
                                "officeOpen": {
                                  "type": "object",
                                  "properties": {
                                    "always": {
                                      "type": "boolean"
                                    },
                                    "sun": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "mon": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "tue": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "wed": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "thu": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "fri": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "sat": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    }
                                  }
                                },
                                "addr": {
                                  "type": "string"
                                },
                                "eligibility": {
                                  "type": "string"
                                },
                                "booking": {
                                  "type": "string"
                                },
                                "fare": {
                                  "type": "string"
                                },
                                "taxiSaver": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                },
                                "registerUrl": {
                                  "type": "string"
                                },
                                "source": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                },
                                "relatedSources": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  }
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "checked": {
                                  "type": "string"
                                }
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "description": "string",
                        "phone": "string",
                        "fax": "string",
                        "hours": "string",
                        "open": {
                          "always": false,
                          "sun": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "mon": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "tue": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "wed": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "thu": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "fri": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "sat": [
                            [
                              "string",
                              "string"
                            ]
                          ]
                        },
                        "officeHours": "string",
                        "officeOpen": {
                          "always": false,
                          "sun": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "mon": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "tue": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "wed": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "thu": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "fri": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "sat": [
                            [
                              "string",
                              "string"
                            ]
                          ]
                        },
                        "addr": "string",
                        "eligibility": "string",
                        "booking": "string",
                        "fare": "string",
                        "taxiSaver": "string",
                        "url": "https://example.org/",
                        "registerUrl": "https://example.org/",
                        "source": {
                          "name": "string",
                          "url": "https://example.org/"
                        },
                        "relatedSources": [
                          {
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "notes": "string",
                        "checked": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/transit/handydart",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/transit/vehicles": {
      "get": {
        "operationId": "get-transit-vehicles",
        "tags": [
          "Transit"
        ],
        "summary": "Live bus positions and current service alerts",
        "description": "`timestamp` fields are GTFS-realtime epoch seconds (kept for existing clients); `observedAt` gives the same instants in ISO 8601, and `meta.updatedAt` is the feed time.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/transit/vehicles`\n\nCache: 20s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "observedAt": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "vehicles": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "observedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "bearing": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "route": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "headsign": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "timestamp": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "observedAt",
                                  "id",
                                  "label",
                                  "lat",
                                  "lng",
                                  "bearing",
                                  "route",
                                  "headsign",
                                  "timestamp"
                                ]
                              }
                            },
                            "ok": {
                              "type": "boolean"
                            },
                            "timestamp": {
                              "type": "number"
                            },
                            "error": {
                              "type": "string"
                            },
                            "alerts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "start": {
                                    "type": "number"
                                  },
                                  "end": {
                                    "type": "number"
                                  },
                                  "routes": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "stops": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "cause": {
                                    "type": "number"
                                  },
                                  "effect": {
                                    "type": "number"
                                  },
                                  "header": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "routes",
                                  "stops",
                                  "header",
                                  "description"
                                ]
                              }
                            }
                          },
                          "required": [
                            "observedAt",
                            "vehicles",
                            "ok",
                            "timestamp",
                            "alerts"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "observedAt": "2026-01-01T00:00:00Z",
                        "vehicles": [
                          {
                            "observedAt": "2026-01-01T00:00:00Z",
                            "id": "string",
                            "label": "string",
                            "lat": 0,
                            "lng": 0,
                            "bearing": 0,
                            "route": "string",
                            "headsign": "string",
                            "timestamp": 0
                          }
                        ],
                        "ok": false,
                        "timestamp": 0,
                        "error": "string",
                        "alerts": [
                          {
                            "id": "string",
                            "start": 0,
                            "end": 0,
                            "routes": [
                              "string"
                            ],
                            "stops": [
                              "string"
                            ],
                            "cause": 0,
                            "effect": 0,
                            "header": "string",
                            "description": "string",
                            "url": "https://example.org/"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/transit/vehicles",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/garbage/lookup": {
      "get": {
        "operationId": "get-garbage-lookup",
        "tags": [
          "Garbage & recycling"
        ],
        "summary": "Find the garbage/recycling zone for an address or a point",
        "description": "Pass `address`, or `lat` and `lng`. Then call /garbage/schedule with the returned `match.zone`.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/garbage/lookup?address=123%20Patricia%20Blvd`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": false,
            "description": "Street address in Prince George.",
            "schema": {
              "type": "string",
              "examples": [
                "123 Patricia Blvd"
              ]
            }
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "description": "Latitude.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "lng",
            "in": "query",
            "required": false,
            "description": "Longitude.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "query": {
                              "type": "string"
                            },
                            "match": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "address": {
                                      "type": "string"
                                    },
                                    "zone": {
                                      "type": "string"
                                    },
                                    "garbage": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "recycling": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "exact": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "address",
                                    "zone",
                                    "garbage",
                                    "recycling"
                                  ]
                                }
                              ]
                            },
                            "suggestions": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "address": {
                                    "type": "string"
                                  },
                                  "zone": {
                                    "type": "string"
                                  },
                                  "garbage": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "recycling": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "exact": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "address",
                                  "zone",
                                  "garbage",
                                  "recycling"
                                ]
                              }
                            },
                            "location": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "lat": {
                                      "type": "number"
                                    },
                                    "lng": {
                                      "type": "number"
                                    },
                                    "address": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "lat",
                                    "lng",
                                    "address"
                                  ]
                                }
                              ]
                            },
                            "method": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "map-zone"
                                },
                                {
                                  "type": "string",
                                  "const": "none"
                                },
                                {
                                  "type": "string",
                                  "const": "recyclecoach"
                                }
                              ]
                            },
                            "note": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "query",
                            "match",
                            "suggestions",
                            "location",
                            "method"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "query": "string",
                        "match": {
                          "address": "string",
                          "zone": "string",
                          "garbage": "string",
                          "recycling": "string",
                          "exact": false
                        },
                        "suggestions": [
                          {
                            "address": "string",
                            "zone": "string",
                            "garbage": "string",
                            "recycling": "string",
                            "exact": false
                          }
                        ],
                        "location": {
                          "lat": 0,
                          "lng": 0,
                          "address": "string"
                        },
                        "method": "map-zone",
                        "note": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/garbage/lookup",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/garbage/suggest": {
      "get": {
        "operationId": "get-garbage-suggest",
        "tags": [
          "Garbage & recycling"
        ],
        "summary": "Address suggestions (autocomplete) with zones",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/garbage/suggest?q=1100%20Patr`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "At least 3 characters.",
            "schema": {
              "type": "string",
              "examples": [
                "1100 Patr"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "address": {
                                "type": "string"
                              },
                              "zone": {
                                "type": "string"
                              },
                              "garbage": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "recycling": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "exact": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "address",
                              "zone",
                              "garbage",
                              "recycling"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "address": "string",
                          "zone": "string",
                          "garbage": "string",
                          "recycling": "string",
                          "exact": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/garbage/suggest",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/garbage/schedule": {
      "get": {
        "operationId": "get-garbage-schedule",
        "tags": [
          "Garbage & recycling"
        ],
        "summary": "Dated pickup schedule for a zone (garbage, recycling, holidays, events)",
        "description": "`data.ics` links an iCalendar file of the same schedule (served by /api/tools/garbage). Printable calendar: https://www.princegeorge.ca/media/5048\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/garbage/schedule?zone=zone-z480-z1862`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "zone",
            "in": "query",
            "required": true,
            "description": "Zone string from /garbage/lookup (e.g. zone-z480-z1862).",
            "schema": {
              "type": "string",
              "examples": [
                "zone-z480-z1862"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "ics": {
                              "type": "string"
                            },
                            "zone": {
                              "type": "string"
                            },
                            "garbage": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "recycling": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "next": {
                              "type": "object",
                              "properties": {
                                "garbage": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "recycling": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "garbage",
                                "recycling"
                              ]
                            },
                            "events": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "date": {
                                    "type": "string"
                                  },
                                  "items": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "kind": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "event"
                                            },
                                            {
                                              "type": "string",
                                              "const": "garbage"
                                            },
                                            {
                                              "type": "string",
                                              "const": "holiday"
                                            },
                                            {
                                              "type": "string",
                                              "const": "recycling"
                                            }
                                          ]
                                        },
                                        "title": {
                                          "type": "string"
                                        },
                                        "detail": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "kind",
                                        "title",
                                        "detail"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "date",
                                  "items"
                                ]
                              }
                            },
                            "range": {
                              "type": "object",
                              "properties": {
                                "from": {
                                  "type": "string"
                                },
                                "to": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "from",
                                "to"
                              ]
                            }
                          },
                          "required": [
                            "ics",
                            "zone",
                            "garbage",
                            "recycling",
                            "next",
                            "events",
                            "range"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "ics": "string",
                        "zone": "string",
                        "garbage": "string",
                        "recycling": "string",
                        "next": {
                          "garbage": "string",
                          "recycling": "string"
                        },
                        "events": [
                          {
                            "date": "2026-01-01T00:00:00Z",
                            "items": [
                              {
                                "id": "string",
                                "kind": "event",
                                "title": "string",
                                "detail": "string"
                              }
                            ]
                          }
                        ],
                        "range": {
                          "from": "string",
                          "to": "string"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/garbage/schedule",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/garbage/zones": {
      "get": {
        "operationId": "get-garbage-zones",
        "tags": [
          "Garbage & recycling"
        ],
        "summary": "City garbage collection zones as GeoJSON",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/garbage/zones`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "const": "FeatureCollection"
                            },
                            "features": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "Feature"
                                  },
                                  "id": {
                                    "type": [
                                      "number",
                                      "string"
                                    ]
                                  },
                                  "geometry": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "$ref": "#/components/schemas/JsonValue"
                                            }
                                          },
                                          "geometries": {
                                            "type": "array",
                                            "items": {
                                              "$ref": "#/components/schemas/JsonValue"
                                            }
                                          }
                                        },
                                        "required": [
                                          "type"
                                        ]
                                      }
                                    ]
                                  },
                                  "properties": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "additionalProperties": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "type",
                                  "geometry",
                                  "properties"
                                ]
                              }
                            }
                          },
                          "required": [
                            "type",
                            "features"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "type": "FeatureCollection",
                        "features": [
                          {
                            "type": "Feature",
                            "id": 0,
                            "geometry": {
                              "type": "string",
                              "coordinates": [
                                null
                              ],
                              "geometries": [
                                null
                              ]
                            },
                            "properties": {}
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/garbage/zones",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/services/places": {
      "get": {
        "operationId": "get-services-places",
        "tags": [
          "Key services"
        ],
        "summary": "Public services directory: government offices, health care, courts, social services, recreation, schools, utilities and more, with hours and an open-now state",
        "description": "Every place carries `source` (the operator page its phone number, address and hours were copied from), `checked` (date verified) and `sourceCheck` (whether that page still loads and whether its text changed since; re-checked weekly). `openNow` is computed from the published regular hours in local time (America/Vancouver); holidays are not modelled. Add `?format=geojson` for a FeatureCollection (places with coordinates only).\n\nExample: `/api/v1/services/places?need=government&limit=3`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name, kind, operator, address and services.",
            "schema": {
              "type": "string",
              "examples": [
                "passport"
              ]
            }
          },
          {
            "name": "need",
            "in": "query",
            "required": false,
            "description": "Only one need.",
            "schema": {
              "type": "string",
              "enum": [
                "emergency",
                "health",
                "mental-health",
                "food-housing",
                "family-social",
                "indigenous",
                "seniors-accessibility",
                "government",
                "legal",
                "vehicles",
                "libraries",
                "recreation",
                "education",
                "utilities",
                "waste",
                "post",
                "transport"
              ],
              "examples": [
                "health"
              ]
            }
          },
          {
            "name": "open",
            "in": "query",
            "required": false,
            "description": "Only places open now (from published regular hours).",
            "schema": {
              "type": "string",
              "enum": [
                "now"
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" (adds `distanceM`).",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/JsonValue"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "Feature"
                                  },
                                  "geometry": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "LineString"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "prefixItems": [
                                                {
                                                  "type": "number"
                                                },
                                                {
                                                  "type": "number"
                                                }
                                              ],
                                              "minItems": 2,
                                              "maxItems": 2
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "MultiLineString"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "items": {
                                                "type": "array",
                                                "prefixItems": [
                                                  {
                                                    "type": "number"
                                                  },
                                                  {
                                                    "type": "number"
                                                  }
                                                ],
                                                "minItems": 2,
                                                "maxItems": 2
                                              }
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "MultiPolygon"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "items": {
                                                "type": "array",
                                                "items": {
                                                  "type": "array",
                                                  "prefixItems": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number"
                                                    }
                                                  ],
                                                  "minItems": 2,
                                                  "maxItems": 2
                                                }
                                              }
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "Point"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "prefixItems": [
                                              {
                                                "type": "number"
                                              },
                                              {
                                                "type": "number"
                                              }
                                            ],
                                            "minItems": 2,
                                            "maxItems": 2
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "Polygon"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "items": {
                                                "type": "array",
                                                "prefixItems": [
                                                  {
                                                    "type": "number"
                                                  },
                                                  {
                                                    "type": "number"
                                                  }
                                                ],
                                                "minItems": 2,
                                                "maxItems": 2
                                              }
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      }
                                    ]
                                  },
                                  "properties": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": "string",
                                        "description": "Kind of place, sentence case (\"Neighbourhood park\", \"DC fast charger\")."
                                      },
                                      "info": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        },
                                        "description": "Label/value rows for the popup and landing list."
                                      },
                                      "addr": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      },
                                      "at": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "number"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2,
                                        "description": "Anchor point [lat, lng] for markers, lists and directions."
                                      },
                                      "tone": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "alert"
                                          },
                                          {
                                            "type": "string",
                                            "const": "ember"
                                          },
                                          {
                                            "type": "string",
                                            "const": "fraser"
                                          },
                                          {
                                            "type": "string",
                                            "const": "gold"
                                          },
                                          {
                                            "type": "string",
                                            "const": "ink"
                                          },
                                          {
                                            "type": "string",
                                            "const": "muted"
                                          },
                                          {
                                            "type": "string",
                                            "const": "nechako"
                                          },
                                          {
                                            "type": "string",
                                            "const": "rose"
                                          },
                                          {
                                            "type": "string",
                                            "const": "silt"
                                          },
                                          {
                                            "type": "string",
                                            "const": "spruce"
                                          },
                                          {
                                            "type": "string",
                                            "const": "violet"
                                          }
                                        ],
                                        "description": "Colour token override (garbage zones)."
                                      },
                                      "src": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "bc"
                                          },
                                          {
                                            "type": "string",
                                            "const": "bcparks"
                                          },
                                          {
                                            "type": "string",
                                            "const": "bctransit"
                                          },
                                          {
                                            "type": "string",
                                            "const": "city"
                                          },
                                          {
                                            "type": "string",
                                            "const": "curated"
                                          },
                                          {
                                            "type": "string",
                                            "const": "directory"
                                          },
                                          {
                                            "type": "string",
                                            "const": "nrcan"
                                          },
                                          {
                                            "type": "string",
                                            "const": "osm"
                                          }
                                        ],
                                        "description": "Where this feature came from."
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "name",
                                      "kind",
                                      "at",
                                      "src"
                                    ]
                                  }
                                },
                                "required": [
                                  "type",
                                  "geometry",
                                  "properties"
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        null
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/services/places",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/services/places/{id}": {
      "get": {
        "operationId": "get-services-places-id",
        "tags": [
          "Key services"
        ],
        "summary": "One public service place",
        "description": "Example: `/api/v1/services/places/{id}`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Place id (see /services/places).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "lat": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "lng": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "needLabel": {
                              "type": "string"
                            },
                            "openNow": {
                              "type": "object",
                              "properties": {
                                "state": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "closed"
                                    },
                                    {
                                      "type": "string",
                                      "const": "open"
                                    },
                                    {
                                      "type": "string",
                                      "const": "unknown"
                                    }
                                  ]
                                },
                                "until": {
                                  "type": "string"
                                },
                                "opens": {
                                  "type": "string"
                                },
                                "label": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "state",
                                "label"
                              ]
                            },
                            "page": {
                              "type": "string"
                            },
                            "id": {
                              "type": "string"
                            },
                            "need": {
                              "type": "string"
                            },
                            "layer": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "name": {
                              "type": "string"
                            },
                            "kind": {
                              "type": "string"
                            },
                            "operator": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "addr": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "located": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "phone": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "phoneAlt": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "email": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "url": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "hours": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "open": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "always": {
                                      "type": "boolean"
                                    },
                                    "sun": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "mon": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "tue": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "wed": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "thu": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "fri": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    },
                                    "sat": {
                                      "type": "array",
                                      "items": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "string"
                                          },
                                          {
                                            "type": "string"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      }
                                    }
                                  }
                                }
                              ]
                            },
                            "seasonalNote": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "fees": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "feeDetails": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "item": {
                                    "type": "string"
                                  },
                                  "fee": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "item",
                                  "fee"
                                ]
                              }
                            },
                            "accepts": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "doesNotAccept": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "services": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "notes": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "source": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name",
                                "url"
                              ]
                            },
                            "checked": {
                              "type": "string"
                            },
                            "sourceCheck": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "ok": {
                                      "type": "boolean"
                                    },
                                    "status": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "changed": {
                                      "type": "boolean"
                                    },
                                    "checkedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "changedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "ok",
                                    "status",
                                    "changed",
                                    "checkedAt",
                                    "changedAt"
                                  ]
                                }
                              ]
                            },
                            "live": {
                              "type": "object",
                              "properties": {
                                "hours": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "holidays": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "notices": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "fetchedAt": {
                                  "type": "string"
                                },
                                "changedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "ok": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "hours",
                                "holidays",
                                "notices",
                                "fetchedAt",
                                "changedAt",
                                "sourceUrl",
                                "ok"
                              ],
                              "description": "Hours and notices re-read from the operator's own page by the `wastesites` job (they replace the seed's)."
                            }
                          },
                          "required": [
                            "lat",
                            "lng",
                            "needLabel",
                            "openNow",
                            "page",
                            "id",
                            "need",
                            "layer",
                            "name",
                            "kind",
                            "source"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "lat": 0,
                        "lng": 0,
                        "needLabel": "string",
                        "openNow": {
                          "state": "closed",
                          "until": "2026-01-01T00:00:00Z",
                          "opens": "string",
                          "label": "string"
                        },
                        "page": "https://example.org/",
                        "id": "string",
                        "need": "string",
                        "layer": "string",
                        "name": "string",
                        "kind": "string",
                        "operator": "string",
                        "addr": "string",
                        "located": "string",
                        "phone": "string",
                        "phoneAlt": "string",
                        "email": "string",
                        "url": "https://example.org/",
                        "hours": "string",
                        "open": {
                          "always": false,
                          "sun": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "mon": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "tue": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "wed": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "thu": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "fri": [
                            [
                              "string",
                              "string"
                            ]
                          ],
                          "sat": [
                            [
                              "string",
                              "string"
                            ]
                          ]
                        },
                        "seasonalNote": "string",
                        "fees": "string",
                        "feeDetails": [
                          {
                            "item": "string",
                            "fee": "string"
                          }
                        ],
                        "accepts": [
                          "string"
                        ],
                        "doesNotAccept": [
                          "string"
                        ],
                        "services": [
                          "string"
                        ],
                        "notes": "string",
                        "source": {
                          "name": "string",
                          "url": "https://example.org/"
                        },
                        "checked": "string",
                        "sourceCheck": {
                          "ok": false,
                          "status": 0,
                          "changed": false,
                          "checkedAt": "2026-01-01T00:00:00Z",
                          "changedAt": "2026-01-01T00:00:00Z"
                        },
                        "live": {
                          "hours": [
                            "string"
                          ],
                          "holidays": [
                            "string"
                          ],
                          "notices": [
                            "string"
                          ],
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "changedAt": "2026-01-01T00:00:00Z",
                          "sourceUrl": "https://example.org/",
                          "ok": false
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/services/places/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/services/needs": {
      "get": {
        "operationId": "get-services-needs",
        "tags": [
          "Key services"
        ],
        "summary": "Needs used to group the public services directory, with place counts",
        "description": "Example: `/api/v1/services/needs`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "places": {
                                "type": "number"
                              },
                              "api": {
                                "type": "string"
                              },
                              "page": {
                                "type": "string"
                              },
                              "id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "places",
                              "api",
                              "page",
                              "id",
                              "label"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "places": 0,
                          "api": "https://example.org/",
                          "page": "https://example.org/",
                          "id": "string",
                          "label": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/services/needs",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/services/sources": {
      "get": {
        "operationId": "get-services-sources",
        "tags": [
          "Key services"
        ],
        "summary": "Every source page the services, emergency and getting-around data cite, with the result of the latest automated re-check",
        "description": "`changed` means the page text differs from when the facts were last verified (a person re-checks those rows); `ok: false` means it did not load. Pages that refuse automated requests are marked to be verified by hand.\n\nExample: `/api/v1/services/sources`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 500.",
            "schema": {
              "type": "integer",
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "status": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "ok": {
                                "type": "boolean"
                              },
                              "changed": {
                                "type": "boolean"
                              },
                              "checkedAt": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "changedAt": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "note": {
                                "$ref": "#/components/schemas/JsonValue"
                              }
                            },
                            "required": [
                              "url",
                              "status",
                              "ok",
                              "changed",
                              "checkedAt",
                              "changedAt",
                              "note"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "url": null,
                          "status": null,
                          "ok": false,
                          "changed": false,
                          "checkedAt": null,
                          "changedAt": null,
                          "note": null
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/services/sources",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/emergency/contacts": {
      "get": {
        "operationId": "get-emergency-contacts",
        "tags": [
          "Emergency"
        ],
        "summary": "Emergency, non-emergency, crisis and reporting phone numbers for Prince George, each verified on its official page",
        "description": "Example: `/api/v1/emergency/contacts?group=crisis`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "group",
            "in": "query",
            "required": false,
            "description": "Only one group.",
            "schema": {
              "type": "string",
              "enum": [
                "emergency",
                "police-fire",
                "health-line",
                "crisis",
                "report",
                "utility",
                "city"
              ],
              "examples": [
                "crisis"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "group": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "number": {
                                "type": "string"
                              },
                              "tel": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "alt": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "number": {
                                      "type": "string"
                                    },
                                    "tel": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "email": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "label"
                                  ]
                                }
                              },
                              "when": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "description": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              },
                              "checked": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "group",
                              "name",
                              "number",
                              "tel",
                              "alt",
                              "when",
                              "description",
                              "url",
                              "source",
                              "checked"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "group": "string",
                          "name": "string",
                          "number": "string",
                          "tel": "string",
                          "alt": [
                            {
                              "label": "string",
                              "number": "string",
                              "tel": "string",
                              "url": "https://example.org/",
                              "email": "string"
                            }
                          ],
                          "when": "string",
                          "description": "string",
                          "url": "https://example.org/",
                          "source": {
                            "name": "string",
                            "url": "https://example.org/"
                          },
                          "checked": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/emergency/contacts",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/emergency/care": {
      "get": {
        "operationId": "get-emergency-care",
        "tags": [
          "Emergency"
        ],
        "summary": "Where to get care now: hospital emergency, urgent and primary care, clinics, with open-now state",
        "description": "Example: `/api/v1/emergency/care`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "needLabel": {
                                "type": "string"
                              },
                              "openNow": {
                                "type": "object",
                                "properties": {
                                  "state": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "closed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "open"
                                      },
                                      {
                                        "type": "string",
                                        "const": "unknown"
                                      }
                                    ]
                                  },
                                  "until": {
                                    "type": "string"
                                  },
                                  "opens": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "state",
                                  "label"
                                ]
                              },
                              "page": {
                                "type": "string"
                              },
                              "id": {
                                "type": "string"
                              },
                              "need": {
                                "type": "string"
                              },
                              "layer": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "operator": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "addr": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "located": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phoneAlt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "email": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "hours": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "open": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "always": {
                                        "type": "boolean"
                                      },
                                      "sun": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      "mon": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      "tue": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      "wed": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      "thu": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      "fri": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      "sat": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      }
                                    }
                                  }
                                ]
                              },
                              "seasonalNote": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "fees": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "feeDetails": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "item": {
                                      "type": "string"
                                    },
                                    "fee": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "item",
                                    "fee"
                                  ]
                                }
                              },
                              "accepts": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "doesNotAccept": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "services": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "notes": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              },
                              "checked": {
                                "type": "string"
                              },
                              "sourceCheck": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "ok": {
                                        "type": "boolean"
                                      },
                                      "status": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "changed": {
                                        "type": "boolean"
                                      },
                                      "checkedAt": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "changedAt": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "ok",
                                      "status",
                                      "changed",
                                      "checkedAt",
                                      "changedAt"
                                    ]
                                  }
                                ]
                              },
                              "live": {
                                "type": "object",
                                "properties": {
                                  "hours": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "holidays": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "notices": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "fetchedAt": {
                                    "type": "string"
                                  },
                                  "changedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  },
                                  "ok": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "hours",
                                  "holidays",
                                  "notices",
                                  "fetchedAt",
                                  "changedAt",
                                  "sourceUrl",
                                  "ok"
                                ],
                                "description": "Hours and notices re-read from the operator's own page by the `wastesites` job (they replace the seed's)."
                              }
                            },
                            "required": [
                              "lat",
                              "lng",
                              "needLabel",
                              "openNow",
                              "page",
                              "id",
                              "need",
                              "layer",
                              "name",
                              "kind",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "lat": 0,
                          "lng": 0,
                          "needLabel": "string",
                          "openNow": {
                            "state": "closed",
                            "until": "2026-01-01T00:00:00Z",
                            "opens": "string",
                            "label": "string"
                          },
                          "page": "https://example.org/",
                          "id": "string",
                          "need": "string",
                          "layer": "string",
                          "name": "string",
                          "kind": "string",
                          "operator": "string",
                          "addr": "string",
                          "located": "string",
                          "phone": "string",
                          "phoneAlt": "string",
                          "email": "string",
                          "url": "https://example.org/",
                          "hours": "string",
                          "open": {
                            "always": false,
                            "sun": [
                              [
                                "string",
                                "string"
                              ]
                            ],
                            "mon": [
                              [
                                "string",
                                "string"
                              ]
                            ],
                            "tue": [
                              [
                                "string",
                                "string"
                              ]
                            ],
                            "wed": [
                              [
                                "string",
                                "string"
                              ]
                            ],
                            "thu": [
                              [
                                "string",
                                "string"
                              ]
                            ],
                            "fri": [
                              [
                                "string",
                                "string"
                              ]
                            ],
                            "sat": [
                              [
                                "string",
                                "string"
                              ]
                            ]
                          },
                          "seasonalNote": "string",
                          "fees": "string",
                          "feeDetails": [
                            {
                              "item": "string",
                              "fee": "string"
                            }
                          ],
                          "accepts": [
                            "string"
                          ],
                          "doesNotAccept": [
                            "string"
                          ],
                          "services": [
                            "string"
                          ],
                          "notes": "string",
                          "source": {
                            "name": "string",
                            "url": "https://example.org/"
                          },
                          "checked": "string",
                          "sourceCheck": {
                            "ok": false,
                            "status": 0,
                            "changed": false,
                            "checkedAt": "2026-01-01T00:00:00Z",
                            "changedAt": "2026-01-01T00:00:00Z"
                          },
                          "live": {
                            "hours": [
                              "string"
                            ],
                            "holidays": [
                              "string"
                            ],
                            "notices": [
                              "string"
                            ],
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "changedAt": "2026-01-01T00:00:00Z",
                            "sourceUrl": "https://example.org/",
                            "ok": false
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/emergency/care",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/emergency/prepare": {
      "get": {
        "operationId": "get-emergency-prepare",
        "tags": [
          "Emergency"
        ],
        "summary": "Emergency preparedness links: alert sign-up, evacuation zones and reception centre, provincial emergency information",
        "description": "Example: `/api/v1/emergency/prepare`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "group": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "description": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              },
                              "checked": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "group",
                              "label",
                              "url",
                              "description",
                              "source",
                              "checked"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "group": "string",
                          "label": "string",
                          "url": "https://example.org/",
                          "description": "string",
                          "source": {
                            "name": "string",
                            "url": "https://example.org/"
                          },
                          "checked": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/emergency/prepare",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/emergency/alerts": {
      "get": {
        "operationId": "get-emergency-alerts",
        "tags": [
          "Emergency"
        ],
        "summary": "Live alerts affecting Prince George: weather and air quality warnings, evacuation orders and alerts, fire bans, road closures, power outages, transit disruptions",
        "description": "Combined from the live sources PG Pulse keeps in its database. `sources` lists each feed with its freshness; a feed that is down is reported there (with `stale: true`) instead of failing the response.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/emergency/alerts`\n\nCache: 120s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "air"
                                  },
                                  {
                                    "type": "string",
                                    "const": "evacuation"
                                  },
                                  {
                                    "type": "string",
                                    "const": "fire-ban"
                                  },
                                  {
                                    "type": "string",
                                    "const": "power"
                                  },
                                  {
                                    "type": "string",
                                    "const": "road"
                                  },
                                  {
                                    "type": "string",
                                    "const": "transit"
                                  },
                                  {
                                    "type": "string",
                                    "const": "weather"
                                  },
                                  {
                                    "type": "string",
                                    "const": "wildfire"
                                  }
                                ]
                              },
                              "level": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "advisory"
                                  },
                                  {
                                    "type": "string",
                                    "const": "info"
                                  },
                                  {
                                    "type": "string",
                                    "const": "warning"
                                  }
                                ]
                              },
                              "title": {
                                "type": "string"
                              },
                              "detail": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "area": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "distanceKm": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "issued": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": "string"
                              },
                              "source": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "kind",
                              "level",
                              "title",
                              "detail",
                              "area",
                              "distanceKm",
                              "issued",
                              "url",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "kind": "air",
                          "level": "advisory",
                          "title": "string",
                          "detail": "string",
                          "area": "string",
                          "distanceKm": 0,
                          "issued": "2026-01-01T00:00:00Z",
                          "url": "https://example.org/",
                          "source": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/emergency/alerts",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/services": {
      "get": {
        "operationId": "get-services",
        "tags": [
          "Key services"
        ],
        "summary": "Key services datasets: waste and recycling sites, health care, pharmacies, libraries, government and post offices, police and ambulance",
        "description": "Example: `/api/v1/services`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "government-offices"
                                  },
                                  {
                                    "type": "string",
                                    "const": "health-care"
                                  },
                                  {
                                    "type": "string",
                                    "const": "libraries"
                                  },
                                  {
                                    "type": "string",
                                    "const": "pharmacies"
                                  },
                                  {
                                    "type": "string",
                                    "const": "police-ambulance"
                                  },
                                  {
                                    "type": "string",
                                    "const": "post-offices"
                                  },
                                  {
                                    "type": "string",
                                    "const": "recycling"
                                  },
                                  {
                                    "type": "string",
                                    "const": "waste-sites"
                                  }
                                ]
                              },
                              "label": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              },
                              "asOf": {
                                "type": "string"
                              },
                              "sources": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                }
                              },
                              "map": {
                                "type": "string"
                              },
                              "page": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              },
                              "geojson": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "label",
                              "count",
                              "asOf",
                              "sources",
                              "map",
                              "page",
                              "api",
                              "geojson"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "government-offices",
                          "label": "string",
                          "count": 0,
                          "asOf": "string",
                          "sources": [
                            {
                              "name": "string",
                              "url": "https://example.org/"
                            }
                          ],
                          "map": "string",
                          "page": "https://example.org/",
                          "api": "https://example.org/",
                          "geojson": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/services",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/services/{id}": {
      "get": {
        "operationId": "get-services-id",
        "tags": [
          "Key services"
        ],
        "summary": "One key-services dataset: places with address, hours, fees, accepted materials and a source link per place",
        "description": "Every place carries `source` (the operator page its hours and fees were copied from) and `checked` (date verified). Add `?format=geojson` for a FeatureCollection.\n\nExample: `/api/v1/services/recycling?q=paint&limit=3`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Dataset id.",
            "schema": {
              "type": "string",
              "enum": [
                "waste-sites",
                "recycling",
                "health-care",
                "libraries",
                "government-offices",
                "post-offices",
                "police-ambulance",
                "pharmacies"
              ],
              "examples": [
                "recycling"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name, kind, address and accepted materials.",
            "schema": {
              "type": "string",
              "examples": [
                "paint"
              ]
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "Only places whose kind contains this.",
            "schema": {
              "type": "string",
              "examples": [
                "Bottle depot"
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" (adds `distanceM`).",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/JsonValue"
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "Feature"
                                  },
                                  "geometry": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "LineString"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "prefixItems": [
                                                {
                                                  "type": "number"
                                                },
                                                {
                                                  "type": "number"
                                                }
                                              ],
                                              "minItems": 2,
                                              "maxItems": 2
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "MultiLineString"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "items": {
                                                "type": "array",
                                                "prefixItems": [
                                                  {
                                                    "type": "number"
                                                  },
                                                  {
                                                    "type": "number"
                                                  }
                                                ],
                                                "minItems": 2,
                                                "maxItems": 2
                                              }
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "MultiPolygon"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "items": {
                                                "type": "array",
                                                "items": {
                                                  "type": "array",
                                                  "prefixItems": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number"
                                                    }
                                                  ],
                                                  "minItems": 2,
                                                  "maxItems": 2
                                                }
                                              }
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "Point"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "prefixItems": [
                                              {
                                                "type": "number"
                                              },
                                              {
                                                "type": "number"
                                              }
                                            ],
                                            "minItems": 2,
                                            "maxItems": 2
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "Polygon"
                                          },
                                          "coordinates": {
                                            "type": "array",
                                            "items": {
                                              "type": "array",
                                              "items": {
                                                "type": "array",
                                                "prefixItems": [
                                                  {
                                                    "type": "number"
                                                  },
                                                  {
                                                    "type": "number"
                                                  }
                                                ],
                                                "minItems": 2,
                                                "maxItems": 2
                                              }
                                            }
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "coordinates"
                                        ]
                                      }
                                    ]
                                  },
                                  "properties": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": "string",
                                        "description": "Kind of place, sentence case (\"Neighbourhood park\", \"DC fast charger\")."
                                      },
                                      "info": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        },
                                        "description": "Label/value rows for the popup and landing list."
                                      },
                                      "addr": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      },
                                      "at": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "number"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2,
                                        "description": "Anchor point [lat, lng] for markers, lists and directions."
                                      },
                                      "tone": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "alert"
                                          },
                                          {
                                            "type": "string",
                                            "const": "ember"
                                          },
                                          {
                                            "type": "string",
                                            "const": "fraser"
                                          },
                                          {
                                            "type": "string",
                                            "const": "gold"
                                          },
                                          {
                                            "type": "string",
                                            "const": "ink"
                                          },
                                          {
                                            "type": "string",
                                            "const": "muted"
                                          },
                                          {
                                            "type": "string",
                                            "const": "nechako"
                                          },
                                          {
                                            "type": "string",
                                            "const": "rose"
                                          },
                                          {
                                            "type": "string",
                                            "const": "silt"
                                          },
                                          {
                                            "type": "string",
                                            "const": "spruce"
                                          },
                                          {
                                            "type": "string",
                                            "const": "violet"
                                          }
                                        ],
                                        "description": "Colour token override (garbage zones)."
                                      },
                                      "src": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "bc"
                                          },
                                          {
                                            "type": "string",
                                            "const": "bcparks"
                                          },
                                          {
                                            "type": "string",
                                            "const": "bctransit"
                                          },
                                          {
                                            "type": "string",
                                            "const": "city"
                                          },
                                          {
                                            "type": "string",
                                            "const": "curated"
                                          },
                                          {
                                            "type": "string",
                                            "const": "directory"
                                          },
                                          {
                                            "type": "string",
                                            "const": "nrcan"
                                          },
                                          {
                                            "type": "string",
                                            "const": "osm"
                                          }
                                        ],
                                        "description": "Where this feature came from."
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "name",
                                      "kind",
                                      "at",
                                      "src"
                                    ]
                                  }
                                },
                                "required": [
                                  "type",
                                  "geometry",
                                  "properties"
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        null
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/services/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/taxes": {
      "get": {
        "operationId": "get-taxes",
        "tags": [
          "Taxes & fees"
        ],
        "summary": "Prince George property tax rates by class, utility rates, the home owner grant, city fees and comparisons with other BC cities",
        "description": "Example: `/api/v1/taxes`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "asOf": {
                              "type": "string"
                            },
                            "rates": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "utilities": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "fees": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "compare": {
                              "$ref": "#/components/schemas/JsonValue"
                            }
                          },
                          "required": [
                            "asOf",
                            "rates",
                            "utilities",
                            "fees",
                            "compare"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "asOf": "string",
                        "rates": null,
                        "utilities": null,
                        "fees": null,
                        "compare": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/taxes",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/taxes/estimate": {
      "get": {
        "operationId": "get-taxes-estimate",
        "tags": [
          "Taxes & fees"
        ],
        "summary": "Estimate the property tax on a Prince George home from its assessed value",
        "description": "Residential (class 1) rates for the latest year. Returns each levy, the gross total and the total after the basic or senior home owner grant. An estimate only: your tax notice is the authority.\n\nExample: `/api/v1/taxes/estimate?value=450000`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "value",
            "in": "query",
            "required": true,
            "description": "BC Assessment value in dollars.",
            "schema": {
              "type": "number",
              "examples": [
                450000
              ]
            }
          },
          {
            "name": "grant",
            "in": "query",
            "required": false,
            "description": "Home owner grant to apply.",
            "schema": {
              "type": "string",
              "enum": [
                "none",
                "basic",
                "senior"
              ],
              "default": "basic"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "year": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "assessedValue": {
                              "type": "number"
                            },
                            "levies": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "rate": {
                                    "type": "number"
                                  },
                                  "amount": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "key",
                                  "label",
                                  "rate",
                                  "amount"
                                ]
                              }
                            },
                            "totalRate": {
                              "type": "number"
                            },
                            "gross": {
                              "type": "number"
                            },
                            "grant": {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "basic"
                                    },
                                    {
                                      "type": "string",
                                      "const": "none"
                                    },
                                    {
                                      "type": "string",
                                      "const": "senior"
                                    }
                                  ]
                                },
                                "amount": {
                                  "type": "number"
                                },
                                "note": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "type",
                                "amount",
                                "note"
                              ]
                            },
                            "net": {
                              "type": "number"
                            },
                            "formula": {
                              "type": "string"
                            },
                            "source": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "notes": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "year",
                            "assessedValue",
                            "levies",
                            "totalRate",
                            "gross",
                            "grant",
                            "net",
                            "formula",
                            "source",
                            "notes"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "year": 0,
                        "assessedValue": 0,
                        "levies": [
                          {
                            "key": "string",
                            "label": "string",
                            "rate": 0,
                            "amount": 0
                          }
                        ],
                        "totalRate": 0,
                        "gross": 0,
                        "grant": {
                          "type": "basic",
                          "amount": 0,
                          "note": "string"
                        },
                        "net": 0,
                        "formula": "string",
                        "source": "string",
                        "notes": [
                          "string"
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/taxes/estimate",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/airport/info": {
      "get": {
        "operationId": "get-airport-info",
        "tags": [
          "Getting around"
        ],
        "summary": "Prince George Airport (YXS): airlines and destinations, parking rates, taxis, rental cars and shuttles, and where to check flight times",
        "description": "Live flying conditions (METAR, TAF) are at /airport. The airport publishes no open flight-status feed and its terms do not allow republishing its flight board, so `flightStatus.url` links to it.\n\nExample: `/api/v1/airport/info`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "operator": {
                                  "type": "string"
                                },
                                "addr": {
                                  "type": "string"
                                },
                                "lat": {
                                  "type": "number"
                                },
                                "lng": {
                                  "type": "number"
                                },
                                "located": {
                                  "type": "string"
                                },
                                "phone": {
                                  "type": "string"
                                },
                                "fax": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                },
                                "airlines": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": "string"
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "addr": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "note": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "source": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string"
                                          },
                                          "url": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "name",
                                          "url"
                                        ]
                                      },
                                      "destinations": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "seasonal": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "destinations"
                                    ]
                                  }
                                },
                                "parking": {
                                  "type": "object",
                                  "properties": {
                                    "summary": {
                                      "type": "string"
                                    },
                                    "rates": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "item": {
                                            "type": "string"
                                          },
                                          "price": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "item",
                                          "price"
                                        ]
                                      }
                                    },
                                    "contacts": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "label": {
                                            "type": "string"
                                          },
                                          "phone": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "label",
                                          "phone"
                                        ]
                                      }
                                    },
                                    "paymentPortal": {
                                      "type": "string"
                                    },
                                    "source": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "url"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "rates"
                                  ]
                                },
                                "groundTransport": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": "string"
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "addr": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "note": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "source": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string"
                                          },
                                          "url": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "name",
                                          "url"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "name"
                                    ]
                                  }
                                },
                                "flightStatus": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string"
                                    },
                                    "machineReadable": {
                                      "type": "boolean"
                                    },
                                    "how": {
                                      "type": "string"
                                    },
                                    "terms": {
                                      "type": "string"
                                    },
                                    "endpoint": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "recommendation": {
                                      "type": "string"
                                    },
                                    "termsSource": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "url"
                                      ]
                                    },
                                    "robotsTxt": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "machineReadable"
                                  ]
                                },
                                "source": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                },
                                "checked": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "name": "string",
                        "operator": "string",
                        "addr": "string",
                        "lat": 0,
                        "lng": 0,
                        "located": "string",
                        "phone": "string",
                        "fax": "string",
                        "url": "https://example.org/",
                        "airlines": [
                          {
                            "name": "string",
                            "kind": "string",
                            "phone": "string",
                            "url": "https://example.org/",
                            "addr": "string",
                            "note": "string",
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            },
                            "destinations": [
                              "string"
                            ],
                            "seasonal": false
                          }
                        ],
                        "parking": {
                          "summary": "string",
                          "rates": [
                            {
                              "item": "string",
                              "price": "string"
                            }
                          ],
                          "contacts": [
                            {
                              "label": "string",
                              "phone": "string"
                            }
                          ],
                          "paymentPortal": "string",
                          "source": {
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        },
                        "groundTransport": [
                          {
                            "name": "string",
                            "kind": "string",
                            "phone": "string",
                            "url": "https://example.org/",
                            "addr": "string",
                            "note": "string",
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            }
                          }
                        ],
                        "flightStatus": {
                          "url": "https://example.org/",
                          "machineReadable": false,
                          "how": "string",
                          "terms": "string",
                          "endpoint": "string",
                          "recommendation": "string",
                          "termsSource": {
                            "name": "string",
                            "url": "https://example.org/"
                          },
                          "robotsTxt": "string"
                        },
                        "source": {
                          "name": "string",
                          "url": "https://example.org/"
                        },
                        "checked": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/airport/info",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/intercity": {
      "get": {
        "operationId": "get-intercity",
        "tags": [
          "Getting around"
        ],
        "summary": "Intercity buses and trains from Prince George (BC Bus North, VIA Rail, Ebus, Northern Health Connections, Route 161), with the next VIA Rail train times",
        "description": "Live data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/intercity`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "services": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "trains": {
                              "$ref": "#/components/schemas/JsonValue"
                            }
                          },
                          "required": [
                            "services",
                            "trains"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "services": null,
                        "trains": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/intercity",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/taxis": {
      "get": {
        "operationId": "get-taxis",
        "tags": [
          "Getting around"
        ],
        "summary": "Taxi and ride-share services confirmed to operate in Prince George",
        "description": "Example: `/api/v1/taxis`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "addr": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "note": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              }
                            },
                            "required": [
                              "name"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "name": "string",
                          "kind": "string",
                          "phone": "string",
                          "url": "https://example.org/",
                          "addr": "string",
                          "note": "string",
                          "source": {
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/taxis",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/roads/highways": {
      "get": {
        "operationId": "get-roads-highways",
        "tags": [
          "Getting around"
        ],
        "summary": "Highways out of Prince George, winter tire rules and DriveBC links (live road events are at /roads)",
        "description": "Example: `/api/v1/roads/highways`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "highways": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "note": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name"
                                    ]
                                  }
                                },
                                "drivebcLinks": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "title": {
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "url"
                                    ]
                                  }
                                },
                                "winterTires": {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string"
                                    },
                                    "note": {
                                      "type": "string"
                                    },
                                    "mapPdf": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "note"
                                  ]
                                },
                                "source": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                },
                                "checked": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "highways"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "highways": [
                          {
                            "name": "string",
                            "note": "string"
                          }
                        ],
                        "drivebcLinks": [
                          {
                            "title": "string",
                            "label": "string",
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "winterTires": {
                          "url": "https://example.org/",
                          "note": "string",
                          "mapPdf": "string"
                        },
                        "source": {
                          "name": "string",
                          "url": "https://example.org/"
                        },
                        "checked": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/roads/highways",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/ev-chargers": {
      "get": {
        "operationId": "get-ev-chargers",
        "tags": [
          "Getting around"
        ],
        "summary": "Public EV charging stations in Prince George: ports, power, connectors, network and hours",
        "description": "Stations at one site are grouped. Same data as the map layer /maps/layers/ev-chargers, flattened. Refreshed daily into the PG Pulse database.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/ev-chargers?fast=1&limit=3`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name, address and network.",
            "schema": {
              "type": "string",
              "examples": [
                "Tesla"
              ]
            }
          },
          {
            "name": "fast",
            "in": "query",
            "required": false,
            "description": "Only sites with DC fast charging.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" (adds `distanceM`).",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": [
                                  "number",
                                  "string"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "addr": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "dcFastPorts": {
                                "type": "number"
                              },
                              "level2Ports": {
                                "type": "number"
                              },
                              "maxPower": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "connectors": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "network": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "hours": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lastConfirmed": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "distanceM": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "addr",
                              "lat",
                              "lng",
                              "dcFastPorts",
                              "level2Ports",
                              "maxPower",
                              "connectors",
                              "network",
                              "hours",
                              "url",
                              "lastConfirmed"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": 0,
                          "name": "string",
                          "kind": "string",
                          "addr": "string",
                          "lat": 0,
                          "lng": 0,
                          "dcFastPorts": 0,
                          "level2Ports": 0,
                          "maxPower": "string",
                          "connectors": [
                            "string"
                          ],
                          "network": "string",
                          "hours": "string",
                          "url": "https://example.org/",
                          "lastConfirmed": "string",
                          "distanceM": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/ev-chargers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/jobs": {
      "get": {
        "operationId": "get-jobs",
        "tags": [
          "Jobs"
        ],
        "summary": "Open job postings in Prince George, newest first, with search and filters",
        "description": "Aggregated from Job Bank and other public sources every 2 hours. Wages are as published; `wage.hourlyMin` converts other units at 7.5 h a day, 37.5 h a week and 1,950 h a year (2,080 h for WorkBC postings, which WorkBC annualises at 40 h a week) so postings can be compared. There is no full job description: follow `url` to read and apply at the source.\n\nExample: `/api/v1/jobs?limit=3`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search title, employer, category and snippet.",
            "schema": {
              "type": "string",
              "examples": [
                "nurse"
              ]
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Category name or slug (see /jobs/categories).",
            "schema": {
              "type": "string",
              "examples": [
                "health-care"
              ]
            }
          },
          {
            "name": "employer",
            "in": "query",
            "required": false,
            "description": "Employer slug (see /jobs/employers).",
            "schema": {
              "type": "string",
              "examples": [
                "northern-health"
              ]
            }
          },
          {
            "name": "term",
            "in": "query",
            "required": false,
            "description": "Permanent, Temporary, Casual, Seasonal, Contract or Auxiliary.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "description": "full-time or part-time.",
            "schema": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time"
              ]
            }
          },
          {
            "name": "workplace",
            "in": "query",
            "required": false,
            "description": "on-site, hybrid, remote or on-the-road (only when the posting says).",
            "schema": {
              "type": "string",
              "enum": [
                "on-site",
                "hybrid",
                "remote",
                "on-the-road"
              ]
            }
          },
          {
            "name": "within",
            "in": "query",
            "required": false,
            "description": "Posted within this many days.",
            "schema": {
              "type": "integer",
              "examples": [
                7
              ]
            }
          },
          {
            "name": "minWage",
            "in": "query",
            "required": false,
            "description": "Minimum hourly-equivalent wage (only postings that publish a wage).",
            "schema": {
              "type": "number",
              "examples": [
                25
              ]
            }
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "description": "Source id (see /jobs/sources).",
            "schema": {
              "type": "string",
              "examples": [
                "jobbank"
              ]
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "newest (default), closing, wage or title.",
            "schema": {
              "type": "string",
              "enum": [
                "newest",
                "closing",
                "wage",
                "title"
              ]
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Incremental sync: only postings added, changed or closed after this ISO date-time, oldest change first, including closed ones (`status: closed`, `closedAt`). Store `meta.updatedAt` and pass it next time.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-09-30T00:00:00Z"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of postings: id, title, employer, location, workplace, posted, closes, term, hours, wage, snippet, category, url, source, sourceId, via, alsoOn, firstSeen, status, closedAt.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "allOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "closed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "merged"
                                      },
                                      {
                                        "type": "string",
                                        "const": "open"
                                      }
                                    ]
                                  },
                                  "closedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "alsoOn": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "employer": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "location": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "workplace": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "Hybrid"
                                      },
                                      {
                                        "type": "string",
                                        "const": "On site"
                                      },
                                      {
                                        "type": "string",
                                        "const": "On the road"
                                      },
                                      {
                                        "type": "string",
                                        "const": "Remote"
                                      }
                                    ]
                                  },
                                  "posted": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "closes": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "term": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "hours": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "string",
                                        "const": "Full time"
                                      },
                                      {
                                        "type": "string",
                                        "const": "Part time"
                                      }
                                    ]
                                  },
                                  "wage": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "min": {
                                            "type": "number"
                                          },
                                          "max": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "unit": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "const": "biweekly"
                                              },
                                              {
                                                "type": "string",
                                                "const": "day"
                                              },
                                              {
                                                "type": "string",
                                                "const": "hour"
                                              },
                                              {
                                                "type": "string",
                                                "const": "month"
                                              },
                                              {
                                                "type": "string",
                                                "const": "week"
                                              },
                                              {
                                                "type": "string",
                                                "const": "year"
                                              }
                                            ]
                                          },
                                          "hourlyMin": {
                                            "type": "number"
                                          },
                                          "text": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "min",
                                          "max",
                                          "unit",
                                          "hourlyMin",
                                          "text"
                                        ]
                                      }
                                    ]
                                  },
                                  "snippet": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "noc": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceId": {
                                    "type": "string"
                                  },
                                  "via": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": "string"
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "status",
                                  "closedAt",
                                  "alsoOn",
                                  "id",
                                  "title",
                                  "employer",
                                  "location",
                                  "workplace",
                                  "posted",
                                  "closes",
                                  "term",
                                  "hours",
                                  "wage",
                                  "snippet",
                                  "category",
                                  "noc",
                                  "url",
                                  "source",
                                  "sourceId",
                                  "via",
                                  "firstSeen",
                                  "updatedAt"
                                ]
                              },
                              {
                                "$ref": "#/components/schemas/Job"
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "status": "open",
                          "closedAt": "2026-01-01T00:00:00Z",
                          "alsoOn": [
                            "string"
                          ],
                          "id": "example-job",
                          "title": "Example role (fictional)",
                          "employer": "Example employer",
                          "location": "string",
                          "workplace": "Hybrid",
                          "posted": "string",
                          "closes": "string",
                          "term": "string",
                          "hours": "Full time",
                          "wage": {
                            "min": 0,
                            "max": 0,
                            "unit": "biweekly",
                            "hourlyMin": 0,
                            "text": "string"
                          },
                          "snippet": "string",
                          "category": "string",
                          "noc": "string",
                          "url": "https://employer.example/job",
                          "source": "Example employer",
                          "sourceId": "string",
                          "via": "string",
                          "firstSeen": "string",
                          "updatedAt": "2026-01-01T00:00:00.000Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/jobs",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/jobs/categories": {
      "get": {
        "operationId": "get-jobs-categories",
        "tags": [
          "Jobs"
        ],
        "summary": "Job categories with open-posting counts",
        "description": "Example: `/api/v1/jobs/categories`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "name",
                              "slug",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "name": "string",
                          "slug": "string",
                          "count": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/jobs/categories",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/jobs/employers": {
      "get": {
        "operationId": "get-jobs-employers",
        "tags": [
          "Jobs"
        ],
        "summary": "Employers with open postings, most first",
        "description": "Example: `/api/v1/jobs/employers?limit=5`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              },
                              "top": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "slug",
                              "name",
                              "count",
                              "top"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "name": "string",
                          "count": 0,
                          "top": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/jobs/employers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/jobs/top-employers": {
      "get": {
        "operationId": "get-jobs-top-employers",
        "tags": [
          "Jobs"
        ],
        "summary": "Top employers in Prince George (City of Prince George list) with their current openings here",
        "description": "The list is the City’s own; it publishes no headcounts. `openings` counts postings in this feed right now, not all of an employer’s vacancies.\n\nExample: `/api/v1/jobs/top-employers`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "openings": {
                                "type": "number"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "sector": {
                                "type": "string"
                              },
                              "note": {
                                "type": "string"
                              },
                              "careersUrl": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "openings",
                              "slug",
                              "name",
                              "sector",
                              "careersUrl"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "openings": 0,
                          "slug": "string",
                          "name": "string",
                          "sector": "string",
                          "note": "string",
                          "careersUrl": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/jobs/top-employers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/jobs/market": {
      "get": {
        "operationId": "get-jobs-market",
        "tags": [
          "Jobs"
        ],
        "summary": "Job market context: latest Labour Force Survey figures for the local economic region and the province (keys `cariboo` and `bc` are kept for compatibility)",
        "description": "Example: `/api/v1/jobs/market`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "region": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "notes": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "asOf": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "monthly": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "cariboo": {
                                      "type": "object",
                                      "properties": {
                                        "unemploymentRate": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        },
                                        "employmentThousands": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "unemploymentRate",
                                        "employmentThousands"
                                      ]
                                    },
                                    "bc": {
                                      "type": "object",
                                      "properties": {
                                        "unemploymentRate": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        },
                                        "employmentThousands": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "unemploymentRate",
                                        "employmentThousands"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "cariboo",
                                    "bc"
                                  ]
                                }
                              ]
                            },
                            "annual": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "cariboo": {
                                      "type": "object",
                                      "properties": {
                                        "unemploymentRate": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        },
                                        "participationRate": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        },
                                        "employmentRate": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "unemploymentRate",
                                        "participationRate",
                                        "employmentRate"
                                      ]
                                    },
                                    "bc": {
                                      "type": "object",
                                      "properties": {
                                        "unemploymentRate": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        },
                                        "participationRate": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        },
                                        "employmentRate": {
                                          "type": [
                                            "null",
                                            "object"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "unemploymentRate",
                                        "participationRate",
                                        "employmentRate"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "cariboo",
                                    "bc"
                                  ]
                                }
                              ]
                            },
                            "postings": {
                              "type": "object",
                              "properties": {
                                "open": {
                                  "type": "number"
                                },
                                "updatedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "open",
                                "updatedAt"
                              ]
                            }
                          },
                          "required": [
                            "region",
                            "notes",
                            "asOf",
                            "monthly",
                            "annual",
                            "postings"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "region": null,
                        "notes": null,
                        "asOf": null,
                        "monthly": {
                          "cariboo": {
                            "unemploymentRate": {},
                            "employmentThousands": {}
                          },
                          "bc": {
                            "unemploymentRate": {},
                            "employmentThousands": {}
                          }
                        },
                        "annual": {
                          "cariboo": {
                            "unemploymentRate": {},
                            "participationRate": {},
                            "employmentRate": {}
                          },
                          "bc": {
                            "unemploymentRate": {},
                            "participationRate": {},
                            "employmentRate": {}
                          }
                        },
                        "postings": {
                          "open": 0,
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/jobs/market",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/jobs/stats": {
      "get": {
        "operationId": "get-jobs-stats",
        "tags": [
          "Jobs"
        ],
        "summary": "Job-market stats from the posting history: open, new and closed postings per week, by category and top employers",
        "description": "Weekly series (weeks ending Sunday, oldest first) computed from every posting this feed has tracked since `trackedSince`. `open` = postings listed at the end of the week, `added` = first seen that week, `closed` = no longer listed. `medianHourly` is the median hourly-equivalent wage of open postings that publish one. Counts reflect the sources this feed covers, not the whole labour market.\n\nExample: `/api/v1/jobs/stats?weeks=12`\n\nCache: 1800s.",
        "parameters": [
          {
            "name": "weeks",
            "in": "query",
            "required": false,
            "description": "Weeks of history (4 to 104, default 26).",
            "schema": {
              "type": "integer",
              "examples": [
                12
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "weeks": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "trackedSince": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "open": {
                              "type": "array",
                              "items": {
                                "type": "number"
                              }
                            },
                            "added": {
                              "type": "array",
                              "items": {
                                "type": "number"
                              }
                            },
                            "closed": {
                              "type": "array",
                              "items": {
                                "type": "number"
                              }
                            },
                            "byCategory": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "open": {
                                    "type": "array",
                                    "items": {
                                      "type": "number"
                                    }
                                  },
                                  "added": {
                                    "type": "array",
                                    "items": {
                                      "type": "number"
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "slug",
                                  "open",
                                  "added"
                                ]
                              }
                            },
                            "topEmployers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "open": {
                                    "type": "array",
                                    "items": {
                                      "type": "number"
                                    }
                                  },
                                  "added": {
                                    "type": "array",
                                    "items": {
                                      "type": "number"
                                    }
                                  },
                                  "openNow": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "slug",
                                  "name",
                                  "open",
                                  "added",
                                  "openNow"
                                ]
                              }
                            },
                            "medianHourly": {
                              "type": "array",
                              "items": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              }
                            }
                          },
                          "required": [
                            "weeks",
                            "trackedSince",
                            "open",
                            "added",
                            "closed",
                            "byCategory",
                            "topEmployers",
                            "medianHourly"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "weeks": [
                          "string"
                        ],
                        "trackedSince": "string",
                        "open": [
                          0
                        ],
                        "added": [
                          0
                        ],
                        "closed": [
                          0
                        ],
                        "byCategory": [
                          {
                            "name": "string",
                            "slug": "string",
                            "open": [
                              0
                            ],
                            "added": [
                              0
                            ]
                          }
                        ],
                        "topEmployers": [
                          {
                            "slug": "string",
                            "name": "string",
                            "open": [
                              0
                            ],
                            "added": [
                              0
                            ],
                            "openNow": 0
                          }
                        ],
                        "medianHourly": [
                          0
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/jobs/stats",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/jobs/sources": {
      "get": {
        "operationId": "get-jobs-sources",
        "tags": [
          "Jobs"
        ],
        "summary": "Sources the jobs feed is built from, with status and counts",
        "description": "Example: `/api/v1/jobs/sources`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "ok": {
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              },
                              "count": {
                                "type": "number"
                              },
                              "listed": {
                                "type": "number"
                              },
                              "error": {
                                "type": "string"
                              },
                              "kept": {
                                "type": "boolean"
                              },
                              "checkedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lastSuccess": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "ok",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "url": "https://example.org/",
                          "ok": false,
                          "count": 0,
                          "listed": 0,
                          "error": "string",
                          "kept": false,
                          "checkedAt": "2026-01-01T00:00:00Z",
                          "lastSuccess": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/jobs/sources",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/jobs/{id}": {
      "get": {
        "operationId": "get-jobs-id",
        "tags": [
          "Jobs"
        ],
        "summary": "One job posting",
        "description": "Example: `/api/v1/jobs/{id}`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Posting id (from /jobs).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "status": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "closed"
                                    },
                                    {
                                      "type": "string",
                                      "const": "merged"
                                    },
                                    {
                                      "type": "string",
                                      "const": "open"
                                    }
                                  ]
                                },
                                "closedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "alsoOn": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "id": {
                                  "type": "string"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "employer": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "location": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "workplace": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "Hybrid"
                                    },
                                    {
                                      "type": "string",
                                      "const": "On site"
                                    },
                                    {
                                      "type": "string",
                                      "const": "On the road"
                                    },
                                    {
                                      "type": "string",
                                      "const": "Remote"
                                    }
                                  ]
                                },
                                "posted": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "closes": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "term": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "hours": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "Full time"
                                    },
                                    {
                                      "type": "string",
                                      "const": "Part time"
                                    }
                                  ]
                                },
                                "wage": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "min": {
                                          "type": "number"
                                        },
                                        "max": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "unit": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "biweekly"
                                            },
                                            {
                                              "type": "string",
                                              "const": "day"
                                            },
                                            {
                                              "type": "string",
                                              "const": "hour"
                                            },
                                            {
                                              "type": "string",
                                              "const": "month"
                                            },
                                            {
                                              "type": "string",
                                              "const": "week"
                                            },
                                            {
                                              "type": "string",
                                              "const": "year"
                                            }
                                          ]
                                        },
                                        "hourlyMin": {
                                          "type": "number"
                                        },
                                        "text": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "min",
                                        "max",
                                        "unit",
                                        "hourlyMin",
                                        "text"
                                      ]
                                    }
                                  ]
                                },
                                "snippet": {
                                  "type": "string"
                                },
                                "category": {
                                  "type": "string"
                                },
                                "noc": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "url": {
                                  "type": "string"
                                },
                                "source": {
                                  "type": "string"
                                },
                                "sourceId": {
                                  "type": "string"
                                },
                                "via": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "firstSeen": {
                                  "type": "string"
                                },
                                "updatedAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "status",
                                "closedAt",
                                "alsoOn",
                                "id",
                                "title",
                                "employer",
                                "location",
                                "workplace",
                                "posted",
                                "closes",
                                "term",
                                "hours",
                                "wage",
                                "snippet",
                                "category",
                                "noc",
                                "url",
                                "source",
                                "sourceId",
                                "via",
                                "firstSeen",
                                "updatedAt"
                              ]
                            },
                            {
                              "$ref": "#/components/schemas/Job"
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "status": "open",
                        "closedAt": "2026-01-01T00:00:00Z",
                        "alsoOn": [
                          "string"
                        ],
                        "id": "example-job",
                        "title": "Example role (fictional)",
                        "employer": "Example employer",
                        "location": "string",
                        "workplace": "Hybrid",
                        "posted": "string",
                        "closes": "string",
                        "term": "string",
                        "hours": "Full time",
                        "wage": {
                          "min": 0,
                          "max": 0,
                          "unit": "biweekly",
                          "hourlyMin": 0,
                          "text": "string"
                        },
                        "snippet": "string",
                        "category": "string",
                        "noc": "string",
                        "url": "https://employer.example/job",
                        "source": "Example employer",
                        "sourceId": "string",
                        "via": "string",
                        "firstSeen": "string",
                        "updatedAt": "2026-01-01T00:00:00.000Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/jobs/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/ads": {
      "get": {
        "operationId": "get-ads",
        "tags": [
          "Advertising"
        ],
        "summary": "Paid ad campaigns running today, with their placements",
        "description": "Every paid placement on the site is labelled “Sponsored”. This lists the campaigns live today (UTC date) so anyone can see who is advertising where. Filter with `placement` (for example home-top, feed-inline, category:plumbers).\n\nExample: `/api/v1/ads`\n\nCache: 60s.",
        "parameters": [
          {
            "name": "placement",
            "in": "query",
            "required": false,
            "description": "Only campaigns that may run in this placement.",
            "schema": {
              "type": "string",
              "examples": [
                "home-top"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "advertiser": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "business": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "placements": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "start": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "end": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "creatives": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "headline": {
                                      "type": "string"
                                    },
                                    "body": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "cta": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "href": {
                                      "type": "string"
                                    },
                                    "image": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "headline",
                                    "body",
                                    "cta",
                                    "href",
                                    "image"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "id",
                              "advertiser",
                              "business",
                              "placements",
                              "start",
                              "end",
                              "creatives"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "advertiser": "string",
                          "business": "string",
                          "placements": [
                            "string"
                          ],
                          "start": "2026-01-01T00:00:00Z",
                          "end": "2026-01-01T00:00:00Z",
                          "creatives": [
                            {
                              "headline": "string",
                              "body": "string",
                              "cta": "string",
                              "href": "https://example.org/",
                              "image": "string"
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/ads",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/ads/featured-listings": {
      "get": {
        "operationId": "get-ads-featured-listings",
        "tags": [
          "Advertising"
        ],
        "summary": "Directory listings featured (sponsored) today",
        "description": "Slugs of businesses that pay for a featured listing. They rank first in their categories and carry a “Featured” badge. Details: /api/v1/businesses/{slug}.\n\nExample: `/api/v1/ads/featured-listings`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "slug",
                              "url",
                              "api"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "url": "https://example.org/",
                          "api": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/ads/featured-listings",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/council/votes": {
      "get": {
        "operationId": "get-council-votes",
        "tags": [
          "Civic"
        ],
        "summary": "How council voted: every recorded council vote of the current term, with each member’s vote",
        "description": "From the City of Prince George’s council voting summaries (one per meeting, each member marked Yes, No or Absent), cross-checked with the adopted minutes (the official record), which add the mover and seconder. `votes` maps each member to for, against, absent or conflict exactly as the summary marks them; members with no mark are left out. `minutes.check` is 'match' when the minutes give the same result and name the same members as opposed, 'mismatch' when they differ (the site leaves those out of its counts), 'unmatched' or 'no-minutes' when they could not be compared. Newest first. Refreshed monthly.\n\nExample: `/api/v1/council/votes?split=true&limit=20`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "member",
            "in": "query",
            "required": false,
            "description": "Only votes with a mark for this member (slug from /council/votes/summary, e.g. a surname).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vote",
            "in": "query",
            "required": false,
            "description": "With member: only votes where the member voted this way; alone: votes where anyone did.",
            "schema": {
              "type": "string",
              "enum": [
                "for",
                "against",
                "absent",
                "conflict",
                "other"
              ]
            }
          },
          {
            "name": "split",
            "in": "query",
            "required": false,
            "description": "true: only votes with at least one vote against; false: only unanimous ones.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "result",
            "in": "query",
            "required": false,
            "description": "carried or defeated.",
            "schema": {
              "type": "string",
              "enum": [
                "carried",
                "defeated"
              ]
            }
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "Topic id (our keyword grouping).",
            "schema": {
              "type": "string",
              "enum": [
                "procedure",
                "land-use",
                "budget",
                "safety",
                "infrastructure",
                "recreation",
                "environment",
                "grants",
                "governance",
                "other"
              ]
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Calendar year.",
            "schema": {
              "type": "integer",
              "examples": [
                2025
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "From date (YYYY-MM-DD), inclusive.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "To date (YYYY-MM-DD), inclusive.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Item title or resolution contains (every word).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "date": {
                                "type": "string"
                              },
                              "meeting": {
                                "type": "string"
                              },
                              "meetingUrl": {
                                "type": "string"
                              },
                              "item": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "itemTitle": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "text": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "result": {
                                "type": "string"
                              },
                              "decision": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "tally": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "yes": {
                                "type": "number"
                              },
                              "no": {
                                "type": "number"
                              },
                              "absent": {
                                "type": "number"
                              },
                              "split": {
                                "type": "boolean"
                              },
                              "topic": {
                                "type": "string"
                              },
                              "topicLabel": {
                                "type": "string"
                              },
                              "votes": {
                                "type": "object",
                                "additionalProperties": {
                                  "anyOf": [
                                    {
                                      "type": "string",
                                      "const": "absent"
                                    },
                                    {
                                      "type": "string",
                                      "const": "against"
                                    },
                                    {
                                      "type": "string",
                                      "const": "conflict"
                                    },
                                    {
                                      "type": "string",
                                      "const": "for"
                                    },
                                    {
                                      "type": "string",
                                      "const": "other"
                                    }
                                  ]
                                }
                              },
                              "against": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "absentMembers": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "mover": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "seconder": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "minutes": {
                                "type": "object",
                                "properties": {
                                  "result": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "opposed": {
                                    "anyOf": [
                                      {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "check": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "match"
                                      },
                                      {
                                        "type": "string",
                                        "const": "mismatch"
                                      },
                                      {
                                        "type": "string",
                                        "const": "no-minutes"
                                      },
                                      {
                                        "type": "string",
                                        "const": "unchecked"
                                      },
                                      {
                                        "type": "string",
                                        "const": "unmatched"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "result",
                                  "opposed",
                                  "check"
                                ]
                              },
                              "minutesUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "summaryUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "date",
                              "meeting",
                              "meetingUrl",
                              "item",
                              "itemTitle",
                              "text",
                              "result",
                              "decision",
                              "tally",
                              "yes",
                              "no",
                              "absent",
                              "split",
                              "topic",
                              "topicLabel",
                              "votes",
                              "against",
                              "absentMembers",
                              "mover",
                              "seconder",
                              "minutes",
                              "minutesUrl",
                              "summaryUrl"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "date": "2026-01-01T00:00:00Z",
                          "meeting": "string",
                          "meetingUrl": "https://example.org/",
                          "item": "string",
                          "itemTitle": "string",
                          "text": "string",
                          "result": "string",
                          "decision": "string",
                          "tally": "string",
                          "yes": 0,
                          "no": 0,
                          "absent": 0,
                          "split": false,
                          "topic": "string",
                          "topicLabel": "string",
                          "votes": {},
                          "against": [
                            "string"
                          ],
                          "absentMembers": [
                            "string"
                          ],
                          "mover": "string",
                          "seconder": "string",
                          "minutes": {
                            "result": "string",
                            "opposed": [
                              "string"
                            ],
                            "check": "match"
                          },
                          "minutesUrl": "https://example.org/",
                          "summaryUrl": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/council/votes",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/council/votes/summary": {
      "get": {
        "operationId": "get-council-votes-summary",
        "tags": [
          "Civic"
        ],
        "summary": "Council voting record overview: coverage, totals and neutral counts per member",
        "description": "Meetings covered (of the term’s council meetings), recorded votes, split votes, and per member: votes cast (for or against), votes against, votes in the minority on split votes (on a tie, which defeats a motion, those voting for), times as the lone opponent, votes marked absent, meetings missed (absent on every vote) and partly attended. Votes whose summary and minutes disagree are excluded.\n\nExample: `/api/v1/council/votes/summary`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "term": {
                                  "type": "string"
                                },
                                "termStart": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "meetings": {
                                  "type": "object",
                                  "properties": {
                                    "total": {
                                      "type": "number"
                                    },
                                    "parsed": {
                                      "type": "number"
                                    },
                                    "noSummary": {
                                      "type": "number"
                                    },
                                    "noVotes": {
                                      "type": "number"
                                    },
                                    "failed": {
                                      "type": "number"
                                    },
                                    "first": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "last": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "total",
                                    "parsed",
                                    "noSummary",
                                    "noVotes",
                                    "failed",
                                    "first",
                                    "last"
                                  ]
                                },
                                "motions": {
                                  "type": "number"
                                },
                                "split": {
                                  "type": "number"
                                },
                                "defeated": {
                                  "type": "number"
                                },
                                "mismatched": {
                                  "type": "number"
                                },
                                "checked": {
                                  "type": "number"
                                },
                                "members": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string"
                                      },
                                      "slug": {
                                        "type": "string"
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "surname": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "firstDate": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "lastDate": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "votes": {
                                        "type": "number"
                                      },
                                      "against": {
                                        "type": "number"
                                      },
                                      "minority": {
                                        "type": "number"
                                      },
                                      "lone": {
                                        "type": "number"
                                      },
                                      "absentVotes": {
                                        "type": "number"
                                      },
                                      "conflict": {
                                        "type": "number"
                                      },
                                      "meetings": {
                                        "type": "number"
                                      },
                                      "meetingsAbsent": {
                                        "type": "number"
                                      },
                                      "meetingsPartial": {
                                        "type": "number"
                                      },
                                      "splitVotes": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "slug",
                                      "title",
                                      "surname",
                                      "name",
                                      "label",
                                      "firstDate",
                                      "lastDate",
                                      "votes",
                                      "against",
                                      "minority",
                                      "lone",
                                      "absentVotes",
                                      "conflict",
                                      "meetings",
                                      "meetingsAbsent",
                                      "meetingsPartial",
                                      "splitVotes"
                                    ]
                                  }
                                },
                                "updatedAt": {
                                  "$ref": "#/components/schemas/JsonValue"
                                }
                              },
                              "required": [
                                "term",
                                "termStart",
                                "meetings",
                                "motions",
                                "split",
                                "defeated",
                                "mismatched",
                                "checked",
                                "members",
                                "updatedAt"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "term": "string",
                        "termStart": "string",
                        "meetings": {
                          "total": 0,
                          "parsed": 0,
                          "noSummary": 0,
                          "noVotes": 0,
                          "failed": 0,
                          "first": "string",
                          "last": "string"
                        },
                        "motions": 0,
                        "split": 0,
                        "defeated": 0,
                        "mismatched": 0,
                        "checked": 0,
                        "members": [
                          {
                            "key": "string",
                            "slug": "string",
                            "title": "string",
                            "surname": "string",
                            "name": "string",
                            "label": "string",
                            "firstDate": "2026-01-01T00:00:00Z",
                            "lastDate": "2026-01-01T00:00:00Z",
                            "votes": 0,
                            "against": 0,
                            "minority": 0,
                            "lone": 0,
                            "absentVotes": 0,
                            "conflict": 0,
                            "meetings": 0,
                            "meetingsAbsent": 0,
                            "meetingsPartial": 0,
                            "splitVotes": 0
                          }
                        ],
                        "updatedAt": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/council/votes/summary",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/civic": {
      "get": {
        "operationId": "get-civic",
        "tags": [
          "Civic"
        ],
        "summary": "Everything civic: party standings, representatives, councils, elections, official links, ways to get involved",
        "description": "The editorial civic guide (civic.json) with the current MPs, MLAs, mayor and council from the database merged in (`mps`, `mlas`, `council`).\n\nExample: `/api/v1/civic`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "updated": {
                              "type": "string"
                            },
                            "mps": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "level": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "federal"
                                      },
                                      {
                                        "type": "string",
                                        "const": "municipal"
                                      },
                                      {
                                        "type": "string",
                                        "const": "provincial"
                                      }
                                    ]
                                  },
                                  "office": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "district": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "party": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "partyName": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phoneLabel": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "officeAddress": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "profile": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "photo": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  },
                                  "license": {
                                    "type": "string"
                                  },
                                  "fetchedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "note": {
                                    "type": "string",
                                    "description": "Editorial context from civic.json (riding note, member note with its source, since)."
                                  },
                                  "noteSource": {
                                    "type": "string"
                                  },
                                  "since": {
                                    "type": "string"
                                  },
                                  "ridingNote": {
                                    "type": "string"
                                  },
                                  "rd": {
                                    "type": "boolean"
                                  },
                                  "role": {
                                    "type": "string"
                                  },
                                  "fallback": {
                                    "type": "boolean",
                                    "description": "True when this comes from the researched list in civic.json because the database has nothing yet."
                                  }
                                },
                                "required": [
                                  "id",
                                  "level",
                                  "office",
                                  "name",
                                  "district",
                                  "party",
                                  "partyName",
                                  "email",
                                  "phone",
                                  "phoneLabel",
                                  "officeAddress",
                                  "profile",
                                  "photo",
                                  "source",
                                  "sourceUrl",
                                  "license",
                                  "fetchedAt",
                                  "firstSeen"
                                ]
                              }
                            },
                            "mlas": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "level": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "federal"
                                      },
                                      {
                                        "type": "string",
                                        "const": "municipal"
                                      },
                                      {
                                        "type": "string",
                                        "const": "provincial"
                                      }
                                    ]
                                  },
                                  "office": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "district": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "party": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "partyName": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phoneLabel": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "officeAddress": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "profile": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "photo": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  },
                                  "license": {
                                    "type": "string"
                                  },
                                  "fetchedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "note": {
                                    "type": "string",
                                    "description": "Editorial context from civic.json (riding note, member note with its source, since)."
                                  },
                                  "noteSource": {
                                    "type": "string"
                                  },
                                  "since": {
                                    "type": "string"
                                  },
                                  "ridingNote": {
                                    "type": "string"
                                  },
                                  "rd": {
                                    "type": "boolean"
                                  },
                                  "role": {
                                    "type": "string"
                                  },
                                  "fallback": {
                                    "type": "boolean",
                                    "description": "True when this comes from the researched list in civic.json because the database has nothing yet."
                                  }
                                },
                                "required": [
                                  "id",
                                  "level",
                                  "office",
                                  "name",
                                  "district",
                                  "party",
                                  "partyName",
                                  "email",
                                  "phone",
                                  "phoneLabel",
                                  "officeAddress",
                                  "profile",
                                  "photo",
                                  "source",
                                  "sourceUrl",
                                  "license",
                                  "fetchedAt",
                                  "firstSeen"
                                ]
                              }
                            },
                            "council": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "level": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "federal"
                                      },
                                      {
                                        "type": "string",
                                        "const": "municipal"
                                      },
                                      {
                                        "type": "string",
                                        "const": "provincial"
                                      }
                                    ]
                                  },
                                  "office": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "district": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "party": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "partyName": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phoneLabel": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "officeAddress": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "profile": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "photo": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  },
                                  "license": {
                                    "type": "string"
                                  },
                                  "fetchedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "note": {
                                    "type": "string",
                                    "description": "Editorial context from civic.json (riding note, member note with its source, since)."
                                  },
                                  "noteSource": {
                                    "type": "string"
                                  },
                                  "since": {
                                    "type": "string"
                                  },
                                  "ridingNote": {
                                    "type": "string"
                                  },
                                  "rd": {
                                    "type": "boolean"
                                  },
                                  "role": {
                                    "type": "string"
                                  },
                                  "fallback": {
                                    "type": "boolean",
                                    "description": "True when this comes from the researched list in civic.json because the database has nothing yet."
                                  }
                                },
                                "required": [
                                  "id",
                                  "level",
                                  "office",
                                  "name",
                                  "district",
                                  "party",
                                  "partyName",
                                  "email",
                                  "phone",
                                  "phoneLabel",
                                  "officeAddress",
                                  "profile",
                                  "photo",
                                  "source",
                                  "sourceUrl",
                                  "license",
                                  "fetchedAt",
                                  "firstSeen"
                                ]
                              }
                            },
                            "elections": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "additionalProperties": {
                                  "$ref": "#/components/schemas/JsonValue"
                                }
                              }
                            }
                          },
                          "required": [
                            "mps",
                            "mlas",
                            "council"
                          ],
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "array",
                                "items": {
                                  "$ref": "#/components/schemas/JsonValue"
                                }
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "level": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "const": "federal"
                                        },
                                        {
                                          "type": "string",
                                          "const": "municipal"
                                        },
                                        {
                                          "type": "string",
                                          "const": "provincial"
                                        }
                                      ]
                                    },
                                    "office": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "district": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "party": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "partyName": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "email": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "phone": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "phoneLabel": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "officeAddress": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "profile": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "photo": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "license": {
                                      "type": "string"
                                    },
                                    "fetchedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "firstSeen": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "note": {
                                      "type": "string",
                                      "description": "Editorial context from civic.json (riding note, member note with its source, since)."
                                    },
                                    "noteSource": {
                                      "type": "string"
                                    },
                                    "since": {
                                      "type": "string"
                                    },
                                    "ridingNote": {
                                      "type": "string"
                                    },
                                    "rd": {
                                      "type": "boolean"
                                    },
                                    "role": {
                                      "type": "string"
                                    },
                                    "fallback": {
                                      "type": "boolean",
                                      "description": "True when this comes from the researched list in civic.json because the database has nothing yet."
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "level",
                                    "office",
                                    "name",
                                    "district",
                                    "party",
                                    "partyName",
                                    "email",
                                    "phone",
                                    "phoneLabel",
                                    "officeAddress",
                                    "profile",
                                    "photo",
                                    "source",
                                    "sourceUrl",
                                    "license",
                                    "fetchedAt",
                                    "firstSeen"
                                  ]
                                }
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "object",
                                "additionalProperties": {
                                  "$ref": "#/components/schemas/JsonValue"
                                }
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "updated": "2026-01-01T00:00:00Z",
                        "mps": [
                          {
                            "id": "string",
                            "level": "federal",
                            "office": "string",
                            "name": "string",
                            "district": "string",
                            "party": "string",
                            "partyName": "string",
                            "email": "string",
                            "phone": "string",
                            "phoneLabel": "string",
                            "officeAddress": "string",
                            "profile": "string",
                            "photo": "string",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "license": "string",
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "firstSeen": "string",
                            "note": "string",
                            "noteSource": "string",
                            "since": "2026-01-01T00:00:00Z",
                            "ridingNote": "string",
                            "rd": false,
                            "role": "string",
                            "fallback": false
                          }
                        ],
                        "mlas": [
                          {
                            "id": "string",
                            "level": "federal",
                            "office": "string",
                            "name": "string",
                            "district": "string",
                            "party": "string",
                            "partyName": "string",
                            "email": "string",
                            "phone": "string",
                            "phoneLabel": "string",
                            "officeAddress": "string",
                            "profile": "string",
                            "photo": "string",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "license": "string",
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "firstSeen": "string",
                            "note": "string",
                            "noteSource": "string",
                            "since": "2026-01-01T00:00:00Z",
                            "ridingNote": "string",
                            "rd": false,
                            "role": "string",
                            "fallback": false
                          }
                        ],
                        "council": [
                          {
                            "id": "string",
                            "level": "federal",
                            "office": "string",
                            "name": "string",
                            "district": "string",
                            "party": "string",
                            "partyName": "string",
                            "email": "string",
                            "phone": "string",
                            "phoneLabel": "string",
                            "officeAddress": "string",
                            "profile": "string",
                            "photo": "string",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "license": "string",
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "firstSeen": "string",
                            "note": "string",
                            "noteSource": "string",
                            "since": "2026-01-01T00:00:00Z",
                            "ridingNote": "string",
                            "rd": false,
                            "role": "string",
                            "fallback": false
                          }
                        ],
                        "elections": [
                          {}
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/civic",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/civic/representatives": {
      "get": {
        "operationId": "get-civic-representatives",
        "tags": [
          "Civic"
        ],
        "summary": "Who represents Prince George: MPs, MLAs, mayor and council, regional government and First Nations councils",
        "description": "MPs and MLAs come from the Represent API, mayor and council from the City’s council page, refreshed every 6 hours. Each member carries its own `source`, `sourceUrl`, `license` and `fetchedAt`; `fallback: true` marks our researched copy, used until the first refresh. The regional government and First Nations councils are editorial (no machine-readable source).\n\nExample: `/api/v1/civic/representatives`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "lheidliTenneh": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "federal": {
                              "type": "object",
                              "properties": {
                                "members": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "portrait": {
                                        "$ref": "#/components/schemas/JsonValue"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "level": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "federal"
                                          },
                                          {
                                            "type": "string",
                                            "const": "municipal"
                                          },
                                          {
                                            "type": "string",
                                            "const": "provincial"
                                          }
                                        ]
                                      },
                                      "office": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "district": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "party": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "partyName": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "email": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phoneLabel": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "officeAddress": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "profile": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "photo": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "source": {
                                        "type": "string"
                                      },
                                      "sourceUrl": {
                                        "type": "string"
                                      },
                                      "license": {
                                        "type": "string"
                                      },
                                      "fetchedAt": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "firstSeen": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "note": {
                                        "type": "string",
                                        "description": "Editorial context from civic.json (riding note, member note with its source, since)."
                                      },
                                      "noteSource": {
                                        "type": "string"
                                      },
                                      "since": {
                                        "type": "string"
                                      },
                                      "ridingNote": {
                                        "type": "string"
                                      },
                                      "rd": {
                                        "type": "boolean"
                                      },
                                      "role": {
                                        "type": "string"
                                      },
                                      "fallback": {
                                        "type": "boolean",
                                        "description": "True when this comes from the researched list in civic.json because the database has nothing yet."
                                      }
                                    },
                                    "required": [
                                      "portrait",
                                      "id",
                                      "level",
                                      "office",
                                      "name",
                                      "district",
                                      "party",
                                      "partyName",
                                      "email",
                                      "phone",
                                      "phoneLabel",
                                      "officeAddress",
                                      "profile",
                                      "photo",
                                      "source",
                                      "sourceUrl",
                                      "license",
                                      "fetchedAt",
                                      "firstSeen"
                                    ]
                                  }
                                },
                                "source": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "source"
                              ]
                            },
                            "provincial": {
                              "type": "object",
                              "properties": {
                                "members": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "portrait": {
                                        "$ref": "#/components/schemas/JsonValue"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "level": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "federal"
                                          },
                                          {
                                            "type": "string",
                                            "const": "municipal"
                                          },
                                          {
                                            "type": "string",
                                            "const": "provincial"
                                          }
                                        ]
                                      },
                                      "office": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "district": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "party": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "partyName": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "email": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phoneLabel": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "officeAddress": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "profile": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "photo": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "source": {
                                        "type": "string"
                                      },
                                      "sourceUrl": {
                                        "type": "string"
                                      },
                                      "license": {
                                        "type": "string"
                                      },
                                      "fetchedAt": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "firstSeen": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "note": {
                                        "type": "string",
                                        "description": "Editorial context from civic.json (riding note, member note with its source, since)."
                                      },
                                      "noteSource": {
                                        "type": "string"
                                      },
                                      "since": {
                                        "type": "string"
                                      },
                                      "ridingNote": {
                                        "type": "string"
                                      },
                                      "rd": {
                                        "type": "boolean"
                                      },
                                      "role": {
                                        "type": "string"
                                      },
                                      "fallback": {
                                        "type": "boolean",
                                        "description": "True when this comes from the researched list in civic.json because the database has nothing yet."
                                      }
                                    },
                                    "required": [
                                      "portrait",
                                      "id",
                                      "level",
                                      "office",
                                      "name",
                                      "district",
                                      "party",
                                      "partyName",
                                      "email",
                                      "phone",
                                      "phoneLabel",
                                      "officeAddress",
                                      "profile",
                                      "photo",
                                      "source",
                                      "sourceUrl",
                                      "license",
                                      "fetchedAt",
                                      "firstSeen"
                                    ]
                                  }
                                },
                                "source": {
                                  "$ref": "#/components/schemas/JsonValue"
                                }
                              },
                              "required": [
                                "source"
                              ]
                            },
                            "city": {
                              "type": "object",
                              "properties": {
                                "members": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "portrait": {
                                        "$ref": "#/components/schemas/JsonValue"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "level": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "federal"
                                          },
                                          {
                                            "type": "string",
                                            "const": "municipal"
                                          },
                                          {
                                            "type": "string",
                                            "const": "provincial"
                                          }
                                        ]
                                      },
                                      "office": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "district": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "party": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "partyName": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "email": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phoneLabel": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "officeAddress": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "profile": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "photo": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "source": {
                                        "type": "string"
                                      },
                                      "sourceUrl": {
                                        "type": "string"
                                      },
                                      "license": {
                                        "type": "string"
                                      },
                                      "fetchedAt": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "firstSeen": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "note": {
                                        "type": "string",
                                        "description": "Editorial context from civic.json (riding note, member note with its source, since)."
                                      },
                                      "noteSource": {
                                        "type": "string"
                                      },
                                      "since": {
                                        "type": "string"
                                      },
                                      "ridingNote": {
                                        "type": "string"
                                      },
                                      "rd": {
                                        "type": "boolean"
                                      },
                                      "role": {
                                        "type": "string"
                                      },
                                      "fallback": {
                                        "type": "boolean",
                                        "description": "True when this comes from the researched list in civic.json because the database has nothing yet."
                                      }
                                    },
                                    "required": [
                                      "portrait",
                                      "id",
                                      "level",
                                      "office",
                                      "name",
                                      "district",
                                      "party",
                                      "partyName",
                                      "email",
                                      "phone",
                                      "phoneLabel",
                                      "officeAddress",
                                      "profile",
                                      "photo",
                                      "source",
                                      "sourceUrl",
                                      "license",
                                      "fetchedAt",
                                      "firstSeen"
                                    ]
                                  }
                                },
                                "source": {
                                  "$ref": "#/components/schemas/JsonValue"
                                }
                              },
                              "required": [
                                "source"
                              ]
                            },
                            "regionalDistrict": {
                              "type": "object",
                              "properties": {
                                "members": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "source": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "editorial": {
                                  "type": "boolean"
                                },
                                "asOf": {
                                  "$ref": "#/components/schemas/JsonValue"
                                }
                              },
                              "required": [
                                "members",
                                "source",
                                "editorial",
                                "asOf"
                              ]
                            },
                            "firstNations": {
                              "$ref": "#/components/schemas/JsonValue"
                            }
                          },
                          "required": [
                            "federal",
                            "provincial",
                            "city",
                            "regionalDistrict",
                            "firstNations"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "lheidliTenneh": null,
                        "federal": {
                          "members": [
                            {
                              "portrait": null,
                              "id": "string",
                              "level": "federal",
                              "office": "string",
                              "name": "string",
                              "district": "string",
                              "party": "string",
                              "partyName": "string",
                              "email": "string",
                              "phone": "string",
                              "phoneLabel": "string",
                              "officeAddress": "string",
                              "profile": "string",
                              "photo": "string",
                              "source": "string",
                              "sourceUrl": "https://example.org/",
                              "license": "string",
                              "fetchedAt": "2026-01-01T00:00:00Z",
                              "firstSeen": "string",
                              "note": "string",
                              "noteSource": "string",
                              "since": "2026-01-01T00:00:00Z",
                              "ridingNote": "string",
                              "rd": false,
                              "role": "string",
                              "fallback": false
                            }
                          ],
                          "source": "string"
                        },
                        "provincial": {
                          "members": [
                            {
                              "portrait": null,
                              "id": "string",
                              "level": "federal",
                              "office": "string",
                              "name": "string",
                              "district": "string",
                              "party": "string",
                              "partyName": "string",
                              "email": "string",
                              "phone": "string",
                              "phoneLabel": "string",
                              "officeAddress": "string",
                              "profile": "string",
                              "photo": "string",
                              "source": "string",
                              "sourceUrl": "https://example.org/",
                              "license": "string",
                              "fetchedAt": "2026-01-01T00:00:00Z",
                              "firstSeen": "string",
                              "note": "string",
                              "noteSource": "string",
                              "since": "2026-01-01T00:00:00Z",
                              "ridingNote": "string",
                              "rd": false,
                              "role": "string",
                              "fallback": false
                            }
                          ],
                          "source": null
                        },
                        "city": {
                          "members": [
                            {
                              "portrait": null,
                              "id": "string",
                              "level": "federal",
                              "office": "string",
                              "name": "string",
                              "district": "string",
                              "party": "string",
                              "partyName": "string",
                              "email": "string",
                              "phone": "string",
                              "phoneLabel": "string",
                              "officeAddress": "string",
                              "profile": "string",
                              "photo": "string",
                              "source": "string",
                              "sourceUrl": "https://example.org/",
                              "license": "string",
                              "fetchedAt": "2026-01-01T00:00:00Z",
                              "firstSeen": "string",
                              "note": "string",
                              "noteSource": "string",
                              "since": "2026-01-01T00:00:00Z",
                              "ridingNote": "string",
                              "rd": false,
                              "role": "string",
                              "fallback": false
                            }
                          ],
                          "source": null
                        },
                        "regionalDistrict": {
                          "members": null,
                          "source": null,
                          "editorial": false,
                          "asOf": null
                        },
                        "firstNations": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/civic/representatives",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/civic/officials": {
      "get": {
        "operationId": "get-civic-officials",
        "tags": [
          "Civic"
        ],
        "summary": "Current MPs, MLAs, mayor and councillors as a flat list",
        "description": "Example: `/api/v1/civic/officials`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "level",
            "in": "query",
            "required": false,
            "description": "Only one level.",
            "schema": {
              "type": "string",
              "enum": [
                "federal",
                "provincial",
                "municipal"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Name or district contains.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "portrait": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "id": {
                                "type": "string"
                              },
                              "level": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "federal"
                                  },
                                  {
                                    "type": "string",
                                    "const": "municipal"
                                  },
                                  {
                                    "type": "string",
                                    "const": "provincial"
                                  }
                                ]
                              },
                              "office": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "district": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "party": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "partyName": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "email": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phoneLabel": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "officeAddress": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "profile": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "photo": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceUrl": {
                                "type": "string"
                              },
                              "license": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "firstSeen": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "note": {
                                "type": "string",
                                "description": "Editorial context from civic.json (riding note, member note with its source, since)."
                              },
                              "noteSource": {
                                "type": "string"
                              },
                              "since": {
                                "type": "string"
                              },
                              "ridingNote": {
                                "type": "string"
                              },
                              "rd": {
                                "type": "boolean"
                              },
                              "role": {
                                "type": "string"
                              },
                              "fallback": {
                                "type": "boolean",
                                "description": "True when this comes from the researched list in civic.json because the database has nothing yet."
                              }
                            },
                            "required": [
                              "portrait",
                              "id",
                              "level",
                              "office",
                              "name",
                              "district",
                              "party",
                              "partyName",
                              "email",
                              "phone",
                              "phoneLabel",
                              "officeAddress",
                              "profile",
                              "photo",
                              "source",
                              "sourceUrl",
                              "license",
                              "fetchedAt",
                              "firstSeen"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "portrait": null,
                          "id": "string",
                          "level": "federal",
                          "office": "string",
                          "name": "string",
                          "district": "string",
                          "party": "string",
                          "partyName": "string",
                          "email": "string",
                          "phone": "string",
                          "phoneLabel": "string",
                          "officeAddress": "string",
                          "profile": "string",
                          "photo": "string",
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "license": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "firstSeen": "string",
                          "note": "string",
                          "noteSource": "string",
                          "since": "2026-01-01T00:00:00Z",
                          "ridingNote": "string",
                          "rd": false,
                          "role": "string",
                          "fallback": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/civic/officials",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/civic/meetings": {
      "get": {
        "operationId": "get-civic-meetings",
        "tags": [
          "Civic"
        ],
        "summary": "City council and committee meetings with links to agendas, minutes and video",
        "description": "From the City of Prince George eSCRIBE meeting portal, refreshed every 6 hours: about 90 days back and 6 months ahead. `start`/`end` are local times (America/Vancouver) without an offset. Agendas, minutes and decisions are linked, not copied. `when=upcoming` is soonest first; otherwise newest first.\n\nExample: `/api/v1/civic/meetings`\n\nCache: 900s.",
        "parameters": [
          {
            "name": "when",
            "in": "query",
            "required": false,
            "description": "upcoming, past or all (default).",
            "schema": {
              "type": "string",
              "enum": [
                "upcoming",
                "past",
                "all"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start date (YYYY-MM-DD), inclusive.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-09-01"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End date (YYYY-MM-DD), inclusive.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Meeting type contains, e.g. \"council\" or \"committee\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Title or location contains.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "type": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "start": {
                                "type": "string"
                              },
                              "end": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "location": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "status": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "agendaUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "minutesUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "videoUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "documents": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "title": {
                                      "type": "string"
                                    },
                                    "type": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "format": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "title",
                                    "type",
                                    "format",
                                    "url"
                                  ]
                                }
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceUrl": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "type",
                              "start",
                              "end",
                              "location",
                              "status",
                              "url",
                              "agendaUrl",
                              "minutesUrl",
                              "videoUrl",
                              "documents",
                              "source",
                              "sourceUrl",
                              "fetchedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "title": "string",
                          "type": "string",
                          "start": "2026-01-01T00:00:00Z",
                          "end": "2026-01-01T00:00:00Z",
                          "location": "string",
                          "status": "string",
                          "url": "https://example.org/",
                          "agendaUrl": "https://example.org/",
                          "minutesUrl": "https://example.org/",
                          "videoUrl": "https://example.org/",
                          "documents": [
                            {
                              "title": "string",
                              "type": "string",
                              "format": "string",
                              "url": "https://example.org/"
                            }
                          ],
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/civic/meetings",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/civic/elections": {
      "get": {
        "operationId": "get-civic-elections",
        "tags": [
          "Civic"
        ],
        "summary": "Upcoming and recent elections affecting Prince George",
        "description": "Example: `/api/v1/civic/elections`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "additionalProperties": {
                              "$ref": "#/components/schemas/JsonValue"
                            }
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {}
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/civic/elections",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/civic/results": {
      "get": {
        "operationId": "get-civic-results",
        "tags": [
          "Civic"
        ],
        "summary": "Election results: BC ridings since 2013, federal ridings since 2015, City mayor and council since 2014",
        "description": "Example: `/api/v1/civic/results`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "level",
            "in": "query",
            "required": false,
            "description": "Only one level.",
            "schema": {
              "type": "string",
              "enum": [
                "provincial",
                "federal",
                "municipal"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "provincial": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": {
                                        "$ref": "#/components/schemas/JsonValue"
                                      }
                                    }
                                  ]
                                },
                                "federal": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": {
                                        "$ref": "#/components/schemas/JsonValue"
                                      }
                                    }
                                  ]
                                },
                                "municipal": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "additionalProperties": {
                                        "$ref": "#/components/schemas/JsonValue"
                                      }
                                    }
                                  ]
                                }
                              },
                              "additionalProperties": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "object",
                                    "additionalProperties": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  {
                                    "type": "string"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "provincial": {},
                        "federal": {},
                        "municipal": {}
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/civic/results",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/civic/results/candidates": {
      "get": {
        "operationId": "get-civic-results-candidates",
        "tags": [
          "Civic"
        ],
        "summary": "Every candidate result as a flat, filterable list (one row per candidate per race)",
        "description": "Example: `/api/v1/civic/results/candidates`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "level",
            "in": "query",
            "required": false,
            "description": "provincial, federal or municipal.",
            "schema": {
              "type": "string",
              "enum": [
                "provincial",
                "federal",
                "municipal"
              ]
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Election year.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "district",
            "in": "query",
            "required": false,
            "description": "Riding id (see the `district` field of /civic/results; `city` for the municipal election) or exact name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "candidate",
            "in": "query",
            "required": false,
            "description": "Candidate name contains.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "elected",
            "in": "query",
            "required": false,
            "description": "Only winners (true) or only the others (false).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "level": {
                                "type": "string"
                              },
                              "year": {
                                "type": "number"
                              },
                              "office": {
                                "type": "string"
                              },
                              "district": {
                                "type": "string"
                              },
                              "districtId": {
                                "type": "string"
                              },
                              "candidate": {
                                "type": "string"
                              },
                              "party": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "partyName": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "votes": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "pct": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "elected": {
                                "type": "boolean"
                              },
                              "turnout": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "source": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "level",
                              "year",
                              "office",
                              "district",
                              "districtId",
                              "candidate",
                              "party",
                              "partyName",
                              "votes",
                              "pct",
                              "elected",
                              "turnout",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "level": "string",
                          "year": 0,
                          "office": "string",
                          "district": "string",
                          "districtId": "string",
                          "candidate": "2026-01-01T00:00:00Z",
                          "party": "string",
                          "partyName": "string",
                          "votes": 0,
                          "pct": 0,
                          "elected": false,
                          "turnout": 0,
                          "source": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/civic/results/candidates",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/home": {
      "get": {
        "operationId": "get-home",
        "tags": [
          "Live conditions"
        ],
        "summary": "The home page board: Prince George right now in one plain-language sentence, with the figures behind it",
        "description": "Weather (now, next 24 hours, 7 days), air, river gauges, wildfire, power outages, nearby road events, aurora, sun and today’s climate records, as the home page shows them. Each part is null when its module is off or its source is unavailable. `sentence` is the same summary the home page prints. Raw sources: `/now` and the individual live endpoints.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/home`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "weather": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "icon": {
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "today": {
                                      "type": "object",
                                      "properties": {
                                        "observedHigh": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "observedLow": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "observedPrecipMm": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "mode": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string",
                                              "const": "day"
                                            },
                                            {
                                              "type": "string",
                                              "const": "night"
                                            }
                                          ],
                                          "description": "'day' while ECCC's first period is today; 'night' once it is tonight."
                                        },
                                        "forecastHigh": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "tonightLow": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "tomorrowHigh": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "tomorrowName": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "high": {
                                          "type": [
                                            "null",
                                            "number"
                                          ],
                                          "description": "Best single high/low for today: observed extremes so far, with ECCC's daytime high while the day is still ahead."
                                        },
                                        "low": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "observedHigh",
                                        "observedLow",
                                        "observedPrecipMm",
                                        "mode",
                                        "forecastHigh",
                                        "tonightLow",
                                        "tomorrowHigh",
                                        "tomorrowName",
                                        "high",
                                        "low"
                                      ]
                                    },
                                    "high": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "low": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "normals": {
                                      "type": "object",
                                      "properties": {
                                        "high": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "low": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "high",
                                        "low"
                                      ]
                                    },
                                    "daily": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "icon": {
                                            "type": "string"
                                          },
                                          "label": {
                                            "type": "string"
                                          },
                                          "date": {
                                            "type": "string"
                                          },
                                          "max": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "min": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "pop": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "by": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "const": "eccc"
                                              },
                                              {
                                                "type": "string",
                                                "const": "model"
                                              }
                                            ]
                                          },
                                          "code": {
                                            "type": "number"
                                          },
                                          "precip": {
                                            "type": "number"
                                          },
                                          "snow": {
                                            "type": "number"
                                          },
                                          "wind": {
                                            "type": "number"
                                          },
                                          "gust": {
                                            "type": "number"
                                          },
                                          "dir": {
                                            "type": "number"
                                          },
                                          "uv": {
                                            "type": "number"
                                          },
                                          "sunshineH": {
                                            "type": "number"
                                          },
                                          "daylightH": {
                                            "type": "number"
                                          },
                                          "sunrise": {
                                            "type": "string"
                                          },
                                          "sunset": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "icon",
                                          "label",
                                          "date",
                                          "max",
                                          "min",
                                          "pop",
                                          "by"
                                        ]
                                      }
                                    },
                                    "hourly": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "t": {
                                            "type": "string"
                                          },
                                          "temp": {
                                            "type": "number"
                                          },
                                          "pop": {
                                            "type": "number"
                                          },
                                          "code": {
                                            "type": "number"
                                          },
                                          "isDay": {
                                            "type": "number"
                                          },
                                          "icon": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "t",
                                          "temp",
                                          "pop",
                                          "code",
                                          "isDay"
                                        ]
                                      }
                                    },
                                    "hourlySource": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "string",
                                          "const": "eccc"
                                        },
                                        {
                                          "type": "string",
                                          "const": "model"
                                        }
                                      ]
                                    },
                                    "text": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string"
                                            },
                                            "summary": {
                                              "type": "string"
                                            }
                                          },
                                          "required": [
                                            "name",
                                            "summary"
                                          ]
                                        }
                                      ]
                                    },
                                    "alerts": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "title": {
                                            "type": "string"
                                          },
                                          "type": {
                                            "type": "string"
                                          },
                                          "text": {
                                            "type": "string"
                                          },
                                          "issued": {
                                            "type": "string"
                                          },
                                          "expires": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "title",
                                          "type",
                                          "text",
                                          "issued",
                                          "expires"
                                        ]
                                      }
                                    },
                                    "temp": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "feelsLike": {
                                      "type": [
                                        "null",
                                        "number"
                                      ],
                                      "description": "The wind chill (at or below 0 °C with wind of 5 km/h or more) or humidex (20 °C or warmer, humidex 25 or more); otherwise the air temperature."
                                    },
                                    "feelsKind": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "string",
                                          "const": "humidex"
                                        },
                                        {
                                          "type": "string",
                                          "const": "wind chill"
                                        }
                                      ],
                                      "description": "Which index `feelsLike` is: 'wind chill', 'humidex', or null when it is just the air temperature."
                                    },
                                    "humidity": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "dewpoint": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "code": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "isDay": {
                                      "type": "boolean"
                                    },
                                    "condition": {
                                      "type": "string"
                                    },
                                    "windKmh": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "windDir": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "gustKmh": {
                                      "type": [
                                        "null",
                                        "number"
                                      ],
                                      "description": "Observed gust only (city page XML or the airport METAR); null when no gust was reported."
                                    },
                                    "gustSource": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "string",
                                          "const": "ECCC"
                                        },
                                        {
                                          "type": "string",
                                          "const": "METAR"
                                        }
                                      ]
                                    },
                                    "modelGustKmh": {
                                      "type": [
                                        "null",
                                        "number"
                                      ],
                                      "description": "Open-Meteo's gust for the current hour: a forecast, never an observation."
                                    },
                                    "pressureKpa": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "pressureTrend": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "string",
                                          "const": "falling"
                                        },
                                        {
                                          "type": "string",
                                          "const": "rising"
                                        },
                                        {
                                          "type": "string",
                                          "const": "steady"
                                        }
                                      ]
                                    },
                                    "pressureChangeKpa": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "visibilityKm": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "fog": {
                                      "type": "boolean",
                                      "description": "Visibility under 1 km or fog reported by the airport."
                                    },
                                    "presentWeather": {
                                      "type": [
                                        "null",
                                        "string"
                                      ],
                                      "description": "Present weather from the airport METAR in plain words (\"fog\", \"light snow\"), when reported."
                                    },
                                    "uv": {
                                      "type": [
                                        "null",
                                        "number"
                                      ],
                                      "description": "Model UV index for the current hour."
                                    },
                                    "cloud": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "observedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "station": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "icon",
                                    "label",
                                    "today",
                                    "high",
                                    "low",
                                    "normals",
                                    "daily",
                                    "hourly",
                                    "hourlySource",
                                    "text",
                                    "alerts",
                                    "temp",
                                    "feelsLike",
                                    "feelsKind",
                                    "humidity",
                                    "dewpoint",
                                    "code",
                                    "isDay",
                                    "condition",
                                    "windKmh",
                                    "windDir",
                                    "gustKmh",
                                    "gustSource",
                                    "modelGustKmh",
                                    "pressureKpa",
                                    "pressureTrend",
                                    "pressureChangeKpa",
                                    "visibilityKm",
                                    "fog",
                                    "presentWeather",
                                    "uv",
                                    "cloud",
                                    "observedAt",
                                    "station"
                                  ]
                                }
                              ]
                            },
                            "air": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "history": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    },
                                    "forecast": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    },
                                    "observedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "forecastMax": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    },
                                    "now": {
                                      "type": "object",
                                      "properties": {
                                        "value": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "kind": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "forecast"
                                            },
                                            {
                                              "type": "string",
                                              "const": "observed"
                                            },
                                            {
                                              "type": "string",
                                              "const": "old"
                                            }
                                          ]
                                        },
                                        "observedAt": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "ageH": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "value",
                                        "kind",
                                        "observedAt",
                                        "ageH"
                                      ]
                                    },
                                    "aqhi": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "risk": {
                                      "type": "object",
                                      "properties": {
                                        "label": {
                                          "type": "string"
                                        },
                                        "level": {
                                          "anyOf": [
                                            {
                                              "type": "number",
                                              "const": 0
                                            },
                                            {
                                              "type": "number",
                                              "const": 1
                                            },
                                            {
                                              "type": "number",
                                              "const": 2
                                            },
                                            {
                                              "type": "number",
                                              "const": 3
                                            },
                                            {
                                              "type": "number",
                                              "const": 4
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "label",
                                        "level"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "history",
                                    "forecast",
                                    "observedAt",
                                    "forecastMax",
                                    "now",
                                    "aqhi",
                                    "risk"
                                  ]
                                }
                              ]
                            },
                            "river": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "label": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "level": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "value": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "change24h": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "direction": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string",
                                              "const": "falling"
                                            },
                                            {
                                              "type": "string",
                                              "const": "rising"
                                            },
                                            {
                                              "type": "string",
                                              "const": "steady"
                                            }
                                          ]
                                        },
                                        "t": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "stats": {
                                          "anyOf": [
                                            {
                                              "type": "array",
                                              "items": {
                                                "type": "number"
                                              }
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ]
                                        },
                                        "record": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        },
                                        "spark": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "pct": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "name",
                                        "value",
                                        "change24h",
                                        "direction",
                                        "t",
                                        "stats",
                                        "record",
                                        "spark",
                                        "pct"
                                      ]
                                    }
                                  ]
                                },
                                "flows": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "label": {
                                        "type": "string"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "value": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "change24h": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "direction": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "string",
                                            "const": "falling"
                                          },
                                          {
                                            "type": "string",
                                            "const": "rising"
                                          },
                                          {
                                            "type": "string",
                                            "const": "steady"
                                          }
                                        ]
                                      },
                                      "t": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "stats": {
                                        "anyOf": [
                                          {
                                            "type": "array",
                                            "items": {
                                              "type": "number"
                                            }
                                          },
                                          {
                                            "type": "null"
                                          }
                                        ]
                                      },
                                      "record": {
                                        "$ref": "#/components/schemas/JsonValue"
                                      },
                                      "spark": {
                                        "type": "array",
                                        "items": {
                                          "type": "number"
                                        }
                                      },
                                      "pct": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "label",
                                      "id",
                                      "name",
                                      "value",
                                      "change24h",
                                      "direction",
                                      "t",
                                      "stats",
                                      "record",
                                      "spark",
                                      "pct"
                                    ]
                                  }
                                },
                                "fraserLevel": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "value": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "change24h": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "direction": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "string",
                                              "const": "falling"
                                            },
                                            {
                                              "type": "string",
                                              "const": "rising"
                                            },
                                            {
                                              "type": "string",
                                              "const": "steady"
                                            }
                                          ]
                                        },
                                        "t": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "stats": {
                                          "anyOf": [
                                            {
                                              "type": "array",
                                              "items": {
                                                "type": "number"
                                              }
                                            },
                                            {
                                              "type": "null"
                                            }
                                          ]
                                        },
                                        "record": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        },
                                        "spark": {
                                          "type": "array",
                                          "items": {
                                            "type": "number"
                                          }
                                        },
                                        "pct": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "name",
                                        "value",
                                        "change24h",
                                        "direction",
                                        "t",
                                        "stats",
                                        "record",
                                        "spark",
                                        "pct"
                                      ]
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "name",
                                "label",
                                "level",
                                "flows",
                                "fraserLevel"
                              ]
                            },
                            "fire": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "active": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string"
                                          },
                                          "name": {
                                            "type": "string"
                                          },
                                          "status": {
                                            "type": "string"
                                          },
                                          "cause": {
                                            "type": "string"
                                          },
                                          "sizeHa": {
                                            "type": "number"
                                          },
                                          "discovered": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "out": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "lat": {
                                            "type": "number"
                                          },
                                          "lng": {
                                            "type": "number"
                                          },
                                          "location": {
                                            "type": "string"
                                          },
                                          "url": {
                                            "type": "string"
                                          },
                                          "ofNote": {
                                            "type": "boolean"
                                          },
                                          "distanceKm": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "id",
                                          "name",
                                          "status",
                                          "cause",
                                          "sizeHa",
                                          "discovered",
                                          "out",
                                          "lat",
                                          "lng",
                                          "location",
                                          "url",
                                          "ofNote",
                                          "distanceKm"
                                        ]
                                      }
                                    },
                                    "season": {
                                      "type": "object",
                                      "properties": {
                                        "year": {
                                          "type": "number"
                                        },
                                        "total": {
                                          "type": "number"
                                        },
                                        "out": {
                                          "type": "number"
                                        },
                                        "active": {
                                          "type": "number"
                                        },
                                        "totalHa": {
                                          "type": "number"
                                        },
                                        "byCause": {
                                          "type": "object",
                                          "additionalProperties": {
                                            "type": "number"
                                          }
                                        },
                                        "byStatus": {
                                          "type": "object",
                                          "additionalProperties": {
                                            "type": "number"
                                          }
                                        },
                                        "byMonth": {
                                          "type": "object",
                                          "additionalProperties": {
                                            "type": "number"
                                          }
                                        },
                                        "largest": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "object",
                                              "properties": {
                                                "id": {
                                                  "type": "string"
                                                },
                                                "name": {
                                                  "type": "string"
                                                },
                                                "status": {
                                                  "type": "string"
                                                },
                                                "cause": {
                                                  "type": "string"
                                                },
                                                "sizeHa": {
                                                  "type": "number"
                                                },
                                                "discovered": {
                                                  "type": [
                                                    "null",
                                                    "string"
                                                  ]
                                                },
                                                "out": {
                                                  "type": [
                                                    "null",
                                                    "string"
                                                  ]
                                                },
                                                "lat": {
                                                  "type": "number"
                                                },
                                                "lng": {
                                                  "type": "number"
                                                },
                                                "location": {
                                                  "type": "string"
                                                },
                                                "url": {
                                                  "type": "string"
                                                },
                                                "ofNote": {
                                                  "type": "boolean"
                                                },
                                                "distanceKm": {
                                                  "type": "number"
                                                }
                                              },
                                              "required": [
                                                "id",
                                                "name",
                                                "status",
                                                "cause",
                                                "sizeHa",
                                                "discovered",
                                                "out",
                                                "lat",
                                                "lng",
                                                "location",
                                                "url",
                                                "ofNote",
                                                "distanceKm"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "year",
                                        "total",
                                        "out",
                                        "active",
                                        "totalHa",
                                        "byCause",
                                        "byStatus",
                                        "byMonth",
                                        "largest"
                                      ]
                                    },
                                    "danger": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "evacuations": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "event": {
                                            "type": "string"
                                          },
                                          "type": {
                                            "type": "string"
                                          },
                                          "area": {
                                            "type": "string"
                                          },
                                          "status": {
                                            "type": "string"
                                          },
                                          "agency": {
                                            "type": "string"
                                          },
                                          "homes": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "people": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "modified": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "lat": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "lng": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "distanceKm": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "event",
                                          "type",
                                          "area",
                                          "status",
                                          "agency",
                                          "homes",
                                          "people",
                                          "modified",
                                          "lat",
                                          "lng",
                                          "distanceKm"
                                        ]
                                      }
                                    },
                                    "bans": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    }
                                  },
                                  "required": [
                                    "active",
                                    "season",
                                    "danger",
                                    "evacuations",
                                    "bans"
                                  ]
                                }
                              ]
                            },
                            "outages": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "nearby": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "number"
                                          },
                                          "municipality": {
                                            "type": "string"
                                          },
                                          "area": {
                                            "type": "string"
                                          },
                                          "cause": {
                                            "type": "string"
                                          },
                                          "customers": {
                                            "type": "number"
                                          },
                                          "status": {
                                            "type": "string"
                                          },
                                          "off": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "eta": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "etr": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "updated": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "lat": {
                                            "type": "number"
                                          },
                                          "lng": {
                                            "type": "number"
                                          },
                                          "distanceKm": {
                                            "type": "number"
                                          },
                                          "polygon": {
                                            "anyOf": [
                                              {
                                                "type": "array",
                                                "items": {
                                                  "type": "array",
                                                  "prefixItems": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number"
                                                    }
                                                  ],
                                                  "minItems": 2,
                                                  "maxItems": 2
                                                }
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          }
                                        },
                                        "required": [
                                          "id",
                                          "municipality",
                                          "area",
                                          "cause",
                                          "customers",
                                          "status",
                                          "off",
                                          "eta",
                                          "etr",
                                          "updated",
                                          "lat",
                                          "lng",
                                          "distanceKm",
                                          "polygon"
                                        ]
                                      }
                                    },
                                    "customers": {
                                      "type": "number"
                                    },
                                    "radiusKm": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "nearby",
                                    "customers",
                                    "radiusKm"
                                  ]
                                }
                              ]
                            },
                            "roads": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "total": {
                                      "type": "number"
                                    },
                                    "near": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string"
                                          },
                                          "headline": {
                                            "type": "string"
                                          },
                                          "summary": {
                                            "type": "string"
                                          },
                                          "type": {
                                            "type": "string"
                                          },
                                          "subtypes": {
                                            "type": "array",
                                            "items": {
                                              "type": "string"
                                            }
                                          },
                                          "severity": {
                                            "type": "string"
                                          },
                                          "description": {
                                            "type": "string"
                                          },
                                          "roads": {
                                            "type": "array",
                                            "items": {
                                              "type": "string"
                                            }
                                          },
                                          "updated": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "lat": {
                                            "type": "number"
                                          },
                                          "lng": {
                                            "type": "number"
                                          },
                                          "distanceKm": {
                                            "type": "number"
                                          },
                                          "line": {
                                            "anyOf": [
                                              {
                                                "type": "array",
                                                "items": {
                                                  "type": "array",
                                                  "prefixItems": [
                                                    {
                                                      "type": "number"
                                                    },
                                                    {
                                                      "type": "number"
                                                    }
                                                  ],
                                                  "minItems": 2,
                                                  "maxItems": 2
                                                }
                                              },
                                              {
                                                "type": "null"
                                              }
                                            ]
                                          }
                                        },
                                        "required": [
                                          "id",
                                          "headline",
                                          "summary",
                                          "type",
                                          "subtypes",
                                          "severity",
                                          "description",
                                          "roads",
                                          "updated",
                                          "lat",
                                          "lng",
                                          "distanceKm",
                                          "line"
                                        ]
                                      }
                                    },
                                    "nearCount": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "total",
                                    "near",
                                    "nearCount"
                                  ]
                                }
                              ]
                            },
                            "aurora": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "kp": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "max24": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "tonight": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "kp",
                                    "max24",
                                    "tonight"
                                  ]
                                }
                              ]
                            },
                            "sun": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "sunrise": {
                                      "type": "string"
                                    },
                                    "sunset": {
                                      "type": "string"
                                    },
                                    "daylightH": {
                                      "type": "number"
                                    },
                                    "tomorrowH": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "t": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "sunrise",
                                    "sunset",
                                    "daylightH",
                                    "tomorrowH",
                                    "t"
                                  ]
                                }
                              ]
                            },
                            "record": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "trends": {
                              "type": "object",
                              "properties": {
                                "temp48h": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "number"
                                      },
                                      "v": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "v"
                                    ]
                                  }
                                },
                                "level7d": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "number"
                                      },
                                      "v": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "v"
                                    ]
                                  }
                                },
                                "outages7d": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "number"
                                      },
                                      "v": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "v"
                                    ]
                                  }
                                },
                                "aqhi48h": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "t": {
                                        "type": "number"
                                      },
                                      "v": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "t",
                                      "v"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "temp48h",
                                "level7d",
                                "outages7d",
                                "aqhi48h"
                              ]
                            },
                            "at": {
                              "type": "string"
                            },
                            "localDate": {
                              "type": "string"
                            },
                            "localTime": {
                              "type": "string"
                            },
                            "weekday": {
                              "type": "string"
                            },
                            "sentence": {
                              "type": "string"
                            },
                            "sentenceParts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "text": {
                                    "type": "string"
                                  },
                                  "href": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "text"
                                ]
                              }
                            }
                          },
                          "required": [
                            "weather",
                            "air",
                            "river",
                            "fire",
                            "outages",
                            "roads",
                            "aurora",
                            "sun",
                            "record",
                            "trends",
                            "at",
                            "localDate",
                            "localTime",
                            "weekday",
                            "sentence",
                            "sentenceParts"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "weather": {
                          "icon": "string",
                          "label": "string",
                          "today": {
                            "observedHigh": 0,
                            "observedLow": 0,
                            "observedPrecipMm": 0,
                            "mode": "day",
                            "forecastHigh": 0,
                            "tonightLow": 0,
                            "tomorrowHigh": 0,
                            "tomorrowName": "string",
                            "high": 0,
                            "low": 0
                          },
                          "high": 0,
                          "low": 0,
                          "normals": {
                            "high": 0,
                            "low": 0
                          },
                          "daily": [
                            {
                              "icon": "string",
                              "label": "string",
                              "date": "2026-01-01T00:00:00Z",
                              "max": 0,
                              "min": 0,
                              "pop": 0,
                              "by": "eccc",
                              "code": 0,
                              "precip": 0,
                              "snow": 0,
                              "wind": 0,
                              "gust": 0,
                              "dir": 0,
                              "uv": 0,
                              "sunshineH": 0,
                              "daylightH": 0,
                              "sunrise": "string",
                              "sunset": "string"
                            }
                          ],
                          "hourly": [
                            {
                              "t": "string",
                              "temp": 0,
                              "pop": 0,
                              "code": 0,
                              "isDay": 0,
                              "icon": "string"
                            }
                          ],
                          "hourlySource": "eccc",
                          "text": {
                            "name": "string",
                            "summary": "string"
                          },
                          "alerts": [
                            {
                              "title": "string",
                              "type": "string",
                              "text": "string",
                              "issued": "2026-01-01T00:00:00Z",
                              "expires": "2026-01-01T00:00:00Z"
                            }
                          ],
                          "temp": 0,
                          "feelsLike": 0,
                          "feelsKind": "humidex",
                          "humidity": 0,
                          "dewpoint": 0,
                          "code": 0,
                          "isDay": false,
                          "condition": "string",
                          "windKmh": 0,
                          "windDir": 0,
                          "gustKmh": 0,
                          "gustSource": "ECCC",
                          "modelGustKmh": 0,
                          "pressureKpa": 0,
                          "pressureTrend": "falling",
                          "pressureChangeKpa": 0,
                          "visibilityKm": 0,
                          "fog": false,
                          "presentWeather": "string",
                          "uv": 0,
                          "cloud": 0,
                          "observedAt": "2026-01-01T00:00:00Z",
                          "station": "string"
                        },
                        "air": {
                          "history": null,
                          "forecast": null,
                          "observedAt": "2026-01-01T00:00:00Z",
                          "forecastMax": null,
                          "now": {
                            "value": 0,
                            "kind": "forecast",
                            "observedAt": "2026-01-01T00:00:00Z",
                            "ageH": 0
                          },
                          "aqhi": 0,
                          "risk": {
                            "label": "string",
                            "level": 0
                          }
                        },
                        "river": {
                          "name": "string",
                          "label": "string",
                          "level": {
                            "id": "string",
                            "name": "string",
                            "value": 0,
                            "change24h": 0,
                            "direction": "falling",
                            "t": "string",
                            "stats": [
                              0
                            ],
                            "record": null,
                            "spark": [
                              0
                            ],
                            "pct": "string"
                          },
                          "flows": [
                            {
                              "label": "string",
                              "id": "string",
                              "name": "string",
                              "value": 0,
                              "change24h": 0,
                              "direction": "falling",
                              "t": "string",
                              "stats": [
                                0
                              ],
                              "record": null,
                              "spark": [
                                0
                              ],
                              "pct": "string"
                            }
                          ],
                          "fraserLevel": {
                            "id": "string",
                            "name": "string",
                            "value": 0,
                            "change24h": 0,
                            "direction": "falling",
                            "t": "string",
                            "stats": [
                              0
                            ],
                            "record": null,
                            "spark": [
                              0
                            ],
                            "pct": "string"
                          }
                        },
                        "fire": {
                          "active": [
                            {
                              "id": "string",
                              "name": "string",
                              "status": "string",
                              "cause": "string",
                              "sizeHa": 0,
                              "discovered": "string",
                              "out": "string",
                              "lat": 0,
                              "lng": 0,
                              "location": "string",
                              "url": "https://example.org/",
                              "ofNote": false,
                              "distanceKm": 0
                            }
                          ],
                          "season": {
                            "year": 0,
                            "total": 0,
                            "out": 0,
                            "active": 0,
                            "totalHa": 0,
                            "byCause": {},
                            "byStatus": {},
                            "byMonth": {},
                            "largest": {
                              "id": "string",
                              "name": "string",
                              "status": "string",
                              "cause": "string",
                              "sizeHa": 0,
                              "discovered": "string",
                              "out": "string",
                              "lat": 0,
                              "lng": 0,
                              "location": "string",
                              "url": "https://example.org/",
                              "ofNote": false,
                              "distanceKm": 0
                            }
                          },
                          "danger": "string",
                          "evacuations": [
                            {
                              "event": "string",
                              "type": "string",
                              "area": "string",
                              "status": "string",
                              "agency": "string",
                              "homes": 0,
                              "people": 0,
                              "modified": "string",
                              "lat": 0,
                              "lng": 0,
                              "distanceKm": 0
                            }
                          ],
                          "bans": null
                        },
                        "outages": {
                          "nearby": [
                            {
                              "id": 0,
                              "municipality": "string",
                              "area": "string",
                              "cause": "string",
                              "customers": 0,
                              "status": "string",
                              "off": "string",
                              "eta": "string",
                              "etr": "string",
                              "updated": "2026-01-01T00:00:00Z",
                              "lat": 0,
                              "lng": 0,
                              "distanceKm": 0,
                              "polygon": [
                                [
                                  0,
                                  0
                                ]
                              ]
                            }
                          ],
                          "customers": 0,
                          "radiusKm": 0
                        },
                        "roads": {
                          "total": 0,
                          "near": [
                            {
                              "id": "string",
                              "headline": "string",
                              "summary": "string",
                              "type": "string",
                              "subtypes": [
                                "string"
                              ],
                              "severity": "string",
                              "description": "string",
                              "roads": [
                                "string"
                              ],
                              "updated": "2026-01-01T00:00:00Z",
                              "lat": 0,
                              "lng": 0,
                              "distanceKm": 0,
                              "line": [
                                [
                                  0,
                                  0
                                ]
                              ]
                            }
                          ],
                          "nearCount": 0
                        },
                        "aurora": {
                          "kp": 0,
                          "max24": 0,
                          "tonight": 0
                        },
                        "sun": {
                          "sunrise": "string",
                          "sunset": "string",
                          "daylightH": 0,
                          "tomorrowH": 0,
                          "t": 0
                        },
                        "record": null,
                        "trends": {
                          "temp48h": [
                            {
                              "t": 0,
                              "v": 0
                            }
                          ],
                          "level7d": [
                            {
                              "t": 0,
                              "v": 0
                            }
                          ],
                          "outages7d": [
                            {
                              "t": 0,
                              "v": 0
                            }
                          ],
                          "aqhi48h": [
                            {
                              "t": 0,
                              "v": 0
                            }
                          ]
                        },
                        "at": "string",
                        "localDate": "2026-01-01T00:00:00Z",
                        "localTime": "2026-01-01T00:00:00Z",
                        "weekday": "string",
                        "sentence": "string",
                        "sentenceParts": [
                          {
                            "text": "string",
                            "href": "https://example.org/"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/home",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/visit": {
      "get": {
        "operationId": "get-visit",
        "tags": [
          "Guides"
        ],
        "summary": "Visit roundups (indoor activities, party venues…) with their place counts",
        "description": "Example: `/api/v1/visit`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "updated": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "groups": {
                                "type": "number"
                              },
                              "places": {
                                "type": "number"
                              },
                              "url": {
                                "type": "string"
                              },
                              "api": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "title",
                              "description",
                              "updated",
                              "groups",
                              "places",
                              "url",
                              "api"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "title": "string",
                          "description": "string",
                          "updated": "2026-01-01T00:00:00Z",
                          "groups": 0,
                          "places": 0,
                          "url": "https://example.org/",
                          "api": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/visit",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/visit/{list}": {
      "get": {
        "operationId": "get-visit-list",
        "tags": [
          "Guides"
        ],
        "summary": "One visit roundup: groups of places with where, what and links, as on the page",
        "description": "Places link to their directory profile (`business`, when listed) or the official site (`url`). Facts come from each venue’s own published information (`sources`). Hours and prices are deliberately not included.\n\nExample: `/api/v1/visit/indoor-activities`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "list",
            "in": "path",
            "required": true,
            "description": "List id from /visit.",
            "schema": {
              "type": "string",
              "examples": [
                "indoor-activities"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "description": {
                              "type": "string"
                            },
                            "updated": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "intro": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "url": {
                              "type": "string"
                            },
                            "groups": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "intro": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "places": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "where": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "text": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "business": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "object",
                                              "properties": {
                                                "slug": {
                                                  "type": "string"
                                                },
                                                "url": {
                                                  "type": "string"
                                                },
                                                "api": {
                                                  "type": "string"
                                                }
                                              },
                                              "required": [
                                                "slug",
                                                "url",
                                                "api"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "where",
                                        "text",
                                        "url",
                                        "business"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "intro",
                                  "places"
                                ]
                              }
                            },
                            "notes": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "title": {
                                      "type": "string"
                                    },
                                    "items": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "required": [
                                    "title",
                                    "items"
                                  ]
                                }
                              ]
                            },
                            "faq": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "q": {
                                    "type": "string"
                                  },
                                  "a": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "q",
                                  "a"
                                ]
                              }
                            },
                            "directoryCategories": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "sources": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "title",
                            "description",
                            "updated",
                            "intro",
                            "url",
                            "groups",
                            "notes",
                            "faq",
                            "directoryCategories",
                            "sources"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "id": "string",
                        "title": "string",
                        "description": "string",
                        "updated": "2026-01-01T00:00:00Z",
                        "intro": "string",
                        "url": "https://example.org/",
                        "groups": [
                          {
                            "id": "string",
                            "title": "string",
                            "intro": "string",
                            "places": [
                              {
                                "name": "string",
                                "where": "string",
                                "text": "string",
                                "url": "https://example.org/",
                                "business": {
                                  "slug": "string",
                                  "url": "https://example.org/",
                                  "api": "https://example.org/"
                                }
                              }
                            ]
                          }
                        ],
                        "notes": {
                          "title": "string",
                          "items": [
                            "string"
                          ]
                        },
                        "faq": [
                          {
                            "q": "string",
                            "a": "string"
                          }
                        ],
                        "directoryCategories": [
                          "string"
                        ],
                        "sources": [
                          "string"
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/visit/{list}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/move": {
      "get": {
        "operationId": "get-move",
        "tags": [
          "People & economy"
        ],
        "summary": "Moving to Prince George: the compiled facts behind the moving guide",
        "description": "Employers, industries, childcare, transit, insurance, schools and health, each section with its own source and as-of date. The guide’s other figures come from their own endpoints: `/census`, `/people`, `/economy`, `/housing`, `/climate/normals`, `/crime/severity`, `/taxes`, `/power/rates`, `/services`.\n\nExample: `/api/v1/move`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "facts": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "related": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "facts",
                            "related"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "facts": null,
                        "related": [
                          "string"
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/move",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/move/newcomers": {
      "get": {
        "operationId": "get-move-newcomers",
        "tags": [
          "People & economy"
        ],
        "summary": "Newcomers and students: first-weeks steps with the local office for each, and the bus routes and neighbourhoods serving each campus",
        "description": "Steps (MSP and BC Services Card, SIN, bank account, phone and internet, utilities, doctor, settlement services, work, library, driver’s licence, address change), each with its official sources and, where there is one, the local office’s address, phone and hours from the public services directory. `campuses` lists, per campus, the routes that stop there and the neighbourhoods with a stop on those routes, computed from the stored BC Transit schedule.\n\nExample: `/api/v1/move/newcomers`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ steps: [{ id, when, title, who, text, office, official, links }], campuses: [{ id, name, routes: [{ short, name, neighbourhoods }], neighbourhoods: [{ slug, name, routes }], stops }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "steps": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "when": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "who": {
                                    "type": "string"
                                  },
                                  "text": {
                                    "type": "string"
                                  },
                                  "place": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "official": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "label": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "label",
                                        "url"
                                      ]
                                    }
                                  },
                                  "links": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "label": {
                                          "type": "string"
                                        },
                                        "href": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "label",
                                        "href"
                                      ]
                                    }
                                  },
                                  "office": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "hours": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "id": {
                                            "type": "string"
                                          },
                                          "url": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "name": {
                                            "type": "string"
                                          },
                                          "phone": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "addr": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "id",
                                          "name"
                                        ]
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "when",
                                  "title",
                                  "who",
                                  "text",
                                  "official",
                                  "links",
                                  "office"
                                ]
                              }
                            },
                            "campuses": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "longName": {
                                    "type": "string"
                                  },
                                  "place": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "housing": {
                                    "type": "string"
                                  },
                                  "international": {
                                    "type": "string"
                                  },
                                  "stops": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "name"
                                      ]
                                    }
                                  },
                                  "routes": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "short": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "color": {
                                          "type": "string"
                                        },
                                        "text": {
                                          "type": "string"
                                        },
                                        "neighbourhoods": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "slug": {
                                                "type": "string"
                                              },
                                              "name": {
                                                "type": "string"
                                              }
                                            },
                                            "required": [
                                              "slug",
                                              "name"
                                            ]
                                          }
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "short",
                                        "name",
                                        "color",
                                        "text",
                                        "neighbourhoods"
                                      ]
                                    }
                                  },
                                  "neighbourhoods": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "slug": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "routes": {
                                          "type": "array",
                                          "items": {
                                            "type": "string"
                                          }
                                        }
                                      },
                                      "required": [
                                        "slug",
                                        "name",
                                        "routes"
                                      ]
                                    }
                                  },
                                  "feed": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "version": {
                                            "type": "string"
                                          },
                                          "builtAt": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "version",
                                          "builtAt"
                                        ]
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "longName",
                                  "url",
                                  "stops",
                                  "routes",
                                  "neighbourhoods",
                                  "feed"
                                ]
                              }
                            }
                          },
                          "required": [
                            "steps",
                            "campuses"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "steps": [
                          {
                            "id": "string",
                            "when": "string",
                            "title": "string",
                            "who": "string",
                            "text": "string",
                            "place": "string",
                            "category": "string",
                            "official": [
                              {
                                "label": "string",
                                "url": "https://example.org/"
                              }
                            ],
                            "links": [
                              {
                                "label": "string",
                                "href": "https://example.org/"
                              }
                            ],
                            "office": {
                              "hours": "string",
                              "id": "string",
                              "url": "https://example.org/",
                              "name": "string",
                              "phone": "string",
                              "addr": "string"
                            }
                          }
                        ],
                        "campuses": [
                          {
                            "id": "string",
                            "name": "string",
                            "longName": "string",
                            "place": "string",
                            "url": "https://example.org/",
                            "housing": "string",
                            "international": "string",
                            "stops": [
                              {
                                "id": "string",
                                "name": "string"
                              }
                            ],
                            "routes": [
                              {
                                "id": "string",
                                "short": "string",
                                "name": "string",
                                "color": "string",
                                "text": "string",
                                "neighbourhoods": [
                                  {
                                    "slug": "string",
                                    "name": "string"
                                  }
                                ]
                              }
                            ],
                            "neighbourhoods": [
                              {
                                "slug": "string",
                                "name": "string",
                                "routes": [
                                  "string"
                                ]
                              }
                            ],
                            "feed": {
                              "version": "string",
                              "builtAt": "2026-01-01T00:00:00Z"
                            }
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/move/newcomers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/trivia": {
      "get": {
        "operationId": "get-trivia",
        "tags": [
          "Guides"
        ],
        "summary": "The local trivia quiz: questions, answers (first is correct), explanations and source links",
        "description": "The same questions the quiz page ships to the browser (answers included: the quiz checks them client-side). Edited in the admin; `more` links to the page that backs each answer up.\n\nExample: `/api/v1/trivia`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 500.",
            "schema": {
              "type": "integer",
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "question": {
                                "type": "string"
                              },
                              "answers": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "correct": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "why": {
                                "type": "string"
                              },
                              "more": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "question",
                              "answers",
                              "correct",
                              "why",
                              "more"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "question": "string",
                          "answers": [
                            "string"
                          ],
                          "correct": "string",
                          "why": "string",
                          "more": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/trivia",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/mascot/today": {
      "get": {
        "operationId": "get-mascot-today",
        "tags": [
          "Guides"
        ],
        "summary": "The mascot’s line of the day on the home page (null when none is scheduled)",
        "description": "Example: `/api/v1/mascot/today`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "date": {
                              "type": "string"
                            },
                            "mascot": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "text": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "href": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          },
                          "required": [
                            "date",
                            "mascot",
                            "text",
                            "href"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "date": "2026-01-01T00:00:00Z",
                        "mascot": null,
                        "text": "string",
                        "href": "https://example.org/"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/mascot/today",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/answers": {
      "get": {
        "operationId": "get-answers",
        "tags": [
          "Guides"
        ],
        "summary": "Answers to the questions residents ask most often: short answer, live values, our pages and official sources",
        "description": "Search with `q` (words of a question) or filter by `topic`. Each answer has `short` (one or two sentences), `answer` (Markdown, live numbers already filled in from our own API), `facts` (each live value with its as-of date and source), `links` (pages on this site), `official` (official sources, with the result of the weekly link check) and `checked` (when the answer was last reviewed).\n\nExample: `/api/v1/answers`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words of the question.",
            "schema": {
              "type": "string",
              "examples": [
                "family doctor"
              ]
            }
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "Topic id (see /answers/topics).",
            "schema": {
              "type": "string",
              "examples": [
                "health"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, theme, topic, topicLabel, question, also, short, answer, facts: [{ key, label, value, asOf, source, href }], links, official: [{ label, url, linkOk }], checked, page }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "theme": {
                                "type": "number"
                              },
                              "topic": {
                                "type": "string"
                              },
                              "topicLabel": {
                                "type": "string"
                              },
                              "question": {
                                "type": "string"
                              },
                              "also": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "short": {
                                "type": "string"
                              },
                              "answer": {
                                "type": "string"
                              },
                              "facts": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "key": {
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "asOf": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "source": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "sourceUrl": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "href": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "api": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "key",
                                    "label",
                                    "value",
                                    "asOf",
                                    "source",
                                    "sourceUrl",
                                    "href",
                                    "api"
                                  ]
                                }
                              },
                              "links": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "url"
                                  ]
                                }
                              },
                              "official": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "linkOk": {
                                      "type": [
                                        "boolean",
                                        "null"
                                      ]
                                    },
                                    "linkCheckedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "url",
                                    "linkOk",
                                    "linkCheckedAt"
                                  ]
                                }
                              },
                              "checked": {
                                "type": "string"
                              },
                              "page": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "theme",
                              "topic",
                              "topicLabel",
                              "question",
                              "also",
                              "short",
                              "answer",
                              "facts",
                              "links",
                              "official",
                              "checked",
                              "page"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "theme": 0,
                          "topic": "string",
                          "topicLabel": "string",
                          "question": "string",
                          "also": [
                            "string"
                          ],
                          "short": "string",
                          "answer": "string",
                          "facts": [
                            {
                              "key": "string",
                              "label": "string",
                              "value": "string",
                              "asOf": "string",
                              "source": "string",
                              "sourceUrl": "https://example.org/",
                              "href": "https://example.org/",
                              "api": "https://example.org/"
                            }
                          ],
                          "links": [
                            {
                              "label": "string",
                              "url": "https://example.org/"
                            }
                          ],
                          "official": [
                            {
                              "label": "string",
                              "url": "https://example.org/",
                              "linkOk": false,
                              "linkCheckedAt": "2026-01-01T00:00:00Z"
                            }
                          ],
                          "checked": "string",
                          "page": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/answers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/answers/topics": {
      "get": {
        "operationId": "get-answers-topics",
        "tags": [
          "Guides"
        ],
        "summary": "Answer topics with the number of questions in each",
        "description": "Example: `/api/v1/answers/topics`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, label, blurb, count }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "blurb": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "id",
                              "label",
                              "blurb",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "label": "string",
                          "blurb": "string",
                          "count": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/answers/topics",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/answers/{id}": {
      "get": {
        "operationId": "get-answers-id",
        "tags": [
          "Guides"
        ],
        "summary": "One answer with its live values, our pages and official sources",
        "description": "Example: `/api/v1/answers/family-doctor`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Answer id (see /answers).",
            "schema": {
              "type": "string",
              "examples": [
                "family-doctor"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "theme": {
                              "type": "number"
                            },
                            "topic": {
                              "type": "string"
                            },
                            "topicLabel": {
                              "type": "string"
                            },
                            "question": {
                              "type": "string"
                            },
                            "also": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "short": {
                              "type": "string"
                            },
                            "answer": {
                              "type": "string"
                            },
                            "facts": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "key": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "asOf": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "source": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "href": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "api": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "key",
                                  "label",
                                  "value",
                                  "asOf",
                                  "source",
                                  "sourceUrl",
                                  "href",
                                  "api"
                                ]
                              }
                            },
                            "links": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            },
                            "official": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "linkOk": {
                                    "type": [
                                      "boolean",
                                      "null"
                                    ]
                                  },
                                  "linkCheckedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "label",
                                  "url",
                                  "linkOk",
                                  "linkCheckedAt"
                                ]
                              }
                            },
                            "checked": {
                              "type": "string"
                            },
                            "page": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "theme",
                            "topic",
                            "topicLabel",
                            "question",
                            "also",
                            "short",
                            "answer",
                            "facts",
                            "links",
                            "official",
                            "checked",
                            "page"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "id": "string",
                        "theme": 0,
                        "topic": "string",
                        "topicLabel": "string",
                        "question": "string",
                        "also": [
                          "string"
                        ],
                        "short": "string",
                        "answer": "string",
                        "facts": [
                          {
                            "key": "string",
                            "label": "string",
                            "value": "string",
                            "asOf": "string",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "href": "https://example.org/",
                            "api": "https://example.org/"
                          }
                        ],
                        "links": [
                          {
                            "label": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "official": [
                          {
                            "label": "string",
                            "url": "https://example.org/",
                            "linkOk": false,
                            "linkCheckedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "checked": "string",
                        "page": "https://example.org/"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/answers/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/bylaws": {
      "get": {
        "operationId": "get-bylaws",
        "tags": [
          "City data"
        ],
        "summary": "Municipal bylaws: search by number or words, filter by type, year or decade",
        "description": "Every bylaw on the municipality’s public listing: number, title, adoption date, type (read from the title), the bylaw it amends, the municipality’s own short description, consolidated and commonly requested flags, and links to its page and official PDF. `q` takes a bylaw number (returns that bylaw first, then the bylaws amending it) or words (all must appear in the title or description). Newest first. An index of the municipality’s bylaw listing. The PDFs on the municipality’s site are the official copies; consolidated versions are for convenience only.\n\nExample: `/api/v1/bylaws`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Bylaw number or words.",
            "schema": {
              "type": "string",
              "examples": [
                "noise"
              ]
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Type id (see meta.categories).",
            "schema": {
              "type": "string",
              "enum": [
                "zoning",
                "land-use-contract",
                "ocp",
                "road-closure",
                "tax",
                "finance",
                "fees",
                "heritage",
                "housing",
                "nuisance",
                "traffic",
                "animals",
                "utilities",
                "business",
                "development",
                "council",
                "parks",
                "other"
              ]
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Adopted in this year.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "decade",
            "in": "query",
            "required": false,
            "description": "Adopted in this decade, e.g. 2010.",
            "schema": {
              "type": "integer",
              "examples": [
                2010
              ]
            }
          },
          {
            "name": "commonly",
            "in": "query",
            "required": false,
            "description": "Only the bylaws the municipality lists as commonly requested.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "consolidated",
            "in": "query",
            "required": false,
            "description": "Only consolidated versions (amendments folded in).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "amends",
            "in": "query",
            "required": false,
            "description": "Bylaws that amend this bylaw number.",
            "schema": {
              "type": "string",
              "examples": [
                "7850"
              ]
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Adopted on or after (YYYY-MM-DD).",
            "schema": {
              "type": "string",
              "examples": [
                "2025-01-01"
              ]
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "newest (default), oldest, number or title.",
            "schema": {
              "type": "string",
              "enum": [
                "newest",
                "oldest",
                "number",
                "title"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ number, title, year, adopted, category, categoryLabel, amends, summary, consolidated, commonlyRequested, pdfUrl, pageUrl, page }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "page": {
                                "type": "string"
                              },
                              "number": {
                                "type": "string"
                              },
                              "title": {
                                "type": "string"
                              },
                              "year": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "adopted": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "category": {
                                "type": "string"
                              },
                              "categoryLabel": {
                                "type": "string"
                              },
                              "amends": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "summary": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "consolidated": {
                                "type": "boolean"
                              },
                              "commonlyRequested": {
                                "type": "boolean"
                              },
                              "pdfUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "pageUrl": {
                                "type": "string"
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "lastSeen": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "page",
                              "number",
                              "title",
                              "year",
                              "adopted",
                              "category",
                              "categoryLabel",
                              "amends",
                              "summary",
                              "consolidated",
                              "commonlyRequested",
                              "pdfUrl",
                              "pageUrl",
                              "firstSeen",
                              "lastSeen"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "page": "https://example.org/",
                          "number": "string",
                          "title": "string",
                          "year": 0,
                          "adopted": "string",
                          "category": "string",
                          "categoryLabel": "string",
                          "amends": "string",
                          "summary": "string",
                          "consolidated": false,
                          "commonlyRequested": false,
                          "pdfUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "firstSeen": "string",
                          "lastSeen": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/bylaws",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/bylaws/stats": {
      "get": {
        "operationId": "get-bylaws-stats",
        "tags": [
          "City data"
        ],
        "summary": "How many bylaws by type and decade, and how many are consolidated or commonly requested",
        "description": "Example: `/api/v1/bylaws/stats`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ total, consolidated, common, withPdf, first, last, byCategory: [{ id, label, count }], byDecade: [{ decade, count }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "total": {
                              "type": "number"
                            },
                            "consolidated": {
                              "type": "number"
                            },
                            "common": {
                              "type": "number"
                            },
                            "withPdf": {
                              "type": "number"
                            },
                            "first": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "last": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "byCategory": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "count": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "count"
                                ]
                              }
                            },
                            "byDecade": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "decade": {
                                    "type": "number"
                                  },
                                  "count": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "decade",
                                  "count"
                                ]
                              }
                            }
                          },
                          "required": [
                            "total",
                            "consolidated",
                            "common",
                            "withPdf",
                            "first",
                            "last",
                            "byCategory",
                            "byDecade"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "total": 0,
                        "consolidated": 0,
                        "common": 0,
                        "withPdf": 0,
                        "first": "string",
                        "last": "string",
                        "byCategory": [
                          {
                            "id": "string",
                            "label": "string",
                            "count": 0
                          }
                        ],
                        "byDecade": [
                          {
                            "decade": 0,
                            "count": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/bylaws/stats",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/bylaws/{number}": {
      "get": {
        "operationId": "get-bylaws-number",
        "tags": [
          "City data"
        ],
        "summary": "One bylaw by number, with the bylaw it amends and the bylaws that amend it",
        "description": "Example: `/api/v1/bylaws/7850`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "description": "Bylaw number.",
            "schema": {
              "type": "string",
              "examples": [
                "7850"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "amendsBylaw": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "page": {
                                      "type": "string"
                                    },
                                    "number": {
                                      "type": "string"
                                    },
                                    "title": {
                                      "type": "string"
                                    },
                                    "year": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "adopted": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "category": {
                                      "type": "string"
                                    },
                                    "categoryLabel": {
                                      "type": "string"
                                    },
                                    "amends": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "summary": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "consolidated": {
                                      "type": "boolean"
                                    },
                                    "commonlyRequested": {
                                      "type": "boolean"
                                    },
                                    "pdfUrl": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    },
                                    "firstSeen": {
                                      "type": "string"
                                    },
                                    "lastSeen": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "page",
                                    "number",
                                    "title",
                                    "year",
                                    "adopted",
                                    "category",
                                    "categoryLabel",
                                    "amends",
                                    "summary",
                                    "consolidated",
                                    "commonlyRequested",
                                    "pdfUrl",
                                    "pageUrl",
                                    "firstSeen",
                                    "lastSeen"
                                  ]
                                }
                              ]
                            },
                            "amendedBy": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "page": {
                                    "type": "string"
                                  },
                                  "number": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "year": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "adopted": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "categoryLabel": {
                                    "type": "string"
                                  },
                                  "amends": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "summary": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "consolidated": {
                                    "type": "boolean"
                                  },
                                  "commonlyRequested": {
                                    "type": "boolean"
                                  },
                                  "pdfUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "pageUrl": {
                                    "type": "string"
                                  },
                                  "firstSeen": {
                                    "type": "string"
                                  },
                                  "lastSeen": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "page",
                                  "number",
                                  "title",
                                  "year",
                                  "adopted",
                                  "category",
                                  "categoryLabel",
                                  "amends",
                                  "summary",
                                  "consolidated",
                                  "commonlyRequested",
                                  "pdfUrl",
                                  "pageUrl",
                                  "firstSeen",
                                  "lastSeen"
                                ]
                              }
                            },
                            "others": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "page": {
                                    "type": "string"
                                  },
                                  "number": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "year": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "adopted": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "categoryLabel": {
                                    "type": "string"
                                  },
                                  "amends": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "summary": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "consolidated": {
                                    "type": "boolean"
                                  },
                                  "commonlyRequested": {
                                    "type": "boolean"
                                  },
                                  "pdfUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "pageUrl": {
                                    "type": "string"
                                  },
                                  "firstSeen": {
                                    "type": "string"
                                  },
                                  "lastSeen": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "page",
                                  "number",
                                  "title",
                                  "year",
                                  "adopted",
                                  "category",
                                  "categoryLabel",
                                  "amends",
                                  "summary",
                                  "consolidated",
                                  "commonlyRequested",
                                  "pdfUrl",
                                  "pageUrl",
                                  "firstSeen",
                                  "lastSeen"
                                ]
                              }
                            },
                            "note": {
                              "type": "string"
                            },
                            "page": {
                              "type": "string"
                            },
                            "number": {
                              "type": "string"
                            },
                            "title": {
                              "type": "string"
                            },
                            "year": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "adopted": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "category": {
                              "type": "string"
                            },
                            "categoryLabel": {
                              "type": "string"
                            },
                            "amends": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "summary": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "consolidated": {
                              "type": "boolean"
                            },
                            "commonlyRequested": {
                              "type": "boolean"
                            },
                            "pdfUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "pageUrl": {
                              "type": "string"
                            },
                            "firstSeen": {
                              "type": "string"
                            },
                            "lastSeen": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "amendsBylaw",
                            "amendedBy",
                            "others",
                            "note",
                            "page",
                            "number",
                            "title",
                            "year",
                            "adopted",
                            "category",
                            "categoryLabel",
                            "amends",
                            "summary",
                            "consolidated",
                            "commonlyRequested",
                            "pdfUrl",
                            "pageUrl",
                            "firstSeen",
                            "lastSeen"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "amendsBylaw": {
                          "page": "https://example.org/",
                          "number": "string",
                          "title": "string",
                          "year": 0,
                          "adopted": "string",
                          "category": "string",
                          "categoryLabel": "string",
                          "amends": "string",
                          "summary": "string",
                          "consolidated": false,
                          "commonlyRequested": false,
                          "pdfUrl": "https://example.org/",
                          "pageUrl": "https://example.org/",
                          "firstSeen": "string",
                          "lastSeen": "string"
                        },
                        "amendedBy": [
                          {
                            "page": "https://example.org/",
                            "number": "string",
                            "title": "string",
                            "year": 0,
                            "adopted": "string",
                            "category": "string",
                            "categoryLabel": "string",
                            "amends": "string",
                            "summary": "string",
                            "consolidated": false,
                            "commonlyRequested": false,
                            "pdfUrl": "https://example.org/",
                            "pageUrl": "https://example.org/",
                            "firstSeen": "string",
                            "lastSeen": "string"
                          }
                        ],
                        "others": [
                          {
                            "page": "https://example.org/",
                            "number": "string",
                            "title": "string",
                            "year": 0,
                            "adopted": "string",
                            "category": "string",
                            "categoryLabel": "string",
                            "amends": "string",
                            "summary": "string",
                            "consolidated": false,
                            "commonlyRequested": false,
                            "pdfUrl": "https://example.org/",
                            "pageUrl": "https://example.org/",
                            "firstSeen": "string",
                            "lastSeen": "string"
                          }
                        ],
                        "note": "string",
                        "page": "https://example.org/",
                        "number": "string",
                        "title": "string",
                        "year": 0,
                        "adopted": "string",
                        "category": "string",
                        "categoryLabel": "string",
                        "amends": "string",
                        "summary": "string",
                        "consolidated": false,
                        "commonlyRequested": false,
                        "pdfUrl": "https://example.org/",
                        "pageUrl": "https://example.org/",
                        "firstSeen": "string",
                        "lastSeen": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/bylaws/{number}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community": {
      "get": {
        "operationId": "get-community",
        "tags": [
          "Community"
        ],
        "summary": "Community directory overview: counts and freshness of every list",
        "description": "Example: `/api/v1/community`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ worship, childCare, careHomes, heritage, groups, unions, media, facebookGroups, volunteering, sources }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "worship": {
                              "type": "object",
                              "properties": {
                                "updatedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "stale": {
                                  "type": "boolean"
                                },
                                "count": {
                                  "type": "number"
                                },
                                "byTradition": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "tradition": {
                                        "type": "string"
                                      },
                                      "count": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "tradition",
                                      "count"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "updatedAt",
                                "stale",
                                "count",
                                "byTradition"
                              ]
                            },
                            "childCare": {
                              "type": "object",
                              "properties": {
                                "updatedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "stale": {
                                  "type": "boolean"
                                },
                                "count": {
                                  "type": "number"
                                },
                                "withVacancy": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "updatedAt",
                                "stale",
                                "count",
                                "withVacancy"
                              ]
                            },
                            "careHomes": {
                              "type": "object",
                              "properties": {
                                "count": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "count"
                              ]
                            },
                            "heritage": {
                              "type": "object",
                              "properties": {
                                "updatedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "stale": {
                                  "type": "boolean"
                                },
                                "register": {
                                  "type": "number"
                                },
                                "signs": {
                                  "type": "number"
                                },
                                "art": {
                                  "type": "number"
                                },
                                "murals": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "updatedAt",
                                "stale",
                                "register",
                                "signs",
                                "art",
                                "murals"
                              ]
                            },
                            "groups": {
                              "type": "object",
                              "properties": {
                                "updatedAt": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "stale": {
                                  "type": "boolean"
                                },
                                "count": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "updatedAt",
                                "stale",
                                "count"
                              ]
                            },
                            "unions": {
                              "type": "number"
                            },
                            "media": {
                              "type": "number"
                            },
                            "facebookGroups": {
                              "type": "number"
                            },
                            "volunteering": {
                              "type": "number"
                            },
                            "meetGroups": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "worship",
                            "childCare",
                            "careHomes",
                            "heritage",
                            "groups",
                            "unions",
                            "media",
                            "facebookGroups",
                            "volunteering",
                            "meetGroups"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "worship": {
                          "updatedAt": "2026-01-01T00:00:00Z",
                          "stale": false,
                          "count": 0,
                          "byTradition": [
                            {
                              "tradition": "string",
                              "count": 0
                            }
                          ]
                        },
                        "childCare": {
                          "updatedAt": "2026-01-01T00:00:00Z",
                          "stale": false,
                          "count": 0,
                          "withVacancy": 0
                        },
                        "careHomes": {
                          "count": 0
                        },
                        "heritage": {
                          "updatedAt": "2026-01-01T00:00:00Z",
                          "stale": false,
                          "register": 0,
                          "signs": 0,
                          "art": 0,
                          "murals": 0
                        },
                        "groups": {
                          "updatedAt": "2026-01-01T00:00:00Z",
                          "stale": false,
                          "count": 0
                        },
                        "unions": 0,
                        "media": 0,
                        "facebookGroups": 0,
                        "volunteering": 0,
                        "meetGroups": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/worship": {
      "get": {
        "operationId": "get-community-worship",
        "tags": [
          "Community"
        ],
        "summary": "Places of worship: tradition, denomination, address, website and languages (when published)",
        "description": "Merged from the CRA List of charities (religion categories), OpenStreetMap, the business directory and addresses checked on each congregation’s own site. `confidence`: verified (checked on the congregation’s own site), map (OpenStreetMap only) or registry (a registered charity; its registered address can be a home, so no address is given). Each item lists its sources.\n\nExample: `/api/v1/community/worship`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "tradition",
            "in": "query",
            "required": false,
            "description": "One of Christian, Sikh, Muslim, Hindu, Buddhist, Jewish, Baha’i, Jain, Zoroastrian, Other.",
            "schema": {
              "type": "string",
              "examples": [
                "Sikh"
              ]
            }
          },
          {
            "name": "confidence",
            "in": "query",
            "required": false,
            "description": "verified, map or registry.",
            "schema": {
              "type": "string",
              "enum": [
                "verified",
                "map",
                "registry"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name, denomination, address or languages.",
            "schema": {
              "type": "string",
              "examples": [
                "baptist"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, tradition, denomination, address, lat, lng, website, languages, languagesNote, accessibility, confidence, craBn, osm, directorySlug, sources }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "tradition": {
                                "type": "string"
                              },
                              "denomination": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "located": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "languages": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "languagesNote": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "accessibility": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "craBn": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "osm": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "directorySlug": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "confidence": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "map"
                                  },
                                  {
                                    "type": "string",
                                    "const": "registry"
                                  },
                                  {
                                    "type": "string",
                                    "const": "verified"
                                  }
                                ]
                              },
                              "sources": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "licence": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "tradition",
                              "denomination",
                              "address",
                              "lat",
                              "lng",
                              "located",
                              "website",
                              "languages",
                              "languagesNote",
                              "accessibility",
                              "craBn",
                              "osm",
                              "directorySlug",
                              "confidence",
                              "sources"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "tradition": "string",
                          "denomination": "string",
                          "address": "string",
                          "lat": 0,
                          "lng": 0,
                          "located": "string",
                          "website": "https://example.org/",
                          "languages": [
                            "string"
                          ],
                          "languagesNote": "string",
                          "accessibility": "string",
                          "craBn": "string",
                          "osm": "string",
                          "directorySlug": "string",
                          "confidence": "map",
                          "sources": [
                            {
                              "name": "string",
                              "url": "https://example.org/",
                              "licence": "string"
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/community/worship",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/charities": {
      "get": {
        "operationId": "get-community-charities",
        "tags": [
          "Community"
        ],
        "summary": "Registered charities in the city (CRA List of charities, all categories)",
        "description": "Example: `/api/v1/community/charities`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "CRA category code, e.g. 0001 (relief of poverty), 0030 (Christianity), 0160 (community resource).",
            "schema": {
              "type": "string",
              "examples": [
                "0001"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name.",
            "schema": {
              "type": "string",
              "examples": [
                "hospice"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ bn, name, category, categoryLabel, subCategory, designation, address, postal, website, year, craUrl }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "categoryLabel": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "bn": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "category": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "subCategory": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "designation": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "city": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "postal": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "year": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "craUrl": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "categoryLabel",
                              "bn",
                              "name",
                              "category",
                              "subCategory",
                              "designation",
                              "address",
                              "city",
                              "postal",
                              "website",
                              "year",
                              "craUrl"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "categoryLabel": "string",
                          "bn": "string",
                          "name": "string",
                          "category": "string",
                          "subCategory": "string",
                          "designation": "string",
                          "address": "string",
                          "city": "string",
                          "postal": "string",
                          "website": "https://example.org/",
                          "year": 0,
                          "craUrl": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/community/charities",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/child-care": {
      "get": {
        "operationId": "get-community-child-care",
        "tags": [
          "Community"
        ],
        "summary": "Licensed child care facilities with ages served, languages, hours and current vacancies",
        "description": "The Province’s child care map data, refreshed daily. Home-based (licensed family) care shows the street only and approximate coordinates. Vacancies are reported by the providers (see vacancyUpdated).\n\nExample: `/api/v1/community/child-care`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "age",
            "in": "query",
            "required": false,
            "description": "Age group: under-3, 30m-5y, preschool, kindergarten, school-age.",
            "schema": {
              "type": "string",
              "enum": [
                "under-3",
                "30m-5y",
                "preschool",
                "kindergarten",
                "school-age"
              ]
            }
          },
          {
            "name": "vacancy",
            "in": "query",
            "required": false,
            "description": "Only facilities reporting a vacancy (for the age group, when given).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "group (centre-based) or family (home-based).",
            "schema": {
              "type": "string",
              "enum": [
                "group",
                "family"
              ]
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "A language other than English, e.g. French, Punjabi.",
            "schema": {
              "type": "string",
              "examples": [
                "French"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name or street.",
            "schema": {
              "type": "string",
              "examples": [
                "montessori"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, type, homeBased, address, lat, lng, phone, website, ages, languages, schedule, features, meals, vacancy, vacancyUpdated, inspectionsUrl, feeReduction }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "homeBased": {
                                "type": "boolean"
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "postal": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "ages": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "languages": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "schedule": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "features": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "meals": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "vacancy": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "vacancyUpdated": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "inspectionsUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "feeReduction": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "type",
                              "homeBased",
                              "address",
                              "postal",
                              "lat",
                              "lng",
                              "phone",
                              "website",
                              "ages",
                              "languages",
                              "schedule",
                              "features",
                              "meals",
                              "vacancy",
                              "vacancyUpdated",
                              "inspectionsUrl",
                              "feeReduction"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "type": "string",
                          "homeBased": false,
                          "address": "string",
                          "postal": "string",
                          "lat": 0,
                          "lng": 0,
                          "phone": "string",
                          "website": "https://example.org/",
                          "ages": [
                            "string"
                          ],
                          "languages": [
                            "string"
                          ],
                          "schedule": [
                            "string"
                          ],
                          "features": [
                            "string"
                          ],
                          "meals": "string",
                          "vacancy": [
                            "string"
                          ],
                          "vacancyUpdated": "string",
                          "inspectionsUrl": "https://example.org/",
                          "feeReduction": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/community/child-care",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/care-homes": {
      "get": {
        "operationId": "get-community-care-homes",
        "tags": [
          "Community"
        ],
        "summary": "Long-term care, assisted living and hospice: licensed facilities with bed counts, plus the public services directory’s care listings",
        "description": "Example: `/api/v1/community/care-homes`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ licensed: [{ id, name, operator, address, lat, lng, phone, longTermCareBeds, hospiceBeds, inspectionsUrl }], directory: [{ id, name, kind, address, phone, url, source }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "licensed": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "operator": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "postal": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lng": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "inspectionsUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "longTermCareBeds": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "hospiceBeds": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "healthAuthority": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "care": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "operator",
                                  "address",
                                  "postal",
                                  "lat",
                                  "lng",
                                  "phone",
                                  "inspectionsUrl",
                                  "longTermCareBeds",
                                  "hospiceBeds",
                                  "healthAuthority",
                                  "care"
                                ]
                              }
                            },
                            "directory": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "operator": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "source": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  },
                                  "checked": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "kind",
                                  "operator",
                                  "address",
                                  "phone",
                                  "url",
                                  "source",
                                  "checked"
                                ]
                              }
                            }
                          },
                          "required": [
                            "licensed",
                            "directory"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "licensed": [
                          {
                            "id": "string",
                            "name": "string",
                            "operator": "string",
                            "address": "string",
                            "postal": "string",
                            "lat": 0,
                            "lng": 0,
                            "phone": "string",
                            "inspectionsUrl": "https://example.org/",
                            "longTermCareBeds": 0,
                            "hospiceBeds": 0,
                            "healthAuthority": "string",
                            "care": [
                              "string"
                            ]
                          }
                        ],
                        "directory": [
                          {
                            "id": "string",
                            "name": "string",
                            "kind": "string",
                            "operator": "string",
                            "address": "string",
                            "phone": "string",
                            "url": "https://example.org/",
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            },
                            "checked": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community/care-homes",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/heritage": {
      "get": {
        "operationId": "get-community-heritage",
        "tags": [
          "Community"
        ],
        "summary": "Heritage register properties, downtown heritage signs (in walking order) and public art, with locations",
        "description": "Example: `/api/v1/community/heritage`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "register, sign or art.",
            "schema": {
              "type": "string",
              "enum": [
                "register",
                "sign",
                "art"
              ]
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Register section (Residential, Commercial, Other) or art type (Mural, Sculpture, Totem...).",
            "schema": {
              "type": "string",
              "examples": [
                "Mural"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, kind, category, name, address, lat, lng, year, summary, artist, material, url, stop, source }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "art"
                                  },
                                  {
                                    "type": "string",
                                    "const": "register"
                                  },
                                  {
                                    "type": "string",
                                    "const": "sign"
                                  }
                                ]
                              },
                              "category": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "located": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "year": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "summary": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "artist": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "material": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "image": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "stop": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "source": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "licence": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url",
                                  "licence"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "kind",
                              "category",
                              "name",
                              "address",
                              "lat",
                              "lng",
                              "located",
                              "year",
                              "summary",
                              "artist",
                              "material",
                              "url",
                              "image",
                              "stop",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "kind": "art",
                          "category": "string",
                          "name": "string",
                          "address": "string",
                          "lat": 0,
                          "lng": 0,
                          "located": "string",
                          "year": 0,
                          "summary": "string",
                          "artist": "string",
                          "material": "string",
                          "url": "https://example.org/",
                          "image": "string",
                          "stop": 0,
                          "source": {
                            "name": "string",
                            "url": "https://example.org/",
                            "licence": "string"
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/community/heritage",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/on-this-day": {
      "get": {
        "operationId": "get-community-on-this-day",
        "tags": [
          "Community"
        ],
        "summary": "On this day: people born in the city, openings and events on a calendar day (Wikidata)",
        "description": "Example: `/api/v1/community/on-this-day`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "description": "Month and day, MM-DD (default: today in the city).",
            "schema": {
              "type": "string",
              "examples": [
                "09-30"
              ]
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "Days from that date to include (1 to 31, default 1).",
            "schema": {
              "type": "integer",
              "examples": [
                7
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ date, items: [{ date, year, yearsAgo, kind, label, description, wikipedia, wikidata }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "date": {
                              "type": "string"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "date": {
                                    "type": "string"
                                  },
                                  "year": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "wikipedia": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "wikidata": {
                                    "type": "string"
                                  },
                                  "yearsAgo": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "date",
                                  "year",
                                  "kind",
                                  "label",
                                  "description",
                                  "wikipedia",
                                  "wikidata",
                                  "yearsAgo"
                                ]
                              }
                            }
                          },
                          "required": [
                            "date",
                            "items"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "date": "2026-01-01T00:00:00Z",
                        "items": [
                          {
                            "id": "string",
                            "date": "2026-01-01T00:00:00Z",
                            "year": 0,
                            "kind": "string",
                            "label": "string",
                            "description": "string",
                            "wikipedia": "string",
                            "wikidata": "string",
                            "yearsAgo": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community/on-this-day",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/groups": {
      "get": {
        "operationId": "get-community-groups",
        "tags": [
          "Community"
        ],
        "summary": "Clubs and groups: arts, music, theatre, social, seniors and science clubs from the municipal recreation directory",
        "description": "Example: `/api/v1/community/groups`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Directory type, e.g. Music, Arts and crafts, Seniors.",
            "schema": {
              "type": "string",
              "examples": [
                "Music"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name or description.",
            "schema": {
              "type": "string",
              "examples": [
                "choir"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, category, types, description, url, cityUrl }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "types": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "description": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "cityUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "category",
                              "types",
                              "description",
                              "url",
                              "cityUrl",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "category": "string",
                          "types": [
                            "string"
                          ],
                          "description": "string",
                          "url": "https://example.org/",
                          "cityUrl": "https://example.org/",
                          "source": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/community/groups",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/meet": {
      "get": {
        "operationId": "get-community-meet",
        "tags": [
          "Community"
        ],
        "summary": "Volunteering, service clubs, newcomer, hobby and social groups (hand-checked)",
        "description": "Example: `/api/v1/community/meet`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Group category: newcomers, service-club, hobby, outdoors, arts-culture, lgbtq, seniors, professional, faith-community, youth, language-culture, games.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ volunteering: [{ id, name, kind, what, url, source }], groups: [{ id, name, category, what, meets, url, source }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "volunteering": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "what": {
                                    "type": "string"
                                  },
                                  "meets": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  },
                                  "checked": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "what",
                                  "url",
                                  "source",
                                  "checked"
                                ]
                              }
                            },
                            "groups": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "what": {
                                    "type": "string"
                                  },
                                  "meets": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  },
                                  "checked": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "what",
                                  "url",
                                  "source",
                                  "checked"
                                ]
                              }
                            }
                          },
                          "required": [
                            "volunteering",
                            "groups"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "volunteering": [
                          {
                            "id": "string",
                            "name": "string",
                            "kind": "string",
                            "category": "string",
                            "what": "string",
                            "meets": "string",
                            "url": "https://example.org/",
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            },
                            "checked": "string"
                          }
                        ],
                        "groups": [
                          {
                            "id": "string",
                            "name": "string",
                            "kind": "string",
                            "category": "string",
                            "what": "string",
                            "meets": "string",
                            "url": "https://example.org/",
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            },
                            "checked": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community/meet",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/help": {
      "get": {
        "operationId": "get-community-help",
        "tags": [
          "Community"
        ],
        "summary": "Help by topic: food, shelter and housing, crisis lines, mental health and addictions, legal, family, youth, seniors, newcomers, disability, Indigenous, income",
        "description": "Example: `/api/v1/community/help`\n\nCache: 1800s.",
        "parameters": [
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "Topic id, e.g. food, shelter-housing, crisis, legal.",
            "schema": {
              "type": "string",
              "examples": [
                "food"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, label, intro, places: [{ id, name, kind, address, phone, hours, url, source }], contacts: [{ id, name, number, when, description }], links: [{ label, url, description }] }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "intro": {
                                "type": "string"
                              },
                              "places": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "kind": {
                                      "type": "string"
                                    },
                                    "operator": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "address": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "phone": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "hours": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "url": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "source": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "url"
                                      ]
                                    },
                                    "checked": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "name",
                                    "kind",
                                    "operator",
                                    "address",
                                    "phone",
                                    "hours",
                                    "url",
                                    "source",
                                    "checked"
                                  ]
                                }
                              },
                              "contacts": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "number": {
                                      "type": "string"
                                    },
                                    "when": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "description": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "url": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "source": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "url"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "name",
                                    "number",
                                    "when",
                                    "description",
                                    "url",
                                    "source"
                                  ]
                                }
                              },
                              "links": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "url",
                                    "description"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "id",
                              "label",
                              "intro",
                              "places",
                              "contacts",
                              "links"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "label": "string",
                          "intro": "string",
                          "places": [
                            {
                              "id": "string",
                              "name": "string",
                              "kind": "string",
                              "operator": "string",
                              "address": "string",
                              "phone": "string",
                              "hours": "string",
                              "url": "https://example.org/",
                              "source": {
                                "name": "string",
                                "url": "https://example.org/"
                              },
                              "checked": "string"
                            }
                          ],
                          "contacts": [
                            {
                              "id": "string",
                              "name": "string",
                              "number": "string",
                              "when": "string",
                              "description": "string",
                              "url": "https://example.org/",
                              "source": {
                                "name": "string",
                                "url": "https://example.org/"
                              }
                            }
                          ],
                          "links": [
                            {
                              "label": "string",
                              "url": "https://example.org/",
                              "description": "string"
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community/help",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/unions": {
      "get": {
        "operationId": "get-community-unions",
        "tags": [
          "Community"
        ],
        "summary": "Union locals and labour councils with who they represent and official links",
        "description": "Example: `/api/v1/community/unions`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "description": "public, health, education, forestry-mills, construction-trades, transport, retail-services, federal, other.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ unions: [{ id, name, short, union, sector, represents, employers, url, phone, address, source }], councils: [...], links: [...] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "unions": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "union": {
                                    "type": "string"
                                  },
                                  "short": {
                                    "type": "string"
                                  },
                                  "sector": {
                                    "type": "string"
                                  },
                                  "represents": {
                                    "type": "string"
                                  },
                                  "employers": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "affiliations": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "source": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  },
                                  "extraSources": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "url"
                                      ]
                                    }
                                  },
                                  "checked": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "union",
                                  "short",
                                  "sector",
                                  "represents",
                                  "employers",
                                  "url",
                                  "phone",
                                  "email",
                                  "address",
                                  "affiliations",
                                  "source",
                                  "checked"
                                ]
                              }
                            },
                            "councils": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "union": {
                                    "type": "string"
                                  },
                                  "short": {
                                    "type": "string"
                                  },
                                  "sector": {
                                    "type": "string"
                                  },
                                  "represents": {
                                    "type": "string"
                                  },
                                  "employers": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "affiliations": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "source": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  },
                                  "extraSources": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "url"
                                      ]
                                    }
                                  },
                                  "checked": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "union",
                                  "short",
                                  "sector",
                                  "represents",
                                  "employers",
                                  "url",
                                  "phone",
                                  "email",
                                  "address",
                                  "affiliations",
                                  "source",
                                  "checked"
                                ]
                              }
                            },
                            "links": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            }
                          },
                          "required": [
                            "unions",
                            "councils",
                            "links"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "unions": [
                          {
                            "id": "string",
                            "name": "string",
                            "union": "string",
                            "short": "string",
                            "sector": "string",
                            "represents": "string",
                            "employers": [
                              "string"
                            ],
                            "url": "https://example.org/",
                            "phone": "string",
                            "email": "string",
                            "address": "string",
                            "affiliations": [
                              "string"
                            ],
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            },
                            "extraSources": [
                              {
                                "name": "string",
                                "url": "https://example.org/"
                              }
                            ],
                            "checked": "string"
                          }
                        ],
                        "councils": [
                          {
                            "id": "string",
                            "name": "string",
                            "union": "string",
                            "short": "string",
                            "sector": "string",
                            "represents": "string",
                            "employers": [
                              "string"
                            ],
                            "url": "https://example.org/",
                            "phone": "string",
                            "email": "string",
                            "address": "string",
                            "affiliations": [
                              "string"
                            ],
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            },
                            "extraSources": [
                              {
                                "name": "string",
                                "url": "https://example.org/"
                              }
                            ],
                            "checked": "string"
                          }
                        ],
                        "links": [
                          {
                            "label": "string",
                            "url": "https://example.org/",
                            "description": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community/unions",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/media": {
      "get": {
        "operationId": "get-community-media",
        "tags": [
          "Community"
        ],
        "summary": "Local media: newspapers, online news, radio and TV stations with owners, frequencies and news-tip contacts",
        "description": "Example: `/api/v1/community/media`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "newspaper, online, radio, tv, campus or magazine.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ outlets: [{ id, name, kind, callSign, frequency, format, owner, url, newsUrl, tips, feedIds, source }], neverLink: [{ name, domain, reason }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "outlets": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "callSign": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "frequency": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "format": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "brand": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "owner": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "ownerUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "newsUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "tips": {
                                    "type": "object",
                                    "properties": {
                                      "email": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "email",
                                      "phone",
                                      "url"
                                    ]
                                  },
                                  "languages": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "founded": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "feedIds": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  },
                                  "extraSources": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "name",
                                        "url"
                                      ]
                                    }
                                  },
                                  "checked": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "kind",
                                  "callSign",
                                  "frequency",
                                  "format",
                                  "brand",
                                  "owner",
                                  "ownerUrl",
                                  "url",
                                  "newsUrl",
                                  "tips",
                                  "languages",
                                  "founded",
                                  "feedIds",
                                  "description",
                                  "source",
                                  "checked"
                                ]
                              }
                            },
                            "neverLink": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "domain": {
                                    "type": "string"
                                  },
                                  "reason": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "domain",
                                  "reason"
                                ]
                              }
                            }
                          },
                          "required": [
                            "outlets",
                            "neverLink"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "outlets": [
                          {
                            "id": "string",
                            "name": "string",
                            "kind": "string",
                            "callSign": "string",
                            "frequency": "string",
                            "format": "string",
                            "brand": "string",
                            "owner": "string",
                            "ownerUrl": "https://example.org/",
                            "url": "https://example.org/",
                            "newsUrl": "https://example.org/",
                            "tips": {
                              "email": "string",
                              "phone": "string",
                              "url": "https://example.org/"
                            },
                            "languages": [
                              "string"
                            ],
                            "founded": "string",
                            "feedIds": [
                              "string"
                            ],
                            "description": "string",
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            },
                            "extraSources": [
                              {
                                "name": "string",
                                "url": "https://example.org/"
                              }
                            ],
                            "checked": "string"
                          }
                        ],
                        "neverLink": [
                          {
                            "name": "string",
                            "domain": "string",
                            "reason": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community/media",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/facebook-groups": {
      "get": {
        "operationId": "get-community-facebook-groups",
        "tags": [
          "Community"
        ],
        "summary": "Public Facebook groups and pages about the city: names, purpose and links only",
        "description": "Example: `/api/v1/community/facebook-groups`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ groups: [{ id, name, url, type, topic, what, privacy }], elsewhere: [...] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "groups": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  },
                                  "topic": {
                                    "type": "string"
                                  },
                                  "what": {
                                    "type": "string"
                                  },
                                  "privacy": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "checked": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "url",
                                  "type",
                                  "topic",
                                  "what",
                                  "privacy",
                                  "checked"
                                ]
                              }
                            },
                            "elsewhere": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "what": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "url",
                                  "what"
                                ]
                              }
                            }
                          },
                          "required": [
                            "groups",
                            "elsewhere"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "groups": [
                          {
                            "id": "string",
                            "name": "string",
                            "url": "https://example.org/",
                            "type": "string",
                            "topic": "string",
                            "what": "string",
                            "privacy": "string",
                            "checked": "string"
                          }
                        ],
                        "elsewhere": [
                          {
                            "label": "string",
                            "url": "https://example.org/",
                            "what": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community/facebook-groups",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/community/landmarks": {
      "get": {
        "operationId": "get-community-landmarks",
        "tags": [
          "Community"
        ],
        "summary": "Landmarks with locations and one-line descriptions",
        "description": "Example: `/api/v1/community/landmarks`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, kind, what, lat, lng, page, source }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "what": {
                                "type": "string"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "page": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "kind",
                              "what",
                              "lat",
                              "lng",
                              "page",
                              "source"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "kind": "string",
                          "what": "string",
                          "lat": 0,
                          "lng": 0,
                          "page": "https://example.org/",
                          "source": {
                            "name": "string",
                            "url": "https://example.org/"
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/community/landmarks",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/costs/household": {
      "get": {
        "operationId": "get-costs-household",
        "tags": [
          "Living"
        ],
        "summary": "Household cost estimate: rent or property tax, electricity, natural gas, City utilities, gasoline and transit, monthly and yearly",
        "description": "Give any of the inputs (all optional; defaults are a two-bedroom rented apartment with electric heat, two people and one car). Each line has `source`, `sourceUrl`, `asOf`, the `basis` of the number and whether it rests on an `assumption` (a published average or a default you can replace). Insurance is not estimated: `links` point to where to price it. An estimate from published averages and rates, not a quote: your own use, rent and bills will differ. Every line names its source, as-of date and assumption; lines whose data is missing are listed in `unavailable`.\n\nExample: `/api/v1/costs/household?tenure=rent&home=apartment&beds=2&heat=electric&cars=1`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "tenure",
            "in": "query",
            "required": false,
            "description": "rent or own.",
            "schema": {
              "type": "string",
              "enum": [
                "rent",
                "own"
              ],
              "examples": [
                "rent"
              ]
            }
          },
          {
            "name": "home",
            "in": "query",
            "required": false,
            "description": "Home type.",
            "schema": {
              "type": "string",
              "enum": [
                "apartment",
                "townhouse",
                "house"
              ],
              "examples": [
                "apartment"
              ]
            }
          },
          {
            "name": "beds",
            "in": "query",
            "required": false,
            "description": "Bedrooms: 0 (bachelor) to 3 (3 or more).",
            "schema": {
              "type": "integer",
              "examples": [
                2
              ]
            }
          },
          {
            "name": "heat",
            "in": "query",
            "required": false,
            "description": "Main heating: electric or gas.",
            "schema": {
              "type": "string",
              "enum": [
                "electric",
                "gas"
              ]
            }
          },
          {
            "name": "people",
            "in": "query",
            "required": false,
            "description": "People in the household (for the per-person figure).",
            "schema": {
              "type": "integer",
              "examples": [
                2
              ]
            }
          },
          {
            "name": "cars",
            "in": "query",
            "required": false,
            "description": "Cars (0 to 4).",
            "schema": {
              "type": "integer",
              "examples": [
                1
              ]
            }
          },
          {
            "name": "km",
            "in": "query",
            "required": false,
            "description": "Kilometres driven a week, all cars (default 200 per car, an assumption).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "lp100",
            "in": "query",
            "required": false,
            "description": "Fuel use, litres per 100 km (default 10, an assumption).",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "adultPasses",
            "in": "query",
            "required": false,
            "description": "Adult 30-day transit passes a month.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "concessionPasses",
            "in": "query",
            "required": false,
            "description": "Senior or youth 30-day passes a month.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "cart",
            "in": "query",
            "required": false,
            "description": "Garbage cart size (detached houses).",
            "schema": {
              "type": "string",
              "enum": [
                "small",
                "medium",
                "large"
              ]
            }
          },
          {
            "name": "grant",
            "in": "query",
            "required": false,
            "description": "Home owner grant (owners): basic, senior or none.",
            "schema": {
              "type": "string",
              "enum": [
                "basic",
                "senior",
                "none"
              ]
            }
          },
          {
            "name": "cityUtils",
            "in": "query",
            "required": false,
            "description": "Include the City water, sewer and garbage bill (default: owners and detached houses).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "assessed",
            "in": "query",
            "required": false,
            "description": "Assessed value for property tax (owners; default the typical value for the home type).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "kwh",
            "in": "query",
            "required": false,
            "description": "Your electricity use, kWh a month (default the published average for the home and heating).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "gj",
            "in": "query",
            "required": false,
            "description": "Your natural gas use, GJ a month (default the utility’s example bill).",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "rent",
            "in": "query",
            "required": false,
            "description": "Your rent a month (default the average rent for the bedrooms).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ inputs, lines: [{ id, label, monthly, yearly, source, sourceUrl, asOf, basis, assumption, assumptionNote }], total: { monthly, yearly }, perPerson, unavailable, notes, links, query, page }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "links": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "note": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "url"
                                ]
                              }
                            },
                            "page": {
                              "type": "string"
                            },
                            "note": {
                              "type": "string"
                            },
                            "inputs": {
                              "type": "object",
                              "properties": {
                                "tenure": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "home": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "beds": {
                                  "type": "number"
                                },
                                "heat": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "people": {
                                  "type": "number"
                                },
                                "cars": {
                                  "type": "number"
                                },
                                "km": {
                                  "type": "number"
                                },
                                "lp100": {
                                  "type": "number"
                                },
                                "adultPasses": {
                                  "type": "number"
                                },
                                "concessionPasses": {
                                  "type": "number"
                                },
                                "cart": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "grant": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "cityUtils": {
                                  "$ref": "#/components/schemas/JsonValue"
                                },
                                "assessed": {
                                  "type": "null"
                                },
                                "kwh": {
                                  "type": "null"
                                },
                                "gj": {
                                  "type": "null"
                                },
                                "rent": {
                                  "type": "null"
                                }
                              },
                              "required": [
                                "tenure",
                                "home",
                                "beds",
                                "heat",
                                "people",
                                "cars",
                                "km",
                                "lp100",
                                "adultPasses",
                                "concessionPasses",
                                "cart",
                                "grant",
                                "cityUtils",
                                "assessed",
                                "kwh",
                                "gj",
                                "rent"
                              ]
                            },
                            "lines": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/JsonValue"
                              }
                            },
                            "total": {
                              "type": "object",
                              "properties": {
                                "monthly": {
                                  "type": "number"
                                },
                                "yearly": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "monthly",
                                "yearly"
                              ]
                            },
                            "perPerson": {
                              "type": "object",
                              "properties": {
                                "monthly": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "monthly"
                              ]
                            },
                            "unavailable": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "reason": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "reason"
                                ]
                              }
                            },
                            "notes": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "query": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "links",
                            "page",
                            "note",
                            "inputs",
                            "lines",
                            "total",
                            "perPerson",
                            "unavailable",
                            "notes",
                            "query"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "links": [
                          {
                            "id": "string",
                            "label": "string",
                            "url": "https://example.org/",
                            "note": "string"
                          }
                        ],
                        "page": "https://example.org/",
                        "note": "string",
                        "inputs": {
                          "tenure": null,
                          "home": null,
                          "beds": 0,
                          "heat": null,
                          "people": 0,
                          "cars": 0,
                          "km": 0,
                          "lp100": 0,
                          "adultPasses": 0,
                          "concessionPasses": 0,
                          "cart": null,
                          "grant": null,
                          "cityUtils": null,
                          "assessed": null,
                          "kwh": null,
                          "gj": null,
                          "rent": null
                        },
                        "lines": [
                          null
                        ],
                        "total": {
                          "monthly": 0,
                          "yearly": 0
                        },
                        "perPerson": {
                          "monthly": 0
                        },
                        "unavailable": [
                          {
                            "id": "string",
                            "label": "string",
                            "reason": "string"
                          }
                        ],
                        "notes": [
                          "string"
                        ],
                        "query": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/costs/household",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/costs/rates": {
      "get": {
        "operationId": "get-costs-rates",
        "tags": [
          "Living"
        ],
        "summary": "The rates and published averages behind the household cost calculator, each with its source and date",
        "description": "Average rents by bedroom (CMHC), the electricity and natural gas rates, typical monthly energy use published by the utilities, City flat utility rates, the residential tax rate and home owner grant, typical assessed values, the city’s average regular gasoline price and 30-day transit pass prices. A part whose data is missing is null.\n\nExample: `/api/v1/costs/rates`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ rent, hydro, use, gas, utilities, tax, fuel, transit, datasets: [{ id, title, source, sourceUrl, licence, asOf, checkedAt, stale }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "datasets": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "title": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "source": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "sourceUrl": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "licence": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "asOf": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "checkedAt": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "stale": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "source",
                                  "sourceUrl",
                                  "licence",
                                  "asOf",
                                  "checkedAt",
                                  "stale"
                                ]
                              }
                            },
                            "rent": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "hydro": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "use": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "gas": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "utilities": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "tax": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "fuel": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "transit": {
                              "$ref": "#/components/schemas/JsonValue"
                            }
                          },
                          "required": [
                            "datasets",
                            "rent",
                            "hydro",
                            "use",
                            "gas",
                            "utilities",
                            "tax",
                            "fuel",
                            "transit"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "datasets": [
                          {
                            "id": null,
                            "title": null,
                            "source": null,
                            "sourceUrl": null,
                            "licence": null,
                            "asOf": null,
                            "checkedAt": null,
                            "stale": null
                          }
                        ],
                        "rent": null,
                        "hydro": null,
                        "use": null,
                        "gas": null,
                        "utilities": null,
                        "tax": null,
                        "fuel": null,
                        "transit": null
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/costs/rates",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/internet/providers": {
      "get": {
        "operationId": "get-internet-providers",
        "tags": [
          "Living"
        ],
        "summary": "Internet providers in the city or a neighbourhood: technologies and how much of the area each reports covering",
        "description": "From ISED’s National Broadband Data (hexagons of about 25 km²). For each provider: the technologies it reports (fibre, cable, DSL, fixed wireless, satellite, mobile), the hexagons, and `sharePct`, the share of the area’s hexagons with homes where it reports a home (non-mobile) service. ISED does not publish speeds by provider; `meta.area.homes5010` counts hexagons by the share of homes that can get 50/10 Mbps. Availability is as reported by providers to Innovation, Science and Economic Development Canada for hexagons of about 25 km²; a provider listed in a hexagon may not reach every street or home in it. It is not a guarantee of service: check your address with the provider.\n\nExample: `/api/v1/internet/providers`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "neighbourhood",
            "in": "query",
            "required": false,
            "description": "Neighbourhood slug (see /internet/neighbourhoods).",
            "schema": {
              "type": "string",
              "examples": [
                "college-heights"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ provider, name, url, note, technologies: [{ technology, label, kind, hexagons, sharePct }], fixed, mobileOnly, hexagons, sharePct }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "provider": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "technologies": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "technology": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    },
                                    "label": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    },
                                    "kind": {
                                      "type": "string"
                                    },
                                    "hexagons": {
                                      "$ref": "#/components/schemas/JsonValue"
                                    },
                                    "sharePct": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "technology",
                                    "label",
                                    "kind",
                                    "hexagons",
                                    "sharePct"
                                  ]
                                }
                              },
                              "fixed": {
                                "type": "boolean"
                              },
                              "mobileOnly": {
                                "type": "boolean"
                              },
                              "hexagons": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "sharePct": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "name": {
                                "type": "string"
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "note": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "provider",
                              "technologies",
                              "fixed",
                              "mobileOnly",
                              "hexagons",
                              "sharePct",
                              "name",
                              "url",
                              "note"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "provider": null,
                          "technologies": [
                            {
                              "technology": null,
                              "label": null,
                              "kind": "string",
                              "hexagons": null,
                              "sharePct": 0
                            }
                          ],
                          "fixed": false,
                          "mobileOnly": false,
                          "hexagons": null,
                          "sharePct": 0,
                          "name": "string",
                          "url": "https://example.org/",
                          "note": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/internet/providers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/internet/neighbourhoods": {
      "get": {
        "operationId": "get-internet-neighbourhoods",
        "tags": [
          "Living"
        ],
        "summary": "Home internet by neighbourhood: providers reporting fibre and cable, and how many home and mobile providers",
        "description": "One row per neighbourhood that overlaps the broadband hexagons. Availability is as reported by providers to Innovation, Science and Economic Development Canada for hexagons of about 25 km²; a provider listed in a hexagon may not reach every street or home in it. It is not a guarantee of service: check your address with the provider.\n\nExample: `/api/v1/internet/neighbourhoods`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ slug, name, href, fibre: [provider], cable: [provider], fixedProviders, mobileProviders }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "href": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "fibre": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "cable": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "fixedProviders": {
                                "type": "number"
                              },
                              "mobileProviders": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "slug",
                              "name",
                              "href",
                              "fibre",
                              "cable",
                              "fixedProviders",
                              "mobileProviders"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "slug": "string",
                          "name": "string",
                          "href": "https://example.org/",
                          "fibre": [
                            "string"
                          ],
                          "cable": [
                            "string"
                          ],
                          "fixedProviders": 0,
                          "mobileProviders": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/internet/neighbourhoods",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/development": {
      "get": {
        "operationId": "get-development",
        "tags": [
          "City data"
        ],
        "summary": "Building permits, rezonings, development permits and subdivisions, searchable by street",
        "description": "Every folder in the City’s open data (building permits since 2016 and planning applications since 2012), refreshed daily, newest first. `open=true` keeps folders still moving through the City’s process (new, in progress, on hold, active). Plumbing and sign permits are left out unless asked for with `category` or `minor=true`. Status changes the job has seen are in `previousStatus` and `statusChangedAt`.\n\nExample: `/api/v1/development`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Street or address words, or a folder number.",
            "schema": {
              "type": "string",
              "examples": [
                "Massey"
              ]
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "building, planning or subdivision.",
            "schema": {
              "type": "string",
              "enum": [
                "building",
                "planning",
                "subdivision"
              ]
            }
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "One of single-family, multi-family, commercial, plumbing, demolition, sign, rezoning, variance, ocp, development-permit, subdivision, other.",
            "schema": {
              "type": "string",
              "examples": [
                "rezoning"
              ]
            }
          },
          {
            "name": "open",
            "in": "query",
            "required": false,
            "description": "Only folders still in progress.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "work",
            "in": "query",
            "required": false,
            "description": "Building permits only: new (new building) or addition (additions, alterations, suites, garages).",
            "schema": {
              "type": "string",
              "enum": [
                "new",
                "addition"
              ]
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Approved or applied on or after this date (YYYY-MM-DD).",
            "schema": {
              "type": "string",
              "examples": [
                "2026-01-01"
              ]
            }
          },
          {
            "name": "minor",
            "in": "query",
            "required": false,
            "description": "Include plumbing and sign permits.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ folder, kind, type, category, categoryLabel, work, subject, status, statusLabel, open, address, street, value, appliedOn, approvedOn, completedOn }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "folder": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "building"
                                  },
                                  {
                                    "type": "string",
                                    "const": "planning"
                                  },
                                  {
                                    "type": "string",
                                    "const": "subdivision"
                                  }
                                ]
                              },
                              "type": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "categoryLabel": {
                                "type": "string"
                              },
                              "work": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "string",
                                    "const": "addition"
                                  },
                                  {
                                    "type": "string",
                                    "const": "new"
                                  }
                                ]
                              },
                              "subject": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "status": {
                                "type": "string"
                              },
                              "statusLabel": {
                                "type": "string"
                              },
                              "open": {
                                "type": "boolean"
                              },
                              "previousStatus": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "statusChangedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "street": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "value": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "appliedOn": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "approvedOn": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "completedOn": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "firstSeen": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "folder",
                              "kind",
                              "type",
                              "category",
                              "categoryLabel",
                              "work",
                              "subject",
                              "status",
                              "statusLabel",
                              "open",
                              "previousStatus",
                              "statusChangedAt",
                              "address",
                              "street",
                              "value",
                              "appliedOn",
                              "approvedOn",
                              "completedOn",
                              "firstSeen"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "folder": "string",
                          "kind": "building",
                          "type": "string",
                          "category": "string",
                          "categoryLabel": "string",
                          "work": "addition",
                          "subject": "string",
                          "status": "string",
                          "statusLabel": "string",
                          "open": false,
                          "previousStatus": "string",
                          "statusChangedAt": "2026-01-01T00:00:00Z",
                          "address": "string",
                          "street": "string",
                          "value": 0,
                          "appliedOn": "string",
                          "approvedOn": "string",
                          "completedOn": "string",
                          "firstSeen": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/development",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/development/summary": {
      "get": {
        "operationId": "get-development-summary",
        "tags": [
          "City data"
        ],
        "summary": "Building permits so far this year against the same stretch of last year, and open planning applications",
        "description": "Example: `/api/v1/development/summary`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ yearToDate: { current, previous }, openApplications: [{ category, label, count }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "yearToDate": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "current": {
                                      "type": "object",
                                      "properties": {
                                        "year": {
                                          "type": "number"
                                        },
                                        "through": {
                                          "type": "string"
                                        },
                                        "permits": {
                                          "type": "number"
                                        },
                                        "value": {
                                          "type": "number"
                                        },
                                        "newHouses": {
                                          "type": "number"
                                        },
                                        "newMultiFamily": {
                                          "type": "number"
                                        },
                                        "newCommercial": {
                                          "type": "number"
                                        },
                                        "demolitions": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "year",
                                        "through",
                                        "permits",
                                        "value",
                                        "newHouses",
                                        "newMultiFamily",
                                        "newCommercial",
                                        "demolitions"
                                      ]
                                    },
                                    "previous": {
                                      "type": "object",
                                      "properties": {
                                        "year": {
                                          "type": "number"
                                        },
                                        "through": {
                                          "type": "string"
                                        },
                                        "permits": {
                                          "type": "number"
                                        },
                                        "value": {
                                          "type": "number"
                                        },
                                        "newHouses": {
                                          "type": "number"
                                        },
                                        "newMultiFamily": {
                                          "type": "number"
                                        },
                                        "newCommercial": {
                                          "type": "number"
                                        },
                                        "demolitions": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "year",
                                        "through",
                                        "permits",
                                        "value",
                                        "newHouses",
                                        "newMultiFamily",
                                        "newCommercial",
                                        "demolitions"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "current",
                                    "previous"
                                  ]
                                }
                              ]
                            },
                            "openApplications": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "category": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "count": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "category",
                                  "label",
                                  "count"
                                ]
                              }
                            }
                          },
                          "required": [
                            "yearToDate",
                            "openApplications"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "yearToDate": {
                          "current": {
                            "year": 0,
                            "through": "string",
                            "permits": 0,
                            "value": 0,
                            "newHouses": 0,
                            "newMultiFamily": 0,
                            "newCommercial": 0,
                            "demolitions": 0
                          },
                          "previous": {
                            "year": 0,
                            "through": "string",
                            "permits": 0,
                            "value": 0,
                            "newHouses": 0,
                            "newMultiFamily": 0,
                            "newCommercial": 0,
                            "demolitions": 0
                          }
                        },
                        "openApplications": [
                          {
                            "category": "string",
                            "label": "string",
                            "count": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/development/summary",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/development/{folder}": {
      "get": {
        "operationId": "get-development-folder",
        "tags": [
          "City data"
        ],
        "summary": "One permit or application by City folder number",
        "description": "Example: `/api/v1/development/RZ100877`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "folder",
            "in": "path",
            "required": true,
            "description": "City folder number, e.g. RZ100877.",
            "schema": {
              "type": "string",
              "examples": [
                "RZ100877"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "folder": {
                              "type": "string"
                            },
                            "kind": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "building"
                                },
                                {
                                  "type": "string",
                                  "const": "planning"
                                },
                                {
                                  "type": "string",
                                  "const": "subdivision"
                                }
                              ]
                            },
                            "type": {
                              "type": "string"
                            },
                            "category": {
                              "type": "string"
                            },
                            "categoryLabel": {
                              "type": "string"
                            },
                            "work": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "string",
                                  "const": "addition"
                                },
                                {
                                  "type": "string",
                                  "const": "new"
                                }
                              ]
                            },
                            "subject": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "status": {
                              "type": "string"
                            },
                            "statusLabel": {
                              "type": "string"
                            },
                            "open": {
                              "type": "boolean"
                            },
                            "previousStatus": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "statusChangedAt": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "address": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "street": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "value": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "appliedOn": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "approvedOn": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "completedOn": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "firstSeen": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "folder",
                            "kind",
                            "type",
                            "category",
                            "categoryLabel",
                            "work",
                            "subject",
                            "status",
                            "statusLabel",
                            "open",
                            "previousStatus",
                            "statusChangedAt",
                            "address",
                            "street",
                            "value",
                            "appliedOn",
                            "approvedOn",
                            "completedOn",
                            "firstSeen"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "folder": "string",
                        "kind": "building",
                        "type": "string",
                        "category": "string",
                        "categoryLabel": "string",
                        "work": "addition",
                        "subject": "string",
                        "status": "string",
                        "statusLabel": "string",
                        "open": false,
                        "previousStatus": "string",
                        "statusChangedAt": "2026-01-01T00:00:00Z",
                        "address": "string",
                        "street": "string",
                        "value": 0,
                        "appliedOn": "string",
                        "approvedOn": "string",
                        "completedOn": "string",
                        "firstSeen": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/development/{folder}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/emergency/evacuation": {
      "get": {
        "operationId": "get-emergency-evacuation",
        "tags": [
          "Emergency"
        ],
        "summary": "Pre-planned evacuation zones and evacuation assembly points in Prince George",
        "description": "The City’s evacuation zones (polygons, `layer: zone`) and response facilities (points, `layer: facility`: evacuation assembly points and the operations centre), refreshed daily. These are planning zones: an actual evacuation order or alert names the zones it covers (see /emergency/alerts). Use ?format=geojson for a map-ready FeatureCollection; `layer` filters.\n\nExample: `/api/v1/emergency/evacuation?format=geojson`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "layer",
            "in": "query",
            "required": false,
            "description": "`zone` or `facility`.",
            "schema": {
              "type": "string",
              "enum": [
                "zone",
                "facility"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "FeatureCollection of { id, layer, name, kind, address, tone, activated }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "const": "FeatureCollection"
                            },
                            "features": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "Feature"
                                  },
                                  "geometry": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "properties": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "layer": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "facility"
                                          },
                                          {
                                            "type": "string",
                                            "const": "zone"
                                          }
                                        ]
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "address": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "tone": {
                                        "type": "string"
                                      },
                                      "activated": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "layer",
                                      "name",
                                      "kind",
                                      "address",
                                      "tone",
                                      "activated"
                                    ]
                                  }
                                },
                                "required": [
                                  "type",
                                  "geometry",
                                  "properties"
                                ]
                              }
                            }
                          },
                          "required": [
                            "type",
                            "features"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "type": "FeatureCollection",
                        "features": [
                          {
                            "type": "Feature",
                            "geometry": null,
                            "properties": {
                              "id": "string",
                              "layer": "facility",
                              "name": "string",
                              "kind": "string",
                              "address": "string",
                              "tone": "string",
                              "activated": false
                            }
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/emergency/evacuation",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/emergency/zone": {
      "get": {
        "operationId": "get-emergency-zone",
        "tags": [
          "Emergency"
        ],
        "summary": "Which evacuation zone an address or point is in, and the nearest assembly points",
        "description": "Pass `address` (a street address in Prince George, located with the BC Address Geocoder) or `near=lat,lng`. Returns the pre-planned zone (or null outside every zone) and the three nearest evacuation assembly points with straight-line distance.\n\nExample: `/api/v1/emergency/zone?address=1100%20Patricia%20Blvd`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": false,
            "description": "Street address in Prince George.",
            "schema": {
              "type": "string",
              "examples": [
                "1100 Patricia Blvd"
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Point as `lat,lng`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ address, lat, lng, zone: { id, name } | null, assemblyPoints: [{ name, address, distanceKm, lat, lng }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "zone": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "name"
                                  ]
                                }
                              ]
                            },
                            "assemblyPoints": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "distanceKm": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "name",
                                  "kind",
                                  "address",
                                  "lat",
                                  "lng",
                                  "distanceKm"
                                ]
                              }
                            },
                            "lat": {
                              "type": "number"
                            },
                            "lng": {
                              "type": "number"
                            },
                            "address": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          },
                          "required": [
                            "zone",
                            "assemblyPoints"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "zone": {
                          "id": "string",
                          "name": "string"
                        },
                        "assemblyPoints": [
                          {
                            "name": "string",
                            "kind": "string",
                            "address": "string",
                            "lat": 0,
                            "lng": 0,
                            "distanceKm": 0
                          }
                        ],
                        "lat": 0,
                        "lng": 0,
                        "address": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/emergency/zone",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/emergency/departments": {
      "get": {
        "operationId": "get-emergency-departments",
        "tags": [
          "Emergency"
        ],
        "summary": "Emergency department status: open, closed overnight or temporarily closed",
        "description": "Northern Health’s published status for each emergency department and day health centre, checked every 10 minutes, with the time the status last changed and the published re-opening time. Empty (with `meta.permitted: false` and the source page link) while the publisher has not allowed reuse; check the page directly then.\n\nExample: `/api/v1/emergency/departments`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "nearby",
            "in": "query",
            "required": false,
            "description": "Only the region around the city.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "`hospital` or `health-centre`.",
            "schema": {
              "type": "string",
              "enum": [
                "hospital",
                "health-centre"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 100.",
            "schema": {
              "type": "integer",
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, kind, region, status, state (open|closed|interrupted|unknown), reopenAt, changedAt, nearby, home, url }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "health-centre"
                                  },
                                  {
                                    "type": "string",
                                    "const": "hospital"
                                  }
                                ]
                              },
                              "region": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "status": {
                                "type": "string"
                              },
                              "state": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "closed"
                                  },
                                  {
                                    "type": "string",
                                    "const": "interrupted"
                                  },
                                  {
                                    "type": "string",
                                    "const": "open"
                                  },
                                  {
                                    "type": "string",
                                    "const": "unknown"
                                  }
                                ]
                              },
                              "reopenAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "reopenLabel": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "changedAt": {
                                "type": "string"
                              },
                              "nearby": {
                                "type": "boolean"
                              },
                              "home": {
                                "type": "boolean"
                              },
                              "fetchedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "kind",
                              "region",
                              "url",
                              "status",
                              "state",
                              "reopenAt",
                              "reopenLabel",
                              "changedAt",
                              "nearby",
                              "home",
                              "fetchedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "kind": "health-centre",
                          "region": "string",
                          "url": "https://example.org/",
                          "status": "string",
                          "state": "closed",
                          "reopenAt": "2026-01-01T00:00:00Z",
                          "reopenLabel": "string",
                          "changedAt": "2026-01-01T00:00:00Z",
                          "nearby": false,
                          "home": false,
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/emergency/departments",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/emergency/departments/history": {
      "get": {
        "operationId": "get-emergency-departments-history",
        "tags": [
          "Emergency"
        ],
        "summary": "Emergency department status changes, newest first",
        "description": "Example: `/api/v1/emergency/departments/history`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "facility",
            "in": "query",
            "required": false,
            "description": "Facility id from /emergency/departments.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 500.",
            "schema": {
              "type": "integer",
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ facilityId, name, status, state, reopenAt, at }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonValue"
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        null
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/emergency/departments/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/facilities": {
      "get": {
        "operationId": "get-facilities",
        "tags": [
          "Community"
        ],
        "summary": "Public and community facilities in Prince George: city hall, pools, arenas, sport centres, libraries, community halls, event centres, theatres, galleries and museums",
        "description": "Hand-checked facts from each operator’s own pages (address, phone, amenities, published capacities, rental links, published hours), merged with what the daily job last read from those pages (drop-in schedules and fee tables). Hours appear only when the operator publishes them; `unknown` names the facts the operator does not publish. `openNow` is computed from the current published schedule or regular hours and ignores holidays. Types: city-hall, pool, spray-park, arena, sport, library, community-centre, hall, event-centre, theatre, arts, museum, park-venue.\n\nExample: `/api/v1/facilities?type=pool`\n\nCache: 900s.",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Facility type.",
            "schema": {
              "type": "string",
              "enum": [
                "city-hall",
                "pool",
                "spray-park",
                "arena",
                "sport",
                "library",
                "community-centre",
                "hall",
                "event-centre",
                "theatre",
                "arts",
                "museum",
                "park-venue"
              ]
            }
          },
          {
            "name": "rentable",
            "in": "query",
            "required": false,
            "description": "Only facilities with published rental or booking information.",
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name, aliases, operator, address, description and amenities.",
            "schema": {
              "type": "string",
              "examples": [
                "pool"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, slug, name, aka, type, typeLabel, url, operator, status, statusNote, address, lat, lng, phone, email, website, about, amenities, specs, capacity: [{ space, value, note }], rental: { url, note }, accessibility, parking, hours, hoursSeason, hoursNote, openNow, openLabel, dropIn, fees, schedule, feeTable, operatorPage, sources: [{ name, url, checked }], unknown, checked }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "aka": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "type": {
                                "type": "string"
                              },
                              "typeLabel": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "operator": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "owner": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "closed"
                                  },
                                  {
                                    "type": "string",
                                    "const": "open"
                                  },
                                  {
                                    "type": "string",
                                    "const": "renovation"
                                  },
                                  {
                                    "type": "string",
                                    "const": "seasonal"
                                  }
                                ]
                              },
                              "statusNote": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "email": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "about": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "amenities": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "specs": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "value"
                                  ]
                                }
                              },
                              "capacity": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "space": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "string"
                                    },
                                    "note": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "space",
                                    "value"
                                  ]
                                }
                              },
                              "rental": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "url": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "note": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    }
                                  }
                                ]
                              },
                              "accessibility": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "parking": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "hours": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "hoursSeason": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "hoursNote": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "openNow": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "closed"
                                  },
                                  {
                                    "type": "string",
                                    "const": "open"
                                  },
                                  {
                                    "type": "string",
                                    "const": "unknown"
                                  }
                                ]
                              },
                              "openLabel": {
                                "type": "string"
                              },
                              "dropIn": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "activity": {
                                      "type": "string"
                                    },
                                    "when": {
                                      "type": "string"
                                    },
                                    "fee": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "activity",
                                    "when"
                                  ]
                                }
                              },
                              "fees": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "value": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "value"
                                  ]
                                }
                              },
                              "schedule": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "title": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "from": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "to": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "current": {
                                        "type": "boolean"
                                      },
                                      "notes": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "days": {
                                        "type": "object",
                                        "additionalProperties": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "activity": {
                                                "type": "string"
                                              },
                                              "ranges": {
                                                "type": "array",
                                                "items": {
                                                  "type": "array",
                                                  "prefixItems": [
                                                    {
                                                      "type": "string"
                                                    },
                                                    {
                                                      "type": "string"
                                                    }
                                                  ],
                                                  "minItems": 2,
                                                  "maxItems": 2
                                                }
                                              }
                                            },
                                            "required": [
                                              "activity",
                                              "ranges"
                                            ]
                                          }
                                        }
                                      },
                                      "sourceUrl": {
                                        "type": "string"
                                      },
                                      "fetchedAt": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "title",
                                      "from",
                                      "to",
                                      "current",
                                      "notes",
                                      "days",
                                      "sourceUrl",
                                      "fetchedAt"
                                    ]
                                  }
                                ]
                              },
                              "feeTable": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "rows": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "heading": {
                                              "type": [
                                                "null",
                                                "string"
                                              ]
                                            },
                                            "label": {
                                              "type": "string"
                                            },
                                            "fees": {
                                              "type": "object",
                                              "additionalProperties": {
                                                "type": "string"
                                              }
                                            }
                                          },
                                          "required": [
                                            "heading",
                                            "label",
                                            "fees"
                                          ]
                                        }
                                      },
                                      "sourceUrl": {
                                        "type": "string"
                                      },
                                      "fetchedAt": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "rows",
                                      "sourceUrl",
                                      "fetchedAt"
                                    ]
                                  }
                                ]
                              },
                              "operatorPage": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "url": {
                                        "type": "string"
                                      },
                                      "address": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phone": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "email": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "fetchedAt": {
                                        "type": "string"
                                      },
                                      "ok": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "url",
                                      "address",
                                      "phone",
                                      "email",
                                      "fetchedAt",
                                      "ok"
                                    ]
                                  }
                                ]
                              },
                              "sources": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "checked": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                }
                              },
                              "unknown": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "checked": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "slug",
                              "name",
                              "aka",
                              "type",
                              "typeLabel",
                              "url",
                              "operator",
                              "owner",
                              "statusNote",
                              "address",
                              "lat",
                              "lng",
                              "phone",
                              "email",
                              "website",
                              "about",
                              "amenities",
                              "specs",
                              "capacity",
                              "rental",
                              "accessibility",
                              "parking",
                              "hours",
                              "hoursSeason",
                              "hoursNote",
                              "openNow",
                              "openLabel",
                              "dropIn",
                              "fees",
                              "schedule",
                              "feeTable",
                              "operatorPage",
                              "sources",
                              "unknown",
                              "checked"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "slug": "string",
                          "name": "string",
                          "aka": [
                            "string"
                          ],
                          "type": "string",
                          "typeLabel": "string",
                          "url": "https://example.org/",
                          "operator": "string",
                          "owner": "string",
                          "status": "closed",
                          "statusNote": "string",
                          "address": "string",
                          "lat": 0,
                          "lng": 0,
                          "phone": "string",
                          "email": "string",
                          "website": "https://example.org/",
                          "about": "string",
                          "amenities": [
                            "string"
                          ],
                          "specs": [
                            {
                              "label": "string",
                              "value": "string"
                            }
                          ],
                          "capacity": [
                            {
                              "space": "string",
                              "value": "string",
                              "note": "string"
                            }
                          ],
                          "rental": {
                            "url": "https://example.org/",
                            "note": "string"
                          },
                          "accessibility": [
                            "string"
                          ],
                          "parking": "string",
                          "hours": "string",
                          "hoursSeason": "string",
                          "hoursNote": "string",
                          "openNow": "closed",
                          "openLabel": "string",
                          "dropIn": [
                            {
                              "activity": "string",
                              "when": "string",
                              "fee": "string"
                            }
                          ],
                          "fees": [
                            {
                              "label": "string",
                              "value": "string"
                            }
                          ],
                          "schedule": {
                            "title": "string",
                            "from": "string",
                            "to": "string",
                            "current": false,
                            "notes": [
                              "string"
                            ],
                            "days": {},
                            "sourceUrl": "https://example.org/",
                            "fetchedAt": "2026-01-01T00:00:00Z"
                          },
                          "feeTable": {
                            "rows": [
                              {
                                "heading": "string",
                                "label": "string",
                                "fees": {}
                              }
                            ],
                            "sourceUrl": "https://example.org/",
                            "fetchedAt": "2026-01-01T00:00:00Z"
                          },
                          "operatorPage": {
                            "url": "https://example.org/",
                            "address": "string",
                            "phone": "string",
                            "email": "string",
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "ok": false
                          },
                          "sources": [
                            {
                              "name": "string",
                              "url": "https://example.org/",
                              "checked": "string"
                            }
                          ],
                          "unknown": [
                            "string"
                          ],
                          "checked": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/facilities",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/facilities/{slug}": {
      "get": {
        "operationId": "get-facilities-slug",
        "tags": [
          "Community"
        ],
        "summary": "One facility by slug, with the upcoming events listed there",
        "description": "Example: `/api/v1/facilities/canfor-leisure-pool`\n\nCache: 900s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Facility slug (see /facilities).",
            "schema": {
              "type": "string",
              "examples": [
                "canfor-leisure-pool"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ ...facility, events: [{ title, start, end, venue, url, sourceUrl }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "events": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "title": {
                                    "type": "string"
                                  },
                                  "start": {
                                    "type": "string"
                                  },
                                  "end": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "title",
                                  "start",
                                  "end",
                                  "venue",
                                  "url",
                                  "sourceUrl"
                                ]
                              }
                            },
                            "id": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "aka": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "type": {
                              "type": "string"
                            },
                            "typeLabel": {
                              "type": "string"
                            },
                            "url": {
                              "type": "string"
                            },
                            "operator": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "owner": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "status": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "closed"
                                },
                                {
                                  "type": "string",
                                  "const": "open"
                                },
                                {
                                  "type": "string",
                                  "const": "renovation"
                                },
                                {
                                  "type": "string",
                                  "const": "seasonal"
                                }
                              ]
                            },
                            "statusNote": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "address": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "lat": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "lng": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "phone": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "email": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "website": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "about": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "amenities": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "specs": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "value"
                                ]
                              }
                            },
                            "capacity": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "space": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  },
                                  "note": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "space",
                                  "value"
                                ]
                              }
                            },
                            "rental": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "note": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  }
                                }
                              ]
                            },
                            "accessibility": {
                              "anyOf": [
                                {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "parking": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "hours": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "hoursSeason": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "hoursNote": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "openNow": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "closed"
                                },
                                {
                                  "type": "string",
                                  "const": "open"
                                },
                                {
                                  "type": "string",
                                  "const": "unknown"
                                }
                              ]
                            },
                            "openLabel": {
                              "type": "string"
                            },
                            "dropIn": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "activity": {
                                    "type": "string"
                                  },
                                  "when": {
                                    "type": "string"
                                  },
                                  "fee": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "activity",
                                  "when"
                                ]
                              }
                            },
                            "fees": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "value"
                                ]
                              }
                            },
                            "schedule": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "title": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "from": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "to": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "current": {
                                      "type": "boolean"
                                    },
                                    "notes": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "days": {
                                      "type": "object",
                                      "additionalProperties": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "activity": {
                                              "type": "string"
                                            },
                                            "ranges": {
                                              "type": "array",
                                              "items": {
                                                "type": "array",
                                                "prefixItems": [
                                                  {
                                                    "type": "string"
                                                  },
                                                  {
                                                    "type": "string"
                                                  }
                                                ],
                                                "minItems": 2,
                                                "maxItems": 2
                                              }
                                            }
                                          },
                                          "required": [
                                            "activity",
                                            "ranges"
                                          ]
                                        }
                                      }
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "fetchedAt": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "title",
                                    "from",
                                    "to",
                                    "current",
                                    "notes",
                                    "days",
                                    "sourceUrl",
                                    "fetchedAt"
                                  ]
                                }
                              ]
                            },
                            "feeTable": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "rows": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "heading": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "label": {
                                            "type": "string"
                                          },
                                          "fees": {
                                            "type": "object",
                                            "additionalProperties": {
                                              "type": "string"
                                            }
                                          }
                                        },
                                        "required": [
                                          "heading",
                                          "label",
                                          "fees"
                                        ]
                                      }
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "fetchedAt": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "rows",
                                    "sourceUrl",
                                    "fetchedAt"
                                  ]
                                }
                              ]
                            },
                            "operatorPage": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string"
                                    },
                                    "address": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "phone": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "email": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "fetchedAt": {
                                      "type": "string"
                                    },
                                    "ok": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "address",
                                    "phone",
                                    "email",
                                    "fetchedAt",
                                    "ok"
                                  ]
                                }
                              ]
                            },
                            "sources": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "checked": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              }
                            },
                            "unknown": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "checked": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          },
                          "required": [
                            "events",
                            "id",
                            "slug",
                            "name",
                            "aka",
                            "type",
                            "typeLabel",
                            "url",
                            "operator",
                            "owner",
                            "statusNote",
                            "address",
                            "lat",
                            "lng",
                            "phone",
                            "email",
                            "website",
                            "about",
                            "amenities",
                            "specs",
                            "capacity",
                            "rental",
                            "accessibility",
                            "parking",
                            "hours",
                            "hoursSeason",
                            "hoursNote",
                            "openNow",
                            "openLabel",
                            "dropIn",
                            "fees",
                            "schedule",
                            "feeTable",
                            "operatorPage",
                            "sources",
                            "unknown",
                            "checked"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "events": [
                          {
                            "title": "string",
                            "start": "2026-01-01T00:00:00Z",
                            "end": "2026-01-01T00:00:00Z",
                            "venue": "string",
                            "url": "https://example.org/",
                            "sourceUrl": "https://example.org/"
                          }
                        ],
                        "id": "string",
                        "slug": "string",
                        "name": "string",
                        "aka": [
                          "string"
                        ],
                        "type": "string",
                        "typeLabel": "string",
                        "url": "https://example.org/",
                        "operator": "string",
                        "owner": "string",
                        "status": "closed",
                        "statusNote": "string",
                        "address": "string",
                        "lat": 0,
                        "lng": 0,
                        "phone": "string",
                        "email": "string",
                        "website": "https://example.org/",
                        "about": "string",
                        "amenities": [
                          "string"
                        ],
                        "specs": [
                          {
                            "label": "string",
                            "value": "string"
                          }
                        ],
                        "capacity": [
                          {
                            "space": "string",
                            "value": "string",
                            "note": "string"
                          }
                        ],
                        "rental": {
                          "url": "https://example.org/",
                          "note": "string"
                        },
                        "accessibility": [
                          "string"
                        ],
                        "parking": "string",
                        "hours": "string",
                        "hoursSeason": "string",
                        "hoursNote": "string",
                        "openNow": "closed",
                        "openLabel": "string",
                        "dropIn": [
                          {
                            "activity": "string",
                            "when": "string",
                            "fee": "string"
                          }
                        ],
                        "fees": [
                          {
                            "label": "string",
                            "value": "string"
                          }
                        ],
                        "schedule": {
                          "title": "string",
                          "from": "string",
                          "to": "string",
                          "current": false,
                          "notes": [
                            "string"
                          ],
                          "days": {},
                          "sourceUrl": "https://example.org/",
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        },
                        "feeTable": {
                          "rows": [
                            {
                              "heading": "string",
                              "label": "string",
                              "fees": {}
                            }
                          ],
                          "sourceUrl": "https://example.org/",
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        },
                        "operatorPage": {
                          "url": "https://example.org/",
                          "address": "string",
                          "phone": "string",
                          "email": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "ok": false
                        },
                        "sources": [
                          {
                            "name": "string",
                            "url": "https://example.org/",
                            "checked": "string"
                          }
                        ],
                        "unknown": [
                          "string"
                        ],
                        "checked": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/facilities/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/food-trucks": {
      "get": {
        "operationId": "get-food-trucks",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "Food trucks and mobile food vendors in Prince George: who they are, cuisine and their own contact links (no live locations)",
        "description": "Discovered daily in the municipal business licence data (licences for food trucks, food trailers, concession stands and mobile food vendors) and merged with a hand-checked list. `status`: licensed (a current licence), expired (the licence lapsed), listed (named by an official listing such as the tourism office, with no licence on record here: it may not be operating). Contacts and social links only as the business or an official listing publishes them (`contactSourceUrl`). Never locations or schedules: follow the truck’s own page for where it is today.\n\nExample: `/api/v1/food-trucks`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "licensed, expired or listed.",
            "schema": {
              "type": "string",
              "enum": [
                "licensed",
                "expired",
                "listed"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name, cuisine and description.",
            "schema": {
              "type": "string",
              "examples": [
                "bannock"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, status, cuisine, about, licence: { number, description, category, expires, since, outOfTown }, directoryUrl, links: { website, facebook, instagram }, phone, email, contactSourceUrl, listedBy }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "directoryUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "expired"
                                  },
                                  {
                                    "type": "string",
                                    "const": "licensed"
                                  },
                                  {
                                    "type": "string",
                                    "const": "listed"
                                  }
                                ]
                              },
                              "cuisine": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "about": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licence": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "number": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "category": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "expires": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "since": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "outOfTown": {
                                        "type": "boolean"
                                      }
                                    },
                                    "required": [
                                      "number",
                                      "description",
                                      "category",
                                      "expires",
                                      "since",
                                      "outOfTown"
                                    ]
                                  }
                                ]
                              },
                              "links": {
                                "type": "object",
                                "properties": {
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "facebook": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "instagram": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "website",
                                  "facebook",
                                  "instagram"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "email": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "contactSourceUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "listedBy": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  }
                                ]
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "directoryUrl",
                              "id",
                              "name",
                              "status",
                              "cuisine",
                              "about",
                              "licence",
                              "links",
                              "phone",
                              "email",
                              "contactSourceUrl",
                              "listedBy",
                              "firstSeen",
                              "fetchedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "directoryUrl": "https://example.org/",
                          "id": "string",
                          "name": "string",
                          "status": "expired",
                          "cuisine": "string",
                          "about": "string",
                          "licence": {
                            "number": "string",
                            "description": "string",
                            "category": "string",
                            "expires": "2026-01-01T00:00:00Z",
                            "since": "2026-01-01T00:00:00Z",
                            "outOfTown": false
                          },
                          "links": {
                            "website": "https://example.org/",
                            "facebook": "string",
                            "instagram": "string"
                          },
                          "phone": "string",
                          "email": "string",
                          "contactSourceUrl": "https://example.org/",
                          "listedBy": {
                            "name": "string",
                            "url": "https://example.org/"
                          },
                          "firstSeen": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/food-trucks",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/food-trucks/{id}": {
      "get": {
        "operationId": "get-food-trucks-id",
        "tags": [
          "Food & nightlife"
        ],
        "summary": "One food truck",
        "description": "Example: `/api/v1/food-trucks/smokehouse-on-the-run`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Truck id (slug).",
            "schema": {
              "type": "string",
              "examples": [
                "smokehouse-on-the-run"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "status": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "expired"
                                },
                                {
                                  "type": "string",
                                  "const": "licensed"
                                },
                                {
                                  "type": "string",
                                  "const": "listed"
                                }
                              ]
                            },
                            "cuisine": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "about": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "licence": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "number": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "category": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "expires": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "since": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "outOfTown": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "number",
                                    "description",
                                    "category",
                                    "expires",
                                    "since",
                                    "outOfTown"
                                  ]
                                }
                              ]
                            },
                            "directoryUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "links": {
                              "type": "object",
                              "properties": {
                                "website": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "facebook": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "instagram": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "website",
                                "facebook",
                                "instagram"
                              ]
                            },
                            "phone": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "email": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "contactSourceUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "listedBy": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                }
                              ]
                            },
                            "firstSeen": {
                              "type": "string"
                            },
                            "fetchedAt": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "name",
                            "status",
                            "cuisine",
                            "about",
                            "licence",
                            "directoryUrl",
                            "links",
                            "phone",
                            "email",
                            "contactSourceUrl",
                            "listedBy",
                            "firstSeen",
                            "fetchedAt"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "id": "string",
                        "name": "string",
                        "status": "expired",
                        "cuisine": "string",
                        "about": "string",
                        "licence": {
                          "number": "string",
                          "description": "string",
                          "category": "string",
                          "expires": "2026-01-01T00:00:00Z",
                          "since": "2026-01-01T00:00:00Z",
                          "outOfTown": false
                        },
                        "directoryUrl": "https://example.org/",
                        "links": {
                          "website": "https://example.org/",
                          "facebook": "string",
                          "instagram": "string"
                        },
                        "phone": "string",
                        "email": "string",
                        "contactSourceUrl": "https://example.org/",
                        "listedBy": {
                          "name": "string",
                          "url": "https://example.org/"
                        },
                        "firstSeen": "string",
                        "fetchedAt": "2026-01-01T00:00:00Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/food-trucks/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/fuel/prices": {
      "get": {
        "operationId": "get-fuel-prices",
        "tags": [
          "Getting around"
        ],
        "summary": "Average pump prices in Prince George: regular, premium, diesel and auto propane, latest day and week, with the change and comparisons",
        "description": "City-wide average pump prices in cents per litre, taxes included: not the price at any one station. No open source publishes per-station prices. Daily figures are weekday survey averages; weeks run Wednesday to Tuesday. `elsewhere` compares the same day (or week) in other cities and the national average. History: /fuel/prices/history.\n\nExample: `/api/v1/fuel/prices`\n\nCache: 1800s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ location, note, products: [{ product, label, price, date, changeFromWeekBefore, vs<Location> (city minus that location, cents), unit, daily: { date, price, compareDate, change }, weekly: { weekEnding, price, change, yearAgo }, elsewhere: [{ location, price, date, difference }] }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "location": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "note": {
                              "type": "string"
                            },
                            "products": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "product": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "diesel"
                                      },
                                      {
                                        "type": "string",
                                        "const": "premium"
                                      },
                                      {
                                        "type": "string",
                                        "const": "propane"
                                      },
                                      {
                                        "type": "string",
                                        "const": "regular"
                                      }
                                    ]
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "price": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "date": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "changeFromWeekBefore": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "unit": {
                                    "type": "string",
                                    "const": "cents per litre"
                                  },
                                  "daily": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "date": {
                                            "type": "string"
                                          },
                                          "price": {
                                            "type": "number"
                                          },
                                          "compareDate": {
                                            "type": [
                                              "null",
                                              "string"
                                            ]
                                          },
                                          "change": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "date",
                                          "price",
                                          "compareDate",
                                          "change"
                                        ]
                                      }
                                    ],
                                    "description": "Latest daily city average and the change from about a week earlier."
                                  },
                                  "weekly": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "weekEnding": {
                                            "type": "string"
                                          },
                                          "price": {
                                            "type": "number"
                                          },
                                          "change": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "yearAgo": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "weekEnding",
                                          "price",
                                          "change",
                                          "yearAgo"
                                        ]
                                      }
                                    ],
                                    "description": "Latest complete week (Wednesday to Tuesday) and the change from the week before."
                                  },
                                  "elsewhere": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "location": {
                                          "type": "string"
                                        },
                                        "price": {
                                          "type": "number"
                                        },
                                        "date": {
                                          "type": "string"
                                        },
                                        "difference": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "location",
                                        "price",
                                        "date",
                                        "difference"
                                      ]
                                    },
                                    "description": "Same-day (or same-week) averages elsewhere, for comparison."
                                  }
                                },
                                "required": [
                                  "product",
                                  "label",
                                  "price",
                                  "date",
                                  "changeFromWeekBefore",
                                  "unit",
                                  "daily",
                                  "weekly",
                                  "elsewhere"
                                ]
                              }
                            }
                          },
                          "required": [
                            "location",
                            "note",
                            "products"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "location": "string",
                        "note": "string",
                        "products": [
                          {
                            "product": "diesel",
                            "label": "string",
                            "price": 0,
                            "date": "2026-01-01T00:00:00Z",
                            "changeFromWeekBefore": 0,
                            "unit": "cents per litre",
                            "daily": {
                              "date": "2026-01-01T00:00:00Z",
                              "price": 0,
                              "compareDate": "2026-01-01T00:00:00Z",
                              "change": 0
                            },
                            "weekly": {
                              "weekEnding": "string",
                              "price": 0,
                              "change": 0,
                              "yearAgo": 0
                            },
                            "elsewhere": [
                              {
                                "location": "string",
                                "price": 0,
                                "date": "2026-01-01T00:00:00Z",
                                "difference": 0
                              }
                            ]
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/fuel/prices",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/fuel/prices/history": {
      "get": {
        "operationId": "get-fuel-prices-history",
        "tags": [
          "Getting around"
        ],
        "summary": "Average pump price history: daily or weekly city averages for one product, for the city, comparison cities and Canada",
        "description": "City-wide average pump prices in cents per litre, taxes included: not the price at any one station. No open source publishes per-station prices. `freq=W` (default) is weekly averages since 2024 (the week in progress is marked `partial`); `freq=D` is daily, kept since the job started (NRCan itself shows only the last 60 days). Columns: price, taxes, marketing margin and refining margin (NRCan approximations), all cents per litre.\n\nExample: `/api/v1/fuel/prices/history?product=regular&freq=W&location=all&from=2026-06-01`\n\nCache: 1800s.",
        "parameters": [
          {
            "name": "product",
            "in": "query",
            "required": false,
            "description": "Fuel.",
            "schema": {
              "type": "string",
              "enum": [
                "regular",
                "premium",
                "diesel",
                "propane"
              ],
              "default": "regular",
              "examples": [
                "diesel"
              ]
            }
          },
          {
            "name": "freq",
            "in": "query",
            "required": false,
            "description": "D = daily, W = weekly (Wednesday to Tuesday).",
            "schema": {
              "type": "string",
              "enum": [
                "D",
                "W"
              ],
              "default": "W"
            }
          },
          {
            "name": "location",
            "in": "query",
            "required": false,
            "description": "Location id (see `locations` in meta) or `all`. Default: the city.",
            "schema": {
              "type": "string",
              "examples": [
                "all"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "First date, YYYY-MM-DD.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-01-01"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Last date, YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "period": {
                                "type": "string"
                              },
                              "price": {
                                "type": "number"
                              },
                              "taxes": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "marketing": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "refining": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "partial": {
                                "type": "boolean"
                              },
                              "location": {
                                "type": "string"
                              },
                              "locationId": {
                                "type": "number"
                              },
                              "product": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "diesel"
                                  },
                                  {
                                    "type": "string",
                                    "const": "premium"
                                  },
                                  {
                                    "type": "string",
                                    "const": "propane"
                                  },
                                  {
                                    "type": "string",
                                    "const": "regular"
                                  }
                                ]
                              },
                              "freq": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "period",
                              "price",
                              "taxes",
                              "marketing",
                              "refining",
                              "location",
                              "locationId",
                              "product",
                              "freq"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "period": "string",
                          "price": 0,
                          "taxes": 0,
                          "marketing": 0,
                          "refining": 0,
                          "partial": false,
                          "location": "string",
                          "locationId": 0,
                          "product": "diesel",
                          "freq": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/fuel/prices/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/fuel/stations": {
      "get": {
        "operationId": "get-fuel-stations",
        "tags": [
          "Getting around"
        ],
        "summary": "Gas stations, cardlocks, propane and car washes in Prince George, with brand, address, directions and the directory listing",
        "description": "From OpenStreetMap (amenity=fuel, amenity=car_wash) merged with the business directory and deduplicated. `fuels` lists extra fuels where OpenStreetMap or the business licence records them (diesel, premium, propane); absence means unknown, not unavailable. No prices per station. Same data as the map layers /maps/layers/fuel and /maps/layers/car-washes.\n\nExample: `/api/v1/fuel/stations?kind=fuel&limit=5`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "fuel (gas stations and cardlocks) or car-wash.",
            "schema": {
              "type": "string",
              "enum": [
                "fuel",
                "car-wash"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name, brand and address.",
            "schema": {
              "type": "string",
              "examples": [
                "Esso"
              ]
            }
          },
          {
            "name": "propane",
            "in": "query",
            "required": false,
            "description": "Only places recorded as selling propane.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" (adds `distanceM`).",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonValue"
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        null
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/fuel/stations",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/happening": {
      "get": {
        "operationId": "get-happening",
        "tags": [
          "Live conditions"
        ],
        "summary": "Everything happening in Prince George right now, in one list",
        "description": "Weather and air quality alerts, evacuation orders and alerts, nearby wildfires and fire bans, highway events (DriveBC), City street closures, power outages (BC Hydro), transit alerts, police news releases and emergency department interruptions, merged and refreshed every 5 minutes. Sorted warnings first, then advisories, then notices, newest first. `at` is the time the item is listed under (issued by the source, else first seen); `firstSeen` is when this site first saw it. `meta.sources` gives each source’s freshness: a source that is unavailable is not the same as nothing happening.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/happening`\n\nCache: 120s.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "One or more of evacuation, weather, air, wildfire, fire-ban, health, police, road, closure, power, transit (comma-separated).",
            "schema": {
              "type": "string",
              "examples": [
                "closure,power"
              ]
            }
          },
          {
            "name": "level",
            "in": "query",
            "required": false,
            "description": "`warning`, `advisory` or `info`.",
            "schema": {
              "type": "string",
              "enum": [
                "warning",
                "advisory",
                "info"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 300.",
            "schema": {
              "type": "integer",
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, kind, level, title, detail, area, distanceKm, url, source, issued, firstSeen, lastSeen, endedAt, active, at }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "air"
                                  },
                                  {
                                    "type": "string",
                                    "const": "closure"
                                  },
                                  {
                                    "type": "string",
                                    "const": "evacuation"
                                  },
                                  {
                                    "type": "string",
                                    "const": "fire-ban"
                                  },
                                  {
                                    "type": "string",
                                    "const": "health"
                                  },
                                  {
                                    "type": "string",
                                    "const": "police"
                                  },
                                  {
                                    "type": "string",
                                    "const": "power"
                                  },
                                  {
                                    "type": "string",
                                    "const": "road"
                                  },
                                  {
                                    "type": "string",
                                    "const": "transit"
                                  },
                                  {
                                    "type": "string",
                                    "const": "weather"
                                  },
                                  {
                                    "type": "string",
                                    "const": "wildfire"
                                  }
                                ]
                              },
                              "level": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "advisory"
                                  },
                                  {
                                    "type": "string",
                                    "const": "info"
                                  },
                                  {
                                    "type": "string",
                                    "const": "warning"
                                  }
                                ]
                              },
                              "title": {
                                "type": "string"
                              },
                              "detail": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "area": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "distanceKm": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "string"
                              },
                              "issued": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "lastSeen": {
                                "type": "string"
                              },
                              "endedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "active": {
                                "type": "boolean"
                              },
                              "at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "kind",
                              "level",
                              "title",
                              "detail",
                              "area",
                              "distanceKm",
                              "url",
                              "source",
                              "issued",
                              "firstSeen",
                              "lastSeen",
                              "endedAt",
                              "active",
                              "at"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "kind": "air",
                          "level": "advisory",
                          "title": "string",
                          "detail": "string",
                          "area": "string",
                          "distanceKm": 0,
                          "url": "https://example.org/",
                          "source": "string",
                          "issued": "2026-01-01T00:00:00Z",
                          "firstSeen": "string",
                          "lastSeen": "string",
                          "endedAt": "2026-01-01T00:00:00Z",
                          "active": false,
                          "at": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/happening",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/happening/ended": {
      "get": {
        "operationId": "get-happening-ended",
        "tags": [
          "Live conditions"
        ],
        "summary": "Alerts, closures and outages that ended recently",
        "description": "Items the sources stopped listing within the last `hours` (default 24, up to 720), newest first, with `firstSeen` and `endedAt`. Police releases are not included (they do not end).\n\nExample: `/api/v1/happening/ended`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "One or more of evacuation, weather, air, wildfire, fire-ban, health, police, road, closure, power, transit (comma-separated).",
            "schema": {
              "type": "string",
              "examples": [
                "closure,power"
              ]
            }
          },
          {
            "name": "level",
            "in": "query",
            "required": false,
            "description": "`warning`, `advisory` or `info`.",
            "schema": {
              "type": "string",
              "enum": [
                "warning",
                "advisory",
                "info"
              ]
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "description": "Look-back window, 1 to 720 hours.",
            "schema": {
              "type": "integer",
              "default": 24
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 300.",
            "schema": {
              "type": "integer",
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, kind, level, title, detail, area, distanceKm, url, source, issued, firstSeen, lastSeen, endedAt, active, at }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "air"
                                  },
                                  {
                                    "type": "string",
                                    "const": "closure"
                                  },
                                  {
                                    "type": "string",
                                    "const": "evacuation"
                                  },
                                  {
                                    "type": "string",
                                    "const": "fire-ban"
                                  },
                                  {
                                    "type": "string",
                                    "const": "health"
                                  },
                                  {
                                    "type": "string",
                                    "const": "police"
                                  },
                                  {
                                    "type": "string",
                                    "const": "power"
                                  },
                                  {
                                    "type": "string",
                                    "const": "road"
                                  },
                                  {
                                    "type": "string",
                                    "const": "transit"
                                  },
                                  {
                                    "type": "string",
                                    "const": "weather"
                                  },
                                  {
                                    "type": "string",
                                    "const": "wildfire"
                                  }
                                ]
                              },
                              "level": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "advisory"
                                  },
                                  {
                                    "type": "string",
                                    "const": "info"
                                  },
                                  {
                                    "type": "string",
                                    "const": "warning"
                                  }
                                ]
                              },
                              "title": {
                                "type": "string"
                              },
                              "detail": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "area": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "distanceKm": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": "string"
                              },
                              "issued": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "lastSeen": {
                                "type": "string"
                              },
                              "endedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "active": {
                                "type": "boolean"
                              },
                              "at": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "kind",
                              "level",
                              "title",
                              "detail",
                              "area",
                              "distanceKm",
                              "url",
                              "source",
                              "issued",
                              "firstSeen",
                              "lastSeen",
                              "endedAt",
                              "active",
                              "at"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "kind": "air",
                          "level": "advisory",
                          "title": "string",
                          "detail": "string",
                          "area": "string",
                          "distanceKm": 0,
                          "url": "https://example.org/",
                          "source": "string",
                          "issued": "2026-01-01T00:00:00Z",
                          "firstSeen": "string",
                          "lastSeen": "string",
                          "endedAt": "2026-01-01T00:00:00Z",
                          "active": false,
                          "at": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/happening/ended",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/holidays": {
      "get": {
        "operationId": "get-holidays",
        "tags": [
          "City"
        ],
        "summary": "Statutory holidays, with what changes in the city on each one (buses, garbage pickup)",
        "description": "Statutory holidays for BC (this year and next) from the Canada Holidays API, each with `changes`: how transit runs (from the BC Transit GTFS schedule) and whether each garbage zone’s pickup moves that week (from the City’s collection calendar, which rolls pickups back a day after a holiday). `status` values: transit none | sunday | saturday | normal | holiday | special | unknown; garbage normal | moved | none | unknown (unknown = the schedule for that date isn’t published yet). Refreshed daily.\n\nExample: `/api/v1/holidays`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Calendar year (default: from today on).",
            "schema": {
              "type": "integer",
              "examples": [
                2026
              ]
            }
          },
          {
            "name": "upcoming",
            "in": "query",
            "required": false,
            "description": "Only today and later (default true unless `year` is set).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 100.",
            "schema": {
              "type": "integer",
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ date, observed, name, nameFr, federal, weekday, daysAway, changes: [{ service, area, status, summary, detail, source, sourceUrl, license }] }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "date": {
                                "type": "string"
                              },
                              "observed": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "nameFr": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "federal": {
                                "type": "boolean"
                              },
                              "weekday": {
                                "type": "string"
                              },
                              "daysAway": {
                                "type": "number"
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceUrl": {
                                "type": "string"
                              },
                              "license": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": "string"
                              },
                              "changes": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "service": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "const": "garbage"
                                        },
                                        {
                                          "type": "string",
                                          "const": "transit"
                                        }
                                      ]
                                    },
                                    "area": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "status": {
                                      "type": "string"
                                    },
                                    "summary": {
                                      "type": "string"
                                    },
                                    "detail": {
                                      "anyOf": [
                                        {
                                          "type": "null"
                                        },
                                        {
                                          "type": "object",
                                          "additionalProperties": {
                                            "$ref": "#/components/schemas/JsonValue"
                                          }
                                        }
                                      ]
                                    },
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    },
                                    "license": {
                                      "type": "string"
                                    },
                                    "fetchedAt": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "service",
                                    "area",
                                    "status",
                                    "summary",
                                    "detail",
                                    "source",
                                    "sourceUrl",
                                    "license",
                                    "fetchedAt"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "date",
                              "observed",
                              "name",
                              "nameFr",
                              "federal",
                              "weekday",
                              "daysAway",
                              "source",
                              "sourceUrl",
                              "license",
                              "fetchedAt",
                              "changes"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "date": "2026-01-01T00:00:00Z",
                          "observed": "string",
                          "name": "string",
                          "nameFr": "string",
                          "federal": false,
                          "weekday": "string",
                          "daysAway": 0,
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "license": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "changes": [
                            {
                              "service": "garbage",
                              "area": "string",
                              "status": "string",
                              "summary": "string",
                              "detail": {},
                              "source": "string",
                              "sourceUrl": "https://example.org/",
                              "license": "string",
                              "fetchedAt": "2026-01-01T00:00:00Z"
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/holidays",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/holidays/next": {
      "get": {
        "operationId": "get-holidays-next",
        "tags": [
          "City"
        ],
        "summary": "Today’s or the next statutory holiday, with what changes",
        "description": "Example: `/api/v1/holidays/next`\n\nCache: 900s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "date": {
                                  "type": "string"
                                },
                                "observed": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "nameFr": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "federal": {
                                  "type": "boolean"
                                },
                                "weekday": {
                                  "type": "string"
                                },
                                "daysAway": {
                                  "type": "number"
                                },
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "license": {
                                  "type": "string"
                                },
                                "fetchedAt": {
                                  "type": "string"
                                },
                                "changes": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "service": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "garbage"
                                          },
                                          {
                                            "type": "string",
                                            "const": "transit"
                                          }
                                        ]
                                      },
                                      "area": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "status": {
                                        "type": "string"
                                      },
                                      "summary": {
                                        "type": "string"
                                      },
                                      "detail": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "object",
                                            "additionalProperties": {
                                              "$ref": "#/components/schemas/JsonValue"
                                            }
                                          }
                                        ]
                                      },
                                      "source": {
                                        "type": "string"
                                      },
                                      "sourceUrl": {
                                        "type": "string"
                                      },
                                      "license": {
                                        "type": "string"
                                      },
                                      "fetchedAt": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "service",
                                      "area",
                                      "status",
                                      "summary",
                                      "detail",
                                      "source",
                                      "sourceUrl",
                                      "license",
                                      "fetchedAt"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "date",
                                "observed",
                                "name",
                                "nameFr",
                                "federal",
                                "weekday",
                                "daysAway",
                                "source",
                                "sourceUrl",
                                "license",
                                "fetchedAt",
                                "changes"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "date": "2026-01-01T00:00:00Z",
                        "observed": "string",
                        "name": "string",
                        "nameFr": "string",
                        "federal": false,
                        "weekday": "string",
                        "daysAway": 0,
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "license": "string",
                        "fetchedAt": "2026-01-01T00:00:00Z",
                        "changes": [
                          {
                            "service": "garbage",
                            "area": "string",
                            "status": "string",
                            "summary": "string",
                            "detail": {},
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "license": "string",
                            "fetchedAt": "2026-01-01T00:00:00Z"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/holidays/next",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/holidays/calendar": {
      "get": {
        "operationId": "get-holidays-calendar",
        "tags": [
          "City"
        ],
        "summary": "Every holiday with a page, statutory or not: dates this year and next, and what changes",
        "description": "The holiday calendar behind /holidays/<slug>/: statutory holidays in BC and other days people plan around (Easter Monday, Boxing Day, Halloween, Mother’s Day, Lunar New Year...). Dates are computed from each day’s rule; `statutory` comes from the Canada Holidays API, checked against the province’s own list (`checks`). `labourCode`: a general holiday under the Canada Labour Code. `changes`: bus and garbage changes for the next occurrence where they are worked out.\n\nExample: `/api/v1/holidays/calendar`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ days: [{ slug, name, path, rule, labourCode, thisYear, nextYear, next: { year, date, observed, statutory, daysAway }, changes }], checks: [{ year, status, problems }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "days": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "path": {
                                    "type": "string"
                                  },
                                  "about": {
                                    "type": "string"
                                  },
                                  "rule": {
                                    "type": "string"
                                  },
                                  "labourCode": {
                                    "type": "boolean"
                                  },
                                  "thisYear": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "date": {
                                            "type": "string"
                                          },
                                          "observed": {
                                            "type": "string"
                                          },
                                          "statutory": {
                                            "type": "boolean"
                                          },
                                          "daysAway": {
                                            "type": "number"
                                          },
                                          "weekday": {
                                            "type": "string"
                                          },
                                          "from": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "const": "rule"
                                              },
                                              {
                                                "type": "string",
                                                "const": "source"
                                              }
                                            ],
                                            "description": "Where `statutory` and the date come from: the holidays table (official) or the calendar rule (fallback)."
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "date",
                                          "observed",
                                          "statutory",
                                          "daysAway",
                                          "weekday",
                                          "from"
                                        ]
                                      }
                                    ]
                                  },
                                  "nextYear": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "date": {
                                            "type": "string"
                                          },
                                          "observed": {
                                            "type": "string"
                                          },
                                          "statutory": {
                                            "type": "boolean"
                                          },
                                          "daysAway": {
                                            "type": "number"
                                          },
                                          "weekday": {
                                            "type": "string"
                                          },
                                          "from": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "const": "rule"
                                              },
                                              {
                                                "type": "string",
                                                "const": "source"
                                              }
                                            ],
                                            "description": "Where `statutory` and the date come from: the holidays table (official) or the calendar rule (fallback)."
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "date",
                                          "observed",
                                          "statutory",
                                          "daysAway",
                                          "weekday",
                                          "from"
                                        ]
                                      }
                                    ]
                                  },
                                  "next": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "date": {
                                            "type": "string"
                                          },
                                          "observed": {
                                            "type": "string"
                                          },
                                          "statutory": {
                                            "type": "boolean"
                                          },
                                          "daysAway": {
                                            "type": "number"
                                          },
                                          "weekday": {
                                            "type": "string"
                                          },
                                          "from": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "const": "rule"
                                              },
                                              {
                                                "type": "string",
                                                "const": "source"
                                              }
                                            ],
                                            "description": "Where `statutory` and the date come from: the holidays table (official) or the calendar rule (fallback)."
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "date",
                                          "observed",
                                          "statutory",
                                          "daysAway",
                                          "weekday",
                                          "from"
                                        ]
                                      }
                                    ]
                                  },
                                  "changes": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "service": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "garbage"
                                            },
                                            {
                                              "type": "string",
                                              "const": "transit"
                                            }
                                          ]
                                        },
                                        "area": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "status": {
                                          "type": "string"
                                        },
                                        "summary": {
                                          "type": "string"
                                        },
                                        "detail": {
                                          "anyOf": [
                                            {
                                              "type": "null"
                                            },
                                            {
                                              "type": "object",
                                              "additionalProperties": {
                                                "$ref": "#/components/schemas/JsonValue"
                                              }
                                            }
                                          ]
                                        },
                                        "source": {
                                          "type": "string"
                                        },
                                        "sourceUrl": {
                                          "type": "string"
                                        },
                                        "license": {
                                          "type": "string"
                                        },
                                        "fetchedAt": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "service",
                                        "area",
                                        "status",
                                        "summary",
                                        "detail",
                                        "source",
                                        "sourceUrl",
                                        "license",
                                        "fetchedAt"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "slug",
                                  "name",
                                  "path",
                                  "about",
                                  "rule",
                                  "labourCode",
                                  "thisYear",
                                  "nextYear",
                                  "next",
                                  "changes"
                                ]
                              }
                            },
                            "checks": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "year": {
                                    "type": "number"
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "match"
                                      },
                                      {
                                        "type": "string",
                                        "const": "mismatch"
                                      },
                                      {
                                        "type": "string",
                                        "const": "missing"
                                      }
                                    ]
                                  },
                                  "problems": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  },
                                  "checkedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "year",
                                  "status",
                                  "problems",
                                  "source",
                                  "sourceUrl",
                                  "checkedAt"
                                ]
                              }
                            }
                          },
                          "required": [
                            "days",
                            "checks"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "days": [
                          {
                            "slug": "string",
                            "name": "string",
                            "path": "string",
                            "about": "string",
                            "rule": "string",
                            "labourCode": false,
                            "thisYear": {
                              "year": 0,
                              "date": "2026-01-01T00:00:00Z",
                              "observed": "string",
                              "statutory": false,
                              "daysAway": 0,
                              "weekday": "string",
                              "from": "rule"
                            },
                            "nextYear": {
                              "year": 0,
                              "date": "2026-01-01T00:00:00Z",
                              "observed": "string",
                              "statutory": false,
                              "daysAway": 0,
                              "weekday": "string",
                              "from": "rule"
                            },
                            "next": {
                              "year": 0,
                              "date": "2026-01-01T00:00:00Z",
                              "observed": "string",
                              "statutory": false,
                              "daysAway": 0,
                              "weekday": "string",
                              "from": "rule"
                            },
                            "changes": [
                              {
                                "service": "garbage",
                                "area": "string",
                                "status": "string",
                                "summary": "string",
                                "detail": {},
                                "source": "string",
                                "sourceUrl": "https://example.org/",
                                "license": "string",
                                "fetchedAt": "2026-01-01T00:00:00Z"
                              }
                            ]
                          }
                        ],
                        "checks": [
                          {
                            "year": 0,
                            "status": "match",
                            "problems": [
                              "string"
                            ],
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "checkedAt": "2026-01-01T00:00:00Z"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/holidays/calendar",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/media": {
      "get": {
        "operationId": "get-media",
        "tags": [
          "Datasets"
        ],
        "summary": "Images hosted by PG Pulse: photo library, guide and dataset images, portraits, heritage photos and business screenshots, with alt text, credit and licence",
        "description": "Every editorial image the site shows, as served from our media library: responsive WebP variants (and the metadata-free original where kept), alt text, caption, credit, author, licence and the file page to acquire a licence. Reuse each image under its own licence and credit it as given. News and event thumbnails are not listed.\n\nExample: `/api/v1/media`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "description": "One of photos, guides, datasets, heritage, civic, businesses, artists, posts, ads, uploads.",
            "schema": {
              "type": "string",
              "enum": [
                "photos",
                "guides",
                "datasets",
                "heritage",
                "civic",
                "businesses",
                "artists",
                "posts",
                "ads",
                "uploads"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in alt text, caption and credit.",
            "schema": {
              "type": "string",
              "examples": [
                "river"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, kind, url, original, width, height, variants: [{ width, height, url }], alt, caption, credit, author, licence, licenceUrl, sourcePage, pages, updatedAt }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "number"
                              },
                              "kind": {
                                "type": "string"
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "original": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "width": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "height": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "variants": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "width": {
                                      "type": "number"
                                    },
                                    "height": {
                                      "type": "number"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "width",
                                    "height",
                                    "url"
                                  ]
                                }
                              },
                              "alt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "caption": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "credit": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "author": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licence": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licenceUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "sourcePage": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "pages": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "updatedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "kind",
                              "url",
                              "original",
                              "width",
                              "height",
                              "variants",
                              "alt",
                              "caption",
                              "credit",
                              "author",
                              "licence",
                              "licenceUrl",
                              "sourcePage",
                              "pages",
                              "updatedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": 0,
                          "kind": "string",
                          "url": "https://example.org/",
                          "original": "string",
                          "width": 0,
                          "height": 0,
                          "variants": [
                            {
                              "width": 0,
                              "height": 0,
                              "url": "https://example.org/"
                            }
                          ],
                          "alt": "string",
                          "caption": "string",
                          "credit": "string",
                          "author": "string",
                          "licence": "string",
                          "licenceUrl": "https://example.org/",
                          "sourcePage": "string",
                          "pages": [
                            "string"
                          ],
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/media",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/media/{id}": {
      "get": {
        "operationId": "get-media-id",
        "tags": [
          "Datasets"
        ],
        "summary": "One hosted image",
        "description": "Example: `/api/v1/media/1`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Media id.",
            "schema": {
              "type": "string",
              "examples": [
                "1"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "number"
                            },
                            "kind": {
                              "type": "string"
                            },
                            "url": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "original": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "width": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "height": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "variants": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "width": {
                                    "type": "number"
                                  },
                                  "height": {
                                    "type": "number"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "width",
                                  "height",
                                  "url"
                                ]
                              }
                            },
                            "alt": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "caption": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "credit": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "author": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "licence": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "licenceUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "sourcePage": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "pages": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "updatedAt": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "kind",
                            "url",
                            "original",
                            "width",
                            "height",
                            "variants",
                            "alt",
                            "caption",
                            "credit",
                            "author",
                            "licence",
                            "licenceUrl",
                            "sourcePage",
                            "pages",
                            "updatedAt"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "id": 0,
                        "kind": "string",
                        "url": "https://example.org/",
                        "original": "string",
                        "width": 0,
                        "height": 0,
                        "variants": [
                          {
                            "width": 0,
                            "height": 0,
                            "url": "https://example.org/"
                          }
                        ],
                        "alt": "string",
                        "caption": "string",
                        "credit": "string",
                        "author": "string",
                        "licence": "string",
                        "licenceUrl": "https://example.org/",
                        "sourcePage": "string",
                        "pages": [
                          "string"
                        ],
                        "updatedAt": "2026-01-01T00:00:00Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/media/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/fishing": {
      "get": {
        "operationId": "get-fishing",
        "tags": [
          "Outdoors"
        ],
        "summary": "Lakes and rivers near Prince George with the fish species recorded in them",
        "description": "Named waterbodies within the configured radius, from the province’s Known BC Fish Observations (all records, grouped by lake or river): `sportFish` (game species, listed first) and `otherSpecies`, how many records and the first and last year. What has been found there, not a stocking or catch report, and not the regulations: check the regional synopsis (`/fishing/guide`). `outdoorsPage` and `boatLaunches` come from the outdoors module when a lake matches. Refreshed weekly.\n\nExample: `/api/v1/fishing?type=lake&species=rainbow&limit=10`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "lake or river.",
            "schema": {
              "type": "string",
              "enum": [
                "lake",
                "river"
              ]
            }
          },
          {
            "name": "species",
            "in": "query",
            "required": false,
            "description": "Waters where this species has been recorded (part of the name).",
            "schema": {
              "type": "string",
              "examples": [
                "kokanee"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Part of the lake or river name.",
            "schema": {
              "type": "string",
              "examples": [
                "Cluculz"
              ]
            }
          },
          {
            "name": "sport",
            "in": "query",
            "required": false,
            "description": "Only waters with at least one sport fish recorded (default true).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "maxKm",
            "in": "query",
            "required": false,
            "description": "Only waters within this many km of the city centre.",
            "schema": {
              "type": "number",
              "examples": [
                30
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" (adds `distanceKm`).",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, slug, name, type, sportFish, otherSpecies, records, firstYear, lastYear, lat, lng, km, outdoorsPage, boatLaunches: [{ name, page, km }] }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "type": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "lake"
                                  },
                                  {
                                    "type": "string",
                                    "const": "other"
                                  },
                                  {
                                    "type": "string",
                                    "const": "river"
                                  }
                                ]
                              },
                              "sportFish": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "otherSpecies": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "records": {
                                "type": "number"
                              },
                              "firstYear": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lastYear": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "km": {
                                "type": "number"
                              },
                              "outdoorsPage": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "boatLaunches": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "page": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "km": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "page",
                                    "km"
                                  ]
                                }
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceUrl": {
                                "type": "string"
                              },
                              "license": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": "string"
                              },
                              "distanceKm": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "id",
                              "slug",
                              "name",
                              "type",
                              "sportFish",
                              "otherSpecies",
                              "records",
                              "firstYear",
                              "lastYear",
                              "lat",
                              "lng",
                              "km",
                              "outdoorsPage",
                              "boatLaunches",
                              "source",
                              "sourceUrl",
                              "license",
                              "fetchedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "slug": "string",
                          "name": "string",
                          "type": "lake",
                          "sportFish": [
                            "string"
                          ],
                          "otherSpecies": [
                            "string"
                          ],
                          "records": 0,
                          "firstYear": 0,
                          "lastYear": 0,
                          "lat": 0,
                          "lng": 0,
                          "km": 0,
                          "outdoorsPage": "string",
                          "boatLaunches": [
                            {
                              "name": "string",
                              "page": "https://example.org/",
                              "km": 0
                            }
                          ],
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "license": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "distanceKm": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/fishing",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/fishing/species": {
      "get": {
        "operationId": "get-fishing-species",
        "tags": [
          "Outdoors"
        ],
        "summary": "Sport fish recorded near the city, with how many lakes and rivers have each",
        "description": "Example: `/api/v1/fishing/species`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "species": {
                                "type": "string"
                              },
                              "waters": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "species",
                              "waters"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "species": "string",
                          "waters": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/fishing/species",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/fishing/guide": {
      "get": {
        "operationId": "get-fishing-guide",
        "tags": [
          "Outdoors"
        ],
        "summary": "Fishing: regulation region, licence and regulation links, key dates, safety links and tackle shops",
        "description": "Official links only: the regulations are never copied. `dates` lists published dates still current. `shops` are tackle and outdoor stores (hand-checked ones first, then directory listings whose own categories say fishing).\n\nExample: `/api/v1/fishing/guide`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "region": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "name",
                                    "url"
                                  ]
                                }
                              ]
                            },
                            "office": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "address": {
                                      "type": "string"
                                    },
                                    "phone": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "address",
                                    "phone",
                                    "sourceUrl"
                                  ]
                                }
                              ]
                            },
                            "links": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "note": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            },
                            "dates": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "date": {
                                    "type": "string"
                                  },
                                  "until": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "date",
                                  "sourceUrl"
                                ]
                              }
                            },
                            "shops": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "kinds": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "about": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "from": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "curated"
                                      },
                                      {
                                        "type": "string",
                                        "const": "directory"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "name",
                                  "kinds",
                                  "about",
                                  "address",
                                  "phone",
                                  "website",
                                  "url",
                                  "sourceUrl",
                                  "from"
                                ]
                              }
                            }
                          },
                          "required": [
                            "region",
                            "office",
                            "links",
                            "dates",
                            "shops"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "region": {
                          "id": "string",
                          "name": "string",
                          "url": "https://example.org/",
                          "sourceUrl": "https://example.org/"
                        },
                        "office": {
                          "name": "string",
                          "address": "string",
                          "phone": "string",
                          "sourceUrl": "https://example.org/"
                        },
                        "links": [
                          {
                            "id": "string",
                            "group": "string",
                            "label": "string",
                            "url": "https://example.org/",
                            "note": "string"
                          }
                        ],
                        "dates": [
                          {
                            "id": "string",
                            "label": "string",
                            "date": "2026-01-01T00:00:00Z",
                            "until": "2026-01-01T00:00:00Z",
                            "sourceUrl": "https://example.org/"
                          }
                        ],
                        "shops": [
                          {
                            "name": "string",
                            "kinds": [
                              "string"
                            ],
                            "about": "string",
                            "address": "string",
                            "phone": "string",
                            "website": "https://example.org/",
                            "url": "https://example.org/",
                            "sourceUrl": "https://example.org/",
                            "from": "curated"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/fishing/guide",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/fishing/{slug}": {
      "get": {
        "operationId": "get-fishing-slug",
        "tags": [
          "Outdoors"
        ],
        "summary": "One lake or river and the fish recorded in it",
        "description": "Example: `/api/v1/fishing/cluculz-lake`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Water slug from /fishing.",
            "schema": {
              "type": "string",
              "examples": [
                "cluculz-lake"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "type": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "lake"
                                },
                                {
                                  "type": "string",
                                  "const": "other"
                                },
                                {
                                  "type": "string",
                                  "const": "river"
                                }
                              ]
                            },
                            "sportFish": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "otherSpecies": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "records": {
                              "type": "number"
                            },
                            "firstYear": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "lastYear": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "lat": {
                              "type": "number"
                            },
                            "lng": {
                              "type": "number"
                            },
                            "km": {
                              "type": "number"
                            },
                            "outdoorsPage": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "boatLaunches": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "page": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "km": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "name",
                                  "page",
                                  "km"
                                ]
                              }
                            },
                            "source": {
                              "type": "string"
                            },
                            "sourceUrl": {
                              "type": "string"
                            },
                            "license": {
                              "type": "string"
                            },
                            "fetchedAt": {
                              "type": "string"
                            },
                            "distanceKm": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "id",
                            "slug",
                            "name",
                            "type",
                            "sportFish",
                            "otherSpecies",
                            "records",
                            "firstYear",
                            "lastYear",
                            "lat",
                            "lng",
                            "km",
                            "outdoorsPage",
                            "boatLaunches",
                            "source",
                            "sourceUrl",
                            "license",
                            "fetchedAt"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "id": "string",
                        "slug": "string",
                        "name": "string",
                        "type": "lake",
                        "sportFish": [
                          "string"
                        ],
                        "otherSpecies": [
                          "string"
                        ],
                        "records": 0,
                        "firstYear": 0,
                        "lastYear": 0,
                        "lat": 0,
                        "lng": 0,
                        "km": 0,
                        "outdoorsPage": "string",
                        "boatLaunches": [
                          {
                            "name": "string",
                            "page": "https://example.org/",
                            "km": 0
                          }
                        ],
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "license": "string",
                        "fetchedAt": "2026-01-01T00:00:00Z",
                        "distanceKm": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/fishing/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/hunting": {
      "get": {
        "operationId": "get-hunting",
        "tags": [
          "Outdoors"
        ],
        "summary": "Hunting near Prince George: Wildlife Management Units, regulation region, official links, key dates, courses, shops and game processors",
        "description": "Units within the configured radius from the province’s Wildlife Management Units (the one containing the city centre first, `containsCity`), plus links to the licence, LEH, CORE and regulation pages, published dates still current, notes from the regional synopsis (each with its source), hunter and firearms course providers as they publish themselves, and shops. Seasons and limits are never copied: see the regional synopsis. Geometry: /hunting/units/{id}.\n\nExample: `/api/v1/hunting`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "region": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "name",
                                    "url"
                                  ]
                                }
                              ]
                            },
                            "office": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "address": {
                                      "type": "string"
                                    },
                                    "phone": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "address",
                                    "phone",
                                    "sourceUrl"
                                  ]
                                }
                              ]
                            },
                            "units": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "region": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "zone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "areaKm2": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "containsCity": {
                                    "type": "boolean"
                                  },
                                  "km": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lat": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lng": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  },
                                  "license": {
                                    "type": "string"
                                  },
                                  "fetchedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "region",
                                  "zone",
                                  "areaKm2",
                                  "containsCity",
                                  "km",
                                  "lat",
                                  "lng",
                                  "source",
                                  "sourceUrl",
                                  "license",
                                  "fetchedAt"
                                ]
                              }
                            },
                            "links": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "note": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            },
                            "dates": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "date": {
                                    "type": "string"
                                  },
                                  "until": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "date",
                                  "sourceUrl"
                                ]
                              }
                            },
                            "notes": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "text": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "text",
                                  "sourceUrl"
                                ]
                              }
                            },
                            "courses": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "courses": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "courses",
                                  "sourceUrl"
                                ]
                              }
                            },
                            "shops": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "kinds": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "about": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "from": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "curated"
                                      },
                                      {
                                        "type": "string",
                                        "const": "directory"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "name",
                                  "kinds",
                                  "about",
                                  "address",
                                  "phone",
                                  "website",
                                  "url",
                                  "sourceUrl",
                                  "from"
                                ]
                              }
                            },
                            "gameProcessing": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "kinds": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "about": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "from": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "curated"
                                      },
                                      {
                                        "type": "string",
                                        "const": "directory"
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "name",
                                  "kinds",
                                  "about",
                                  "address",
                                  "phone",
                                  "website",
                                  "url",
                                  "sourceUrl",
                                  "from"
                                ]
                              }
                            }
                          },
                          "required": [
                            "region",
                            "office",
                            "units",
                            "links",
                            "dates",
                            "notes",
                            "courses",
                            "shops",
                            "gameProcessing"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "region": {
                          "id": "string",
                          "name": "string",
                          "url": "https://example.org/",
                          "sourceUrl": "https://example.org/"
                        },
                        "office": {
                          "name": "string",
                          "address": "string",
                          "phone": "string",
                          "sourceUrl": "https://example.org/"
                        },
                        "units": [
                          {
                            "id": "string",
                            "region": "string",
                            "zone": "string",
                            "areaKm2": 0,
                            "containsCity": false,
                            "km": 0,
                            "lat": 0,
                            "lng": 0,
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "license": "string",
                            "fetchedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "links": [
                          {
                            "id": "string",
                            "group": "string",
                            "label": "string",
                            "url": "https://example.org/",
                            "note": "string"
                          }
                        ],
                        "dates": [
                          {
                            "id": "string",
                            "label": "string",
                            "date": "2026-01-01T00:00:00Z",
                            "until": "2026-01-01T00:00:00Z",
                            "sourceUrl": "https://example.org/"
                          }
                        ],
                        "notes": [
                          {
                            "id": "string",
                            "text": "string",
                            "sourceUrl": "https://example.org/"
                          }
                        ],
                        "courses": [
                          {
                            "id": "string",
                            "name": "string",
                            "courses": [
                              "string"
                            ],
                            "phone": "string",
                            "email": "string",
                            "website": "https://example.org/",
                            "sourceUrl": "https://example.org/"
                          }
                        ],
                        "shops": [
                          {
                            "name": "string",
                            "kinds": [
                              "string"
                            ],
                            "about": "string",
                            "address": "string",
                            "phone": "string",
                            "website": "https://example.org/",
                            "url": "https://example.org/",
                            "sourceUrl": "https://example.org/",
                            "from": "curated"
                          }
                        ],
                        "gameProcessing": [
                          {
                            "name": "string",
                            "kinds": [
                              "string"
                            ],
                            "about": "string",
                            "address": "string",
                            "phone": "string",
                            "website": "https://example.org/",
                            "url": "https://example.org/",
                            "sourceUrl": "https://example.org/",
                            "from": "curated"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/hunting",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/hunting/units/{id}": {
      "get": {
        "operationId": "get-hunting-units-id",
        "tags": [
          "Outdoors"
        ],
        "summary": "One Wildlife Management Unit with its (simplified) boundary as GeoJSON",
        "description": "Example: `/api/v1/hunting/units/7-15`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Unit id, e.g. 7-15.",
            "schema": {
              "type": "string",
              "examples": [
                "7-15"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string"
                            },
                            "geometry": {
                              "$ref": "#/components/schemas/JsonValue"
                            },
                            "properties": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string"
                                },
                                "region": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "zone": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "areaKm2": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "containsCity": {
                                  "type": "boolean"
                                },
                                "km": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "lat": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "lng": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "license": {
                                  "type": "string"
                                },
                                "fetchedAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "region",
                                "zone",
                                "areaKm2",
                                "containsCity",
                                "km",
                                "lat",
                                "lng",
                                "source",
                                "sourceUrl",
                                "license",
                                "fetchedAt"
                              ]
                            }
                          },
                          "required": [
                            "type",
                            "geometry",
                            "properties"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "type": "string",
                        "geometry": null,
                        "properties": {
                          "id": "string",
                          "region": "string",
                          "zone": "string",
                          "areaKm2": 0,
                          "containsCity": false,
                          "km": 0,
                          "lat": 0,
                          "lng": 0,
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "license": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/hunting/units/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/ranges": {
      "get": {
        "operationId": "get-ranges",
        "tags": [
          "Outdoors"
        ],
        "summary": "Shooting and archery ranges and clubs near Prince George, and firearms and hunter course providers",
        "description": "Ranges as each club publishes them (disciplines, access, website, social pages, contact), located with the BC Address Geocoder from the published address (`coordsSource`; null when the address could not be matched). `courses`: providers of the Canadian Firearms Safety Course (PAL), the restricted course (RPAL) and CORE, with the contact details they publish.\n\nExample: `/api/v1/ranges`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "ranges": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "disciplines": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "where": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "facebook": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "instagram": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "access": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lng": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "coordsSource": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "kind",
                                  "disciplines",
                                  "sourceUrl"
                                ]
                              }
                            },
                            "courses": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "courses": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "courses",
                                  "sourceUrl"
                                ]
                              }
                            }
                          },
                          "required": [
                            "ranges",
                            "courses"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "ranges": [
                          {
                            "id": "string",
                            "name": "string",
                            "kind": "string",
                            "disciplines": [
                              "string"
                            ],
                            "address": "string",
                            "where": "string",
                            "phone": "string",
                            "email": "string",
                            "website": "https://example.org/",
                            "facebook": "string",
                            "instagram": "string",
                            "access": "string",
                            "sourceUrl": "https://example.org/",
                            "lat": 0,
                            "lng": 0,
                            "coordsSource": "string"
                          }
                        ],
                        "courses": [
                          {
                            "id": "string",
                            "name": "string",
                            "courses": [
                              "string"
                            ],
                            "phone": "string",
                            "email": "string",
                            "website": "https://example.org/",
                            "sourceUrl": "https://example.org/"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/ranges",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/outdoors": {
      "get": {
        "operationId": "get-outdoors",
        "tags": [
          "Outdoors"
        ],
        "summary": "Outdoor places 150 km around Prince George: provincial parks, recreation sites and trails, campgrounds, lakes, boat launches, swimming spots, waterfalls, summits, huts, ski and sledding hills",
        "description": "Deduplicated places from BC Parks, Recreation Sites and Trails BC, the BC Freshwater Atlas and OpenStreetMap, each with its source and licence. Road distance and drive time are from the city centre (OSRM on OpenStreetMap data); `offRoadMetres` says how far the place is from the nearest road. Filter by `category` (provincial-parks, rec-sites, rec-trails, campgrounds, lakes, boat-launches, swimming, waterfalls, summits, huts, ski-hills, sledding, disc-golf), `activity` (hiking, biking, camping, fishing, ice-fishing, paddling, boating, swimming, picnics, wildlife, horse-riding, off-road, skiing, snowshoeing, snowmobiling, sledding, hunting, disc-golf), `season` (summer, winter) and `q`; `near` sorts by distance from a point and `maxKm` limits it. Activities and amenities are only those the source publishes (a lake lists the activities of the sites on its shore).\n\nExample: `/api/v1/outdoors?category=campgrounds&limit=5`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Category id.",
            "schema": {
              "type": "string",
              "examples": [
                "campgrounds"
              ]
            }
          },
          {
            "name": "activity",
            "in": "query",
            "required": false,
            "description": "Activity id.",
            "schema": {
              "type": "string",
              "examples": [
                "fishing"
              ]
            }
          },
          {
            "name": "season",
            "in": "query",
            "required": false,
            "description": "summer or winter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name, lake or park.",
            "schema": {
              "type": "string",
              "examples": [
                "Purden"
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" (adds `distanceKm`).",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "maxKm",
            "in": "query",
            "required": false,
            "description": "Only places this close (to `near`, else to the city centre).",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "drive (default: shortest drive from the centre first; by distance from `near` when given) or name (A to Z; `near` takes precedence).",
            "schema": {
              "type": "string",
              "examples": [
                "name"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ slug, name, category, categories, kind, lat, lng, kmFromCentre, driveKm, driveMinutes, activities, amenities, seasons, lake, park, closure, advisories, links, page, source, sourceUrl, licence, fetchedAt }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "links": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "url"
                                  ]
                                }
                              },
                              "page": {
                                "type": "string"
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licence": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": "string"
                              },
                              "directions": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "categories": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "kind": {
                                "type": "string"
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "distanceKm": {
                                "type": "number"
                              },
                              "kmFromCentre": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "driveKm": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "driveMinutes": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "offRoadMetres": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "elevationM": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "areaHa": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lengthKm": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "activities": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "amenities": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "seasons": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "lake": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "park": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "closure": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "advisories": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "title": {
                                      "type": "string"
                                    },
                                    "date": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "safety": {
                                      "type": "boolean"
                                    }
                                  },
                                  "required": [
                                    "title",
                                    "date",
                                    "safety"
                                  ]
                                }
                              },
                              "description": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "links",
                              "page",
                              "source",
                              "sourceUrl",
                              "licence",
                              "fetchedAt",
                              "slug",
                              "name",
                              "category",
                              "categories",
                              "kind",
                              "lat",
                              "lng",
                              "kmFromCentre",
                              "driveKm",
                              "driveMinutes",
                              "offRoadMetres",
                              "elevationM",
                              "areaHa",
                              "lengthKm",
                              "activities",
                              "amenities",
                              "seasons",
                              "lake",
                              "park",
                              "closure",
                              "advisories",
                              "description"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "links": [
                            {
                              "label": "string",
                              "url": "https://example.org/"
                            }
                          ],
                          "page": "https://example.org/",
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "licence": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "directions": "string",
                          "slug": "string",
                          "name": "string",
                          "category": "string",
                          "categories": [
                            "string"
                          ],
                          "kind": "string",
                          "lat": 0,
                          "lng": 0,
                          "distanceKm": 0,
                          "kmFromCentre": 0,
                          "driveKm": 0,
                          "driveMinutes": 0,
                          "offRoadMetres": 0,
                          "elevationM": 0,
                          "areaHa": 0,
                          "lengthKm": 0,
                          "activities": [
                            "string"
                          ],
                          "amenities": [
                            "string"
                          ],
                          "seasons": [
                            "string"
                          ],
                          "lake": "string",
                          "park": "string",
                          "closure": "string",
                          "advisories": [
                            {
                              "title": "string",
                              "date": "2026-01-01T00:00:00Z",
                              "safety": false
                            }
                          ],
                          "description": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/outdoors",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/outdoors/categories": {
      "get": {
        "operationId": "get-outdoors-categories",
        "tags": [
          "Outdoors"
        ],
        "summary": "Outdoor place categories and activities with counts, the region, sources and current BC Parks advisories",
        "description": "Example: `/api/v1/outdoors/categories`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ centre, radiusKm, total, categories: [{ id, label, count, layer }], activities: [{ id, label, count }], advisories, sources }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "centre": {
                              "type": "object",
                              "properties": {
                                "lat": {
                                  "type": "number"
                                },
                                "lng": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "lat",
                                "lng"
                              ]
                            },
                            "radiusKm": {
                              "type": "number"
                            },
                            "total": {
                              "type": "number"
                            },
                            "categories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "count": {
                                    "type": "number"
                                  },
                                  "layer": {
                                    "type": "string"
                                  },
                                  "map": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "count",
                                  "layer",
                                  "map"
                                ]
                              }
                            },
                            "activities": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "seasons": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "count": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "seasons",
                                  "count"
                                ]
                              }
                            },
                            "advisories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "park": {
                                    "type": "string"
                                  },
                                  "page": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "date": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "safety": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "park",
                                  "page",
                                  "url",
                                  "title",
                                  "date",
                                  "safety"
                                ]
                              }
                            },
                            "sources": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "licence": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "items": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "fetchedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "checkedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "error": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "url",
                                  "licence",
                                  "items",
                                  "fetchedAt",
                                  "checkedAt",
                                  "error"
                                ]
                              }
                            }
                          },
                          "required": [
                            "centre",
                            "radiusKm",
                            "total",
                            "categories",
                            "activities",
                            "advisories",
                            "sources"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "centre": {
                          "lat": 0,
                          "lng": 0
                        },
                        "radiusKm": 0,
                        "total": 0,
                        "categories": [
                          {
                            "id": "string",
                            "label": "string",
                            "count": 0,
                            "layer": "string",
                            "map": "string"
                          }
                        ],
                        "activities": [
                          {
                            "id": "string",
                            "label": "string",
                            "seasons": [
                              "string"
                            ],
                            "count": 0
                          }
                        ],
                        "advisories": [
                          {
                            "park": "string",
                            "page": "https://example.org/",
                            "url": "https://example.org/",
                            "title": "string",
                            "date": "2026-01-01T00:00:00Z",
                            "safety": false
                          }
                        ],
                        "sources": [
                          {
                            "id": "string",
                            "name": "string",
                            "url": "https://example.org/",
                            "licence": "string",
                            "items": 0,
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "checkedAt": "2026-01-01T00:00:00Z",
                            "error": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/outdoors/categories",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/outdoors/{slug}": {
      "get": {
        "operationId": "get-outdoors-slug",
        "tags": [
          "Outdoors"
        ],
        "summary": "One outdoor place: details, driving directions (when the source publishes them), drive time, sites on its shore and places nearby",
        "description": "Example: `/api/v1/outdoors/purden-lake-park`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Place slug (from /outdoors).",
            "schema": {
              "type": "string",
              "examples": [
                "purden-lake-park"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "onShore": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "links": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "label": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "label",
                                        "url"
                                      ]
                                    }
                                  },
                                  "page": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "licence": {
                                    "type": "string"
                                  },
                                  "fetchedAt": {
                                    "type": "string"
                                  },
                                  "directions": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "categories": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "distanceKm": {
                                    "type": "number"
                                  },
                                  "kmFromCentre": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "driveKm": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "driveMinutes": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "offRoadMetres": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "elevationM": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "areaHa": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lengthKm": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "activities": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "amenities": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "seasons": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "lake": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "park": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "closure": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "advisories": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "title": {
                                          "type": "string"
                                        },
                                        "date": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "safety": {
                                          "type": "boolean"
                                        }
                                      },
                                      "required": [
                                        "title",
                                        "date",
                                        "safety"
                                      ]
                                    }
                                  },
                                  "description": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "links",
                                  "page",
                                  "source",
                                  "sourceUrl",
                                  "licence",
                                  "fetchedAt",
                                  "slug",
                                  "name",
                                  "category",
                                  "categories",
                                  "kind",
                                  "lat",
                                  "lng",
                                  "kmFromCentre",
                                  "driveKm",
                                  "driveMinutes",
                                  "offRoadMetres",
                                  "elevationM",
                                  "areaHa",
                                  "lengthKm",
                                  "activities",
                                  "amenities",
                                  "seasons",
                                  "lake",
                                  "park",
                                  "closure",
                                  "advisories",
                                  "description"
                                ]
                              }
                            },
                            "nearby": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "distanceKm": {
                                    "type": "number"
                                  },
                                  "links": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "label": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "label",
                                        "url"
                                      ]
                                    }
                                  },
                                  "page": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "licence": {
                                    "type": "string"
                                  },
                                  "fetchedAt": {
                                    "type": "string"
                                  },
                                  "directions": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "category": {
                                    "type": "string"
                                  },
                                  "categories": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  },
                                  "kmFromCentre": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "driveKm": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "driveMinutes": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "offRoadMetres": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "elevationM": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "areaHa": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lengthKm": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "activities": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "amenities": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "seasons": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "lake": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "park": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "closure": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "advisories": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "title": {
                                          "type": "string"
                                        },
                                        "date": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "safety": {
                                          "type": "boolean"
                                        }
                                      },
                                      "required": [
                                        "title",
                                        "date",
                                        "safety"
                                      ]
                                    }
                                  },
                                  "description": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "links",
                                  "page",
                                  "source",
                                  "sourceUrl",
                                  "licence",
                                  "fetchedAt",
                                  "slug",
                                  "name",
                                  "category",
                                  "categories",
                                  "kind",
                                  "lat",
                                  "lng",
                                  "kmFromCentre",
                                  "driveKm",
                                  "driveMinutes",
                                  "offRoadMetres",
                                  "elevationM",
                                  "areaHa",
                                  "lengthKm",
                                  "activities",
                                  "amenities",
                                  "seasons",
                                  "lake",
                                  "park",
                                  "closure",
                                  "advisories",
                                  "description"
                                ]
                              }
                            },
                            "links": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            },
                            "page": {
                              "type": "string"
                            },
                            "source": {
                              "type": "string"
                            },
                            "sourceUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "licence": {
                              "type": "string"
                            },
                            "fetchedAt": {
                              "type": "string"
                            },
                            "directions": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "category": {
                              "type": "string"
                            },
                            "categories": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "kind": {
                              "type": "string"
                            },
                            "lat": {
                              "type": "number"
                            },
                            "lng": {
                              "type": "number"
                            },
                            "distanceKm": {
                              "type": "number"
                            },
                            "kmFromCentre": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "driveKm": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "driveMinutes": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "offRoadMetres": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "elevationM": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "areaHa": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "lengthKm": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "activities": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "amenities": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "seasons": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "lake": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "park": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "closure": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "advisories": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "title": {
                                    "type": "string"
                                  },
                                  "date": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "safety": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "title",
                                  "date",
                                  "safety"
                                ]
                              }
                            },
                            "description": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          },
                          "required": [
                            "onShore",
                            "nearby",
                            "links",
                            "page",
                            "source",
                            "sourceUrl",
                            "licence",
                            "fetchedAt",
                            "slug",
                            "name",
                            "category",
                            "categories",
                            "kind",
                            "lat",
                            "lng",
                            "kmFromCentre",
                            "driveKm",
                            "driveMinutes",
                            "offRoadMetres",
                            "elevationM",
                            "areaHa",
                            "lengthKm",
                            "activities",
                            "amenities",
                            "seasons",
                            "lake",
                            "park",
                            "closure",
                            "advisories",
                            "description"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "onShore": [
                          {
                            "links": [
                              {
                                "label": "string",
                                "url": "https://example.org/"
                              }
                            ],
                            "page": "https://example.org/",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "licence": "string",
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "directions": "string",
                            "slug": "string",
                            "name": "string",
                            "category": "string",
                            "categories": [
                              "string"
                            ],
                            "kind": "string",
                            "lat": 0,
                            "lng": 0,
                            "distanceKm": 0,
                            "kmFromCentre": 0,
                            "driveKm": 0,
                            "driveMinutes": 0,
                            "offRoadMetres": 0,
                            "elevationM": 0,
                            "areaHa": 0,
                            "lengthKm": 0,
                            "activities": [
                              "string"
                            ],
                            "amenities": [
                              "string"
                            ],
                            "seasons": [
                              "string"
                            ],
                            "lake": "string",
                            "park": "string",
                            "closure": "string",
                            "advisories": [
                              {
                                "title": "string",
                                "date": "2026-01-01T00:00:00Z",
                                "safety": false
                              }
                            ],
                            "description": "string"
                          }
                        ],
                        "nearby": [
                          {
                            "distanceKm": 0,
                            "links": [
                              {
                                "label": "string",
                                "url": "https://example.org/"
                              }
                            ],
                            "page": "https://example.org/",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "licence": "string",
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "directions": "string",
                            "slug": "string",
                            "name": "string",
                            "category": "string",
                            "categories": [
                              "string"
                            ],
                            "kind": "string",
                            "lat": 0,
                            "lng": 0,
                            "kmFromCentre": 0,
                            "driveKm": 0,
                            "driveMinutes": 0,
                            "offRoadMetres": 0,
                            "elevationM": 0,
                            "areaHa": 0,
                            "lengthKm": 0,
                            "activities": [
                              "string"
                            ],
                            "amenities": [
                              "string"
                            ],
                            "seasons": [
                              "string"
                            ],
                            "lake": "string",
                            "park": "string",
                            "closure": "string",
                            "advisories": [
                              {
                                "title": "string",
                                "date": "2026-01-01T00:00:00Z",
                                "safety": false
                              }
                            ],
                            "description": "string"
                          }
                        ],
                        "links": [
                          {
                            "label": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "page": "https://example.org/",
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "licence": "string",
                        "fetchedAt": "2026-01-01T00:00:00Z",
                        "directions": "string",
                        "slug": "string",
                        "name": "string",
                        "category": "string",
                        "categories": [
                          "string"
                        ],
                        "kind": "string",
                        "lat": 0,
                        "lng": 0,
                        "distanceKm": 0,
                        "kmFromCentre": 0,
                        "driveKm": 0,
                        "driveMinutes": 0,
                        "offRoadMetres": 0,
                        "elevationM": 0,
                        "areaHa": 0,
                        "lengthKm": 0,
                        "activities": [
                          "string"
                        ],
                        "amenities": [
                          "string"
                        ],
                        "seasons": [
                          "string"
                        ],
                        "lake": "string",
                        "park": "string",
                        "closure": "string",
                        "advisories": [
                          {
                            "title": "string",
                            "date": "2026-01-01T00:00:00Z",
                            "safety": false
                          }
                        ],
                        "description": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/outdoors/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/people/brief": {
      "get": {
        "operationId": "get-people-brief",
        "tags": [
          "People & economy"
        ],
        "summary": "Prince George in brief: every population figure labelled with its geography (city, census agglomeration, population centre, regional district) and date",
        "description": "Population figures differ with the boundary and the method: census counts (census day), Statistics Canada and BC Stats July 1 estimates (adjusted for census undercount) and BC Stats projections. Each fact names its geography, as-of date and source. Also the City as schema.org JSON-LD (`meta.jsonLd`).\n\nExample: `/api/v1/people/brief`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, label, value, display, geography, geographyNote?, asOf, asOfLabel, source, sourceUrl, kind }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "value": {
                                "type": "number"
                              },
                              "display": {
                                "type": "string"
                              },
                              "geography": {
                                "type": "string"
                              },
                              "geographyNote": {
                                "type": "string"
                              },
                              "asOf": {
                                "type": "string"
                              },
                              "asOfLabel": {
                                "type": "string"
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceUrl": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "count"
                                  },
                                  {
                                    "type": "string",
                                    "const": "estimate"
                                  },
                                  {
                                    "type": "string",
                                    "const": "measure"
                                  },
                                  {
                                    "type": "string",
                                    "const": "projection"
                                  },
                                  {
                                    "type": "string",
                                    "const": "share"
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "label",
                              "value",
                              "display",
                              "geography",
                              "asOf",
                              "asOfLabel",
                              "source",
                              "sourceUrl",
                              "kind"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "label": "string",
                          "value": 0,
                          "display": "string",
                          "geography": "string",
                          "geographyNote": "string",
                          "asOf": "string",
                          "asOfLabel": "string",
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "kind": "count"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/people/brief",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/people/origins": {
      "get": {
        "operationId": "get-people-origins",
        "tags": [
          "People & economy"
        ],
        "summary": "Census tables on who lives in Prince George: religion, ethnic or cultural origin, visible minority, place of birth, generation, immigration, citizenship, languages and Indigenous identity, with British Columbia and Canada",
        "description": "From the latest Census Profile (Statistics Canada API). Each table has `total` and `rows` ({ id, label, depth, parent, leaf, city, province, canada }); depth 1 rows are the main categories, deeper rows their parts. Rows the city has none of are left out below depth 1. Counts are randomly rounded to multiples of 5.\n\nExample: `/api/v1/people/origins?table=religion`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "table",
            "in": "query",
            "required": false,
            "description": "One table only.",
            "schema": {
              "type": "string",
              "enum": [
                "religion",
                "ethnicOrigin",
                "visibleMinority",
                "placeOfBirth",
                "recentPlaceOfBirth",
                "generation",
                "immigration",
                "admissionCategory",
                "citizenship",
                "motherTongue",
                "homeLanguage",
                "officialLanguages",
                "indigenousIdentity",
                "indigenousAncestry",
                "registeredIndian"
              ],
              "examples": [
                "religion"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "additionalProperties": {
                                "type": "object",
                                "properties": {
                                  "rootId": {
                                    "type": "number"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "universe": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sample": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "total": {
                                    "type": "object",
                                    "properties": {
                                      "city": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "province": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "canada": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "city",
                                      "province",
                                      "canada"
                                    ]
                                  },
                                  "rows": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "number"
                                        },
                                        "label": {
                                          "type": "string"
                                        },
                                        "depth": {
                                          "type": "number"
                                        },
                                        "parent": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "leaf": {
                                          "type": "boolean"
                                        },
                                        "city": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "province": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "canada": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "label",
                                        "depth",
                                        "parent",
                                        "leaf",
                                        "city",
                                        "province",
                                        "canada"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "rootId",
                                  "title",
                                  "universe",
                                  "sample",
                                  "total",
                                  "rows"
                                ]
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "rootId": {
                                  "type": "number"
                                },
                                "title": {
                                  "type": "string"
                                },
                                "universe": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "sample": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "total": {
                                  "type": "object",
                                  "properties": {
                                    "city": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "province": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "canada": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "city",
                                    "province",
                                    "canada"
                                  ]
                                },
                                "rows": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "number"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "depth": {
                                        "type": "number"
                                      },
                                      "parent": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "leaf": {
                                        "type": "boolean"
                                      },
                                      "city": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "province": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "canada": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "label",
                                      "depth",
                                      "parent",
                                      "leaf",
                                      "city",
                                      "province",
                                      "canada"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "rootId",
                                "title",
                                "universe",
                                "sample",
                                "total",
                                "rows"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {},
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/people/origins",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/people/history": {
      "get": {
        "operationId": "get-people-history",
        "tags": [
          "People & economy"
        ],
        "summary": "Change over time, 2001 to 2021: visible minority groups, Indigenous identity, immigrants, generation status, religion and ethnic origins in Prince George",
        "description": "Counts from five censuses (2011 is the voluntary National Household Survey). Rows are per census year: `total` is the population the question covers, other fields are counts. Read `notes` for comparability: the questions and example lists changed between censuses.\n\nExample: `/api/v1/people/history?topic=religion`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "One topic only.",
            "schema": {
              "type": "string",
              "enum": [
                "visibleMinority",
                "indigenousIdentity",
                "immigration",
                "generation",
                "religion",
                "ethnicOrigins"
              ],
              "examples": [
                "religion"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "$ref": "#/components/schemas/JsonValue"
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": null,
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/people/history",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/people/projections": {
      "get": {
        "operationId": "get-people-projections",
        "tags": [
          "People & economy"
        ],
        "summary": "Population estimates and projections to 2046 for Prince George, its regional district and the province, with age groups and five-year age pyramids for every year",
        "description": "BC Stats P.E.O.P.L.E. (July 1 estimates, then projections). `city.pyramid[].men/women` are counts by `ageGroups` (five-year groups, 90+ last). `city.broadAges` has under 15, 15 to 64, 65+, 80+ and the median age per year. Use `from`/`to` to limit years.\n\nExample: `/api/v1/people/projections?from=2021&to=2046`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "First year.",
            "schema": {
              "type": "integer",
              "examples": [
                "2021"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Last year.",
            "schema": {
              "type": "integer",
              "examples": [
                "2046"
              ]
            }
          },
          {
            "name": "pyramid",
            "in": "query",
            "required": false,
            "description": "Include the age pyramids (default true).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "city": {
                                  "type": "object",
                                  "properties": {
                                    "totals": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "value": {
                                            "type": "number"
                                          },
                                          "kind": {
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "const": "estimate"
                                              },
                                              {
                                                "type": "string",
                                                "const": "projection"
                                              }
                                            ]
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "value",
                                          "kind"
                                        ]
                                      }
                                    },
                                    "broadAges": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "total": {
                                            "type": "number"
                                          },
                                          "under15": {
                                            "type": "number"
                                          },
                                          "from15to64": {
                                            "type": "number"
                                          },
                                          "from65": {
                                            "type": "number"
                                          },
                                          "from80": {
                                            "type": "number"
                                          },
                                          "medianAge": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "total",
                                          "under15",
                                          "from15to64",
                                          "from65",
                                          "from80",
                                          "medianAge"
                                        ]
                                      }
                                    },
                                    "pyramid": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "year": {
                                            "type": "number"
                                          },
                                          "kind": {
                                            "type": "string"
                                          },
                                          "men": {
                                            "type": "array",
                                            "items": {
                                              "type": "number"
                                            }
                                          },
                                          "women": {
                                            "type": "array",
                                            "items": {
                                              "type": "number"
                                            }
                                          }
                                        },
                                        "required": [
                                          "year",
                                          "kind",
                                          "men",
                                          "women"
                                        ]
                                      }
                                    },
                                    "code": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "totals",
                                    "broadAges",
                                    "code",
                                    "name"
                                  ]
                                },
                                "regionalDistrict": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "totals": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "year": {
                                                "type": "number"
                                              },
                                              "value": {
                                                "type": "number"
                                              },
                                              "kind": {
                                                "anyOf": [
                                                  {
                                                    "type": "string",
                                                    "const": "estimate"
                                                  },
                                                  {
                                                    "type": "string",
                                                    "const": "projection"
                                                  }
                                                ]
                                              }
                                            },
                                            "required": [
                                              "year",
                                              "value",
                                              "kind"
                                            ]
                                          }
                                        },
                                        "code": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "totals",
                                        "name"
                                      ]
                                    }
                                  ]
                                },
                                "province": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "totals": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "year": {
                                                "type": "number"
                                              },
                                              "value": {
                                                "type": "number"
                                              },
                                              "kind": {
                                                "anyOf": [
                                                  {
                                                    "type": "string",
                                                    "const": "estimate"
                                                  },
                                                  {
                                                    "type": "string",
                                                    "const": "projection"
                                                  }
                                                ]
                                              }
                                            },
                                            "required": [
                                              "year",
                                              "value",
                                              "kind"
                                            ]
                                          }
                                        },
                                        "code": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "totals",
                                        "name"
                                      ]
                                    }
                                  ]
                                },
                                "source": {
                                  "type": "string"
                                },
                                "sourceUrl": {
                                  "type": "string"
                                },
                                "dataUrl": {
                                  "type": "string"
                                },
                                "methodologyUrl": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "asOf": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "released": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "notes": {
                                  "type": "string"
                                },
                                "firstProjectionYear": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "lastEstimateYear": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "ageGroups": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              },
                              "required": [
                                "city",
                                "regionalDistrict",
                                "province",
                                "source",
                                "sourceUrl",
                                "dataUrl",
                                "methodologyUrl",
                                "asOf",
                                "released",
                                "notes",
                                "firstProjectionYear",
                                "lastEstimateYear",
                                "ageGroups"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "city": {
                          "totals": [
                            {
                              "year": 0,
                              "value": 0,
                              "kind": "estimate"
                            }
                          ],
                          "broadAges": [
                            {
                              "year": 0,
                              "total": 0,
                              "under15": 0,
                              "from15to64": 0,
                              "from65": 0,
                              "from80": 0,
                              "medianAge": 0
                            }
                          ],
                          "pyramid": [
                            {
                              "year": 0,
                              "kind": "string",
                              "men": [
                                0
                              ],
                              "women": [
                                0
                              ]
                            }
                          ],
                          "code": "string",
                          "name": "string"
                        },
                        "regionalDistrict": {
                          "totals": [
                            {
                              "year": 0,
                              "value": 0,
                              "kind": "estimate"
                            }
                          ],
                          "code": "string",
                          "name": "string"
                        },
                        "province": {
                          "totals": [
                            {
                              "year": 0,
                              "value": 0,
                              "kind": "estimate"
                            }
                          ],
                          "code": "string",
                          "name": "string"
                        },
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "dataUrl": "https://example.org/",
                        "methodologyUrl": "https://example.org/",
                        "asOf": "string",
                        "released": "string",
                        "notes": "string",
                        "firstProjectionYear": 0,
                        "lastEstimateYear": 0,
                        "ageGroups": [
                          "string"
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/people/projections",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/people/notable": {
      "get": {
        "operationId": "get-people-notable",
        "tags": [
          "People & economy"
        ],
        "summary": "Notable people born in or living in Prince George (from Wikidata)",
        "description": "Each person: name, Wikidata description, category, occupations, birth and death years, whether Wikidata records them as born or living here, and links to Wikipedia and Wikidata. People are listed automatically when they qualify (unless the site turns auto-approval off) and editors can hide or correct any entry; people known only for crimes are never listed.\n\nExample: `/api/v1/people/notable`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Category.",
            "schema": {
              "type": "string",
              "enum": [
                "sport",
                "arts",
                "public",
                "science",
                "business",
                "other"
              ],
              "examples": [
                "sport"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name, description or occupations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, description, category, categoryLabel, occupations, born, died, connection, wikipedia, wikidata }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "description": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "category": {
                                "type": "string"
                              },
                              "categoryLabel": {
                                "type": "string"
                              },
                              "occupations": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "born": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "died": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "connection": {
                                "type": "string"
                              },
                              "wikipedia": {
                                "type": "string"
                              },
                              "wikidata": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "description",
                              "category",
                              "categoryLabel",
                              "occupations",
                              "born",
                              "died",
                              "connection",
                              "wikipedia",
                              "wikidata"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "description": "string",
                          "category": "string",
                          "categoryLabel": "string",
                          "occupations": [
                            "string"
                          ],
                          "born": 0,
                          "died": 0,
                          "connection": "string",
                          "wikipedia": "string",
                          "wikidata": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/people/notable",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/realtors": {
      "get": {
        "operationId": "get-realtors",
        "tags": [
          "Directory"
        ],
        "summary": "Real estate agents in Prince George: name, brokerage, published title and designations, languages, business contacts and the official profile link",
        "description": "Agents come from brokerages’ own public team pages, read weekly where robots.txt and the site’s terms allow; brokerages whose pages we may not read have no agents here (see /realtors/brokerages and `meta.notUsed`). Phone and email only as published for business use (no numbers labelled cell or text, no free-mail addresses). `areas`, `bio` and `photo` come only from the agent’s verified claim. Order is alphabetical (or by brokerage or newest); paid placements never change it. Not affiliated with or endorsed by the Canadian Real Estate Association (CREA), REALTOR.ca or the provincial regulator. REALTOR® is a CREA trademark; realtorMark says only that the brokerage’s own page lists the person with it. Check a licence yourself at https://www.bcfsa.ca/public-resources/real-estate/find-professional.\n\nExample: `/api/v1/realtors`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name, title, brokerage, languages, areas and designations.",
            "schema": {
              "type": "string",
              "examples": [
                "broker"
              ]
            }
          },
          {
            "name": "brokerage",
            "in": "query",
            "required": false,
            "description": "Brokerage slug (see /realtors/brokerages).",
            "schema": {
              "type": "string",
              "examples": [
                "maxsave-real-estate-services-ltd"
              ]
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "A language the agent lists.",
            "schema": {
              "type": "string",
              "examples": [
                "French"
              ]
            }
          },
          {
            "name": "area",
            "in": "query",
            "required": false,
            "description": "An area the agent says they serve (claimed profiles only).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "designation",
            "in": "query",
            "required": false,
            "description": "A designation, e.g. \"Managing broker\".",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "name (default), brokerage or newest.",
            "schema": {
              "type": "string",
              "enum": [
                "name",
                "brokerage",
                "newest"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ slug, name, url, title, realtorMark, designations, languages, areas, bio, photo, phone, email, website, profileUrl, brokerage: { slug, name, url }, claimed, source: { name, url }, firstSeen, checkedAt }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string"
                              },
                              "brokerage": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "url": {
                                        "type": "string"
                                      },
                                      "slug": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "url",
                                      "slug",
                                      "name"
                                    ]
                                  }
                                ]
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "initials": {
                                "type": "string"
                              },
                              "title": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "realtorMark": {
                                "type": "boolean",
                                "description": "The brokerage's page lists them with the REALTOR® mark (CREA membership as the brokerage publishes it)."
                              },
                              "designations": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "languages": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "areas": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "bio": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "photo": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "email": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "profileUrl": {
                                "type": "string"
                              },
                              "claimed": {
                                "type": "boolean"
                              },
                              "source": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name",
                                  "url"
                                ]
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "gone"
                                  },
                                  {
                                    "type": "string",
                                    "const": "listed"
                                  }
                                ]
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "checkedAt": {
                                "type": "string"
                              },
                              "updatedByOwner": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "url",
                              "brokerage",
                              "slug",
                              "name",
                              "initials",
                              "title",
                              "realtorMark",
                              "designations",
                              "languages",
                              "areas",
                              "bio",
                              "photo",
                              "phone",
                              "email",
                              "website",
                              "profileUrl",
                              "claimed",
                              "source",
                              "status",
                              "firstSeen",
                              "checkedAt",
                              "updatedByOwner"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "url": "https://example.org/",
                          "brokerage": {
                            "url": "https://example.org/",
                            "slug": "string",
                            "name": "string"
                          },
                          "slug": "string",
                          "name": "string",
                          "initials": "string",
                          "title": "string",
                          "realtorMark": false,
                          "designations": [
                            "string"
                          ],
                          "languages": [
                            "string"
                          ],
                          "areas": [
                            "string"
                          ],
                          "bio": "string",
                          "photo": "string",
                          "phone": "string",
                          "email": "string",
                          "website": "https://example.org/",
                          "profileUrl": "https://example.org/",
                          "claimed": false,
                          "source": {
                            "name": "string",
                            "url": "https://example.org/"
                          },
                          "status": "gone",
                          "firstSeen": "string",
                          "checkedAt": "2026-01-01T00:00:00Z",
                          "updatedByOwner": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/realtors",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/realtors/brokerages": {
      "get": {
        "operationId": "get-realtors-brokerages",
        "tags": [
          "Directory"
        ],
        "summary": "Real estate brokerage offices in Prince George, with address, phone, website and how many agents we list",
        "description": "Picked out of the business directory (City business licences and published business information) by name and licence description; property managers, appraisers and the real estate board are left out. `agentsNote` says why a brokerage has no agents listed.\n\nExample: `/api/v1/realtors/brokerages`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 500.",
            "schema": {
              "type": "integer",
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ slug, name, url, directoryUrl, address, area, community, lat, lng, phone, website, licenceNo, licenceDescription, agentsSource, agentsNote, agentCount, status }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "url": {
                                "type": "string"
                              },
                              "directoryUrl": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "area": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "community": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licenceNo": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licenceDescription": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "agentsSource": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "url"
                                    ]
                                  }
                                ]
                              },
                              "agentsNote": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "agentCount": {
                                "type": "number"
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "closed"
                                  },
                                  {
                                    "type": "string",
                                    "const": "open"
                                  }
                                ]
                              },
                              "fetchedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "url",
                              "directoryUrl",
                              "slug",
                              "name",
                              "address",
                              "area",
                              "community",
                              "lat",
                              "lng",
                              "phone",
                              "website",
                              "licenceNo",
                              "licenceDescription",
                              "agentsSource",
                              "agentsNote",
                              "agentCount",
                              "status",
                              "fetchedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "url": "https://example.org/",
                          "directoryUrl": "https://example.org/",
                          "slug": "string",
                          "name": "string",
                          "address": "string",
                          "area": "string",
                          "community": "string",
                          "lat": 0,
                          "lng": 0,
                          "phone": "string",
                          "website": "https://example.org/",
                          "licenceNo": "string",
                          "licenceDescription": "string",
                          "agentsSource": {
                            "id": "string",
                            "url": "https://example.org/"
                          },
                          "agentsNote": "string",
                          "agentCount": 0,
                          "status": "closed",
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/realtors/brokerages",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/realtors/brokerages/{slug}": {
      "get": {
        "operationId": "get-realtors-brokerages-slug",
        "tags": [
          "Directory"
        ],
        "summary": "One brokerage with its listed agents",
        "description": "Example: `/api/v1/realtors/brokerages/maxsave-real-estate-services-ltd`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Brokerage slug.",
            "schema": {
              "type": "string",
              "examples": [
                "maxsave-real-estate-services-ltd"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string"
                            },
                            "directoryUrl": {
                              "type": "string"
                            },
                            "agents": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "url": {
                                    "type": "string"
                                  },
                                  "brokerage": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "url": {
                                            "type": "string"
                                          },
                                          "slug": {
                                            "type": "string"
                                          },
                                          "name": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "url",
                                          "slug",
                                          "name"
                                        ]
                                      }
                                    ]
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "initials": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "realtorMark": {
                                    "type": "boolean",
                                    "description": "The brokerage's page lists them with the REALTOR® mark (CREA membership as the brokerage publishes it)."
                                  },
                                  "designations": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "languages": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "areas": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "bio": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "photo": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "email": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "profileUrl": {
                                    "type": "string"
                                  },
                                  "claimed": {
                                    "type": "boolean"
                                  },
                                  "source": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "url"
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "gone"
                                      },
                                      {
                                        "type": "string",
                                        "const": "listed"
                                      }
                                    ]
                                  },
                                  "firstSeen": {
                                    "type": "string"
                                  },
                                  "checkedAt": {
                                    "type": "string"
                                  },
                                  "updatedByOwner": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "url",
                                  "brokerage",
                                  "slug",
                                  "name",
                                  "initials",
                                  "title",
                                  "realtorMark",
                                  "designations",
                                  "languages",
                                  "areas",
                                  "bio",
                                  "photo",
                                  "phone",
                                  "email",
                                  "website",
                                  "profileUrl",
                                  "claimed",
                                  "source",
                                  "status",
                                  "firstSeen",
                                  "checkedAt",
                                  "updatedByOwner"
                                ]
                              }
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "address": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "area": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "community": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "lat": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "lng": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "phone": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "website": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "licenceNo": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "licenceDescription": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "agentsSource": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "url"
                                  ]
                                }
                              ]
                            },
                            "agentsNote": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "agentCount": {
                              "type": "number"
                            },
                            "status": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "closed"
                                },
                                {
                                  "type": "string",
                                  "const": "open"
                                }
                              ]
                            },
                            "fetchedAt": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "url",
                            "directoryUrl",
                            "agents",
                            "slug",
                            "name",
                            "address",
                            "area",
                            "community",
                            "lat",
                            "lng",
                            "phone",
                            "website",
                            "licenceNo",
                            "licenceDescription",
                            "agentsSource",
                            "agentsNote",
                            "agentCount",
                            "status",
                            "fetchedAt"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "url": "https://example.org/",
                        "directoryUrl": "https://example.org/",
                        "agents": [
                          {
                            "url": "https://example.org/",
                            "brokerage": {
                              "url": "https://example.org/",
                              "slug": "string",
                              "name": "string"
                            },
                            "slug": "string",
                            "name": "string",
                            "initials": "string",
                            "title": "string",
                            "realtorMark": false,
                            "designations": [
                              "string"
                            ],
                            "languages": [
                              "string"
                            ],
                            "areas": [
                              "string"
                            ],
                            "bio": "string",
                            "photo": "string",
                            "phone": "string",
                            "email": "string",
                            "website": "https://example.org/",
                            "profileUrl": "https://example.org/",
                            "claimed": false,
                            "source": {
                              "name": "string",
                              "url": "https://example.org/"
                            },
                            "status": "gone",
                            "firstSeen": "string",
                            "checkedAt": "2026-01-01T00:00:00Z",
                            "updatedByOwner": "string"
                          }
                        ],
                        "slug": "string",
                        "name": "string",
                        "address": "string",
                        "area": "string",
                        "community": "string",
                        "lat": 0,
                        "lng": 0,
                        "phone": "string",
                        "website": "https://example.org/",
                        "licenceNo": "string",
                        "licenceDescription": "string",
                        "agentsSource": {
                          "id": "string",
                          "url": "https://example.org/"
                        },
                        "agentsNote": "string",
                        "agentCount": 0,
                        "status": "closed",
                        "fetchedAt": "2026-01-01T00:00:00Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/realtors/brokerages/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/realtors/{slug}": {
      "get": {
        "operationId": "get-realtors-slug",
        "tags": [
          "Directory"
        ],
        "summary": "One real estate agent",
        "description": "Example: `/api/v1/realtors/mike-hurrell`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Agent slug.",
            "schema": {
              "type": "string",
              "examples": [
                "mike-hurrell"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "type": "string"
                            },
                            "brokerage": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "url": {
                                      "type": "string"
                                    },
                                    "slug": {
                                      "type": "string"
                                    },
                                    "name": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "url",
                                    "slug",
                                    "name"
                                  ]
                                }
                              ]
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "initials": {
                              "type": "string"
                            },
                            "title": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "realtorMark": {
                              "type": "boolean",
                              "description": "The brokerage's page lists them with the REALTOR® mark (CREA membership as the brokerage publishes it)."
                            },
                            "designations": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "languages": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "areas": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "bio": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "photo": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "phone": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "email": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "website": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "profileUrl": {
                              "type": "string"
                            },
                            "claimed": {
                              "type": "boolean"
                            },
                            "source": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "url": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name",
                                "url"
                              ]
                            },
                            "status": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "gone"
                                },
                                {
                                  "type": "string",
                                  "const": "listed"
                                }
                              ]
                            },
                            "firstSeen": {
                              "type": "string"
                            },
                            "checkedAt": {
                              "type": "string"
                            },
                            "updatedByOwner": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          },
                          "required": [
                            "url",
                            "brokerage",
                            "slug",
                            "name",
                            "initials",
                            "title",
                            "realtorMark",
                            "designations",
                            "languages",
                            "areas",
                            "bio",
                            "photo",
                            "phone",
                            "email",
                            "website",
                            "profileUrl",
                            "claimed",
                            "source",
                            "status",
                            "firstSeen",
                            "checkedAt",
                            "updatedByOwner"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "url": "https://example.org/",
                        "brokerage": {
                          "url": "https://example.org/",
                          "slug": "string",
                          "name": "string"
                        },
                        "slug": "string",
                        "name": "string",
                        "initials": "string",
                        "title": "string",
                        "realtorMark": false,
                        "designations": [
                          "string"
                        ],
                        "languages": [
                          "string"
                        ],
                        "areas": [
                          "string"
                        ],
                        "bio": "string",
                        "photo": "string",
                        "phone": "string",
                        "email": "string",
                        "website": "https://example.org/",
                        "profileUrl": "https://example.org/",
                        "claimed": false,
                        "source": {
                          "name": "string",
                          "url": "https://example.org/"
                        },
                        "status": "gone",
                        "firstSeen": "string",
                        "checkedAt": "2026-01-01T00:00:00Z",
                        "updatedByOwner": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/realtors/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/road-closures": {
      "get": {
        "operationId": "get-road-closures",
        "tags": [
          "Getting around"
        ],
        "summary": "City road closures and lane restrictions, now and coming up",
        "description": "From the City’s traffic disruptions map, refreshed every 30 minutes. Each item has `phase` (now, today, upcoming, ended), `impact` (plain-language lanes and access), start and end times (UTC ISO), the City’s description and a GeoJSON `geometry`. Highway events are in /roads (DriveBC).\n\nExample: `/api/v1/road-closures`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "when",
            "in": "query",
            "required": false,
            "description": "`current` (in effect now or starting later today, default), `upcoming` (not yet ended) or `all`.",
            "schema": {
              "type": "string",
              "enum": [
                "current",
                "upcoming",
                "all"
              ]
            }
          },
          {
            "name": "reason",
            "in": "query",
            "required": false,
            "description": "Construction, Event or Hazard.",
            "schema": {
              "type": "string",
              "examples": [
                "Construction"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Street or text search.",
            "schema": {
              "type": "string",
              "examples": [
                "Westwood"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 500.",
            "schema": {
              "type": "integer",
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, kind, street, reason, impact, laneImpact, access, description, startsAt, endsAt, phase, lat, lng, geometry }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "kind": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "block"
                                  },
                                  {
                                    "type": "string",
                                    "const": "closure"
                                  },
                                  {
                                    "type": "string",
                                    "const": "detour"
                                  }
                                ]
                              },
                              "parentId": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "street": {
                                "type": "string"
                              },
                              "direction": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "reason": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "laneImpact": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "access": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "impact": {
                                "type": "string"
                              },
                              "description": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "altRoute": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "startsAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "endsAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "editedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phase": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "ended"
                                  },
                                  {
                                    "type": "string",
                                    "const": "now"
                                  },
                                  {
                                    "type": "string",
                                    "const": "today"
                                  },
                                  {
                                    "type": "string",
                                    "const": "upcoming"
                                  }
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "geometry": {
                                "$ref": "#/components/schemas/JsonValue"
                              },
                              "firstSeen": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "kind",
                              "parentId",
                              "street",
                              "direction",
                              "reason",
                              "laneImpact",
                              "access",
                              "impact",
                              "description",
                              "altRoute",
                              "url",
                              "startsAt",
                              "endsAt",
                              "editedAt",
                              "phase",
                              "lat",
                              "lng",
                              "geometry",
                              "firstSeen",
                              "fetchedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "kind": "block",
                          "parentId": "string",
                          "street": "string",
                          "direction": "string",
                          "reason": "string",
                          "laneImpact": "string",
                          "access": "string",
                          "impact": "string",
                          "description": "string",
                          "altRoute": "string",
                          "url": "https://example.org/",
                          "startsAt": "2026-01-01T00:00:00Z",
                          "endsAt": "2026-01-01T00:00:00Z",
                          "editedAt": "2026-01-01T00:00:00Z",
                          "phase": "ended",
                          "lat": 0,
                          "lng": 0,
                          "geometry": null,
                          "firstSeen": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/road-closures",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/road-closures/map": {
      "get": {
        "operationId": "get-road-closures-map",
        "tags": [
          "Getting around"
        ],
        "summary": "Road closures, detours and block points as GeoJSON",
        "description": "Example: `/api/v1/road-closures/map?format=geojson`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "when",
            "in": "query",
            "required": false,
            "description": "`upcoming` (default), `current` or `all`.",
            "schema": {
              "type": "string",
              "enum": [
                "current",
                "upcoming",
                "all"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string"
                            },
                            "features": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "Feature"
                                  },
                                  "geometry": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "properties": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "block"
                                          },
                                          {
                                            "type": "string",
                                            "const": "closure"
                                          },
                                          {
                                            "type": "string",
                                            "const": "detour"
                                          }
                                        ]
                                      },
                                      "street": {
                                        "type": "string"
                                      },
                                      "reason": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "impact": {
                                        "type": "string"
                                      },
                                      "description": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "startsAt": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "endsAt": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "phase": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "ended"
                                          },
                                          {
                                            "type": "string",
                                            "const": "now"
                                          },
                                          {
                                            "type": "string",
                                            "const": "today"
                                          },
                                          {
                                            "type": "string",
                                            "const": "upcoming"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "kind",
                                      "street",
                                      "reason",
                                      "impact",
                                      "description",
                                      "startsAt",
                                      "endsAt",
                                      "phase"
                                    ]
                                  }
                                },
                                "required": [
                                  "type",
                                  "geometry",
                                  "properties"
                                ]
                              }
                            }
                          },
                          "required": [
                            "type",
                            "features"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "type": "string",
                        "features": [
                          {
                            "type": "Feature",
                            "geometry": null,
                            "properties": {
                              "id": "string",
                              "kind": "block",
                              "street": "string",
                              "reason": "string",
                              "impact": "string",
                              "description": "string",
                              "startsAt": "2026-01-01T00:00:00Z",
                              "endsAt": "2026-01-01T00:00:00Z",
                              "phase": "ended"
                            }
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/road-closures/map",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/schools": {
      "get": {
        "operationId": "get-schools",
        "tags": [
          "Community"
        ],
        "summary": "K-12 schools in and around Prince George: public, francophone and independent, with grades, enrolment, French programs and address",
        "description": "Every school on the province’s K-12 list in the area (the configured school district plus schools near the city), refreshed monthly. `grades` and `level` come from the latest headcount by grade (the grades that actually have students); `enrolment` is the latest headcount (\"All Grades\"), null with `enrolmentNote` when the Ministry masks a count under 10. `catchment` is the name of the City catchment area that matches the school, if any: look up your address at https://princegeorgepulse.ca/zoning/ to find which catchment you are in. Website and phone only where OpenStreetMap has them (`contactSource`); official contacts for every school are in the Ministry’s BC School Contacts app (https://bcschoolcontacts.gov.bc.ca/).\n\nExample: `/api/v1/schools?level=secondary`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "level",
            "in": "query",
            "required": false,
            "description": "School level.",
            "schema": {
              "type": "string",
              "enum": [
                "elementary",
                "middle",
                "secondary",
                "k12",
                "adult",
                "other"
              ]
            }
          },
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "description": "Public (school district), francophone public (CSF) or independent.",
            "schema": {
              "type": "string",
              "enum": [
                "public",
                "francophone",
                "independent"
              ]
            }
          },
          {
            "name": "french",
            "in": "query",
            "required": false,
            "description": "French programs: immersion (early or late), francophone, core.",
            "schema": {
              "type": "string",
              "enum": [
                "immersion",
                "francophone",
                "core"
              ]
            }
          },
          {
            "name": "neighbourhood",
            "in": "query",
            "required": false,
            "description": "Neighbourhood slug (see /neighbourhoods).",
            "schema": {
              "type": "string",
              "examples": [
                "college-heights"
              ]
            }
          },
          {
            "name": "locality",
            "in": "query",
            "required": false,
            "description": "Town as the Ministry writes it.",
            "schema": {
              "type": "string",
              "examples": [
                "Prince George"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Text search in name, address, neighbourhood.",
            "schema": {
              "type": "string",
              "examples": [
                "Heights"
              ]
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "description": "Sort by distance from \"lat,lng\" (adds `distanceKm`).",
            "schema": {
              "type": "string",
              "examples": [
                "53.9171,-122.7497"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id (provincial school number), slug, name, url, sector, level, grades, enrolment, enrolmentYear, capacity, address, locality, postal, lat, lng, km, neighbourhood, french: { core, earlyImmersion, lateImmersion, francophone }, district, website, phone, contactSource, catchment, schoolYear }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "sector": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "francophone"
                                  },
                                  {
                                    "type": "string",
                                    "const": "independent"
                                  },
                                  {
                                    "type": "string",
                                    "const": "public"
                                  }
                                ]
                              },
                              "sectorLabel": {
                                "type": "string"
                              },
                              "level": {
                                "type": "string"
                              },
                              "levelLabel": {
                                "type": "string"
                              },
                              "levelPublished": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "facility": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "program": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "alternate"
                                  },
                                  {
                                    "type": "string",
                                    "const": "continuing"
                                  },
                                  {
                                    "type": "string",
                                    "const": "online"
                                  },
                                  {
                                    "type": "string",
                                    "const": "other"
                                  },
                                  {
                                    "type": "string",
                                    "const": "standard"
                                  }
                                ]
                              },
                              "grades": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "gradeLow": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "gradeHigh": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "enrolment": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "enrolmentNote": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "enrolmentYear": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "capacity": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "address": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "locality": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "postal": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "km": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "neighbourhood": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "neighbourhoodSlug": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "french": {
                                "type": "object",
                                "properties": {
                                  "core": {
                                    "type": "boolean"
                                  },
                                  "earlyImmersion": {
                                    "type": "boolean"
                                  },
                                  "lateImmersion": {
                                    "type": "boolean"
                                  },
                                  "francophone": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "core",
                                  "earlyImmersion",
                                  "lateImmersion",
                                  "francophone"
                                ]
                              },
                              "district": {
                                "type": "object",
                                "properties": {
                                  "number": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "name": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "number",
                                  "name"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "contactSource": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "source": {
                                        "type": "string"
                                      },
                                      "sourceUrl": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "source",
                                      "sourceUrl"
                                    ]
                                  }
                                ]
                              },
                              "catchment": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "schoolYear": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "gone": {
                                "type": "boolean"
                              },
                              "source": {
                                "type": "string"
                              },
                              "sourceUrl": {
                                "type": "string"
                              },
                              "license": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": "string"
                              },
                              "distanceKm": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "id",
                              "slug",
                              "name",
                              "url",
                              "sector",
                              "sectorLabel",
                              "level",
                              "levelLabel",
                              "levelPublished",
                              "facility",
                              "program",
                              "grades",
                              "gradeLow",
                              "gradeHigh",
                              "enrolment",
                              "enrolmentNote",
                              "enrolmentYear",
                              "capacity",
                              "address",
                              "locality",
                              "postal",
                              "lat",
                              "lng",
                              "km",
                              "neighbourhood",
                              "neighbourhoodSlug",
                              "french",
                              "district",
                              "website",
                              "phone",
                              "contactSource",
                              "catchment",
                              "schoolYear",
                              "gone",
                              "source",
                              "sourceUrl",
                              "license",
                              "fetchedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "slug": "string",
                          "name": "string",
                          "url": "https://example.org/",
                          "sector": "francophone",
                          "sectorLabel": "string",
                          "level": "string",
                          "levelLabel": "string",
                          "levelPublished": "string",
                          "facility": "string",
                          "program": "alternate",
                          "grades": "string",
                          "gradeLow": "string",
                          "gradeHigh": "string",
                          "enrolment": 0,
                          "enrolmentNote": "string",
                          "enrolmentYear": "string",
                          "capacity": 0,
                          "address": "string",
                          "locality": "string",
                          "postal": "string",
                          "lat": 0,
                          "lng": 0,
                          "km": 0,
                          "neighbourhood": "string",
                          "neighbourhoodSlug": "string",
                          "french": {
                            "core": false,
                            "earlyImmersion": false,
                            "lateImmersion": false,
                            "francophone": false
                          },
                          "district": {
                            "number": "string",
                            "name": "string"
                          },
                          "website": "https://example.org/",
                          "phone": "string",
                          "contactSource": {
                            "source": "string",
                            "sourceUrl": "https://example.org/"
                          },
                          "catchment": "string",
                          "schoolYear": "string",
                          "gone": false,
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "license": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "distanceKm": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/schools",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/schools/post-secondary": {
      "get": {
        "operationId": "get-schools-post-secondary",
        "tags": [
          "Community"
        ],
        "summary": "Universities, colleges and other post-secondary campuses in Prince George, plus early learning and official school links",
        "description": "Example: `/api/v1/schools/post-secondary`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ checked, postSecondary: [{ id, name, kind, address, phone, website, about, sourceUrl }], earlyLearning: [{ label, url, note }], links: [...], firstNations: [...] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "checked": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "postSecondary": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "address": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "phone": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "website": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "about": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lng": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "kind",
                                  "sourceUrl"
                                ]
                              }
                            },
                            "earlyLearning": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "note": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            },
                            "links": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "note": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            },
                            "firstNations": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "note": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "nation": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "community": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "label",
                                  "url"
                                ]
                              }
                            }
                          },
                          "required": [
                            "checked",
                            "postSecondary",
                            "earlyLearning",
                            "links",
                            "firstNations"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "checked": "string",
                        "postSecondary": [
                          {
                            "id": "string",
                            "name": "string",
                            "kind": "string",
                            "address": "string",
                            "phone": "string",
                            "website": "https://example.org/",
                            "about": "string",
                            "lat": 0,
                            "lng": 0,
                            "sourceUrl": "https://example.org/"
                          }
                        ],
                        "earlyLearning": [
                          {
                            "label": "string",
                            "url": "https://example.org/",
                            "note": "string"
                          }
                        ],
                        "links": [
                          {
                            "label": "string",
                            "url": "https://example.org/",
                            "note": "string"
                          }
                        ],
                        "firstNations": [
                          {
                            "label": "string",
                            "url": "https://example.org/",
                            "note": "string",
                            "nation": "string",
                            "community": "string"
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/schools/post-secondary",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/schools/{id}": {
      "get": {
        "operationId": "get-schools-id",
        "tags": [
          "Community"
        ],
        "summary": "One school by provincial school number or slug",
        "description": "Example: `/api/v1/schools/05757036`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Provincial school number (mincode) or slug.",
            "schema": {
              "type": "string",
              "examples": [
                "05757036"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "url": {
                              "type": "string"
                            },
                            "sector": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "francophone"
                                },
                                {
                                  "type": "string",
                                  "const": "independent"
                                },
                                {
                                  "type": "string",
                                  "const": "public"
                                }
                              ]
                            },
                            "sectorLabel": {
                              "type": "string"
                            },
                            "level": {
                              "type": "string"
                            },
                            "levelLabel": {
                              "type": "string"
                            },
                            "levelPublished": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "facility": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "program": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "alternate"
                                },
                                {
                                  "type": "string",
                                  "const": "continuing"
                                },
                                {
                                  "type": "string",
                                  "const": "online"
                                },
                                {
                                  "type": "string",
                                  "const": "other"
                                },
                                {
                                  "type": "string",
                                  "const": "standard"
                                }
                              ]
                            },
                            "grades": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "gradeLow": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "gradeHigh": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "enrolment": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "enrolmentNote": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "enrolmentYear": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "capacity": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "address": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "locality": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "postal": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "lat": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "lng": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "km": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "neighbourhood": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "neighbourhoodSlug": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "french": {
                              "type": "object",
                              "properties": {
                                "core": {
                                  "type": "boolean"
                                },
                                "earlyImmersion": {
                                  "type": "boolean"
                                },
                                "lateImmersion": {
                                  "type": "boolean"
                                },
                                "francophone": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "core",
                                "earlyImmersion",
                                "lateImmersion",
                                "francophone"
                              ]
                            },
                            "district": {
                              "type": "object",
                              "properties": {
                                "number": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "name": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "number",
                                "name"
                              ]
                            },
                            "website": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "phone": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "contactSource": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "source": {
                                      "type": "string"
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "source",
                                    "sourceUrl"
                                  ]
                                }
                              ]
                            },
                            "catchment": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "schoolYear": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "gone": {
                              "type": "boolean"
                            },
                            "source": {
                              "type": "string"
                            },
                            "sourceUrl": {
                              "type": "string"
                            },
                            "license": {
                              "type": "string"
                            },
                            "fetchedAt": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "slug",
                            "name",
                            "url",
                            "sector",
                            "sectorLabel",
                            "level",
                            "levelLabel",
                            "levelPublished",
                            "facility",
                            "program",
                            "grades",
                            "gradeLow",
                            "gradeHigh",
                            "enrolment",
                            "enrolmentNote",
                            "enrolmentYear",
                            "capacity",
                            "address",
                            "locality",
                            "postal",
                            "lat",
                            "lng",
                            "km",
                            "neighbourhood",
                            "neighbourhoodSlug",
                            "french",
                            "district",
                            "website",
                            "phone",
                            "contactSource",
                            "catchment",
                            "schoolYear",
                            "gone",
                            "source",
                            "sourceUrl",
                            "license",
                            "fetchedAt"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "id": "string",
                        "slug": "string",
                        "name": "string",
                        "url": "https://example.org/",
                        "sector": "francophone",
                        "sectorLabel": "string",
                        "level": "string",
                        "levelLabel": "string",
                        "levelPublished": "string",
                        "facility": "string",
                        "program": "alternate",
                        "grades": "string",
                        "gradeLow": "string",
                        "gradeHigh": "string",
                        "enrolment": 0,
                        "enrolmentNote": "string",
                        "enrolmentYear": "string",
                        "capacity": 0,
                        "address": "string",
                        "locality": "string",
                        "postal": "string",
                        "lat": 0,
                        "lng": 0,
                        "km": 0,
                        "neighbourhood": "string",
                        "neighbourhoodSlug": "string",
                        "french": {
                          "core": false,
                          "earlyImmersion": false,
                          "lateImmersion": false,
                          "francophone": false
                        },
                        "district": {
                          "number": "string",
                          "name": "string"
                        },
                        "website": "https://example.org/",
                        "phone": "string",
                        "contactSource": {
                          "source": "string",
                          "sourceUrl": "https://example.org/"
                        },
                        "catchment": "string",
                        "schoolYear": "string",
                        "gone": false,
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "license": "string",
                        "fetchedAt": "2026-01-01T00:00:00Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/schools/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/service-requests": {
      "get": {
        "operationId": "get-service-requests",
        "tags": [
          "City data"
        ],
        "summary": "What residents report to the City: counts by topic, type and neighbourhood",
        "description": "Service requests logged by the City (potholes, garbage, water, animals, bylaw...), from the City’s open data, refreshed daily. Counts for the `days` up to the newest day in the data (the City publishes a day or two behind), each with `previous` (average of the four windows before) and `change` (%). Aggregates only: no addresses or locations.\n\nExample: `/api/v1/service-requests`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "Window length: 7 (default), 30 or 90.",
            "schema": {
              "type": "integer",
              "enum": [
                7,
                30,
                90
              ],
              "examples": [
                7
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ from, through, days, total, previousTotal, byTopic: [{ key, label, count, previous, change }], byType: [...], byNeighbourhood: [{ key, label, count, previous, change, url }], unplaced }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "from": {
                                  "type": "string"
                                },
                                "through": {
                                  "type": "string"
                                },
                                "days": {
                                  "type": "number"
                                },
                                "total": {
                                  "type": "number"
                                },
                                "previousTotal": {
                                  "type": "number"
                                },
                                "byTopic": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "count": {
                                        "type": "number"
                                      },
                                      "previous": {
                                        "type": "number"
                                      },
                                      "change": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "label",
                                      "count",
                                      "previous",
                                      "change"
                                    ]
                                  }
                                },
                                "byType": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "count": {
                                        "type": "number"
                                      },
                                      "previous": {
                                        "type": "number"
                                      },
                                      "change": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "topic": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "label",
                                      "count",
                                      "previous",
                                      "change",
                                      "topic"
                                    ]
                                  }
                                },
                                "byNeighbourhood": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string"
                                      },
                                      "label": {
                                        "type": "string"
                                      },
                                      "count": {
                                        "type": "number"
                                      },
                                      "previous": {
                                        "type": "number"
                                      },
                                      "change": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "key",
                                      "label",
                                      "count",
                                      "previous",
                                      "change",
                                      "url"
                                    ]
                                  }
                                },
                                "unplaced": {
                                  "type": "number"
                                }
                              },
                              "required": [
                                "from",
                                "through",
                                "days",
                                "total",
                                "previousTotal",
                                "byTopic",
                                "byType",
                                "byNeighbourhood",
                                "unplaced"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "from": "string",
                        "through": "string",
                        "days": 0,
                        "total": 0,
                        "previousTotal": 0,
                        "byTopic": [
                          {
                            "key": "string",
                            "label": "string",
                            "count": 0,
                            "previous": 0,
                            "change": 0
                          }
                        ],
                        "byType": [
                          {
                            "key": "string",
                            "label": "string",
                            "count": 0,
                            "previous": 0,
                            "change": 0,
                            "topic": "string"
                          }
                        ],
                        "byNeighbourhood": [
                          {
                            "key": "string",
                            "label": "string",
                            "count": 0,
                            "previous": 0,
                            "change": 0,
                            "url": "https://example.org/"
                          }
                        ],
                        "unplaced": 0
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/service-requests",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/service-requests/weekly": {
      "get": {
        "operationId": "get-service-requests-weekly",
        "tags": [
          "City data"
        ],
        "summary": "Weekly service request counts (weeks start Monday), overall or for one type, topic or neighbourhood",
        "description": "Example: `/api/v1/service-requests/weekly`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "weeks",
            "in": "query",
            "required": false,
            "description": "Number of weeks, 1 to 104 (default 26).",
            "schema": {
              "type": "integer",
              "examples": [
                12
              ]
            }
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "description": "One of locates, roads, water, garbage, animals, parks, bylaw, other.",
            "schema": {
              "type": "string",
              "examples": [
                "roads"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "A request type from /service-requests/types (e.g. Pothole).",
            "schema": {
              "type": "string",
              "examples": [
                "Pothole"
              ]
            }
          },
          {
            "name": "neighbourhood",
            "in": "query",
            "required": false,
            "description": "Neighbourhood slug (see /neighbourhoods).",
            "schema": {
              "type": "string",
              "examples": [
                "downtown"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 104.",
            "schema": {
              "type": "integer",
              "default": 104
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ week, total, byTopic: { topic: count } }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "week": {
                                "type": "string"
                              },
                              "total": {
                                "type": "number"
                              },
                              "byTopic": {
                                "type": "object",
                                "additionalProperties": {
                                  "type": "number"
                                }
                              }
                            },
                            "required": [
                              "week",
                              "total",
                              "byTopic"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "fictional": {
                    "summary": "Fictional illustration; not current city data",
                    "value": {
                      "data": [
                        {
                          "week": "2026-01-05",
                          "total": 0,
                          "byTopic": {
                            "roads": 0
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/service-requests/weekly",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/service-requests/types": {
      "get": {
        "operationId": "get-service-requests-types",
        "tags": [
          "City data"
        ],
        "summary": "Every service request type, with its topic and count over the last year",
        "description": "Example: `/api/v1/service-requests/types`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 500.",
            "schema": {
              "type": "integer",
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "topic": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "type",
                              "label",
                              "topic",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "type": "string",
                          "label": "string",
                          "topic": "string",
                          "count": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/service-requests/types",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/services/fees": {
      "get": {
        "operationId": "get-services-fees",
        "tags": [
          "Garbage & recycling"
        ],
        "summary": "Landfill tipping fees as published by the operator",
        "description": "Every row of the operator’s tipping fee tables (refuse, demolition and construction waste, recyclables, volume-based load classes, compost), re-read daily. `fees` maps each published column (e.g. \"minimum fee\", \"weight based tipping fee\") to the value exactly as published.\n\nExample: `/api/v1/services/fees`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Material or section text.",
            "schema": {
              "type": "string",
              "examples": [
                "drywall"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 200.",
            "schema": {
              "type": "integer",
              "default": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ section, material, fees: { column: value }, sourceUrl, fetchedAt }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "section": {
                                "type": "string"
                              },
                              "material": {
                                "type": "string"
                              },
                              "fees": {
                                "type": "object",
                                "additionalProperties": {
                                  "type": "string"
                                }
                              },
                              "sourceUrl": {
                                "type": "string"
                              },
                              "fetchedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "section",
                              "material",
                              "fees",
                              "sourceUrl",
                              "fetchedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "section": "string",
                          "material": "string",
                          "fees": {},
                          "sourceUrl": "https://example.org/",
                          "fetchedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/services/fees",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/smell": {
      "get": {
        "operationId": "get-smell",
        "tags": [
          "Live conditions"
        ],
        "summary": "Pulp mill smell forecast for Prince George: downwind neighbourhoods and reduced-sulphur readings",
        "description": "The current hour and the next 24 hours of forecast wind with the neighbourhoods downwind of the odour sources, the neighbourhoods affected at some point in the next day, and the latest total reduced sulphur (TRS) and hydrogen sulphide (H2S) readings (ppb) at the provincial air stations, with each reading’s percentile among the station’s last 30 days (null until enough history). An estimate: odour is assumed to travel with the wind from each source; a neighbourhood is downwind when the bearing from a source to its centre is within 30° of the wind’s path and it is within 12 km (likely in the nearer half, possible beyond). Below 5 km/h odour is treated as lingering within 3 km of the sources. Terrain, inversions and how much each mill emits are not modelled.\n\nExample: `/api/v1/smell`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ now: { line, hour }, next24: [hour], areas: [{ slug, name, first, last, hours, likely }], readings: [station], sources: [{ id, name, lat, lng }], method }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "now": {
                              "type": "object",
                              "properties": {
                                "line": {
                                  "type": "string"
                                },
                                "hour": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "t": {
                                          "type": "string"
                                        },
                                        "wdir": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "wspdKmh": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "calm": {
                                          "type": "boolean"
                                        },
                                        "from": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "toward": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "affected": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "slug": {
                                                "type": "string"
                                              },
                                              "name": {
                                                "type": "string"
                                              },
                                              "level": {
                                                "anyOf": [
                                                  {
                                                    "type": "string",
                                                    "const": "likely"
                                                  },
                                                  {
                                                    "type": "string",
                                                    "const": "possible"
                                                  }
                                                ]
                                              },
                                              "km": {
                                                "type": "number"
                                              },
                                              "from": {
                                                "type": "array",
                                                "items": {
                                                  "type": "string"
                                                }
                                              }
                                            },
                                            "required": [
                                              "slug",
                                              "name",
                                              "level",
                                              "km",
                                              "from"
                                            ]
                                          }
                                        }
                                      },
                                      "required": [
                                        "t",
                                        "wdir",
                                        "wspdKmh",
                                        "calm",
                                        "from",
                                        "toward",
                                        "affected"
                                      ]
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "line",
                                "hour"
                              ]
                            },
                            "next24": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "t": {
                                    "type": "string"
                                  },
                                  "wdir": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "wspdKmh": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "calm": {
                                    "type": "boolean"
                                  },
                                  "from": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "toward": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "affected": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "slug": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "level": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "likely"
                                            },
                                            {
                                              "type": "string",
                                              "const": "possible"
                                            }
                                          ]
                                        },
                                        "km": {
                                          "type": "number"
                                        },
                                        "from": {
                                          "type": "array",
                                          "items": {
                                            "type": "string"
                                          }
                                        }
                                      },
                                      "required": [
                                        "slug",
                                        "name",
                                        "level",
                                        "km",
                                        "from"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "t",
                                  "wdir",
                                  "wspdKmh",
                                  "calm",
                                  "from",
                                  "toward",
                                  "affected"
                                ]
                              }
                            },
                            "areas": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "first": {
                                    "type": "string"
                                  },
                                  "last": {
                                    "type": "string"
                                  },
                                  "hours": {
                                    "type": "number"
                                  },
                                  "likely": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "slug",
                                  "name",
                                  "first",
                                  "last",
                                  "hours",
                                  "likely"
                                ]
                              }
                            },
                            "readings": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "station": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "t": {
                                    "type": "string"
                                  },
                                  "trs": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "h2s": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "wdir": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "wspdKmh": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "lat": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "lng": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "trsPct": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "h2sPct": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "station",
                                  "name",
                                  "t",
                                  "trs",
                                  "h2s",
                                  "wdir",
                                  "wspdKmh",
                                  "url",
                                  "lat",
                                  "lng",
                                  "trsPct",
                                  "h2sPct"
                                ]
                              }
                            },
                            "sources": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "lat": {
                                    "type": "number"
                                  },
                                  "lng": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "id",
                                  "name",
                                  "lat",
                                  "lng"
                                ]
                              }
                            },
                            "method": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "now",
                            "next24",
                            "areas",
                            "readings",
                            "sources",
                            "method"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "now": {
                          "line": "string",
                          "hour": {
                            "t": "string",
                            "wdir": 0,
                            "wspdKmh": 0,
                            "calm": false,
                            "from": "string",
                            "toward": "string",
                            "affected": [
                              {
                                "slug": "string",
                                "name": "string",
                                "level": "likely",
                                "km": 0,
                                "from": [
                                  "string"
                                ]
                              }
                            ]
                          }
                        },
                        "next24": [
                          {
                            "t": "string",
                            "wdir": 0,
                            "wspdKmh": 0,
                            "calm": false,
                            "from": "string",
                            "toward": "string",
                            "affected": [
                              {
                                "slug": "string",
                                "name": "string",
                                "level": "likely",
                                "km": 0,
                                "from": [
                                  "string"
                                ]
                              }
                            ]
                          }
                        ],
                        "areas": [
                          {
                            "slug": "string",
                            "name": "string",
                            "first": "string",
                            "last": "string",
                            "hours": 0,
                            "likely": 0
                          }
                        ],
                        "readings": [
                          {
                            "station": "string",
                            "name": "string",
                            "t": "string",
                            "trs": 0,
                            "h2s": 0,
                            "wdir": 0,
                            "wspdKmh": 0,
                            "url": "https://example.org/",
                            "lat": 0,
                            "lng": 0,
                            "trsPct": 0,
                            "h2sPct": 0
                          }
                        ],
                        "sources": [
                          {
                            "id": "string",
                            "name": "string",
                            "lat": 0,
                            "lng": 0
                          }
                        ],
                        "method": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/smell",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/smell/readings": {
      "get": {
        "operationId": "get-smell-readings",
        "tags": [
          "Live conditions"
        ],
        "summary": "Hourly reduced-sulphur (TRS, H2S) and wind readings at the air stations",
        "description": "Example: `/api/v1/smell/readings`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "station",
            "in": "query",
            "required": false,
            "description": "Station id (EMS id) from /smell.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hours",
            "in": "query",
            "required": false,
            "description": "Look-back window, 1 to 2160 hours.",
            "schema": {
              "type": "integer",
              "default": 72
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, between 1 and 2000.",
            "schema": {
              "type": "integer",
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Follow links.next until it is null.",
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ station, name, t, trs, h2s, wdir, wspdKmh }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/JsonValue"
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        null
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/smell/readings",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/spending": {
      "get": {
        "operationId": "get-spending",
        "tags": [
          "City spending"
        ],
        "summary": "City spending and pay at a glance: totals by year for suppliers, grants, contract awards, council and staff pay",
        "description": "One row per fiscal year with the count and total of payments to suppliers and grants over the reporting threshold, contract awards (by award date), mayor and council pay and expenses, and staff paid over the threshold (count, total, median). `datasets` says where each table comes from, when the City last edited it, the latest year it holds and whether a year that should be out by now is missing (`behind`). The City publishes the statement of financial information once a year.\n\nExample: `/api/v1/spending`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ years: [{ year, suppliers: { count, total }, grants, contracts, council: { members, pay, expenses }, staff: { count, total, median } }], datasets: [{ id, title, sourceUrl, editedAt, rows, firstYear, latestYear, expectedYear, behind, fetchedAt, error }], thresholds, links }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "years": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "year": {
                                    "type": "number"
                                  },
                                  "suppliers": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "count": {
                                            "type": "number"
                                          },
                                          "total": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "count",
                                          "total"
                                        ]
                                      }
                                    ]
                                  },
                                  "grants": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "count": {
                                            "type": "number"
                                          },
                                          "total": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "count",
                                          "total"
                                        ]
                                      }
                                    ]
                                  },
                                  "contracts": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "count": {
                                            "type": "number"
                                          },
                                          "total": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "count",
                                          "total"
                                        ]
                                      }
                                    ]
                                  },
                                  "council": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "members": {
                                            "type": "number"
                                          },
                                          "pay": {
                                            "type": "number"
                                          },
                                          "expenses": {
                                            "type": "number"
                                          }
                                        },
                                        "required": [
                                          "members",
                                          "pay",
                                          "expenses"
                                        ]
                                      }
                                    ]
                                  },
                                  "staff": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "count": {
                                            "type": "number"
                                          },
                                          "total": {
                                            "type": "number"
                                          },
                                          "median": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "count",
                                          "total",
                                          "median"
                                        ]
                                      }
                                    ]
                                  }
                                },
                                "required": [
                                  "year",
                                  "suppliers",
                                  "grants",
                                  "contracts",
                                  "council",
                                  "staff"
                                ]
                              }
                            },
                            "datasets": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "editedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "rows": {
                                    "type": "number"
                                  },
                                  "firstYear": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "latestYear": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "expectedYear": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "behind": {
                                    "type": "boolean"
                                  },
                                  "fetchedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "checkedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "error": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "sourceUrl",
                                  "editedAt",
                                  "rows",
                                  "firstYear",
                                  "latestYear",
                                  "expectedYear",
                                  "behind",
                                  "fetchedAt",
                                  "checkedAt",
                                  "error"
                                ]
                              }
                            },
                            "thresholds": {
                              "type": "object",
                              "properties": {
                                "suppliers": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "grants": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "staff": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                }
                              }
                            },
                            "links": {
                              "type": "object",
                              "properties": {
                                "reports": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "bidding": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "page": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "reports",
                                "bidding",
                                "page"
                              ]
                            }
                          },
                          "required": [
                            "years",
                            "datasets",
                            "thresholds",
                            "links"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "years": [
                          {
                            "year": 0,
                            "suppliers": {
                              "count": 0,
                              "total": 0
                            },
                            "grants": {
                              "count": 0,
                              "total": 0
                            },
                            "contracts": {
                              "count": 0,
                              "total": 0
                            },
                            "council": {
                              "members": 0,
                              "pay": 0,
                              "expenses": 0
                            },
                            "staff": {
                              "count": 0,
                              "total": 0,
                              "median": 0
                            }
                          }
                        ],
                        "datasets": [
                          {
                            "id": "string",
                            "title": "string",
                            "sourceUrl": "https://example.org/",
                            "editedAt": "2026-01-01T00:00:00Z",
                            "rows": 0,
                            "firstYear": 0,
                            "latestYear": 0,
                            "expectedYear": 0,
                            "behind": false,
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "checkedAt": "2026-01-01T00:00:00Z",
                            "error": "string"
                          }
                        ],
                        "thresholds": {
                          "suppliers": 0,
                          "grants": 0,
                          "staff": 0
                        },
                        "links": {
                          "reports": "string",
                          "bidding": "string",
                          "page": "https://example.org/"
                        }
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/spending",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/spending/suppliers": {
      "get": {
        "operationId": "get-spending-suppliers",
        "tags": [
          "City spending"
        ],
        "summary": "Payments to suppliers over $25,000 by year, as the City reports them",
        "description": "Every supplier the City paid more than $25,000 in a fiscal year, from the statement of financial information it publishes each year. `total` is the City’s total for the year (`amount` by cheque or transfer, `card` by purchasing card, when split). `group=true` returns one row per supplier with the total across years (newest years first in `byYear`). Names are as the City publishes them.\n\nExample: `/api/v1/spending/suppliers`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name.",
            "schema": {
              "type": "string",
              "examples": [
                "Paving"
              ]
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Fiscal year (calendar year), e.g. 2024.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "group",
            "in": "query",
            "required": false,
            "description": "One row per name, totalled across years.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "amount (default: year, then largest first) or name.",
            "schema": {
              "type": "string",
              "enum": [
                "amount",
                "name"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ name, year, total, amount, card }] or with group=true [{ name, total, years, first, latest, byYear: [{ year, total }] }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "total": {
                                    "type": "number"
                                  },
                                  "years": {
                                    "type": "number"
                                  },
                                  "first": {
                                    "type": "number"
                                  },
                                  "latest": {
                                    "type": "number"
                                  },
                                  "byYear": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "year": {
                                          "type": "number"
                                        },
                                        "total": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "year",
                                        "total"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "total",
                                  "years",
                                  "first",
                                  "latest",
                                  "byYear"
                                ]
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "year": {
                                    "type": "number"
                                  },
                                  "total": {
                                    "type": "number"
                                  },
                                  "amount": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "card": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "name",
                                  "year",
                                  "total",
                                  "amount",
                                  "card"
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "name": "string",
                          "total": 0,
                          "years": 0,
                          "first": 0,
                          "latest": 0,
                          "byYear": [
                            {
                              "year": 0,
                              "total": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/spending/suppliers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/spending/grants": {
      "get": {
        "operationId": "get-spending-grants",
        "tags": [
          "City spending"
        ],
        "summary": "Grants and contributions over $25,000 by year, as the City reports them",
        "description": "Every grant recipient the City paid more than $25,000 in a fiscal year, from the statement of financial information it publishes each year. `total` is the City’s total for the year (`amount` by cheque or transfer, `card` by purchasing card, when split). `group=true` returns one row per recipient with the total across years (newest years first in `byYear`). Names are as the City publishes them.\n\nExample: `/api/v1/spending/grants`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name.",
            "schema": {
              "type": "string",
              "examples": [
                "Society"
              ]
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Fiscal year (calendar year), e.g. 2024.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "group",
            "in": "query",
            "required": false,
            "description": "One row per name, totalled across years.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "description": "amount (default: year, then largest first) or name.",
            "schema": {
              "type": "string",
              "enum": [
                "amount",
                "name"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ name, year, total, amount, card }] or with group=true [{ name, total, years, first, latest, byYear: [{ year, total }] }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "total": {
                                    "type": "number"
                                  },
                                  "years": {
                                    "type": "number"
                                  },
                                  "first": {
                                    "type": "number"
                                  },
                                  "latest": {
                                    "type": "number"
                                  },
                                  "byYear": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "year": {
                                          "type": "number"
                                        },
                                        "total": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "year",
                                        "total"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "total",
                                  "years",
                                  "first",
                                  "latest",
                                  "byYear"
                                ]
                              }
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "year": {
                                    "type": "number"
                                  },
                                  "total": {
                                    "type": "number"
                                  },
                                  "amount": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "card": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  }
                                },
                                "required": [
                                  "name",
                                  "year",
                                  "total",
                                  "amount",
                                  "card"
                                ]
                              }
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "name": "string",
                          "total": 0,
                          "years": 0,
                          "first": 0,
                          "latest": 0,
                          "byYear": [
                            {
                              "year": 0,
                              "total": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/spending/grants",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/spending/contracts": {
      "get": {
        "operationId": "get-spending-contracts",
        "tags": [
          "City spending"
        ],
        "summary": "Contracts the City awarded: bid number, method, description, vendor, amount and date, newest first",
        "description": "The City’s procurement contract awards. `method` puts the City’s own process label (`process`) in plain words: Pre-qualification, Standing offer, Request for proposals, Tender, Request for quotations, Direct award (exemption), Rotational list, Expression of interest, Supply agreement, Extension, Other, Not stated. `extension` marks extensions of earlier awards. A few awards have no date or amount in the source.\n\nExample: `/api/v1/spending/contracts`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the bid number, description or vendor.",
            "schema": {
              "type": "string",
              "examples": [
                "snow"
              ]
            }
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Fiscal year (calendar year), e.g. 2024.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "method",
            "in": "query",
            "required": false,
            "description": "Plain-words method.",
            "schema": {
              "type": "string",
              "enum": [
                "Pre-qualification",
                "Standing offer",
                "Request for proposals",
                "Tender",
                "Request for quotations",
                "Direct award (exemption)",
                "Rotational list",
                "Expression of interest",
                "Supply agreement",
                "Extension",
                "Other",
                "Not stated"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ bid, description, vendor, amount, awardedOn, year, method, process, extension }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "bid": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "description": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "vendor": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "amount": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "awardedOn": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "year": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "method": {
                                "type": "string"
                              },
                              "process": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "extension": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "bid",
                              "description",
                              "vendor",
                              "amount",
                              "awardedOn",
                              "year",
                              "method",
                              "process",
                              "extension"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "bid": "string",
                          "description": "string",
                          "vendor": "string",
                          "amount": 0,
                          "awardedOn": "string",
                          "year": 0,
                          "method": "string",
                          "process": "string",
                          "extension": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/spending/contracts",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/spending/remuneration/council": {
      "get": {
        "operationId": "get-spending-remuneration-council",
        "tags": [
          "City spending"
        ],
        "summary": "Mayor and council pay, vehicle allowance, expenses and benefits by year",
        "description": "As reported in the City’s statement of financial information: `payTaxable` and `payNonTaxable` (the City labels these taxable and non-taxable remuneration), `vehicle` allowance, `total` as the City publishes it, then `expenses` and `benefits`. One row per person, position and year (a person who changed position in a year has two rows).\n\nExample: `/api/v1/spending/remuneration/council`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Fiscal year (calendar year), e.g. 2024.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name.",
            "schema": {
              "type": "string",
              "examples": [
                "Hall"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ year, name, position, payTaxable, payNonTaxable, vehicle, total, expenses, benefits, contracts }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "year": {
                                "type": "number"
                              },
                              "name": {
                                "type": "string"
                              },
                              "position": {
                                "type": "string"
                              },
                              "payTaxable": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "payNonTaxable": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "vehicle": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "total": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "expenses": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "benefits": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "contracts": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              }
                            },
                            "required": [
                              "year",
                              "name",
                              "position",
                              "payTaxable",
                              "payNonTaxable",
                              "vehicle",
                              "total",
                              "expenses",
                              "benefits",
                              "contracts"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "year": 0,
                          "name": "string",
                          "position": "string",
                          "payTaxable": 0,
                          "payNonTaxable": 0,
                          "vehicle": 0,
                          "total": 0,
                          "expenses": 0,
                          "benefits": 0,
                          "contracts": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/spending/remuneration/council",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/spending/remuneration/staff/summary": {
      "get": {
        "operationId": "get-spending-remuneration-staff-summary",
        "tags": [
          "City spending"
        ],
        "summary": "Staff paid over the threshold: count, total, median and pay bands for a year, by department",
        "description": "Aggregates of the City’s list of employees paid more than $75,000 in a fiscal year (no names). `departments` groups by the department or position the City lists. Defaults to the latest year published.\n\nExample: `/api/v1/spending/remuneration/staff/summary`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Fiscal year (calendar year), e.g. 2024.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ year, count, total, median, mean, top, bands: [{ from, to, count }], departments: [{ department, count, total, median }], years: [{ year, count, total, median }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "null"
                            },
                            {
                              "type": "object",
                              "properties": {
                                "years": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "count": {
                                        "type": "number"
                                      },
                                      "total": {
                                        "type": "number"
                                      },
                                      "median": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "year": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "year"
                                    ]
                                  }
                                },
                                "year": {
                                  "type": "number"
                                },
                                "count": {
                                  "type": "number"
                                },
                                "total": {
                                  "type": "number"
                                },
                                "median": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "mean": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "top": {
                                  "type": [
                                    "null",
                                    "number"
                                  ]
                                },
                                "bands": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "from": {
                                        "type": "number"
                                      },
                                      "to": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "count": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "from",
                                      "to",
                                      "count"
                                    ]
                                  }
                                },
                                "departments": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "department": {
                                        "type": "string"
                                      },
                                      "count": {
                                        "type": "number"
                                      },
                                      "total": {
                                        "type": "number"
                                      },
                                      "median": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "department",
                                      "count",
                                      "total",
                                      "median"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "years",
                                "year",
                                "count",
                                "total",
                                "median",
                                "mean",
                                "top",
                                "bands",
                                "departments"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "years": [
                          {
                            "count": 0,
                            "total": 0,
                            "median": 0,
                            "year": 0
                          }
                        ],
                        "year": 0,
                        "count": 0,
                        "total": 0,
                        "median": 0,
                        "mean": 0,
                        "top": 0,
                        "bands": [
                          {
                            "from": 0,
                            "to": 0,
                            "count": 0
                          }
                        ],
                        "departments": [
                          {
                            "department": "string",
                            "count": 0,
                            "total": 0,
                            "median": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/spending/remuneration/staff/summary",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/spending/remuneration/staff": {
      "get": {
        "operationId": "get-spending-remuneration-staff",
        "tags": [
          "City spending"
        ],
        "x-agents": false,
        "summary": "Staff paid over the threshold by year, by name, as the City publishes them",
        "description": "The City’s statutory list of employees paid more than $75,000 in a fiscal year (name, department or position as listed, remuneration, expenses), unchanged. For counts and medians use /spending/remuneration/staff/summary.\n\nExample: `/api/v1/spending/remuneration/staff`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Fiscal year (calendar year), e.g. 2024.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name or department.",
            "schema": {
              "type": "string",
              "examples": [
                "Fire"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ year, name, department, remuneration, expenses }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "year": {
                                "type": "number"
                              },
                              "name": {
                                "type": "string"
                              },
                              "department": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "remuneration": {
                                "type": "number"
                              },
                              "expenses": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              }
                            },
                            "required": [
                              "year",
                              "name",
                              "department",
                              "remuneration",
                              "expenses"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "year": 0,
                          "name": "string",
                          "department": "string",
                          "remuneration": 0,
                          "expenses": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/spending/remuneration/staff",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/spending/council-years": {
      "get": {
        "operationId": "get-spending-council-years",
        "tags": [
          "City spending"
        ],
        "summary": "Who sat on council each year: the mayor and councillors as the City lists them",
        "description": "Example: `/api/v1/spending/council-years`\n\nCache: 86400s.",
        "parameters": [
          {
            "name": "year",
            "in": "query",
            "required": false,
            "description": "Fiscal year (calendar year), e.g. 2024.",
            "schema": {
              "type": "integer",
              "examples": [
                2024
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ year, mayor, councillors: [name] }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "year": {
                                "type": "number"
                              },
                              "mayor": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "councillors": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              }
                            },
                            "required": [
                              "year",
                              "mayor",
                              "councillors"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "year": 0,
                          "mayor": "string",
                          "councillors": [
                            "string"
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/spending/council-years",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/sports/teams": {
      "get": {
        "operationId": "get-sports-teams",
        "tags": [
          "Sports"
        ],
        "summary": "Local teams with league, record, links and data freshness",
        "description": "Example: `/api/v1/sports/teams`\n\nCache: 300s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of teams: id, name, short, sport, league, leagueName, level, venue, record {w,l,otl,t,pts,rank,group,from}, recordText, page, links {site, schedule, standings, tickets}, source, sourceUrl, licence, attribution, fetchedAt, error.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "short": {
                                "type": "string"
                              },
                              "sport": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "league": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "leagueName": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "level": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "venue": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "record": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "w": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "l": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "otl": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "t": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "pts": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "rank": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "group": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "from": {
                                        "anyOf": [
                                          {
                                            "type": "string",
                                            "const": "games"
                                          },
                                          {
                                            "type": "string",
                                            "const": "standings"
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "w",
                                      "l",
                                      "otl",
                                      "t",
                                      "pts",
                                      "rank",
                                      "group",
                                      "from"
                                    ]
                                  }
                                ]
                              },
                              "recordText": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "page": {
                                "type": "string"
                              },
                              "links": {
                                "type": "object",
                                "properties": {
                                  "site": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "schedule": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "standings": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "tickets": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "site",
                                  "schedule",
                                  "standings",
                                  "tickets"
                                ]
                              },
                              "source": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "sourceUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licence": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "attribution": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "fetchedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "error": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "short",
                              "sport",
                              "league",
                              "leagueName",
                              "level",
                              "venue",
                              "record",
                              "recordText",
                              "page",
                              "links",
                              "source",
                              "sourceUrl",
                              "licence",
                              "attribution",
                              "fetchedAt",
                              "error"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "short": "string",
                          "sport": "string",
                          "league": "string",
                          "leagueName": "string",
                          "level": "string",
                          "venue": "string",
                          "record": {
                            "w": 0,
                            "l": 0,
                            "otl": 0,
                            "t": 0,
                            "pts": 0,
                            "rank": 0,
                            "group": "string",
                            "from": "games"
                          },
                          "recordText": "string",
                          "page": "https://example.org/",
                          "links": {
                            "site": "string",
                            "schedule": "string",
                            "standings": "string",
                            "tickets": "string"
                          },
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "licence": "string",
                          "attribution": "string",
                          "fetchedAt": "2026-01-01T00:00:00Z",
                          "error": "string"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/sports/teams",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/sports/teams/{id}": {
      "get": {
        "operationId": "get-sports-teams-id",
        "tags": [
          "Sports"
        ],
        "summary": "One team with its next games, latest results and standings",
        "description": "Example: `/api/v1/sports/teams/cougars`\n\nCache: 120s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Team id (from /sports/teams).",
            "schema": {
              "type": "string",
              "examples": [
                "cougars"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "next": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "venueId": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "page": {
                                    "type": "string"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "team": {
                                    "type": "string"
                                  },
                                  "season": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "seasonType": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "start": {
                                    "type": "string"
                                  },
                                  "localDate": {
                                    "type": "string"
                                  },
                                  "timeTbd": {
                                    "type": "boolean"
                                  },
                                  "home": {
                                    "type": [
                                      "boolean",
                                      "null"
                                    ]
                                  },
                                  "opponent": {
                                    "type": "string"
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "venueCity": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "cancelled"
                                      },
                                      {
                                        "type": "string",
                                        "const": "final"
                                      },
                                      {
                                        "type": "string",
                                        "const": "live"
                                      },
                                      {
                                        "type": "string",
                                        "const": "postponed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "scheduled"
                                      }
                                    ]
                                  },
                                  "statusText": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "period": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "clock": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "score": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "team": {
                                            "type": "number"
                                          },
                                          "opponent": {
                                            "type": "number"
                                          },
                                          "home": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "away": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "team",
                                          "opponent",
                                          "home",
                                          "away"
                                        ]
                                      }
                                    ]
                                  },
                                  "result": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "overtime": {
                                    "type": "boolean"
                                  },
                                  "shootout": {
                                    "type": "boolean"
                                  },
                                  "conference": {
                                    "type": [
                                      "boolean",
                                      "null"
                                    ]
                                  },
                                  "tickets": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "recap": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "boxscore": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "source": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "licence": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "venueId",
                                  "page",
                                  "id",
                                  "team",
                                  "season",
                                  "seasonType",
                                  "start",
                                  "localDate",
                                  "timeTbd",
                                  "home",
                                  "opponent",
                                  "venue",
                                  "venueCity",
                                  "status",
                                  "statusText",
                                  "period",
                                  "clock",
                                  "score",
                                  "result",
                                  "overtime",
                                  "shootout",
                                  "conference",
                                  "tickets",
                                  "recap",
                                  "boxscore",
                                  "source",
                                  "sourceUrl",
                                  "licence",
                                  "updatedAt"
                                ]
                              }
                            },
                            "results": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "venueId": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "page": {
                                    "type": "string"
                                  },
                                  "id": {
                                    "type": "string"
                                  },
                                  "team": {
                                    "type": "string"
                                  },
                                  "season": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "seasonType": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "start": {
                                    "type": "string"
                                  },
                                  "localDate": {
                                    "type": "string"
                                  },
                                  "timeTbd": {
                                    "type": "boolean"
                                  },
                                  "home": {
                                    "type": [
                                      "boolean",
                                      "null"
                                    ]
                                  },
                                  "opponent": {
                                    "type": "string"
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "venueCity": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "status": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "const": "cancelled"
                                      },
                                      {
                                        "type": "string",
                                        "const": "final"
                                      },
                                      {
                                        "type": "string",
                                        "const": "live"
                                      },
                                      {
                                        "type": "string",
                                        "const": "postponed"
                                      },
                                      {
                                        "type": "string",
                                        "const": "scheduled"
                                      }
                                    ]
                                  },
                                  "statusText": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "period": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "clock": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "score": {
                                    "anyOf": [
                                      {
                                        "type": "null"
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "team": {
                                            "type": "number"
                                          },
                                          "opponent": {
                                            "type": "number"
                                          },
                                          "home": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          },
                                          "away": {
                                            "type": [
                                              "null",
                                              "number"
                                            ]
                                          }
                                        },
                                        "required": [
                                          "team",
                                          "opponent",
                                          "home",
                                          "away"
                                        ]
                                      }
                                    ]
                                  },
                                  "result": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "overtime": {
                                    "type": "boolean"
                                  },
                                  "shootout": {
                                    "type": "boolean"
                                  },
                                  "conference": {
                                    "type": [
                                      "boolean",
                                      "null"
                                    ]
                                  },
                                  "tickets": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "recap": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "boxscore": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "source": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "licence": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "venueId",
                                  "page",
                                  "id",
                                  "team",
                                  "season",
                                  "seasonType",
                                  "start",
                                  "localDate",
                                  "timeTbd",
                                  "home",
                                  "opponent",
                                  "venue",
                                  "venueCity",
                                  "status",
                                  "statusText",
                                  "period",
                                  "clock",
                                  "score",
                                  "result",
                                  "overtime",
                                  "shootout",
                                  "conference",
                                  "tickets",
                                  "recap",
                                  "boxscore",
                                  "source",
                                  "sourceUrl",
                                  "licence",
                                  "updatedAt"
                                ]
                              }
                            },
                            "standings": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "team": {
                                    "type": "string"
                                  },
                                  "season": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "group": {
                                    "type": "string"
                                  },
                                  "rows": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "rank": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "team": {
                                          "type": "string"
                                        },
                                        "us": {
                                          "type": "boolean"
                                        },
                                        "gp": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "w": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "l": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "otl": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "t": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "pts": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "pct": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "gf": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "ga": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "streak": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "last10": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "rank",
                                        "team",
                                        "us",
                                        "gp",
                                        "w",
                                        "l",
                                        "otl",
                                        "t",
                                        "pts",
                                        "pct",
                                        "gf",
                                        "ga",
                                        "streak",
                                        "last10"
                                      ]
                                    }
                                  },
                                  "source": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "licence": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "updatedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "team",
                                  "season",
                                  "group",
                                  "rows",
                                  "source",
                                  "sourceUrl",
                                  "licence",
                                  "updatedAt"
                                ]
                              }
                            },
                            "id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "short": {
                              "type": "string"
                            },
                            "sport": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "league": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "leagueName": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "level": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "venue": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "record": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "w": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "l": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "otl": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "t": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "pts": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "rank": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "group": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "from": {
                                      "anyOf": [
                                        {
                                          "type": "string",
                                          "const": "games"
                                        },
                                        {
                                          "type": "string",
                                          "const": "standings"
                                        }
                                      ]
                                    }
                                  },
                                  "required": [
                                    "w",
                                    "l",
                                    "otl",
                                    "t",
                                    "pts",
                                    "rank",
                                    "group",
                                    "from"
                                  ]
                                }
                              ]
                            },
                            "recordText": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "page": {
                              "type": "string"
                            },
                            "links": {
                              "type": "object",
                              "properties": {
                                "site": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "schedule": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "standings": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "tickets": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "site",
                                "schedule",
                                "standings",
                                "tickets"
                              ]
                            },
                            "source": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "sourceUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "licence": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "attribution": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "fetchedAt": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "error": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          },
                          "required": [
                            "next",
                            "results",
                            "standings",
                            "id",
                            "name",
                            "short",
                            "sport",
                            "league",
                            "leagueName",
                            "level",
                            "venue",
                            "record",
                            "recordText",
                            "page",
                            "links",
                            "source",
                            "sourceUrl",
                            "licence",
                            "attribution",
                            "fetchedAt",
                            "error"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "next": [
                          {
                            "venueId": "string",
                            "page": "https://example.org/",
                            "id": "string",
                            "team": "string",
                            "season": "string",
                            "seasonType": "string",
                            "start": "2026-01-01T00:00:00Z",
                            "localDate": "2026-01-01T00:00:00Z",
                            "timeTbd": false,
                            "home": false,
                            "opponent": "string",
                            "venue": "string",
                            "venueCity": "string",
                            "status": "cancelled",
                            "statusText": "string",
                            "period": "string",
                            "clock": "string",
                            "score": {
                              "team": 0,
                              "opponent": 0,
                              "home": 0,
                              "away": 0
                            },
                            "result": "string",
                            "overtime": false,
                            "shootout": false,
                            "conference": false,
                            "tickets": "string",
                            "recap": "string",
                            "boxscore": "string",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "licence": "string",
                            "updatedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "results": [
                          {
                            "venueId": "string",
                            "page": "https://example.org/",
                            "id": "string",
                            "team": "string",
                            "season": "string",
                            "seasonType": "string",
                            "start": "2026-01-01T00:00:00Z",
                            "localDate": "2026-01-01T00:00:00Z",
                            "timeTbd": false,
                            "home": false,
                            "opponent": "string",
                            "venue": "string",
                            "venueCity": "string",
                            "status": "cancelled",
                            "statusText": "string",
                            "period": "string",
                            "clock": "string",
                            "score": {
                              "team": 0,
                              "opponent": 0,
                              "home": 0,
                              "away": 0
                            },
                            "result": "string",
                            "overtime": false,
                            "shootout": false,
                            "conference": false,
                            "tickets": "string",
                            "recap": "string",
                            "boxscore": "string",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "licence": "string",
                            "updatedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "standings": [
                          {
                            "team": "string",
                            "season": "string",
                            "group": "string",
                            "rows": [
                              {
                                "rank": 0,
                                "team": "string",
                                "us": false,
                                "gp": 0,
                                "w": 0,
                                "l": 0,
                                "otl": 0,
                                "t": 0,
                                "pts": 0,
                                "pct": 0,
                                "gf": 0,
                                "ga": 0,
                                "streak": "string",
                                "last10": "string"
                              }
                            ],
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "licence": "string",
                            "updatedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "id": "string",
                        "name": "string",
                        "short": "string",
                        "sport": "string",
                        "league": "string",
                        "leagueName": "string",
                        "level": "string",
                        "venue": "string",
                        "record": {
                          "w": 0,
                          "l": 0,
                          "otl": 0,
                          "t": 0,
                          "pts": 0,
                          "rank": 0,
                          "group": "string",
                          "from": "games"
                        },
                        "recordText": "string",
                        "page": "https://example.org/",
                        "links": {
                          "site": "string",
                          "schedule": "string",
                          "standings": "string",
                          "tickets": "string"
                        },
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "licence": "string",
                        "attribution": "string",
                        "fetchedAt": "2026-01-01T00:00:00Z",
                        "error": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/sports/teams/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/sports/games": {
      "get": {
        "operationId": "get-sports-games",
        "tags": [
          "Sports"
        ],
        "summary": "Games: schedule, live scores and results, with filters",
        "description": "Every game the local teams’ feeds list, home and away. `status` is scheduled, live, final, postponed or cancelled; `score` is from our team’s side (`team`, `opponent`) and by venue (`home`, `away`). Live scores update every few minutes while a game is on, from the league feed when it provides them. `start` is UTC; `localDate` is the game day in the city.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/sports/games?team=cougars&from=2026-10-01&limit=5`\n\nCache: 60s.",
        "parameters": [
          {
            "name": "team",
            "in": "query",
            "required": false,
            "description": "Team id, or several separated by commas (see /sports/teams).",
            "schema": {
              "type": "string",
              "examples": [
                "cougars"
              ]
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "From this local date (YYYY-MM-DD) or ISO date-time. Default: no limit.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-10-01"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Up to this local date (YYYY-MM-DD, inclusive) or ISO date-time.",
            "schema": {
              "type": "string",
              "examples": [
                "2026-10-31"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "scheduled, live, final, postponed or cancelled (comma-separated for several).",
            "schema": {
              "type": "string",
              "examples": [
                "final"
              ]
            }
          },
          {
            "name": "home",
            "in": "query",
            "required": false,
            "description": "true = home games only, false = away only.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "order",
            "in": "query",
            "required": false,
            "description": "asc (default, oldest first) or desc.",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of games: id, team, season, seasonType, start, localDate, timeTbd, home, opponent, venue, venueCity, venueId, status, statusText, period, clock, score, result, overtime, shootout, conference, tickets, recap, boxscore, source, sourceUrl, licence, updatedAt, page.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "venueId": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "page": {
                                "type": "string"
                              },
                              "id": {
                                "type": "string"
                              },
                              "team": {
                                "type": "string"
                              },
                              "season": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "seasonType": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "start": {
                                "type": "string"
                              },
                              "localDate": {
                                "type": "string"
                              },
                              "timeTbd": {
                                "type": "boolean"
                              },
                              "home": {
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              },
                              "opponent": {
                                "type": "string"
                              },
                              "venue": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "venueCity": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "status": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "cancelled"
                                  },
                                  {
                                    "type": "string",
                                    "const": "final"
                                  },
                                  {
                                    "type": "string",
                                    "const": "live"
                                  },
                                  {
                                    "type": "string",
                                    "const": "postponed"
                                  },
                                  {
                                    "type": "string",
                                    "const": "scheduled"
                                  }
                                ]
                              },
                              "statusText": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "period": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "clock": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "score": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "team": {
                                        "type": "number"
                                      },
                                      "opponent": {
                                        "type": "number"
                                      },
                                      "home": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "away": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "team",
                                      "opponent",
                                      "home",
                                      "away"
                                    ]
                                  }
                                ]
                              },
                              "result": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "overtime": {
                                "type": "boolean"
                              },
                              "shootout": {
                                "type": "boolean"
                              },
                              "conference": {
                                "type": [
                                  "boolean",
                                  "null"
                                ]
                              },
                              "tickets": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "recap": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "boxscore": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "sourceUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licence": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "updatedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "venueId",
                              "page",
                              "id",
                              "team",
                              "season",
                              "seasonType",
                              "start",
                              "localDate",
                              "timeTbd",
                              "home",
                              "opponent",
                              "venue",
                              "venueCity",
                              "status",
                              "statusText",
                              "period",
                              "clock",
                              "score",
                              "result",
                              "overtime",
                              "shootout",
                              "conference",
                              "tickets",
                              "recap",
                              "boxscore",
                              "source",
                              "sourceUrl",
                              "licence",
                              "updatedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "venueId": "string",
                          "page": "https://example.org/",
                          "id": "string",
                          "team": "string",
                          "season": "string",
                          "seasonType": "string",
                          "start": "2026-01-01T00:00:00Z",
                          "localDate": "2026-01-01T00:00:00Z",
                          "timeTbd": false,
                          "home": false,
                          "opponent": "string",
                          "venue": "string",
                          "venueCity": "string",
                          "status": "cancelled",
                          "statusText": "string",
                          "period": "string",
                          "clock": "string",
                          "score": {
                            "team": 0,
                            "opponent": 0,
                            "home": 0,
                            "away": 0
                          },
                          "result": "string",
                          "overtime": false,
                          "shootout": false,
                          "conference": false,
                          "tickets": "string",
                          "recap": "string",
                          "boxscore": "string",
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "licence": "string",
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/sports/games",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/sports/standings": {
      "get": {
        "operationId": "get-sports-standings",
        "tags": [
          "Sports"
        ],
        "summary": "Latest standings for the division or conference each team plays in",
        "description": "Example: `/api/v1/sports/standings`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "team",
            "in": "query",
            "required": false,
            "description": "Team id (see /sports/teams).",
            "schema": {
              "type": "string",
              "examples": [
                "spruce-kings"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of tables: team, season, group, rows [{rank, team, us, gp, w, l, otl, t, pts, pct, gf, ga, streak, last10}], source, sourceUrl, licence, updatedAt.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "team": {
                                "type": "string"
                              },
                              "season": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "group": {
                                "type": "string"
                              },
                              "rows": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "rank": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "team": {
                                      "type": "string"
                                    },
                                    "us": {
                                      "type": "boolean"
                                    },
                                    "gp": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "w": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "l": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "otl": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "t": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "pts": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "pct": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "gf": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "ga": {
                                      "type": [
                                        "null",
                                        "number"
                                      ]
                                    },
                                    "streak": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "last10": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "rank",
                                    "team",
                                    "us",
                                    "gp",
                                    "w",
                                    "l",
                                    "otl",
                                    "t",
                                    "pts",
                                    "pct",
                                    "gf",
                                    "ga",
                                    "streak",
                                    "last10"
                                  ]
                                }
                              },
                              "source": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "sourceUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licence": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "updatedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "team",
                              "season",
                              "group",
                              "rows",
                              "source",
                              "sourceUrl",
                              "licence",
                              "updatedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "team": "string",
                          "season": "string",
                          "group": "string",
                          "rows": [
                            {
                              "rank": 0,
                              "team": "string",
                              "us": false,
                              "gp": 0,
                              "w": 0,
                              "l": 0,
                              "otl": 0,
                              "t": 0,
                              "pts": 0,
                              "pct": 0,
                              "gf": 0,
                              "ga": 0,
                              "streak": "string",
                              "last10": "string"
                            }
                          ],
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "licence": "string",
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/sports/standings",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/sports/clubs": {
      "get": {
        "operationId": "get-sports-clubs",
        "tags": [
          "Sports"
        ],
        "summary": "Minor and community sports clubs and leagues, with sport, age group and official links",
        "description": "From the City’s Community Recreation Directory (sports types), refreshed weekly, plus clubs the directory lacks. `sport` and `age` (youth, adult, all) are derived from the club’s name and the City’s description and corrected by hand where wrong; `age=youth` also returns all-ages clubs. `directory` links the club’s listing in our business directory when there is one. `description` is the City’s own short text.\n\nExample: `/api/v1/sports/clubs?sport=hockey&age=youth`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "sport",
            "in": "query",
            "required": false,
            "description": "Sport name or slug (see /sports/clubs/sports).",
            "schema": {
              "type": "string",
              "examples": [
                "hockey"
              ]
            }
          },
          {
            "name": "age",
            "in": "query",
            "required": false,
            "description": "youth, adult or all.",
            "schema": {
              "type": "string",
              "enum": [
                "youth",
                "adult",
                "all"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search name, sport and description.",
            "schema": {
              "type": "string",
              "examples": [
                "fastball"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Array of clubs: id, name, sport, sportSlug, age, ageLabel, adaptive, types, description, url, cityUrl, directorySlug, directory, venue, season, source, sourceUrl, licence, updatedAt, page.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "ageLabel": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "Adult"
                                  },
                                  {
                                    "type": "string",
                                    "const": "All ages"
                                  },
                                  {
                                    "type": "string",
                                    "const": "Youth"
                                  }
                                ]
                              },
                              "directory": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "page": {
                                "type": "string"
                              },
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "sport": {
                                "type": "string"
                              },
                              "sportSlug": {
                                "type": "string"
                              },
                              "age": {
                                "anyOf": [
                                  {
                                    "type": "string",
                                    "const": "adult"
                                  },
                                  {
                                    "type": "string",
                                    "const": "all"
                                  },
                                  {
                                    "type": "string",
                                    "const": "youth"
                                  }
                                ]
                              },
                              "adaptive": {
                                "type": "boolean"
                              },
                              "types": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "description": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "cityUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "directorySlug": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "venue": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "season": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "source": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "sourceUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licence": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "updatedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "ageLabel",
                              "directory",
                              "page",
                              "id",
                              "name",
                              "sport",
                              "sportSlug",
                              "age",
                              "adaptive",
                              "types",
                              "description",
                              "url",
                              "cityUrl",
                              "directorySlug",
                              "venue",
                              "season",
                              "source",
                              "sourceUrl",
                              "licence",
                              "updatedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "ageLabel": "Adult",
                          "directory": "string",
                          "page": "https://example.org/",
                          "id": "string",
                          "name": "string",
                          "sport": "string",
                          "sportSlug": "string",
                          "age": "adult",
                          "adaptive": false,
                          "types": [
                            "string"
                          ],
                          "description": "string",
                          "url": "https://example.org/",
                          "cityUrl": "https://example.org/",
                          "directorySlug": "string",
                          "venue": "string",
                          "season": "string",
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "licence": "string",
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/sports/clubs",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/sports/clubs/sports": {
      "get": {
        "operationId": "get-sports-clubs-sports",
        "tags": [
          "Sports"
        ],
        "summary": "Sports with the number of clubs for each",
        "description": "Example: `/api/v1/sports/clubs/sports`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "sport": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "count": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "sport",
                              "slug",
                              "count"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "sport": "string",
                          "slug": "string",
                          "count": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/sports/clubs/sports",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/sports/clubs/{id}": {
      "get": {
        "operationId": "get-sports-clubs-id",
        "tags": [
          "Sports"
        ],
        "summary": "One club with its upcoming community events",
        "description": "Example: `/api/v1/sports/clubs/{id}`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Club id (from /sports/clubs).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "events": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "club": {
                                    "type": "string"
                                  },
                                  "clubName": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "sport": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "age": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "startDate": {
                                    "type": "string"
                                  },
                                  "endDate": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "start": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "allDay": {
                                    "type": "boolean"
                                  },
                                  "venue": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "status": {
                                    "type": "string"
                                  },
                                  "source": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "licence": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "updatedAt": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "club",
                                  "clubName",
                                  "title",
                                  "sport",
                                  "age",
                                  "startDate",
                                  "endDate",
                                  "start",
                                  "allDay",
                                  "venue",
                                  "url",
                                  "status",
                                  "source",
                                  "sourceUrl",
                                  "licence",
                                  "updatedAt"
                                ]
                              }
                            },
                            "ageLabel": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "Adult"
                                },
                                {
                                  "type": "string",
                                  "const": "All ages"
                                },
                                {
                                  "type": "string",
                                  "const": "Youth"
                                }
                              ]
                            },
                            "directory": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "page": {
                              "type": "string"
                            },
                            "id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            },
                            "sport": {
                              "type": "string"
                            },
                            "sportSlug": {
                              "type": "string"
                            },
                            "age": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "const": "adult"
                                },
                                {
                                  "type": "string",
                                  "const": "all"
                                },
                                {
                                  "type": "string",
                                  "const": "youth"
                                }
                              ]
                            },
                            "adaptive": {
                              "type": "boolean"
                            },
                            "types": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "description": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "url": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "cityUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "directorySlug": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "venue": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "season": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "source": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "sourceUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "licence": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "updatedAt": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "events",
                            "ageLabel",
                            "directory",
                            "page",
                            "id",
                            "name",
                            "sport",
                            "sportSlug",
                            "age",
                            "adaptive",
                            "types",
                            "description",
                            "url",
                            "cityUrl",
                            "directorySlug",
                            "venue",
                            "season",
                            "source",
                            "sourceUrl",
                            "licence",
                            "updatedAt"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "events": [
                          {
                            "id": "string",
                            "club": "string",
                            "clubName": "string",
                            "title": "string",
                            "sport": "string",
                            "age": "string",
                            "startDate": "2026-01-01T00:00:00Z",
                            "endDate": "2026-01-01T00:00:00Z",
                            "start": "2026-01-01T00:00:00Z",
                            "allDay": false,
                            "venue": "string",
                            "url": "https://example.org/",
                            "status": "string",
                            "source": "string",
                            "sourceUrl": "https://example.org/",
                            "licence": "string",
                            "updatedAt": "2026-01-01T00:00:00Z"
                          }
                        ],
                        "ageLabel": "Adult",
                        "directory": "string",
                        "page": "https://example.org/",
                        "id": "string",
                        "name": "string",
                        "sport": "string",
                        "sportSlug": "string",
                        "age": "adult",
                        "adaptive": false,
                        "types": [
                          "string"
                        ],
                        "description": "string",
                        "url": "https://example.org/",
                        "cityUrl": "https://example.org/",
                        "directorySlug": "string",
                        "venue": "string",
                        "season": "string",
                        "source": "string",
                        "sourceUrl": "https://example.org/",
                        "licence": "string",
                        "updatedAt": "2026-01-01T00:00:00Z"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/sports/clubs/{id}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/sports/events": {
      "get": {
        "operationId": "get-sports-events",
        "tags": [
          "Sports"
        ],
        "summary": "Community sports events (bonspiels, tournaments, club events) from clubs’ public listings",
        "description": "Imported every 6 hours from the clubs’ own public event feeds (see `source`). Dates are local; `start` is UTC when the event has a time. Sports events in the general events calendar are at /events?category=sports.\n\nExample: `/api/v1/sports/events`\n\nCache: 900s.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "From this local date (YYYY-MM-DD, default today).",
            "schema": {
              "type": "string",
              "examples": [
                "2026-10-01"
              ]
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "Up to this local date (YYYY-MM-DD).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "club",
            "in": "query",
            "required": false,
            "description": "Club id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sport",
            "in": "query",
            "required": false,
            "description": "Sport name or slug.",
            "schema": {
              "type": "string",
              "examples": [
                "curling"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "club": {
                                "type": "string"
                              },
                              "clubName": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "title": {
                                "type": "string"
                              },
                              "sport": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "age": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "startDate": {
                                "type": "string"
                              },
                              "endDate": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "start": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "allDay": {
                                "type": "boolean"
                              },
                              "venue": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "status": {
                                "type": "string"
                              },
                              "source": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "sourceUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "licence": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "updatedAt": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "club",
                              "clubName",
                              "title",
                              "sport",
                              "age",
                              "startDate",
                              "endDate",
                              "start",
                              "allDay",
                              "venue",
                              "url",
                              "status",
                              "source",
                              "sourceUrl",
                              "licence",
                              "updatedAt"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "club": "string",
                          "clubName": "string",
                          "title": "string",
                          "sport": "string",
                          "age": "string",
                          "startDate": "2026-01-01T00:00:00Z",
                          "endDate": "2026-01-01T00:00:00Z",
                          "start": "2026-01-01T00:00:00Z",
                          "allDay": false,
                          "venue": "string",
                          "url": "https://example.org/",
                          "status": "string",
                          "source": "string",
                          "sourceUrl": "https://example.org/",
                          "licence": "string",
                          "updatedAt": "2026-01-01T00:00:00Z"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/sports/events",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/stays": {
      "get": {
        "operationId": "get-stays",
        "tags": [
          "Guides"
        ],
        "summary": "Where to stay in Prince George: hotels, motels, B&Bs, campgrounds and RV parks from the business directory",
        "description": "Open listings whose main directory category is lodging, each with its type (from its own name, licence description and tags: hotel, motel, bnb, camp, other), neighbourhood, street, phone, website and straight-line distance to Downtown, Airport (YXS), UNBC when the listing has coordinates. No prices or ratings. `campgrounds` in meta lists regional campgrounds from the outdoors guide when that module is on.\n\nExample: `/api/v1/stays`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Type of place.",
            "schema": {
              "type": "string",
              "enum": [
                "hotel",
                "motel",
                "bnb",
                "camp",
                "other"
              ],
              "examples": [
                "motel"
              ]
            }
          },
          {
            "name": "area",
            "in": "query",
            "required": false,
            "description": "Neighbourhood name (exact, case-insensitive).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name or street.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ slug, name, type, types, typeLabel, area, street, phone, website, bookingUrl, lat, lng, distances: [{ id, label, km }], page }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "page": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string"
                              },
                              "types": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "typeLabel": {
                                "type": "string"
                              },
                              "area": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "street": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "phone": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "website": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "bookingUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "lng": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "distances": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "km": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "label",
                                    "km"
                                  ]
                                }
                              }
                            },
                            "required": [
                              "page",
                              "slug",
                              "name",
                              "type",
                              "types",
                              "typeLabel",
                              "area",
                              "street",
                              "phone",
                              "website",
                              "bookingUrl",
                              "lat",
                              "lng",
                              "distances"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "page": "https://example.org/",
                          "slug": "string",
                          "name": "string",
                          "type": "string",
                          "types": [
                            "string"
                          ],
                          "typeLabel": "string",
                          "area": "string",
                          "street": "string",
                          "phone": "string",
                          "website": "https://example.org/",
                          "bookingUrl": "https://example.org/",
                          "lat": 0,
                          "lng": 0,
                          "distances": [
                            {
                              "id": "string",
                              "label": "string",
                              "km": 0
                            }
                          ]
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/stays",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/visitor-centre": {
      "get": {
        "operationId": "get-visitor-centre",
        "tags": [
          "Guides"
        ],
        "summary": "The visitor information centre: address, contact, hours by season (with the current season), services and gear lending",
        "description": "As published by the operator on its own page (`sourceUrl`), hand-checked (`checked`). Lending prices are included only when the operator publishes them.\n\nExample: `/api/v1/visitor-centre`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ centre: { name, operator, address, phone, email, url, services }, current: { label, hours }, seasons: [{ id, label, months, hours: [{ days, open }] }], lending: [{ item, prices, note }], checked, sourceUrl }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "anyOf": [
                              {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "item": {
                                      "type": "string"
                                    },
                                    "prices": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "note": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "item",
                                    "prices"
                                  ]
                                }
                              },
                              {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "id": {
                                      "type": "string"
                                    },
                                    "label": {
                                      "type": "string"
                                    },
                                    "months": {
                                      "type": "array",
                                      "items": {
                                        "type": "number"
                                      }
                                    },
                                    "hours": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "days": {
                                            "type": "string"
                                          },
                                          "open": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "days",
                                          "open"
                                        ]
                                      }
                                    }
                                  },
                                  "required": [
                                    "id",
                                    "label",
                                    "months",
                                    "hours"
                                  ]
                                }
                              },
                              {
                                "type": "null"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "label": {
                                    "type": "string"
                                  },
                                  "months": {
                                    "type": "array",
                                    "items": {
                                      "type": "number"
                                    }
                                  },
                                  "hours": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "days": {
                                          "type": "string"
                                        },
                                        "open": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "days",
                                        "open"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "id",
                                  "label",
                                  "months",
                                  "hours"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "operator": {
                                    "type": "string"
                                  },
                                  "address": {
                                    "type": "string"
                                  },
                                  "phone": {
                                    "type": "string"
                                  },
                                  "email": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": "string"
                                  },
                                  "services": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                },
                                "required": [
                                  "name",
                                  "operator",
                                  "address",
                                  "url"
                                ]
                              },
                              {
                                "type": "string"
                              }
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {},
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/visitor-centre",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/festivals": {
      "get": {
        "operationId": "get-festivals",
        "tags": [
          "Guides"
        ],
        "summary": "Annual festivals and big recurring events in and around Prince George: typical month, venue, organiser and the next announced date",
        "description": "An evergreen, hand-checked list: each record cites its organiser’s site and the past editions its typical month comes from (`editions`). `next` is the soonest matching event in the live events calendar (title match on the record’s `match` terms) or null when dates are not announced yet.\n\nExample: `/api/v1/festivals`\n\nCache: 1800s.",
        "parameters": [
          {
            "name": "month",
            "in": "query",
            "required": false,
            "description": "Typical month (1-12).",
            "schema": {
              "type": "integer",
              "examples": [
                8
              ]
            }
          },
          {
            "name": "announced",
            "in": "query",
            "required": false,
            "description": "Only festivals with an announced upcoming date.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the name, venue, organiser or town.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, months, monthsLabel, when, town, venue, organiser, url, category, description, editions: [{ start, end, sourceUrl }], next: { title, start, end, venue, page, url } | null, upcoming }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "next": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "page": {
                                        "type": "string"
                                      },
                                      "id": {
                                        "type": "string"
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "start": {
                                        "type": "string"
                                      },
                                      "end": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "allDay": {
                                        "type": "boolean"
                                      },
                                      "venue": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "page",
                                      "id",
                                      "title",
                                      "start",
                                      "end",
                                      "allDay",
                                      "venue",
                                      "url"
                                    ]
                                  }
                                ]
                              },
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "months": {
                                "type": "array",
                                "items": {
                                  "type": "number"
                                }
                              },
                              "when": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "town": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "venue": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "organiser": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "url": {
                                "type": "string"
                              },
                              "category": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "editions": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "start": {
                                      "type": "string"
                                    },
                                    "end": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "sourceUrl": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "start",
                                    "sourceUrl"
                                  ]
                                }
                              },
                              "checked": {
                                "type": "string"
                              },
                              "monthsLabel": {
                                "type": "string"
                              },
                              "upcoming": {
                                "type": "number"
                              }
                            },
                            "required": [
                              "next",
                              "id",
                              "name",
                              "months",
                              "url",
                              "description",
                              "monthsLabel",
                              "upcoming"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "next": {
                            "page": "https://example.org/",
                            "id": "string",
                            "title": "string",
                            "start": "2026-01-01T00:00:00Z",
                            "end": "2026-01-01T00:00:00Z",
                            "allDay": false,
                            "venue": "string",
                            "url": "https://example.org/"
                          },
                          "id": "string",
                          "name": "string",
                          "months": [
                            0
                          ],
                          "when": "string",
                          "town": "string",
                          "venue": "string",
                          "organiser": "string",
                          "url": "https://example.org/",
                          "category": "string",
                          "description": "string",
                          "editions": [
                            {
                              "start": "2026-01-01T00:00:00Z",
                              "end": "2026-01-01T00:00:00Z",
                              "sourceUrl": "https://example.org/"
                            }
                          ],
                          "checked": "string",
                          "monthsLabel": "string",
                          "upcoming": 0
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/festivals",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/nearby-towns": {
      "get": {
        "operationId": "get-nearby-towns",
        "tags": [
          "Guides"
        ],
        "summary": "Nearby towns: road distance and drive time from Prince George, highways, current weather and DriveBC road events in town or on the way",
        "description": "Distance and drive time are computed weekly by the OSRM routing engine on OpenStreetMap data (ODbL 1.0, © OpenStreetMap contributors (https://www.openstreetmap.org/copyright)); drive time is OSRM’s, without traffic, weather or stops. Weather: Open-Meteo forecast API (current conditions) (CC BY 4.0, Open-Meteo.com (https://open-meteo.com/en/licence)), refreshed every 30 minutes. Road events: DriveBC Open511 API (BC Ministry of Transportation and Transit) (Open Government Licence – British Columbia (https://www2.gov.bc.ca/gov/content/data/policy-standards/data-policies/open-data/open-government-licence-bc)); `where` is `town` (within the town radius) or `route` (on the route line, outside the city). `roadEvents` is null when DriveBC could not be reached.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/nearby-towns`\n\nCache: 600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Town name words.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ id, name, kind, lat, lng, km, driveMin, drive, highways, straightKm, weather: { temp, code, windKmh }, roadEvents: [{ headline, severity, summary, roads, where, km, updated }], site, tourism }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "kind": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "km": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "driveMin": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "drive": {
                                "type": "string"
                              },
                              "highways": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "straightKm": {
                                "type": "number"
                              },
                              "routedAt": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "weather": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "temp": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "code": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "windKmh": {
                                        "type": [
                                          "null",
                                          "number"
                                        ]
                                      },
                                      "time": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "temp",
                                      "code",
                                      "windKmh",
                                      "time"
                                    ]
                                  }
                                ]
                              },
                              "roadEvents": {
                                "anyOf": [
                                  {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string"
                                        },
                                        "headline": {
                                          "type": "string"
                                        },
                                        "type": {
                                          "type": "string"
                                        },
                                        "severity": {
                                          "type": "string"
                                        },
                                        "summary": {
                                          "type": "string"
                                        },
                                        "roads": {
                                          "type": "array",
                                          "items": {
                                            "type": "string"
                                          }
                                        },
                                        "where": {
                                          "anyOf": [
                                            {
                                              "type": "string",
                                              "const": "route"
                                            },
                                            {
                                              "type": "string",
                                              "const": "town"
                                            }
                                          ]
                                        },
                                        "km": {
                                          "type": "number"
                                        },
                                        "updated": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "id",
                                        "headline",
                                        "type",
                                        "severity",
                                        "summary",
                                        "roads",
                                        "where",
                                        "km",
                                        "updated"
                                      ]
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "site": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "label": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "label",
                                      "url"
                                    ]
                                  }
                                ]
                              },
                              "tourism": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "label": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "label",
                                      "url"
                                    ]
                                  }
                                ]
                              }
                            },
                            "required": [
                              "id",
                              "name",
                              "kind",
                              "lat",
                              "lng",
                              "km",
                              "driveMin",
                              "drive",
                              "highways",
                              "straightKm",
                              "routedAt",
                              "weather",
                              "roadEvents",
                              "site",
                              "tourism"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "id": "string",
                          "name": "string",
                          "kind": "string",
                          "lat": 0,
                          "lng": 0,
                          "km": 0,
                          "driveMin": 0,
                          "drive": "string",
                          "highways": [
                            "string"
                          ],
                          "straightKm": 0,
                          "routedAt": "2026-01-01T00:00:00Z",
                          "weather": {
                            "temp": 0,
                            "code": 0,
                            "windKmh": 0,
                            "time": "2026-01-01T00:00:00Z"
                          },
                          "roadEvents": [
                            {
                              "id": "string",
                              "headline": "string",
                              "type": "string",
                              "severity": "string",
                              "summary": "string",
                              "roads": [
                                "string"
                              ],
                              "where": "route",
                              "km": 0,
                              "updated": "2026-01-01T00:00:00Z"
                            }
                          ],
                          "site": {
                            "label": "string",
                            "url": "https://example.org/"
                          },
                          "tourism": {
                            "label": "string",
                            "url": "https://example.org/"
                          }
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/nearby-towns",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zoning": {
      "get": {
        "operationId": "get-zoning",
        "tags": [
          "City data"
        ],
        "summary": "What can I build here? Zone, plan designation, overlays and permit areas for an address or point",
        "description": "Give `address` (civic address in the city) or `lat` and `lng`. Returns the zone or zones (from the City’s parcel-to-zone table when the parcel is known, else the zoning map), what each zone allows in plain language, the official community plan designation, overlays (home business, land use contract, Agricultural Land Reserve), development permit areas (flood, riparian, wildfire, groundwater, slope), school catchments, fire hall zone, development cost charge area, past rezonings of the property and current applications, and a small-scale housing hint. Outside the city, regional rural zoning when available. `found: false` with `suggestions` when the address is ambiguous. Guidance from public data, not a legal determination: other bylaw sections, covenants, land use contracts and development permit areas can apply. Confirm with the City before you buy, build or apply.\n\nLive data, cached server-side and refreshed from the upstream source.\n\nExample: `/api/v1/zoning?address=1100%20Patricia%20Blvd`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": false,
            "description": "Civic address, e.g. \"1100 Patricia Blvd\".",
            "schema": {
              "type": "string",
              "examples": [
                "1100 Patricia Blvd"
              ]
            }
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "description": "Latitude (with lng, instead of address).",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "lng",
            "in": "query",
            "required": false,
            "description": "Longitude.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "geometry",
            "in": "query",
            "required": false,
            "description": "Include the parcel outline (GeoJSON).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ address, zones: [{ code, name, family, summary, page, url }], zoneSource, parcel, ocp, overlays, permitAreas, context, rezonings, applications, ssmuh, links, confirm }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "found": {
                                  "type": "boolean"
                                },
                                "suggestions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "address": {
                                        "type": "string"
                                      },
                                      "civic": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "street": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "lat": {
                                        "type": "number"
                                      },
                                      "lng": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "address",
                                      "civic",
                                      "street",
                                      "lat",
                                      "lng"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "found",
                                "suggestions"
                              ]
                            },
                            {
                              "type": "object",
                              "properties": {
                                "note": {
                                  "type": "string"
                                },
                                "query": {
                                  "type": "object",
                                  "properties": {
                                    "address": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "lat": {
                                      "type": "number"
                                    },
                                    "lng": {
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "address",
                                    "lat",
                                    "lng"
                                  ]
                                },
                                "address": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "address": {
                                          "type": "string"
                                        },
                                        "civic": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "street": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "lat": {
                                          "type": "number"
                                        },
                                        "lng": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "address",
                                        "civic",
                                        "street",
                                        "lat",
                                        "lng"
                                      ]
                                    }
                                  ]
                                },
                                "inCity": {
                                  "type": "boolean"
                                },
                                "zones": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "code": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "slug": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "family": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "summary": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "variant": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "url": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "page": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "code",
                                      "name",
                                      "slug",
                                      "family",
                                      "summary",
                                      "variant",
                                      "url",
                                      "page"
                                    ]
                                  }
                                },
                                "zoneSource": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "string",
                                      "const": "map"
                                    },
                                    {
                                      "type": "string",
                                      "const": "nearest"
                                    },
                                    {
                                      "type": "string",
                                      "const": "parcel"
                                    },
                                    {
                                      "type": "string",
                                      "const": "rural"
                                    }
                                  ]
                                },
                                "mapZones": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "description": "Zones on the City's zoning map at the point itself, when they differ from the parcel table's."
                                },
                                "rural": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "code": {
                                          "type": "string"
                                        },
                                        "label": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "bylaw": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "bylawUrl": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "publisher": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "code",
                                        "label",
                                        "bylaw",
                                        "bylawUrl",
                                        "publisher"
                                      ]
                                    }
                                  ]
                                },
                                "parcel": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "pid": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "legal": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "areaM2": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "area": {
                                          "type": [
                                            "null",
                                            "string"
                                          ]
                                        },
                                        "geometry": {
                                          "$ref": "#/components/schemas/JsonValue"
                                        }
                                      },
                                      "required": [
                                        "pid",
                                        "legal",
                                        "areaM2",
                                        "area"
                                      ]
                                    }
                                  ]
                                },
                                "ocp": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "designation": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "designation"
                                      ]
                                    }
                                  ]
                                },
                                "overlays": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "layer": {
                                        "type": "string"
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": "string"
                                      },
                                      "code": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "label": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "props": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "object",
                                            "additionalProperties": {
                                              "type": "string"
                                            }
                                          }
                                        ]
                                      },
                                      "distanceM": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "layer",
                                      "title",
                                      "kind",
                                      "code",
                                      "label",
                                      "props"
                                    ]
                                  }
                                },
                                "permitAreas": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "layer": {
                                        "type": "string"
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": "string"
                                      },
                                      "code": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "label": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "props": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "object",
                                            "additionalProperties": {
                                              "type": "string"
                                            }
                                          }
                                        ]
                                      },
                                      "distanceM": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "layer",
                                      "title",
                                      "kind",
                                      "code",
                                      "label",
                                      "props"
                                    ]
                                  }
                                },
                                "context": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "layer": {
                                        "type": "string"
                                      },
                                      "title": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": "string"
                                      },
                                      "code": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "label": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "props": {
                                        "anyOf": [
                                          {
                                            "type": "null"
                                          },
                                          {
                                            "type": "object",
                                            "additionalProperties": {
                                              "type": "string"
                                            }
                                          }
                                        ]
                                      },
                                      "distanceM": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "layer",
                                      "title",
                                      "kind",
                                      "code",
                                      "label",
                                      "props"
                                    ]
                                  }
                                },
                                "rezonings": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "bylaw": {
                                        "type": "string"
                                      },
                                      "adopted": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "type": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "subject": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "purpose": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "sections": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "from": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "to": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        }
                                      },
                                      "summary": {
                                        "type": "string"
                                      },
                                      "url": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      }
                                    },
                                    "required": [
                                      "bylaw",
                                      "adopted",
                                      "type",
                                      "subject",
                                      "purpose",
                                      "sections",
                                      "from",
                                      "to",
                                      "summary",
                                      "url"
                                    ]
                                  }
                                },
                                "applications": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "folder": {
                                        "type": "string"
                                      },
                                      "type": {
                                        "type": "string"
                                      },
                                      "status": {
                                        "type": "string"
                                      },
                                      "address": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "appliedOn": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "page": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "folder",
                                      "type",
                                      "status",
                                      "address",
                                      "appliedOn",
                                      "page"
                                    ]
                                  }
                                },
                                "ssmuh": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "units": {
                                          "type": [
                                            "null",
                                            "number"
                                          ]
                                        },
                                        "note": {
                                          "type": "string"
                                        },
                                        "label": {
                                          "type": "string"
                                        },
                                        "guidance": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "units",
                                        "note",
                                        "label",
                                        "guidance"
                                      ]
                                    }
                                  ]
                                },
                                "links": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "label": {
                                        "type": "string"
                                      },
                                      "href": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "label",
                                      "href"
                                    ]
                                  }
                                },
                                "confirm": {
                                  "anyOf": [
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "label": {
                                          "type": "string"
                                        },
                                        "url": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "label",
                                        "url"
                                      ]
                                    }
                                  ]
                                },
                                "suggestions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "address": {
                                        "type": "string"
                                      },
                                      "civic": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "street": {
                                        "type": [
                                          "null",
                                          "string"
                                        ]
                                      },
                                      "lat": {
                                        "type": "number"
                                      },
                                      "lng": {
                                        "type": "number"
                                      }
                                    },
                                    "required": [
                                      "address",
                                      "civic",
                                      "street",
                                      "lat",
                                      "lng"
                                    ]
                                  }
                                },
                                "found": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "note",
                                "query",
                                "address",
                                "inCity",
                                "zones",
                                "zoneSource",
                                "rural",
                                "parcel",
                                "ocp",
                                "overlays",
                                "permitAreas",
                                "context",
                                "rezonings",
                                "applications",
                                "ssmuh",
                                "links",
                                "confirm",
                                "found"
                              ]
                            }
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "found": false,
                        "suggestions": [
                          {
                            "address": "string",
                            "civic": "string",
                            "street": "string",
                            "lat": 0,
                            "lng": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/zoning",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zoning/addresses": {
      "get": {
        "operationId": "get-zoning-addresses",
        "tags": [
          "City data"
        ],
        "summary": "Civic address suggestions (autocomplete) for the zoning lookup",
        "description": "Matches the City’s civic address points stored locally (no upstream call): an exact address first, then every word as a prefix; when the house number is not on that street, the street’s closest numbers. Pass a result’s `address` to /zoning.\n\nExample: `/api/v1/zoning/addresses?q=1100%20Patr`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "At least 3 characters of a civic address.",
            "schema": {
              "type": "string",
              "examples": [
                "1100 Patr"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Suggestions (1-20, default 8).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ address, civic, street, lat, lng, api }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "address": {
                                "type": "string"
                              },
                              "civic": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "street": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "lat": {
                                "type": "number"
                              },
                              "lng": {
                                "type": "number"
                              },
                              "api": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "address",
                              "civic",
                              "street",
                              "lat",
                              "lng",
                              "api"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "address": "string",
                          "civic": "string",
                          "street": "string",
                          "lat": 0,
                          "lng": 0,
                          "api": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/zoning/addresses",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zoning/small-scale-housing": {
      "get": {
        "operationId": "get-zoning-small-scale-housing",
        "tags": [
          "City data"
        ],
        "summary": "Small-scale multi-unit housing (provincial rules as the zoning bylaw applies them): homes per lot, conditions and the zones they cover",
        "description": "The rule as configured from the bylaw (`rule`: lot-size threshold, homes on small and large lots, conditions, bylaw section) and every zone with a maximum number of homes per lot. `rule` is null when this city has not compiled it. Guidance from public data, not a legal determination: other bylaw sections, covenants, land use contracts and development permit areas can apply. Confirm with the City before you buy, build or apply.\n\nExample: `/api/v1/zoning/small-scale-housing`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ rule: { label, lotThreshold, unitsSmall, unitsLarge, maxParcel, conditions, section, schedule, provincialUrl, cityUrl } | null, zones: [{ code, name, family, maxUnits, page }], confirm, note }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "rule": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "lotThreshold": {
                                      "type": "number"
                                    },
                                    "unitsSmall": {
                                      "type": "number"
                                    },
                                    "unitsLarge": {
                                      "type": "number"
                                    },
                                    "maxParcel": {
                                      "type": "number"
                                    },
                                    "conditions": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "section": {
                                      "type": "string"
                                    },
                                    "schedule": {
                                      "type": "string"
                                    },
                                    "provincialUrl": {
                                      "type": "string"
                                    },
                                    "cityUrl": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "lotThreshold",
                                    "unitsSmall",
                                    "unitsLarge"
                                  ]
                                }
                              ]
                            },
                            "zones": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "code": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  },
                                  "family": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "maxUnits": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "page": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "code",
                                  "name",
                                  "family",
                                  "maxUnits",
                                  "page"
                                ]
                              }
                            },
                            "page": {
                              "type": "string"
                            },
                            "confirm": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "label": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "phone": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "label",
                                    "url"
                                  ]
                                }
                              ]
                            },
                            "note": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "rule",
                            "zones",
                            "page",
                            "confirm",
                            "note"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "rule": {
                          "label": "string",
                          "lotThreshold": 0,
                          "unitsSmall": 0,
                          "unitsLarge": 0,
                          "maxParcel": 0,
                          "conditions": [
                            "string"
                          ],
                          "section": "string",
                          "schedule": "string",
                          "provincialUrl": "https://example.org/",
                          "cityUrl": "https://example.org/"
                        },
                        "zones": [
                          {
                            "code": "string",
                            "name": "string",
                            "family": "string",
                            "maxUnits": 0,
                            "page": "https://example.org/"
                          }
                        ],
                        "page": "https://example.org/",
                        "confirm": {
                          "label": "string",
                          "url": "https://example.org/",
                          "phone": "string"
                        },
                        "note": "string"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/zoning/small-scale-housing",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zoning/layers": {
      "get": {
        "operationId": "get-zoning-layers",
        "tags": [
          "City data"
        ],
        "summary": "Zoning and planning layers we keep: where each comes from and when it was last fetched",
        "description": "Example: `/api/v1/zoning/layers`\n\nCache: 3600s.",
        "parameters": [
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "{ layers: [{ id, title, kind, sourceUrl, editedAt, features, fetchedAt, error }], bylaw: { revised, file, parsedAt, zones, definitions, amendments }, ocp: [{ designation, polygons, areaHa }] }",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "layers": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "title": {
                                    "type": "string"
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "sourceUrl": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "editedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "features": {
                                    "type": [
                                      "null",
                                      "number"
                                    ]
                                  },
                                  "fetchedAt": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "error": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "id",
                                  "title",
                                  "kind",
                                  "sourceUrl",
                                  "editedAt",
                                  "features",
                                  "fetchedAt",
                                  "error"
                                ]
                              }
                            },
                            "bylaw": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "revised": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "file": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "parsedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "checkedAt": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    },
                                    "zones": {
                                      "type": "number"
                                    },
                                    "definitions": {
                                      "type": "number"
                                    },
                                    "amendments": {
                                      "type": "number"
                                    },
                                    "engine": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "revised",
                                    "file",
                                    "parsedAt",
                                    "checkedAt",
                                    "zones",
                                    "definitions",
                                    "amendments",
                                    "engine"
                                  ]
                                }
                              ]
                            },
                            "bylawUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "ocpPlan": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "url": {
                                      "type": "string"
                                    },
                                    "pageUrl": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name",
                                    "url"
                                  ]
                                }
                              ]
                            },
                            "ocp": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "designation": {
                                    "type": "string"
                                  },
                                  "polygons": {
                                    "type": "number"
                                  },
                                  "areaHa": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "designation",
                                  "polygons",
                                  "areaHa"
                                ]
                              }
                            }
                          },
                          "required": [
                            "layers",
                            "bylaw",
                            "bylawUrl",
                            "ocpPlan",
                            "ocp"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "layers": [
                          {
                            "id": "string",
                            "title": "string",
                            "kind": "string",
                            "sourceUrl": "https://example.org/",
                            "editedAt": "2026-01-01T00:00:00Z",
                            "features": 0,
                            "fetchedAt": "2026-01-01T00:00:00Z",
                            "error": "string"
                          }
                        ],
                        "bylaw": {
                          "revised": "string",
                          "file": "string",
                          "parsedAt": "2026-01-01T00:00:00Z",
                          "checkedAt": "2026-01-01T00:00:00Z",
                          "zones": 0,
                          "definitions": 0,
                          "amendments": 0,
                          "engine": "string"
                        },
                        "bylawUrl": "https://example.org/",
                        "ocpPlan": {
                          "name": "string",
                          "url": "https://example.org/",
                          "pageUrl": "https://example.org/"
                        },
                        "ocp": [
                          {
                            "designation": "string",
                            "polygons": 0,
                            "areaHa": 0
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/zoning/layers",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zoning/definitions": {
      "get": {
        "operationId": "get-zoning-definitions",
        "tags": [
          "City data"
        ],
        "summary": "Defined terms of the zoning bylaw",
        "description": "Each term with its definition (a short quote from the bylaw) and a link to the page of the consolidated bylaw. `q` searches terms and text.\n\nExample: `/api/v1/zoning/definitions`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the term or definition.",
            "schema": {
              "type": "string",
              "examples": [
                "secondary suite"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ term, slug, text, bylaws, pdfPage, url }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "term": {
                                "type": "string"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "text": {
                                "type": "string"
                              },
                              "bylaws": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "pdfPage": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "term",
                              "slug",
                              "text",
                              "bylaws",
                              "pdfPage",
                              "url"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "term": "string",
                          "slug": "string",
                          "text": "string",
                          "bylaws": [
                            "string"
                          ],
                          "pdfPage": 0,
                          "url": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/zoning/definitions",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zoning/definitions/{slug}": {
      "get": {
        "operationId": "get-zoning-definitions-slug",
        "tags": [
          "City data"
        ],
        "summary": "One defined term of the zoning bylaw",
        "description": "Example: `/api/v1/zoning/definitions/secondary-suite`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Term slug, e.g. housing-four-plex.",
            "schema": {
              "type": "string",
              "examples": [
                "secondary-suite"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "term": {
                              "type": "string"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "text": {
                              "type": "string"
                            },
                            "bylaws": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "pdfPage": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "url": {
                              "type": [
                                "null",
                                "string"
                              ]
                            }
                          },
                          "required": [
                            "term",
                            "slug",
                            "text",
                            "bylaws",
                            "pdfPage",
                            "url"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "term": "string",
                        "slug": "string",
                        "text": "string",
                        "bylaws": [
                          "string"
                        ],
                        "pdfPage": 0,
                        "url": "https://example.org/"
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/zoning/definitions/{slug}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zoning/amendments": {
      "get": {
        "operationId": "get-zoning-amendments",
        "tags": [
          "City data"
        ],
        "summary": "Rezonings and text amendments to the zoning bylaw, newest first",
        "description": "The bylaw’s own list of amendments since it was adopted: amending bylaw number, adoption date, type, subject property (address), the zones land moved from and to, and the sections changed. `zone` finds rezonings to or from a zone code. Current applications that are not adopted yet are in /development?category=rezoning.\n\nExample: `/api/v1/zoning/amendments`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Address words or a bylaw number.",
            "schema": {
              "type": "string",
              "examples": [
                "Central"
              ]
            }
          },
          {
            "name": "zone",
            "in": "query",
            "required": false,
            "description": "Zone code the land moved to or from.",
            "schema": {
              "type": "string",
              "examples": [
                "RM3"
              ]
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "rezoning or text.",
            "schema": {
              "type": "string",
              "enum": [
                "rezoning",
                "text"
              ]
            }
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "Adopted on or after (YYYY-MM-DD).",
            "schema": {
              "type": "string",
              "examples": [
                "2024-01-01"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ bylaw, adopted, type, subject, from, to, summary, sections, purpose, url }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "bylaw": {
                                "type": "string"
                              },
                              "adopted": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "type": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "subject": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "purpose": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "sections": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "from": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "to": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "summary": {
                                "type": "string"
                              },
                              "url": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              }
                            },
                            "required": [
                              "bylaw",
                              "adopted",
                              "type",
                              "subject",
                              "purpose",
                              "sections",
                              "from",
                              "to",
                              "summary",
                              "url"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "bylaw": "string",
                          "adopted": "string",
                          "type": "string",
                          "subject": "string",
                          "purpose": "string",
                          "sections": "string",
                          "from": [
                            "string"
                          ],
                          "to": [
                            "string"
                          ],
                          "summary": "string",
                          "url": "https://example.org/"
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/zoning/amendments",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zones": {
      "get": {
        "operationId": "get-zones",
        "tags": [
          "City data"
        ],
        "summary": "Every zone of the zoning bylaw: what it allows and its limits, in plain language",
        "description": "One entry per bylaw zone section (variants such as RS1m share their zone; `variants` says what the suffix adds). Limits are the general ones of each zone: the bylaw has exceptions, so follow `bylawUrl` for the full section. `family` filters by zone family.\n\nExample: `/api/v1/zones`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "family",
            "in": "query",
            "required": false,
            "description": "Zone family label or id, e.g. residential.",
            "schema": {
              "type": "string",
              "examples": [
                "residential"
              ]
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Words in the code, name or uses.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page (default 50, max 500 unless noted).",
            "schema": {
              "type": "integer",
              "examples": [
                20
              ]
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip. Use `links.next` to page.",
            "schema": {
              "type": "integer",
              "examples": [
                0
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "csv"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "[{ code, codes, name, family, summary, purpose, principalUses, secondaryUses, lot, coverage, height, storeys, setbacks, density, maxUnits, bylawUrl, page, polygons, parcels }]",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "polygons": {
                                "type": "number"
                              },
                              "parcels": {
                                "type": "number"
                              },
                              "areaHa": {
                                "type": "number"
                              },
                              "code": {
                                "type": "string"
                              },
                              "codes": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "name": {
                                "type": "string"
                              },
                              "family": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "section": {
                                "type": "string"
                              },
                              "summary": {
                                "type": "string"
                              },
                              "purpose": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "principalUses": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "only": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "note": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name"
                                  ]
                                }
                              },
                              "secondaryUses": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string"
                                    },
                                    "only": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "note": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "name"
                                  ]
                                }
                              },
                              "variants": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "code": {
                                      "type": "string"
                                    },
                                    "meaning": {
                                      "type": [
                                        "null",
                                        "string"
                                      ]
                                    }
                                  },
                                  "required": [
                                    "code",
                                    "meaning"
                                  ]
                                }
                              },
                              "lot": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "minWidth": {
                                        "type": "number"
                                      },
                                      "maxWidth": {
                                        "type": "number"
                                      },
                                      "minArea": {
                                        "type": "number"
                                      },
                                      "maxArea": {
                                        "type": "number"
                                      }
                                    }
                                  }
                                ]
                              },
                              "coverage": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "coverageVaries": {
                                "type": "boolean"
                              },
                              "height": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "storeys": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "setbacks": {
                                "anyOf": [
                                  {
                                    "type": "null"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "front": {
                                        "type": "number"
                                      },
                                      "interiorSide": {
                                        "type": "number"
                                      },
                                      "exteriorSide": {
                                        "type": "number"
                                      },
                                      "rear": {
                                        "type": "number"
                                      }
                                    }
                                  }
                                ]
                              },
                              "density": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "maxUnits": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "unitsPerHa": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "floorAreaRatio": {
                                "type": [
                                  "null",
                                  "number"
                                ]
                              },
                              "amendedBy": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "bylawUrl": {
                                "type": [
                                  "null",
                                  "string"
                                ]
                              },
                              "page": {
                                "type": "string"
                              },
                              "corrected": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "code",
                              "codes",
                              "name",
                              "family",
                              "section",
                              "summary",
                              "purpose",
                              "principalUses",
                              "secondaryUses",
                              "variants",
                              "lot",
                              "coverage",
                              "coverageVaries",
                              "height",
                              "storeys",
                              "setbacks",
                              "density",
                              "maxUnits",
                              "unitsPerHa",
                              "floorAreaRatio",
                              "amendedBy",
                              "bylawUrl",
                              "page",
                              "corrected"
                            ]
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": [
                        {
                          "polygons": 0,
                          "parcels": 0,
                          "areaHa": 0,
                          "code": "string",
                          "codes": [
                            "string"
                          ],
                          "name": "string",
                          "family": "string",
                          "section": "string",
                          "summary": "string",
                          "purpose": "string",
                          "principalUses": [
                            {
                              "name": "string",
                              "only": [
                                "string"
                              ],
                              "note": "string"
                            }
                          ],
                          "secondaryUses": [
                            {
                              "name": "string",
                              "only": [
                                "string"
                              ],
                              "note": "string"
                            }
                          ],
                          "variants": [
                            {
                              "code": "string",
                              "meaning": "string"
                            }
                          ],
                          "lot": {
                            "minWidth": 0,
                            "maxWidth": 0,
                            "minArea": 0,
                            "maxArea": 0
                          },
                          "coverage": 0,
                          "coverageVaries": false,
                          "height": 0,
                          "storeys": 0,
                          "setbacks": {
                            "front": 0,
                            "interiorSide": 0,
                            "exteriorSide": 0,
                            "rear": 0
                          },
                          "density": "string",
                          "maxUnits": 0,
                          "unitsPerHa": 0,
                          "floorAreaRatio": 0,
                          "amendedBy": [
                            "string"
                          ],
                          "bylawUrl": "https://example.org/",
                          "page": "https://example.org/",
                          "corrected": false
                        }
                      ],
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source",
                        "total": 1,
                        "count": 1,
                        "limit": 50,
                        "offset": 0
                      },
                      "links": {
                        "self": "/api/v1/zones",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zones/{code}": {
      "get": {
        "operationId": "get-zones-code",
        "tags": [
          "City data"
        ],
        "summary": "One zone: what it allows, its limits and recent rezonings to or from it",
        "description": "Example: `/api/v1/zones/RS4`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "description": "Zone code (a variant such as RS1m returns its zone).",
            "schema": {
              "type": "string",
              "examples": [
                "RS4"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "recentRezonings": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "bylaw": {
                                    "type": "string"
                                  },
                                  "adopted": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "type": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "subject": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "purpose": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "sections": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  },
                                  "from": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "to": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "summary": {
                                    "type": "string"
                                  },
                                  "url": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "bylaw",
                                  "adopted",
                                  "type",
                                  "subject",
                                  "purpose",
                                  "sections",
                                  "from",
                                  "to",
                                  "summary",
                                  "url"
                                ]
                              }
                            },
                            "note": {
                              "type": "string"
                            },
                            "polygons": {
                              "type": "number"
                            },
                            "parcels": {
                              "type": "number"
                            },
                            "areaHa": {
                              "type": "number"
                            },
                            "code": {
                              "type": "string"
                            },
                            "codes": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "name": {
                              "type": "string"
                            },
                            "family": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "section": {
                              "type": "string"
                            },
                            "summary": {
                              "type": "string"
                            },
                            "purpose": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "principalUses": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "only": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "note": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name"
                                ]
                              }
                            },
                            "secondaryUses": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "only": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "note": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "name"
                                ]
                              }
                            },
                            "variants": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "code": {
                                    "type": "string"
                                  },
                                  "meaning": {
                                    "type": [
                                      "null",
                                      "string"
                                    ]
                                  }
                                },
                                "required": [
                                  "code",
                                  "meaning"
                                ]
                              }
                            },
                            "lot": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "minWidth": {
                                      "type": "number"
                                    },
                                    "maxWidth": {
                                      "type": "number"
                                    },
                                    "minArea": {
                                      "type": "number"
                                    },
                                    "maxArea": {
                                      "type": "number"
                                    }
                                  }
                                }
                              ]
                            },
                            "coverage": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "coverageVaries": {
                              "type": "boolean"
                            },
                            "height": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "storeys": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "setbacks": {
                              "anyOf": [
                                {
                                  "type": "null"
                                },
                                {
                                  "type": "object",
                                  "properties": {
                                    "front": {
                                      "type": "number"
                                    },
                                    "interiorSide": {
                                      "type": "number"
                                    },
                                    "exteriorSide": {
                                      "type": "number"
                                    },
                                    "rear": {
                                      "type": "number"
                                    }
                                  }
                                }
                              ]
                            },
                            "density": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "maxUnits": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "unitsPerHa": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "floorAreaRatio": {
                              "type": [
                                "null",
                                "number"
                              ]
                            },
                            "amendedBy": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "bylawUrl": {
                              "type": [
                                "null",
                                "string"
                              ]
                            },
                            "page": {
                              "type": "string"
                            },
                            "corrected": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "recentRezonings",
                            "note",
                            "code",
                            "codes",
                            "name",
                            "family",
                            "section",
                            "summary",
                            "purpose",
                            "principalUses",
                            "secondaryUses",
                            "variants",
                            "lot",
                            "coverage",
                            "coverageVaries",
                            "height",
                            "storeys",
                            "setbacks",
                            "density",
                            "maxUnits",
                            "unitsPerHa",
                            "floorAreaRatio",
                            "amendedBy",
                            "bylawUrl",
                            "page",
                            "corrected"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "recentRezonings": [
                          {
                            "bylaw": "string",
                            "adopted": "string",
                            "type": "string",
                            "subject": "string",
                            "purpose": "string",
                            "sections": "string",
                            "from": [
                              "string"
                            ],
                            "to": [
                              "string"
                            ],
                            "summary": "string",
                            "url": "https://example.org/"
                          }
                        ],
                        "note": "string",
                        "polygons": 0,
                        "parcels": 0,
                        "areaHa": 0,
                        "code": "string",
                        "codes": [
                          "string"
                        ],
                        "name": "string",
                        "family": "string",
                        "section": "string",
                        "summary": "string",
                        "purpose": "string",
                        "principalUses": [
                          {
                            "name": "string",
                            "only": [
                              "string"
                            ],
                            "note": "string"
                          }
                        ],
                        "secondaryUses": [
                          {
                            "name": "string",
                            "only": [
                              "string"
                            ],
                            "note": "string"
                          }
                        ],
                        "variants": [
                          {
                            "code": "string",
                            "meaning": "string"
                          }
                        ],
                        "lot": {
                          "minWidth": 0,
                          "maxWidth": 0,
                          "minArea": 0,
                          "maxArea": 0
                        },
                        "coverage": 0,
                        "coverageVaries": false,
                        "height": 0,
                        "storeys": 0,
                        "setbacks": {
                          "front": 0,
                          "interiorSide": 0,
                          "exteriorSide": 0,
                          "rear": 0
                        },
                        "density": "string",
                        "maxUnits": 0,
                        "unitsPerHa": 0,
                        "floorAreaRatio": 0,
                        "amendedBy": [
                          "string"
                        ],
                        "bylawUrl": "https://example.org/",
                        "page": "https://example.org/",
                        "corrected": false
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/zones/{code}",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/zones/{code}/areas": {
      "get": {
        "operationId": "get-zones-code-areas",
        "tags": [
          "City data"
        ],
        "summary": "Where a zone applies: its polygons on the City’s zoning map (simplified)",
        "description": "Example: `/api/v1/zones/RM3/areas`\n\nCache: 21600s.",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "description": "Zone code; a zone returns every variant’s areas.",
            "schema": {
              "type": "string",
              "examples": [
                "RM3"
              ]
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "description": "Sparse fieldset: comma-separated keys (dot paths allowed) kept in each item.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Output format. `md` (or `Accept: text/markdown`) returns Markdown.",
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "md",
                "geojson"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/IfNoneMatch"
          }
        ],
        "responses": {
          "200": {
            "description": "Envelope with `data`, `meta` (source, licence, attribution, updatedAt, pagination) and `links`.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Last-Modified": {
                "$ref": "#/components/headers/LastModified"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "const": "FeatureCollection"
                            },
                            "features": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "Feature"
                                  },
                                  "geometry": {
                                    "$ref": "#/components/schemas/JsonValue"
                                  },
                                  "properties": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "name": {
                                        "type": "string"
                                      },
                                      "kind": {
                                        "type": "string"
                                      },
                                      "info": {
                                        "type": "array",
                                        "items": {
                                          "type": "array",
                                          "prefixItems": [
                                            {
                                              "type": "string"
                                            },
                                            {
                                              "type": "string"
                                            }
                                          ],
                                          "minItems": 2,
                                          "maxItems": 2
                                        }
                                      },
                                      "url": {
                                        "type": "string"
                                      },
                                      "at": {
                                        "type": "array",
                                        "prefixItems": [
                                          {
                                            "type": "number"
                                          },
                                          {
                                            "type": "number"
                                          }
                                        ],
                                        "minItems": 2,
                                        "maxItems": 2
                                      },
                                      "tone": {
                                        "type": "string"
                                      },
                                      "src": {
                                        "type": "string",
                                        "const": "city"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "name",
                                      "kind",
                                      "at",
                                      "src"
                                    ]
                                  }
                                },
                                "required": [
                                  "type",
                                  "geometry",
                                  "properties"
                                ]
                              }
                            }
                          },
                          "required": [
                            "type",
                            "features"
                          ]
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "shape": {
                    "summary": "Shape illustration generated from the response schema: placeholder values, not city data",
                    "value": {
                      "data": {
                        "type": "FeatureCollection",
                        "features": [
                          {
                            "type": "Feature",
                            "geometry": null,
                            "properties": {
                              "id": "string",
                              "name": "string",
                              "kind": "string",
                              "info": [
                                [
                                  "string",
                                  "string"
                                ]
                              ],
                              "url": "https://example.org/",
                              "at": [
                                0,
                                0
                              ],
                              "tone": "string",
                              "src": "city"
                            }
                          }
                        ]
                      },
                      "meta": {
                        "source": "Example source (fictional)",
                        "sourceUrl": "https://source.example/",
                        "updatedAt": "2026-01-01T00:00:00Z",
                        "ageSec": 0,
                        "license": "Example only",
                        "attribution": "Example source"
                      },
                      "links": {
                        "self": "/api/v1/zones/{code}/areas",
                        "next": null,
                        "docs": "/developers/"
                      }
                    }
                  }
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              },
              "application/geo+json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "304": {
            "description": "Not modified (If-None-Match matched the ETag). No body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error"
          },
          "404": {
            "$ref": "#/components/responses/Error"
          },
          "410": {
            "$ref": "#/components/responses/Error"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "503": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    }
  },
  "components": {
    "headers": {
      "ETag": {
        "description": "Weak ETag; send it back as If-None-Match for a 304. Changes only when the data changes.",
        "schema": {
          "type": "string"
        }
      },
      "LastModified": {
        "description": "When the underlying data was last fetched or changed (meta.updatedAt), as an HTTP date. Informational: revalidate with the ETag.",
        "schema": {
          "type": "string"
        }
      },
      "Link": {
        "description": "RFC 8288 links: rel=\"help\" (docs for this endpoint), and rel=\"next\"/\"prev\" on paginated lists.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimitLimit": {
        "description": "Requests allowed per window (120 per 60 seconds per IP).",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitRemaining": {
        "description": "Requests left in the current one-minute window.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitReset": {
        "description": "Seconds until the window resets.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "parameters": {
      "IfNoneMatch": {
        "name": "If-None-Match",
        "in": "header",
        "required": false,
        "description": "ETag from an earlier response; the API answers 304 Not Modified with no body when nothing changed.",
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "Business": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "url",
          "sponsored",
          "updatedAt"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "sponsored": {
            "type": "boolean"
          },
          "updatedAt": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "examples": [
          {
            "slug": "example-business-ltd",
            "publicSlug": "example-business",
            "path": "/business/example-business/",
            "name": "Example business (fictional)",
            "url": "https://city.example/business/example-business/",
            "sponsored": false,
            "updatedAt": "2026-01-01T00:00:00.000Z",
            "source": "Example licensed directory",
            "phone": null,
            "website": null
          }
        ]
      },
      "Event": {
        "type": "object",
        "required": [
          "id",
          "title",
          "start",
          "url",
          "source",
          "status",
          "updatedAt"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "start": {
            "type": "string"
          },
          "end": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string"
          },
          "pageUrl": {
            "type": "string",
            "description": "Stable event detail page on this site; url remains the organizer’s page."
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          },
          "lastSeen": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "type": "string",
            "maxLength": 220
          }
        },
        "examples": [
          {
            "id": "example-event",
            "title": "Example event (fictional)",
            "start": "2026-01-01T18:00:00.000Z",
            "end": null,
            "url": "https://organiser.example/event",
            "source": "Example organiser",
            "status": "active",
            "updatedAt": "2026-01-01T00:00:00.000Z",
            "summary": "Fictional response illustrating the contract."
          }
        ]
      },
      "Job": {
        "type": "object",
        "required": [
          "id",
          "title",
          "url",
          "source",
          "status",
          "updatedAt"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "employer": {
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "examples": [
          {
            "id": "example-job",
            "title": "Example role (fictional)",
            "employer": "Example employer",
            "url": "https://employer.example/job",
            "source": "Example employer",
            "status": "open",
            "updatedAt": "2026-01-01T00:00:00.000Z"
          }
        ]
      },
      "Change": {
        "type": "object",
        "required": [
          "kind",
          "id",
          "action",
          "updatedAt",
          "url"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "business",
              "event",
              "job"
            ]
          },
          "id": {
            "type": "string"
          },
          "action": {
            "type": "string",
            "enum": [
              "upsert",
              "remove"
            ]
          },
          "updatedAt": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "examples": [
          {
            "kind": "event",
            "id": "example-event",
            "action": "remove",
            "updatedAt": "2026-01-01T00:00:00.000Z",
            "url": "/api/v1/events/example-event"
          }
        ]
      },
      "JsonValue": {
        "description": "JSON value. Dataset-specific fields are extensible; use /datasets for source and dataset documentation.",
        "anyOf": [
          {
            "type": "null"
          },
          {
            "type": "boolean"
          },
          {
            "type": "number"
          },
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonValue"
            }
          },
          {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            }
          }
        ]
      },
      "Meta": {
        "type": "object",
        "required": [
          "source",
          "sourceUrl",
          "updatedAt",
          "license",
          "attribution"
        ],
        "properties": {
          "source": {
            "type": "string"
          },
          "sourceUrl": {
            "type": "string"
          },
          "license": {
            "type": "string"
          },
          "attribution": {
            "type": "string"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "When the data was fetched or last changed: ISO 8601 with Z or an offset, or null when unknown."
          },
          "updatedAtPrecision": {
            "type": "string",
            "enum": [
              "day",
              "month",
              "year"
            ],
            "description": "Present when the source dates its data only to a day, month or year: updatedAt is then the start of that period in the city time zone."
          },
          "ageSec": {
            "type": "integer",
            "description": "Seconds since updatedAt, when known."
          },
          "stale": {
            "type": "boolean",
            "description": "True when the upstream failed and the last good copy is served."
          },
          "total": {
            "type": "integer"
          },
          "count": {
            "type": "integer"
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          }
        }
      },
      "Links": {
        "type": "object",
        "properties": {
          "self": {
            "type": "string"
          },
          "next": {
            "type": [
              "string",
              "null"
            ]
          },
          "prev": {
            "type": [
              "string",
              "null"
            ]
          },
          "docs": {
            "type": "string"
          }
        }
      },
      "Envelope": {
        "type": "object",
        "required": [
          "data",
          "meta",
          "links"
        ],
        "properties": {
          "data": {},
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "links": {
            "$ref": "#/components/schemas/Links"
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "status",
              "code",
              "message"
            ],
            "properties": {
              "status": {
                "type": "integer",
                "description": "HTTP status, repeated in the body."
              },
              "code": {
                "type": "string",
                "examples": [
                  "not_found"
                ],
                "description": "Stable machine-readable code; branch on this, not on `message`. Current codes: bad_request (400), not_found (404), method_not_allowed (405), sync_expired (410, /changes cursor too old: resync), rate_limited (429), upstream_unavailable (503, retry later)."
              },
              "message": {
                "type": "string",
                "description": "Human-readable explanation; wording may change."
              },
              "didYouMean": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "On unknown paths: nearby endpoints."
              }
            }
          },
          "links": {
            "type": "object",
            "properties": {
              "docs": {
                "type": "string"
              },
              "index": {
                "type": "string"
              }
            }
          }
        },
        "examples": [
          {
            "error": {
              "status": 404,
              "code": "not_found",
              "message": "business not found"
            },
            "links": {
              "docs": "https://princegeorgepulse.ca/developers/",
              "index": "/api/v1"
            }
          }
        ]
      }
    },
    "responses": {
      "Error": {
        "description": "Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "RateLimited": {
        "description": "Too many requests (over 120 per 60 seconds from one IP). Wait Retry-After seconds. Need more? Email hello@princegeorgepulse.ca.",
        "headers": {
          "Retry-After": {
            "description": "Seconds to wait before retrying.",
            "schema": {
              "type": "integer"
            }
          },
          "RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  }
}