Control Plane — APIs¶
Generated from the architecture model
This page is rendered from model/**/*.yaml by tools/docs_model during mkdocs build. Edit the YAML, not this page; hand-written design lives on the linked service, platform and plane pages.
AgentCardService¶
REST (public endpoints need a scope; every call carries trusted tenant and project scope)
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
GET |
/factory/agent-cards |
ListAgentCards | factory.agents.discover |
read | natural | GW-01 | Discover cards visible to the caller (tenant, partner or public). |
GET |
/factory/agent-cards/{agentId} |
GetAgentCard | factory.agents.discover |
read | natural | GW-01 | The A2A agent card of an agent's current Published release. |
POST |
/factory/agent-cards/{agentId}/tasks |
SubmitA2ATask | factory.agents.invoke |
shared-write | key-header | GW-01 | Inbound A2A task; mapped onto a run submission with the caller's workload identity and delegated scope. |
GET |
/factory/agent-cards/{agentId}/tasks/{taskId} |
GetA2ATask | factory.agents.invoke |
read | natural | GW-01 | Task state projected from the run (submitted, working, input-required, completed, failed, cancelled). |
AgentRegistryService¶
REST (public endpoints need a scope; every call carries trusted tenant and project scope)
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
POST |
/factory/asset-releases/validate |
ValidateRelease | factory.assets.write |
sandbox | natural | GW-03 | Resolve the closure of a candidate from Git and report missing, unreviewed or incompatible dependencies without publishing. |
POST |
/factory/asset-releases |
SubmitRelease | factory.assets.write |
publication | key-header | GW-03 | Create an InReview release candidate from a source commit; triggers evaluation. |
POST |
/factory/asset-releases/{releaseId}/publish |
PublishRelease | factory.assets.publish |
publication | natural | GW-03 | Move an InReview candidate to Published after gates and approval (approval-gated action). |
POST |
/factory/asset-releases/{releaseId}/deprecate |
DeprecateRelease | factory.assets.publish |
publication | natural | GW-03 | Deprecate a Published release with an in-flight policy. |
GET |
/factory/asset-releases/{releaseId} |
GetRelease | factory.assets.read |
read | natural | GW-03 | Manifest, closure, evidence and aliases. |
GET |
/factory/asset-releases |
ListReleases | factory.assets.read |
read | natural | GW-03 | Releases filtered by kind, asset, state. |
PUT |
/factory/assets/{assetKind}/{assetId}/aliases/{name} |
MoveAlias | factory.assets.publish |
publication | natural | GW-03 | Point an alias at a Published release; accepted runs are unaffected. |
gRPC (code-first, internal)
| gRPC service | Method | Streaming | Visibility | Side effects | Summary |
|---|---|---|---|---|---|
AssetPublication |
ResolveRelease |
none | internal | read | Resolve an alias or release id to an immutable release with its closure; used by Run Control at submission. |
AssetPublication |
LoadRelease |
server | internal | read | Stream the manifest and closure content references for release loading in the runtime (BC-06). |
ControlPlaneApi¶
REST (public endpoints need a scope; every call carries trusted tenant and project scope)
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
GET |
/factory/health |
Health | factory.health.read |
read | natural | GW-01 | Liveness, readiness and dependency health of the host and its modules (HealthChecks aggregator feed). |
GET |
/factory/meta/modules |
ListModules | factory.meta.read |
read | natural | GW-03 | Modules loaded in this host with their versions and schema ownership; used by the Studio about page and operators. |
CostUsageService¶
REST (public endpoints need a scope; every call carries trusted tenant and project scope)
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
GET |
/factory/projects/{projectId}/usage |
GetProjectUsage | factory.usage.read |
read | natural | GW-03 | Usage by meter and status (estimated, reserved, observed, reconciled, uncertain) for a period. |
GET |
/factory/runs/{runId}/usage |
GetRunUsage | factory.usage.read |
read | natural | GW-03 | Usage records and the reservation of one run. |
PUT |
/factory/projects/{projectId}/budget |
SetProjectBudget | factory.usage.admin |
shared-write | natural | GW-03 | Set the project budget and a threshold not above the platform's. |
gRPC (code-first, internal)
| gRPC service | Method | Streaming | Visibility | Side effects | Summary |
|---|---|---|---|---|---|
Usage |
Reserve |
none | internal | spend | Reserve an estimated amount for a run; returns Reserved, Denied or approval-required. |
Usage |
RecordUsage |
none | internal | shared-write | Record metered usage from a model or tool receipt (idempotent on receipt id). |
EnvironmentService¶
REST (public endpoints need a scope; every call carries trusted tenant and project scope)
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
POST |
/factory/projects/{projectId}/environments |
CreateEnvironment | factory.projects.admin |
shared-write | key-header | GW-03 | Create an environment with a policy class. |
GET |
/factory/projects/{projectId}/environments |
ListEnvironments | factory.projects.read |
read | natural | GW-03 | Environments of a project with state and class. |
POST |
/factory/environments/{environmentId}/freeze |
FreezeEnvironment | factory.projects.admin |
production | natural | GW-03 | Block writes and production actions (incident or change freeze). |
POST |
/factory/environments/{environmentId}/unfreeze |
UnfreezeEnvironment | factory.projects.admin |
production | natural | GW-03 | Lift a freeze. |
gRPC (code-first, internal)
| gRPC service | Method | Streaming | Visibility | Side effects | Summary |
|---|---|---|---|---|---|
Environments |
GetPolicyClass |
none | internal | read | Return the environment class and state for policy evaluation of a tool call. |
FactoryCommercialService¶
REST (public endpoints need a scope; every call carries trusted tenant and project scope)
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
GET |
/factory/subscription |
GetSubscription | factory.commercial.read |
read | natural | GW-03 | The tenant's subscription, edition, seats and current period. |
PUT |
/factory/subscription |
ChangeSubscription | factory.commercial.admin |
spend | key-header | GW-03 | Change edition or seats (Platform admin of the tenant); takes effect at the next period unless upgraded. |
GET |
/factory/invoices |
ListInvoices | factory.commercial.read |
read | natural | GW-03 | Invoices with usage snapshots. |
gRPC (code-first, internal)
| gRPC service | Method | Streaming | Visibility | Side effects | Summary |
|---|---|---|---|---|---|
Commercial |
GetEntitlements |
none | internal | read | Edition entitlements and quotas for BC-33 checks. |
ProjectService¶
REST (public endpoints need a scope; every call carries trusted tenant and project scope)
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
POST |
/factory/projects |
CreateProject | factory.projects.write |
shared-write | key-header | GW-03 | Create a project in the caller's tenant; the caller becomes Workspace admin. |
GET |
/factory/projects |
ListProjects | factory.projects.read |
read | natural | GW-03 | Projects the caller is a member of. |
GET |
/factory/projects/{projectId} |
GetProject | factory.projects.read |
read | natural | GW-03 | Project with memberships, delegations, source scope and environments. |
PUT |
/factory/projects/{projectId}/members/{subjectId} |
SetMembership | factory.projects.admin |
shared-write | natural | GW-03 | Grant or change a project role (Workspace admin). |
POST |
/factory/projects/{projectId}/delegations |
Delegate | factory.projects.delegate |
shared-write | key-header | GW-03 | Delegate the same or a lesser role for a bounded period with a reason (D18). |
DELETE |
/factory/projects/{projectId}/delegations/{delegationId} |
RevokeDelegation | factory.projects.delegate |
shared-write | natural | GW-03 | Revoke a delegation immediately. |
PUT |
/factory/projects/{projectId}/source-scope |
SetSourceScope | factory.projects.admin |
shared-write | natural | GW-03 | Replace the repositories, document collections and tools a run may touch. |
POST |
/factory/projects/{projectId}/close |
CloseProject | factory.projects.admin |
production | natural | GW-03 | Start off-boarding (cancel runs, revoke delegations, export or delete per tenant policy). |
gRPC (code-first, internal)
| gRPC service | Method | Streaming | Visibility | Side effects | Summary |
|---|---|---|---|---|---|
Projects |
ResolveScope |
none | internal | read | Resolve a subject's roles, source scope and policy override for a project; used by every module at request time. |
RunControlService¶
REST (public endpoints need a scope; every call carries trusted tenant and project scope)
| Method | Path | Operation | Scope | Side effects | Idempotency | Gateway | Summary |
|---|---|---|---|---|---|---|---|
POST |
/factory/runs |
SubmitRun | factory.runs.write |
shared-write | key-header | GW-03 | Accept a run; 202 with the run location; idempotent on Idempotency-Key. |
GET |
/factory/runs/{runId} |
GetRun | factory.runs.read |
read | natural | GW-03 | Run with steps, attempts, current lease and pending approvals. |
GET |
/factory/runs |
ListRuns | factory.runs.read |
read | natural | GW-03 | Runs in the trusted scope with state and freshness; paged. |
POST |
/factory/runs/{runId}/cancel |
CancelRun | factory.runs.write |
shared-write | natural | GW-03 | Record cancellation intent and request interruption; the resulting state is observed, not assumed. |
POST |
/factory/approvals/{approvalId}/decision |
DecideApproval | factory.approvals.decide |
shared-write | natural | GW-03 | Approve, reject or request changes on the exact proposal version; requires the request version (optimistic concurrency). |
GET |
/factory/approvals |
ListApprovals | factory.approvals.read |
read | natural | GW-03 | Pending and decided approval requests visible to the caller's roles. |
gRPC (code-first, internal)
| gRPC service | Method | Streaming | Visibility | Side effects | Summary |
|---|---|---|---|---|---|
RunControl |
AcquireLease |
none | internal | shared-write | Runtime worker acquires or renews the lease of an attempt; returns the fencing token. |
RunControl |
ReportAttemptOutcome |
none | internal | shared-write | Lease holder reports the single outcome of an attempt with its receipt hash. |
RunControl |
RequestApproval |
none | internal | shared-write | Worker asks for a human decision on an exact proposal before a gated action. |
RunControl |
WatchRun |
server | internal | read | Server stream of run and approval state changes for the BFF and workers. |