Apply App Manifest
POST /apps/{app_id}/manifest
Apply a graph8.app.yaml to this app.
Publishes the objects: block as a schema version through the same path
POST /{app_id}/schema-versions uses, including the digest idempotency and
the failure-isolated tenant fan-out, and stores frontend: / backend: as
the build config a later deploy reads.
Refuses when the manifest’s app.slug names a DIFFERENT app than the one in
the path. Both halves of that mismatch are plausible mistakes — a copied
file, a wrong id in a script — and either one silently applied would
publish one app’s schema into another app’s tenants.
A manifest with no objects: publishes nothing. That is not an oversight:
an empty schema would archive every object the app has ever declared across
every consented tenant, so schema_publish refuses it, and a build-config
only manifest is a legitimate thing to apply.
Authorizations
Parameters
Path Parameters
Header Parameters
Request Body required
A graph8.app.yaml document, verbatim.
object
The full graph8.app.yaml document as text. Sent verbatim, including newlines. Rejected above 256 KiB by the parser.
Responses
200
Successful Response
object
What an apply actually did, part by part.
Each field answers “did this half happen”, because a manifest declaring only
objects: and one declaring only backend: are both legal and do different
amounts of work. A caller should never have to infer that from a 200.
object
How the fan-out went, as counts. Never tenant ids — see module docstring.
object
Tenants already materialized on this exact digest.
False when an identical schema was already published. The version named above exists either way; this is what says nothing changed.
One published (or draft) object-schema version.
object
SHA-256 of the canonical schema. Re-publishing the same schema resolves here.
The stored canonical schema. Self-describing, so the version needs no other source.
object
Human-facing ordinal. Nothing keys on it; the digest is the identity.
What a valid manifest declares. The echo of a successful parse.
Deliberately a summary and not the parsed document: a builder who wants the document already has it, and echoing it back would make this response the second place the shape is defined.
422
Validation Error