Metro Counselling developer & agent documentation
Metro Counselling publishes its public pages in machine-readable form so that automated agents can read them accurately. This page describes what is available and how to request it.
Scope
This is a read-only content surface. There are no accounts, no bookings, and no write operations, and no authentication is required or accepted. Appointment, fee, coverage, and clinical questions must be routed to a person through the contact page. Do not infer availability, insurance coverage, or clinical suitability from these documents.
Machine-readable files
- /api
JSON discovery document: current version path, every machine-readable endpoint, the rate-limit policy, and the versioning contract.
- /api/v1/pages
Index of every public page with title, description, canonical URL, and Markdown address.
- openapi.json
OpenAPI 3.1 description of every documented operation, generated at build time.
- llms.txt
Scope, per-page usage guidance, contact routing, and safety boundaries.
- sitemap.xml
Canonical list of public pages. Authoritative source for which routes exist.
- robots.txt
Crawler access rules and excluded administrative routes.
Content negotiation
Every public page is prerendered as HTML and as Markdown. Send an Accept header to choose a representation. Standard q-values and wildcards are honoured, responses carry Vary: Accept, Accept-Encoding, and each page advertises its Markdown alternate through a Link header.
curl -H "Accept: text/markdown" https://metrocounselling.ca/servicesThe Markdown representation is also addressable directly, without negotiation:
curl https://metrocounselling.ca/services/index.mdErrors
Unknown paths return a real 404. Request JSON and the response is RFC 9457 problem details carrying a stable code and ordered resolution hints. A request whose Accept header matches no available representation returns 406 with the same shape.
curl -H "Accept: application/json" https://metrocounselling.ca/nopeJSON API
A small read-only JSON surface is served under /api/v1. Requests to any path under /api return JSON by default, whatever the Accept header says, including errors.
curl https://metrocounselling.ca/api
curl https://metrocounselling.ca/api/v1/pagesVersioning & deprecation
The surface is versioned in the URL path. The current major version is /api/v1, and every response carries an API-Version header.
- Additive changes — new endpoints or new response fields — ship without a version bump.
- Breaking changes ship under a new path such as
/api/v2, leaving the previous version in place. - A deprecated version returns a
Deprecationheader with the announcement date, aSunsetheader with the removal date, and aLink rel="successor-version"pointing at its replacement. - At least 180 days pass between the
Deprecationheader appearing and theSunsetdate.
Rate limits
Every response carries RateLimit-Policy: default;q=600;w=60 — a published budget of 600 requests per 60 seconds. It is advisory: these are static resources and no per-client counter is enforced, so RateLimit-Remaining and RateLimit-Reset are deliberately not sent rather than reporting a quota that does not exist. If enforcement is ever added, a 429 will carry Retry-After. Please stay within the budget and honour robots.txt.