For the complete documentation index, see llms.txt. Every page is also served as Markdown at its URL followed by .md.

standards
OpenAPI and the wire formatHTTP API

OpenAPI and the wire format

Get the OpenAPI 3.1 document of every route, and read timestamps and response shapes the way the server sends them.


Every HTTP route is declared once, as a contract, and the OpenAPI document is generated from those contracts. It ships inside @standards/schema, so the version you install describes the server of the same version.

Get the document

import openapi from "@standards/schema/openapi.json" with { type: "json" };

console.log(Object.keys(openapi.paths).length);

The file is plain OpenAPI 3.1 (JSON Schema 2020-12), so code generators, API explorers and contract-testing tools read it as is. Paths are relative to the API root of your workspace; add your host's prefix when you configure a tool.

Part of a routeWhat the document holds
Path, query and header parametersAlways, with the rules the server applies.
Request bodyAlways, multipart/form-data for an upload.
Response bodyThe full schema when the route declares one; an open schema otherwise.
x-standards-permissionThe permission a caller needs, as resource:action, when the route has one.
operationIdThe contract name, the same as the SDK method: actors.get is client.actors.get().

Response schemas are being declared group by group. A route whose response reads as an open schema still answers the documented shape of its SDK method; it simply is not checked yet.

Timestamps

A timestamp travels as an ISO 8601 string in UTC, such as "2026-01-02T03:04:05.000Z". A route with a declared response reads it back for you: the SDK hands you a Date. Over raw HTTP, parse the string yourself.

const actor = await client.actors.get({ id });

actor.createdAt instanceof Date; // true

Checked responses

When a route declares its response, the server checks every answer against it before sending it, and drops any field the schema does not name. A field that is not in the schema is not in the body.

If an answer ever leaves its schema (a server bug), production logs it and sends it unchanged, and the SDK then hands the body over undecoded: its timestamps stay strings.

Next steps