Jadpo is experimental and not ready for production. These docs follow the compiler's main branch as of 30 Oct 2026. What's built · Install 0.1.0
jadpo
Reference: HTTP

HTTP

What is built: HTTP

A feature that isn't built yet is the error toolchain.not_built_yet where an app uses it.

Feature Status
Checking routes Built: jadpo check checks route groups, their prefixes and APIs (with idempotency:), methods and typed placeholders, the one input (from the query string for GET and DELETE, the JSON body otherwise, and header: fields), output: and status:, deadline:'s range and what run: calls, every route of the project against the others and the health paths, and each API's record.
OpenAPI Built: jadpo check writes one OpenAPI document per API to build/openapi/, and the failure wording for client apps beside it. Each API serves its own document at <prefix>/openapi.json (serve_openapi: false turns it off), listed in its record, its document and jadpo routes, and the documents carry the x-jadpo fields the OpenAPI importer reads (OpenAPI). OpenAPI derives each route's responses from what it runs and shows ZonedTime, Zone and a mixed enum as they are sent.
Serving a request Built: the runtime's HTTP component routes a request, decodes and checks its input (each problem as { field, rule }), runs the action or query, and answers with the output or the failure envelope, its request_id and x-request-id, with the status the failure's kind sets; it answers HEAD and OPTIONS itself and counts the default rate limits. It reads a body only as JSON, and refuses a query string or body a route doesn't read, a header it can't read and a body over 1 MB.
Deadlines and concurrent changes Built: the runtime stops a route at its deadline without committing, even work that never waits, and runs an action again on a concurrent change found as it commits.
Health endpoints Built: /health/live and /health/ready.
Idempotent writes Built: the runtime keeps each write's Idempotency-Key with its response.
Commands Built: jadpo dev serves the routes and reloads on save, jadpo routes lists them and jadpo api update writes the records, each api/<api>.jadpo_record in the record format with no version: line; the OpenAPI version is a hash of it.
Native connection limits Built: natively, a client has 10 seconds for its headers and 30 for its body, a write waits at most 30 seconds for it to read, and the server holds at most 1,024 connections and 10 database connections per store per worker.
Sign-in Built: every route needs a signed-in caller unless it says authentication: RouteAuthentication.none; each API lists the sign-in methods it accepts, named in its record; a route passes current_principal to what it runs; a signed-in caller's requests count against its own rate limit, and its idempotency keys are its own; a request with a credential on a route anyone may call counts against its address before it runs (Identity).
Policy Built: policy decides what each route reaches, and OpenAPI lists the 403 not_permitted on every route that runs an action that writes or is listed under actions: (Policy).
Issued tokens and keys Built: a GET runs sessions.tokens and <Service>.keys itself, and the record and OpenAPI describe the IssuedToken and IssuedKey it sends (Service credentials).
Map layers Built: a route may send a FeatureCollection<G, P> bare, its properties held to what an Output may hold and, where an action returns it, to the fields every caller may read (Field restrictions); OpenAPI describes RFC 7946's object and the record names it with its type arguments. A GET sends one a query gives (Reads and writes, "A query giving a map layer"), held to field policy where the query is declared.
settle: Built: a route waits for the work its action set off (Waiting for follow-on work, and route.settle_invalid).
Streaming Built: a route whose action returns an AiStream sends a model's answer as server-sent events (Streaming a model's answer, and route.stream_invalid).
Failure wording from a build Not built yet: jadpo check writes <api>.failures.<locale>.json beside each OpenAPI document, and jadpo build is to write it too.
x-jadpo-events Not built yet: it waits for publishing events outward (Where events travel).
A route's own rate_limit: and the Redis store for rate limits Not built yet (Rate limits).
Classifying breaking changes and their acceptances Not built yet (Acceptances).
The Jadpo-Revision header Not built yet: it comes with caches (Write revisions).

Markdown for agents: /docs/http-built.md.Built from Jadpo main at a707efb.