{ "components": { "parameters": {}, "schemas": { "ErrorResponse": { "properties": { "error": { "type": "string" } }, "required": ["error"], "type": "object" } }, "securitySchemes": { "ApiKeyAuth": { "in": "header", "name": "x-api-key", "type": "apiKey" } } }, "info": { "description": "Runtime API for workflow/chat/deployment/session execution.", "title": "ABL Runtime API - public/conversation", "version": "1.0.0", "x-generated": "do not edit; source: route contracts" }, "openapi": "3.0.3", "paths": { "/api/v1/chat/agent": { "post": { "deprecated": true, "description": "Deprecated — prefer the deployment-scoped `/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/chat`. Executes a message through the ABL runtime with agent-backed chat; creates a session on first call or reuses one via sessionId.", "operationId": "runtime.legacyChat.agent", "requestBody": { "content": { "application/json": { "schema": { "properties": { "agentId": { "description": "Optional agent override", "type": "string" }, "attachmentIds": { "items": { "type": "string" }, "type": "array" }, "message": { "description": "User message text", "type": "string" }, "metadata": { "additionalProperties": { "nullable": true }, "type": "object" }, "projectId": { "description": "Project id", "type": "string" }, "sessionId": { "description": "Existing session id to continue the conversation", "type": "string" } }, "required": ["projectId", "message"], "type": "object" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "action": { "additionalProperties": { "nullable": true }, "type": "object" }, "outcome": { "type": "string" }, "response": { "type": "string" }, "sessionId": { "type": "string" } }, "required": ["sessionId", "response"], "type": "object" } } }, "description": "Success" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "security": [ { "ApiKeyAuth": [] } ], "summary": "Agent-backed chat (legacy)", "tags": ["Chat"] } }, "/api/v1/chat/agent/stream": { "post": { "deprecated": true, "description": "Deprecated — prefer the deployment-scoped `/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/stream`. Streams tokens and trace events via Server-Sent Events.", "operationId": "runtime.legacyChat.stream", "requestBody": { "content": { "application/json": { "schema": { "properties": { "agentId": { "description": "Optional agent override", "type": "string" }, "attachmentIds": { "items": { "type": "string" }, "type": "array" }, "message": { "description": "User message text", "type": "string" }, "metadata": { "additionalProperties": { "nullable": true }, "type": "object" }, "projectId": { "description": "Project id", "type": "string" }, "sessionId": { "description": "Existing session id to continue the conversation", "type": "string" } }, "required": ["projectId", "message"], "type": "object" } } } }, "responses": { "200": { "content": { "text/event-stream": { "schema": { "type": "string" } } }, "description": "Success" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "security": [ { "ApiKeyAuth": [] } ], "summary": "Agent-backed SSE streaming chat (legacy)", "tags": ["Chat"] } }, "/api/v1/chat/complete": { "post": { "deprecated": true, "description": "Deprecated — prefer the deployment-scoped `/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/complete`. Non-streaming completion with model routing and usage tracking.", "operationId": "runtime.legacyChat.complete", "requestBody": { "content": { "application/json": { "schema": { "properties": { "maxTokens": { "type": "number" }, "messages": { "description": "Conversation messages", "items": { "properties": { "content": { "type": "string" }, "role": { "enum": ["system", "user", "assistant", "tool"], "type": "string" } }, "required": ["role", "content"], "type": "object" }, "type": "array" }, "modelId": { "type": "string" }, "projectId": { "description": "Project id", "type": "string" }, "temperature": { "type": "number" } }, "required": ["projectId", "messages"], "type": "object" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "content": { "type": "string" }, "finishReason": { "type": "string" }, "latencyMs": { "type": "number" }, "model": { "type": "string" }, "usage": { "properties": { "estimatedCost": { "nullable": true, "type": "number" }, "inputTokens": { "type": "number" }, "outputTokens": { "type": "number" }, "totalTokens": { "type": "number" } }, "required": ["inputTokens", "outputTokens", "totalTokens", "estimatedCost"], "type": "object" } }, "required": ["content", "usage", "latencyMs"], "type": "object" } } }, "description": "Success" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "security": [ { "ApiKeyAuth": [] } ], "summary": "Non-streaming chat completion (legacy)", "tags": ["Chat"] } }, "/api/v1/chat/session": { "post": { "deprecated": true, "description": "Deprecated — creates a pre-initialized session with optional session metadata. Returns the session ID without executing a message.", "operationId": "runtime.legacyChat.createSession", "requestBody": { "content": { "application/json": { "schema": { "properties": { "agentId": { "type": "string" }, "deploymentId": { "type": "string" }, "environment": { "type": "string" }, "projectId": { "minLength": 1, "type": "string" }, "sessionMetadata": { "additionalProperties": { "nullable": true }, "type": "object" } }, "required": ["projectId"], "type": "object" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "agentName": { "type": "string" }, "sessionId": { "type": "string" }, "status": { "enum": ["ready"], "type": "string" } }, "required": ["sessionId", "agentName", "status"], "type": "object" } } }, "description": "Success" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "security": [ { "ApiKeyAuth": [] } ], "summary": "Create a chat session (legacy)", "tags": ["Chat"] } }, "/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/chat": { "post": { "description": "Deployment-scoped agent chat. Creates a session on first call or continues one via sessionId. Project and agent are resolved from the URL.", "operationId": "runtime.agent.chat", "parameters": [ { "description": "Project slug", "in": "path", "name": "projectSlug", "required": true, "schema": { "description": "Project slug", "type": "string" } }, { "description": "Environment tier", "in": "path", "name": "env", "required": true, "schema": { "description": "Environment tier", "enum": ["dev", "staging", "production"], "type": "string" } }, { "description": "Deployed agent slug", "in": "path", "name": "agentSlug", "required": true, "schema": { "description": "Deployed agent slug", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "attachmentIds": { "description": "Attachment ids to include", "items": { "type": "string" }, "type": "array" }, "message": { "description": "User message text", "type": "string" }, "metadata": { "additionalProperties": { "nullable": true }, "type": "object" }, "sessionId": { "description": "Existing session id to continue the conversation", "type": "string" } }, "required": ["message"], "type": "object" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "action": { "additionalProperties": { "nullable": true }, "type": "object" }, "outcome": { "type": "string" }, "response": { "type": "string" }, "sessionId": { "type": "string" } }, "required": ["sessionId", "response"], "type": "object" } } }, "description": "Success" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "security": [ { "ApiKeyAuth": [] } ], "summary": "Send a message to a deployed agent", "tags": ["Conversation"] } }, "/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/complete": { "post": { "description": "Single-turn LLM completion against the deployed agent model.", "operationId": "runtime.agent.complete", "parameters": [ { "description": "Project slug", "in": "path", "name": "projectSlug", "required": true, "schema": { "description": "Project slug", "type": "string" } }, { "description": "Environment tier", "in": "path", "name": "env", "required": true, "schema": { "description": "Environment tier", "enum": ["dev", "staging", "production"], "type": "string" } }, { "description": "Deployed agent slug", "in": "path", "name": "agentSlug", "required": true, "schema": { "description": "Deployed agent slug", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "maxTokens": { "type": "number" }, "messages": { "description": "Conversation messages", "items": { "properties": { "content": { "type": "string" }, "role": { "enum": ["system", "user", "assistant", "tool"], "type": "string" } }, "required": ["role", "content"], "type": "object" }, "type": "array" }, "modelId": { "type": "string" }, "temperature": { "type": "number" } }, "required": ["messages"], "type": "object" } } } }, "responses": { "200": { "content": { "application/json": { "schema": { "properties": { "content": { "type": "string" }, "finishReason": { "type": "string" }, "latencyMs": { "type": "number" }, "model": { "type": "string" }, "usage": { "properties": { "estimatedCost": { "nullable": true, "type": "number" }, "inputTokens": { "type": "number" }, "outputTokens": { "type": "number" }, "totalTokens": { "type": "number" } }, "required": ["inputTokens", "outputTokens", "totalTokens", "estimatedCost"], "type": "object" } }, "required": ["content", "usage", "latencyMs"], "type": "object" } } }, "description": "Success" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "security": [ { "ApiKeyAuth": [] } ], "summary": "One-shot completion via a deployed agent", "tags": ["Conversation"] } }, "/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/stream": { "post": { "description": "Same as the chat route, streamed over Server-Sent Events (token deltas + trace events).", "operationId": "runtime.agent.stream", "parameters": [ { "description": "Project slug", "in": "path", "name": "projectSlug", "required": true, "schema": { "description": "Project slug", "type": "string" } }, { "description": "Environment tier", "in": "path", "name": "env", "required": true, "schema": { "description": "Environment tier", "enum": ["dev", "staging", "production"], "type": "string" } }, { "description": "Deployed agent slug", "in": "path", "name": "agentSlug", "required": true, "schema": { "description": "Deployed agent slug", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "properties": { "attachmentIds": { "description": "Attachment ids to include", "items": { "type": "string" }, "type": "array" }, "message": { "description": "User message text", "type": "string" }, "metadata": { "additionalProperties": { "nullable": true }, "type": "object" }, "sessionId": { "description": "Existing session id to continue the conversation", "type": "string" } }, "required": ["message"], "type": "object" } } } }, "responses": { "200": { "content": { "text/event-stream": { "schema": { "type": "string" } } }, "description": "Success" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Unauthorized" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } }, "description": "Internal server error" } }, "security": [ { "ApiKeyAuth": [] } ], "summary": "Stream a deployed agent response (SSE)", "tags": ["Conversation"] } } } }