Records the non-secret per-provider coordinates of the deployment key-protection
backend and returns the resulting activation state. Replaces the previous
configuration in place: the declaration is singular by database constraint, so a
second call updates the single row rather than creating a second one.
This is phase ONE of a two-phase surface, and it proves nothing.
The order is configure then credential then
activate. Configure opens no connection, validates no credential,
provisions no key and does not record which backend the deployment is running. Only
activate reaches the backend, and only activate writes the
declaration the platform serves. A configuration that has never been proved is
reported as such — activationState: CONFIGURED,
credentialPresent: false, and a self-test still reading
NOT_RUN / NEVER_INVOKED.
The request body is one shape for every backend: the declared
backend token, the single keyId coordinate that names the
key on it, and — only when that backend accepts one — an endpoint. It
replaces three per-provider shapes that asked for four structured members on GCP and
two on Azure, while the per-tenant plane one rung down asked for the generic pair the
whole time. What an operator types into keyId, what to CALL that field,
and whether endpoint is asked for at all are published per backend on
GET /backend/declarable as coordinateContract; a client
renders that answer and holds no per-backend table of its own.
Unknown keys are still rejected: a projectId, a
keyRing or an invented field is a 400 rather than a value silently
dropped. An endpoint submitted under a backend that accepts none is a
422 naming the endpoint requirement — it used to be a 400 on an
unknown key, because the GCP shape carried no endpoint member at all; the answer is
now the one the per-tenant plane has always given, from the single reader of the
declared requirement column. The token is carried inside the configuration object
itself, which is what keeps it in one place: a wrapper repeating it alongside would
be two homes for one value and a consistency check between them.
activationState is derived per request and is
stored in no table. It is composed from the declaration, the credential, the last
self-test verdict and the immutable binding, all read once.
Carries no credential and echoes none. ROOT-only
(platform.bootstrap).
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||