---
title: "Per-app OpenAPI document derived from `export const routes`"
method: GET
path: "/app/{id}/openapi.json"
---

# Per-app OpenAPI document derived from \`export const routes\`

`GET /app/{id}/openapi.json`

## Request

- Base URL: `https://charm.ing`
- URL: `https://charm.ing/app/{id}/openapi.json`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Owner-only OpenAPI 3.1 document with one method-specific path entry per route. requestBody schema comes from route.inputSchema; the 200 response schema wraps route.outputSchema as `{ ok: true, value }`. Apps that do not declare `routes` get an empty `paths: {}` document.

## Response `200`

Per-app OpenAPI document.

- object: OpenAPI 3.1 document describing this app’s `routes`. Conforms to https://spec.openapis.org/oas/v3.1.0 — the per-app shape is too dynamic to enumerate inline.

## Other responses

- `401`: Authentication required.
- `403`: Token does not authorize this app.
- `404`: App not found.

---

[API](https://skmtc.dev/charm/apis/charming-api.md) · [All operations](https://skmtc.dev/charm/apis/charming-api/llms.txt) · [OpenAPI document](https://skmtc.dev/charm/apis/charming-api/revisions/a9d06c419b3a?raw)
