{"_id":"@codasignal/routo-api","name":"@codasignal/routo-api","dist-tags":{"latest":"1.2.0"},"versions":{"1.2.0":{"name":"@codasignal/routo-api","version":"1.2.0","license":"AGPL-3.0-only","type":"module","main":"./dist/routes.json","exports":{".":{"types":"./dist/routes.d.ts","default":"./dist/routes.json"},"./meta":"./src/meta.ts","./types":"./src/types.ts"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"scripts":{"build":"bun run scripts/build.ts","check":"bun run scripts/build.ts --check","check-types":"tsc --noEmit","test":"vitest run"},"devDependencies":{"typescript":"^5.9.2","vitest":"^3.1.1","zod":"4.1.12"},"gitHead":"713444f17838ece9947a72b30082b0ea3424dfdd","types":"./dist/routes.d.ts","_id":"@codasignal/routo-api@1.2.0","description":"JSON-only package describing Routo's public REST API surface. Generated from the live router so the docs page and consumers stay in sync with the actual code.","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-bg3S0CzzCgllcNl1+b4djd51pDYtkp0cjTXIMLMz8tTrIQ9r0uuj4jspTPKB23TDYdAzceOUUbu4A3Pc54u/FQ==","shasum":"bfe0ae423add9c54e7a555d601c59a783d8c8dd2","tarball":"https://registry.npmjs.org/@codasignal/routo-api/-/routo-api-1.2.0.tgz","fileCount":6,"unpackedSize":1088484,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDBsYD4kvtqmDydmXQ9RgcC1LmV0FUzHRMbTHP7h5Bk6AIgeBwrUCjoz8r6iHp2NXlYAHEfTe+iSr1YATN8foXjaFs="}]},"_npmUser":{"name":"falconiererb","email":"hello@codasignal.com"},"directories":{},"maintainers":[{"name":"falconiererb","email":"hello@codasignal.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/routo-api_1.2.0_1787081008859_0.5052641112394294"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-18T19:23:28.695Z","1.2.0":"2026-08-18T19:23:29.067Z","modified":"2026-08-18T19:23:29.421Z"},"maintainers":[{"name":"falconiererb","email":"hello@codasignal.com"}],"description":"JSON-only package describing Routo's public REST API surface. Generated from the live router so the docs page and consumers stay in sync with the actual code.","license":"AGPL-3.0-only","readme":"# @codasignal/routo-api\n\nJSON-only package describing Routo's public REST API surface. Generated from the live router so the docs page and consumers stay in sync with the actual code.\n\n## Install\n\n```bash\nbun add @codasignal/routo-api\n```\n\nThe package is published as **public** to npm under the `@codasignal` scope. No\n`.npmrc` entry and no auth token are needed.\n\n> Versions up to and including 1.1.0 were published to GitHub Packages. If your\n> `.npmrc` still carries `@codasignal:registry=https://npm.pkg.github.com`,\n> remove that line — it now points the whole scope at the wrong registry.\n\n## Use\n\n```ts\nimport routes from \"@codasignal/routo-api\";\n```\n\nThe default export is the JSON bundle:\n\n```ts\ntype DocsBundle = {\n  schemaVersion: \"1\";\n  routes: Array<Route>;\n};\n```\n\nType definitions live at `@codasignal/routo-api/types`:\n\n```ts\nimport type { DocsBundle, Route, SerializedProjectFrom } from \"@codasignal/routo-api/types\";\n```\n\n## Semver\n\n- **Major** — top-level JSON shape change (renamed `routes`, removed a `Route` field)\n- **Minor** — new endpoint or group added, new `Route` field\n- **Patch** — description, label, or example-only changes\n\nConsumers pin caret on the active major (`^1.0.0`).\n\n## Build (engine repo)\n\n```bash\nbun run --filter @codasignal/routo-api build\n```\n\nWrites `dist/routes.json`. The build script shells out to `@routo/api`'s docs generator so the live router + Zod schemas are the source of truth.\n\nQuality gate `bun run check:api-routes-export` verifies the committed JSON matches the live router. CI fails on drift.\n","readmeFilename":"README.md","_rev":"1-e9b30bd10a436c0d5e9202c17151977a"}