HTTP API and OpenAPI
The authoritative ASP.NET Core server exposes its generated contract and Swagger UI in Development or Testing. The endpoints are:
GET /openapi/v1.json
GET /swagger
Use http://localhost:5100/swagger to browse and invoke the API, or http://localhost:5100/openapi/v1.json to consume the OpenAPI 3.1 document. OpenAPI is the source of truth for complete route and schema enumeration. Every operation receives a stable operation identifier and a functional tag, and protected operations declare the supported JWT bearer and application-cookie authentication schemes.
Swagger uses an existing Console application cookie automatically when the browser is signed in. Use Swagger's Authorize action to supply either a JWT bearer token in OIDC or Hybrid mode, or an Agentstration personal access token. Agentstration does not issue OAuth tokens and Swagger does not add a token endpoint.
Uploads and streaming formats that cannot be inferred from handler signatures are described explicitly, including Pack ZIP archives, Pack downloads, and server-sent event streams. SignalR hubs and the MCP endpoint are separate transports and do not appear in OpenAPI.
Current API families include:
- Management resources under
/api/agents,/api/deployments, and related short routes; - Runtime Runs under
/api/runtime/runs; - Work Items under
/api/work/workitems; - Workplace routes under
/api/workspaces/{workspaceName}; - Flow definitions and Runs under
/api/flowsand/api/flowRuns; - model providers/profiles and runtime profiles under
/api/....
Problem Details, ETags/conditional writes, pagination, and 202 Accepted are used where their implemented boundary requires them. API versioning is explained in Versioning strategy.
Individual cleanup operations are exposed through DELETE /api/flowRuns/{runId}, DELETE /api/runtime/runs/{runId}, and the default or namespaced Entry routes. Run deletion is limited to terminal Runs, requires the current ETag through If-Match, and atomically removes the history owned by the corresponding Flow or Runtime module. Entry deletion retains its existing draft and dependency safeguards; callers must explicitly opt in when Dashboard references need to be removed or eligible durable Interactions need to be closed.