Interfaces

Which interface supports which task today

Seven surfaces are designed. Three exist. This page pairs each with what it cannot do, because that is the part that decides whether it is usable.

The interface catalogue

Each surface, what it supports, and what it does not.

Cross-cutting request behaviour

Only what the application defines. Where a contract is undefined, this page says so rather than assuming a convention.

Authorization

In progress

Authorization middleware runs ahead of every resource except health routes, which bypass authentication. It supplies the authenticated principal; tenancy isolation is roadmap phase 5.

Idempotency

Available

Side-effecting POST requests to the intake surface require an Idempotency-Key. The key is scoped to the authenticated principal. A repeat with the same canonical body replays the stored response; the same key with a different body returns 409 Conflict.

Optimistic locking

Available

Profile and template updates carry expected_revision. A stale revision is refused rather than overwriting a concurrent edit.

Errors

Available

A single error serializer produces a consistent error body across every resource.

Pagination, filtering, and role enforcement

Available

Pagination, filtering, and role enforcement are delivered by the request surfaces that expose them.

Rate limits

Planned

No rate-limit contract is defined yet; do not assume one.

Task to interface

Read down the left column for the job, across for whether anything serves it.

Which interface serves which task
Task Interface Status
Store show configuration and editorial guardrails REST API Available
Bind reusable style guides and presenter profiles REST API Available
Submit source material and track its ingestion REST API Available
Retrieve a structured brief for a downstream generator REST API Available
Check a deployment is live and ready Health surface Available
Run work off the request path Worker runtime Available
Retrieve evaluator findings for an episode None yet Planned
Approve or reject an episode None yet Planned
Watch a generation run in real time None yet Planned
Import the package and call it from Python None supported Planned

Planned surfaces

Kept separate from the live catalogue on purpose.

A terminal client, a web console, and WebSocket event streaming are all specified in the interface design notes. None of them ships. The design documents are worth reading as design documents and should not be read as documentation for something installable.

The Python module surface is the case most likely to mislead. The package imports and the modules are there, but nothing in them carries a compatibility promise. Treat it as internal until a supported API is documented.

The endpoints that exist today · Client work in the roadmap