Review
Inspect the generated API with OpenAPI, and generate a typed SDK or dashboard app.
Once the project runs, you can generate a full OpenAPI specification from your registered route shapes - including the createCRUD endpoints:
deno task generate:openapiEvery endpoint we defined is tagged under the CMS group thanks to .group("CMS"), so they're neatly organized in the generated spec. Import the resulting specification into Swagger UI, Postman, or any OpenAPI viewer to explore the available endpoints:
| Method | Path | Source |
|---|---|---|
POST | /posts/api | createCRUD |
GET | /posts/api | createCRUD (public) |
GET | /posts/api/:id | createCRUD (public) |
GET | /posts/api/count | createCRUD (public) |
PATCH | /posts/api/:id | createCRUD (tenant-scoped) |
DELETE | /posts/api/:id | custom soft-delete |
Generating a client SDK or dashboard
You can also generate a fully typed client SDK, or a ready-made dashboard app:
deno task generate:sdk # typed TypeScript client for your API
deno task generate:app # dashboard app in the public folderSee CLI Tasks for the complete list of generators.
Because the OpenAPI spec is generated from your shape() / createCRUD definitions, keeping your Zod schemas accurate gives you accurate docs and SDKs for free.
Where to go next
You've now built a complete multi-tenant CMS API. To go further:
- Add per-tenant indexes - see Database Indexes.
- Move notifications into a background worker.
- Explore the full helper options in the createCRUD reference.