OpenAPI specification
A machine-readable OpenAPI 3.1 document, generated from the running API.
The full /v1/* surface — every operation, its scope, request and response schemas, error shapes, and the webhook event payload schemas — is published as OpenAPI 3.1:
- Live:
https://app.tourical.com/api/v1/openapi.json— no auth required. - Snapshot on this site:
/openapi.json— regenerated with every docs deploy from the same source.
How it stays honest
The document is generated, not hand-written. Each route handler is registered in a single operations table with its zod request/response schemas; the JSON Schemas in the spec are derived from those same schemas. A contract test in the API repository fails the build when:
- a public
/v1/*route exists that is not in the spec, or the spec lists an operation with no route; - a serialized response from any list/detail endpoint no longer validates against its documented schema;
- a webhook payload example no longer validates against its event schema.
The examples in the event catalog are generated from the same definitions.
Using it
- Import it into Postman / Insomnia / Bruno for a ready-made collection.
- Generate a typed client with
openapi-typescript,openapi-generator, oroazapfts. - Validate inbound webhooks client-side with the schemas under
webhooks.*(JSON Schema draft 2020-12).
Deprecated operations carry deprecated: true; see the changelog for the sunset rules.

