Skip to content

API Reference: Control Plane

The generated OpenAPI file is:

text
apps/control-plane-executor/openapi/control-plane.openapi.json

It identifies the public API as In Falcone Public API, version 1.21.0, with versioned routes under /v1. Public gateway routes are catalogued in:

text
deploy/gateway-config/public-route-catalog.json

The runnable control-plane and executor also carry local runtime route tables in:

text
apps/control-plane/routes.mjs
apps/control-plane/b-handlers.mjs
apps/control-plane-executor/src/runtime/server.mjs

Base URL

Through the gateway:

text
https://<api-host>/v1/...

When port-forwarding the local quickstart, direct service URLs are:

text
http://127.0.0.1:8080/v1/...   # control-plane service
http://127.0.0.1:8082/v1/...   # control-plane-executor service

Authentication

MethodPublic formNotes
Bearer JWTAuthorization: Bearer <jwt>Used by operators, tenant owners, workspace users, and service-account clients.
API keyapikey: flc_...Executor data-plane routes support API-key identity when issued for a workspace.
SSE query key?apikey=flc_...Only for browser EventSource routes that cannot set headers. Header identity wins when both are present.

Tenant and workspace identity must come from a verified credential or trusted gateway headers. Do not send tenant/workspace IDs as a substitute for authentication.

Tenant and workspace routes

Generated OpenAPI exposes canonical tenant and workspace mutations:

MethodPathPurpose
GET / POST/v1/tenantsList or create tenants.
GET / PUT / DELETE/v1/tenants/{tenantId}Read, update, or delete a tenant.
GET / POST/v1/workspacesList or create workspaces in the generated contract.
GET / PUT / DELETE/v1/workspaces/{workspaceId}Read, update, or delete a workspace.

The current local control-plane runtime also supports:

MethodPathPurpose
POST / GET/v1/tenants/{tenantId}/workspacesCreate or list workspaces for one tenant.
GET/v1/tenants/{tenantId}/environmentsList tenant environments.
POST/v1/tenants/{tenantId}/exportsExport non-secret tenant configuration.
POST/v1/workspaces/{workspaceId}/promotionsPromote workspace definitions between environments in the same tenant.
POST/v1/workspaces/{workspaceId}/cloneClone a workspace inside the same tenant.

The workspace environment field is the stage boundary. The generated contract allows dev, sandbox, staging, prod, and preview.

Service accounts and credentials

The current workspace-scoped runtime routes are:

MethodPathPurpose
GET / POST/v1/workspaces/{workspaceId}/service-accountsList or create service accounts.
GET / DELETE/v1/workspaces/{workspaceId}/service-accounts/{serviceAccountId}Read or delete one service account.
POST/v1/workspaces/{workspaceId}/service-accounts/{serviceAccountId}/credential-issuanceIssue a credential.
POST/v1/workspaces/{workspaceId}/service-accounts/{serviceAccountId}/credential-rotationsRotate credentials.
POST/v1/workspaces/{workspaceId}/service-accounts/{serviceAccountId}/credential-revocationsRevoke credentials.

Do not use old examples that mint keys with POST /v1/api-keys; the current developer docs use workspace service accounts and the executor's workspace API-key management routes.

Functions

Generated OpenAPI exposes governed function actions:

MethodPathPurpose
POST/v1/functions/actionsDeploy a function action.
GET / PATCH / DELETE/v1/functions/actions/{resourceId}Read, update, or delete an action.
POST/v1/functions/actions/{resourceId}/invocationsInvoke an action.
GET/v1/functions/actions/{resourceId}/activationsList activations.
GET/v1/functions/actions/{resourceId}/activations/{activationId}Read one activation.
GET/v1/functions/actions/{resourceId}/activations/{activationId}/logsRead activation logs.
GET/v1/functions/actions/{resourceId}/activations/{activationId}/resultRead activation result.
GET/v1/functions/actions/{resourceId}/versionsList versions.
POST/v1/functions/actions/{resourceId}/rollbackRoll back to a retained version.

Functions run as Knative Services created at runtime by the control-plane. On OpenShift, that requires OpenShift Serverless.

Data APIs

Current data routes are workspace-addressed. See the dedicated pages:

CapabilityRoute family
PostgreSQL rows/v1/postgres/workspaces/{workspaceId}/data/{databaseName}/schemas/{schemaName}/tables/{tableName}/rows
Mongo/FerretDB documents/v1/mongo/workspaces/{workspaceId}/data/{databaseName}/collections/{collectionName}/documents
Event topics/v1/events/topics in OpenAPI, and /v1/events/workspaces/{workspaceId}/topics in the runtime executor.
Realtime/v1/realtime/workspaces/{workspaceId}/...

The older /v1/collections/{name}/documents examples are no longer used in this docs path.

Flows routes

Flows are Preview and are served by the control-plane executor when Temporal is wired.

MethodPathPurpose
GET/v1/flows/workspaces/{workspaceId}/task-typesList task types.
GET / POST/v1/flows/workspaces/{workspaceId}/flowsList or create flows.
GET / PATCH / DELETE/v1/flows/workspaces/{workspaceId}/flows/{flowId}Read, update, or delete a flow.
POST/v1/flows/workspaces/{workspaceId}/flows/{flowId}/validateValidate a draft.
GET / POST/v1/flows/workspaces/{workspaceId}/flows/{flowId}/versionsList or publish versions.
GET/v1/flows/workspaces/{workspaceId}/flows/{flowId}/versions/{version}Read one version.
GET / POST/v1/flows/workspaces/{workspaceId}/flows/{flowId}/executionsList or start executions.
GET/v1/flows/workspaces/{workspaceId}/flows/{flowId}/executions/{executionId}Read execution status.
POST/v1/flows/workspaces/{workspaceId}/flows/{flowId}/executions/{executionId}/cancellationsCancel an execution.
POST/v1/flows/workspaces/{workspaceId}/flows/{flowId}/executions/{executionId}/retriesRetry an execution.
POST/v1/flows/workspaces/{workspaceId}/flows/{flowId}/executions/{executionId}/signals/{signalName}Send a signal.
GET/v1/flows/workspaces/{workspaceId}/executions/{executionId}/eventsStream execution events over SSE.

See Flows and Workflow DSL Reference.

MCP routes

MCP server hosting is Preview:

MethodPathPurpose
GET / POST/v1/mcp/workspaces/{workspaceId}/serversList or create MCP servers.
GET / DELETE/v1/mcp/workspaces/{workspaceId}/servers/{serverId}Read or delete one server.
POST/v1/mcp/workspaces/{workspaceId}/servers/{serverId}/curationsCurate tool exposure.
POST/v1/mcp/workspaces/{workspaceId}/servers/{serverId}/versionsPublish a version.
POST/v1/mcp/workspaces/{workspaceId}/servers/{serverId}/versions/{version}/approvalApprove a held version.
POST/v1/mcp/workspaces/{workspaceId}/servers/{serverId}/tool-callsInvoke one tool through the control plane.
POST/v1/mcp/workspaces/{workspaceId}/servers/{serverId}/rpcMCP JSON-RPC endpoint.

Hosted MCP server pods are internal-only and use Knative.

Errors

Errors are JSON with a stable code and message shape:

json
{ "code": "UNAUTHENTICATED", "message": "Missing tenant identity" }

Common statuses:

StatusMeaning
400Malformed JSON, invalid query, or validation error.
401Missing or invalid credential.
403Authenticated but not allowed for the route or workspace.
404Unknown or hidden resource.
409Conflict with existing state.
429Rate or quota limit.
502 / 503Upstream platform dependency unavailable.

Released under the MIT License.