# itty-router-openapi **Repository Path**: mirrors_cloudflare/itty-router-openapi ## Basic Information - **Project Name**: itty-router-openapi - **Description**: OpenAPI 3 and 3.1 schema generator and validator for Hono, itty-router and more! - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-18 - **Last Updated**: 2026-03-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
chanfana

OpenAPI 3 and 3.1 schema generator and validator for Hono, itty-router and more!


**Documentation**: chanfana.pages.dev **Source Code**: github.com/cloudflare/chanfana
## Overview [chanfana](https://github.com/cloudflare/chanfana) **(previously known as itty-router-openapi)** is a library that adds OpenAPI schema generation and validation to any router ( Hono, itty-router, etc), meant to be a powerful and lightweight library for Cloudflare Workers but runs on any runtime supported by the base router. The key features are: - OpenAPI 3 and 3.1 schema generator and validator - Zod v4 compatible with full TypeScript inference - Fully written in typescript - [Class-based endpoints](https://chanfana.pages.dev/endpoints/defining-endpoints) - Query, Path, Headers, and Body typescript inference, see [Parameters](https://chanfana.pages.dev/endpoints/parameters) and [Request Validation](https://chanfana.pages.dev/endpoints/request-validation) - Extend existing [Hono](https://chanfana.pages.dev/router-adapters), [itty-router](https://chanfana.pages.dev/router-adapters), etc application, without touching old routes - CLI to extract the schema.json from your code (npx chanfana) - see [CLI Documentation](https://chanfana.pages.dev/cli) ## AI Skills Chanfana provides AI coding assistant skills to help you build OpenAPI endpoints faster. Install them using [npx skills](https://www.npmjs.com/package/skills): ```bash npx skills install cloudflare/chanfana ``` Available skills: - **write-endpoints** - Comprehensive guide for building OpenAPI endpoints with schema definition, request validation, CRUD operations, and D1 integration ## Getting started [![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/chanfana/tree/main/template) Or scaffold it locally with the `create-cloudflare` CLI: ```bash npm create cloudflare@latest -- --template https://github.com/cloudflare/chanfana/tree/main/template ``` The template includes a complete Task API with Hono, D1, and Zod v4 — full CRUD endpoints, a custom endpoint example, integration tests, and auto-generated docs at `/api/docs`. See [`template/README.md`](template/README.md) for full setup instructions. ## Installation ```bash npm i chanfana --save ``` ## Command-Line Interface (CLI) Chanfana includes a CLI tool to help you extract the OpenAPI schema from your Cloudflare Worker project. This is useful for generating a static schema file, for example, in CI/CD pipelines. The basic command is: ```bash npx chanfana ``` This will start your worker using `wrangler dev`, fetch the schema from `/openapi.json`, and save it to `schema.json`. For more details on options and usage, please refer to the [**CLI Documentation**](https://chanfana.pages.dev/cli). ## Minimal Hono Example ```ts import { fromHono, OpenAPIRoute } from 'chanfana' import { Hono } from 'hono' import { z } from 'zod' export type Env = { // Example bindings DB: D1Database BUCKET: R2Bucket } export type AppContext = Context<{ Bindings: Env }> export class GetPageNumber extends OpenAPIRoute { schema = { request: { params: z.object({ id: z.string().min(2).max(10), }), query: z.object({ page: z.number().int().min(0).max(20), }), }, } async handle(c: AppContext) { const data = await this.getValidatedData() return c.json({ id: data.params.id, page: data.query.page, }) } } // Start a Hono app const app = new Hono<{ Bindings: Env }>() // Setup OpenAPI registry const openapi = fromHono(app) // Register OpenAPI endpoints (this will also register the routes in Hono) openapi.get('/entry/:id', GetPageNumber) // Export the Hono app export default app ``` ## Feedback and contributions [chanfana](https://github.com/cloudflare/chanfana) aims to be at the core of new APIs built using Workers and define a pattern to allow everyone to have an OpenAPI-compliant schema without worrying about implementation details or reinventing the wheel. chanfana is considered stable and production ready and is being used with the [Radar 2.0 public API](https://developers.cloudflare.com/radar/) and many other Cloudflare products. You can also talk to us in the [Cloudflare Community](https://community.cloudflare.com/) or the [Radar Discord Channel](https://discord.com/channels/595317990191398933/1035553707116478495)