{ "schemes": [ "http", "https" ], "swagger": "2.0", "info": { "description": "Thand Agent API for managing access, roles, workflows, and providers", "title": "Thand Agent API", "termsOfService": "https://thand.io/terms", "contact": { "name": "Thand Support", "url": "https://thand.io/support", "email": "support@thand.io" }, "license": { "name": "BSL", "url": "https://mariadb.com/bsl11/" }, "version": "1.0" }, "host": "localhost:8080", "basePath": "/api/v1", "paths": { "/.well-known/api-configuration": { "get": { "description": "Get service configuration including endpoints, capabilities, and authentication methods", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "discovery" ], "summary": "API configuration", "responses": { "200": { "description": "API configuration", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth": { "get": { "description": "Display the authentication page with available providers", "consumes": [ "application/json" ], "produces": [ "text/html" ], "tags": [ "auth" ], "summary": "Authentication page", "parameters": [ { "type": "string", "description": "Callback URL", "name": "callback", "in": "query" }, { "type": "string", "description": "Provider name for direct authentication", "name": "provider", "in": "query" } ], "responses": { "200": { "description": "Authentication page" }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth/callback/{provider}": { "get": { "description": "Handle the OAuth2 callback from the provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Authentication callback", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true }, { "type": "string", "description": "OAuth state", "name": "state", "in": "query", "required": true }, { "type": "string", "description": "OAuth code", "name": "code", "in": "query", "required": true } ], "responses": { "200": { "description": "Authentication successful" }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth/logout": { "get": { "description": "Clear the user session and logout", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Logout", "responses": { "200": { "description": "Logged out successfully", "schema": { "type": "object", "additionalProperties": true } }, "307": { "description": "Redirect to home page" }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth/logout/{provider}": { "get": { "description": "Clear the user session and logout", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Logout", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path" } ], "responses": { "200": { "description": "Logged out successfully", "schema": { "type": "object", "additionalProperties": true } }, "307": { "description": "Redirect to home page" }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth/request/{provider}": { "get": { "description": "Start the OAuth2 authentication flow for a provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Initiate authentication", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true }, { "type": "string", "description": "Callback URL", "name": "callback", "in": "query" } ], "responses": { "307": { "description": "Redirect to provider authentication" }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Provider not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/elevate": { "get": { "description": "Request elevation to a specific role with static parameters", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "elevate" ], "summary": "Request role elevation", "parameters": [ { "type": "string", "description": "Role name", "name": "role", "in": "query", "required": true }, { "type": "string", "description": "Provider name", "name": "provider", "in": "query", "required": true }, { "type": "string", "description": "Reason for elevation", "name": "reason", "in": "query", "required": true }, { "type": "string", "description": "Duration of elevation", "name": "duration", "in": "query" }, { "type": "string", "description": "Workflow name", "name": "workflow", "in": "query" }, { "type": "string", "description": "Identity filter", "name": "identities", "in": "query" } ], "responses": { "200": { "description": "Elevation request submitted", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } }, "post": { "description": "Submit an elevation request with dynamic or static parameters", "consumes": [ "application/json", "application/x-www-form-urlencoded", "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "elevate" ], "summary": "Submit elevation request", "parameters": [ { "description": "Elevation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/models.ElevateRequest" } } ], "responses": { "200": { "description": "Elevation request submitted", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } } }, "/elevate/llm": { "get": { "description": "Request elevation using natural language reasoning with LLM", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "elevate" ], "summary": "LLM-based elevation", "parameters": [ { "type": "string", "description": "Natural language reason for elevation", "name": "reason", "in": "query", "required": true } ], "responses": { "200": { "description": "LLM response with suggested role", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } }, "post": { "description": "Request elevation using natural language with POST request", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "elevate" ], "summary": "LLM-based elevation (POST)", "parameters": [ { "description": "LLM elevation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/models.ElevateLLMRequest" } } ], "responses": { "200": { "description": "LLM response with suggested role", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } } }, "/elevate/resume": { "get": { "description": "Resume a paused or interrupted elevation workflow", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "elevate" ], "summary": "Resume elevation workflow", "parameters": [ { "type": "string", "description": "Workflow state token", "name": "state", "in": "query", "required": true } ], "responses": { "307": { "description": "Redirect to next workflow step" }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } }, "post": { "description": "Resume a paused elevation workflow with POST data", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "elevate" ], "summary": "Resume elevation workflow (POST)", "parameters": [ { "description": "Resume request data", "name": "request", "in": "body", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "responses": { "307": { "description": "Redirect to next workflow step" }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } } }, "/execution": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create and start a new workflow execution", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "executions" ], "summary": "Create workflow execution", "parameters": [ { "description": "Workflow creation request", "name": "workflow", "in": "body", "required": true, "schema": { "type": "object", "additionalProperties": true } } ], "responses": { "201": { "description": "Workflow created", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } } }, "/execution/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve detailed information about a specific workflow execution", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "executions" ], "summary": "Get workflow execution", "parameters": [ { "type": "string", "description": "Workflow execution ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Workflow execution details", "schema": { "$ref": "#/definitions/daemon.ExecutionStatePageData" } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/execution/{id}/cancel": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Gracefully cancel a running workflow execution", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "executions" ], "summary": "Cancel workflow execution", "parameters": [ { "type": "string", "description": "Workflow execution ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Workflow cancelled", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Workflow not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/execution/{id}/signal": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Send a signal event to a running workflow execution", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "executions" ], "summary": "Signal workflow execution", "parameters": [ { "type": "string", "description": "Workflow execution ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Encoded signal data", "name": "input", "in": "query", "required": true } ], "responses": { "200": { "description": "Signal sent successfully", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/execution/{id}/terminate": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Forcefully terminate a running workflow execution", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "executions" ], "summary": "Terminate workflow execution", "parameters": [ { "type": "string", "description": "Workflow execution ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Workflow terminated", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Workflow not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/executions": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of all running workflow executions for the authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "executions" ], "summary": "List workflow executions", "responses": { "200": { "description": "List of workflow executions", "schema": { "$ref": "#/definitions/daemon.ExecutionsPageData" } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/health": { "get": { "description": "Get the health status of the service and its dependencies", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "health" ], "summary": "Health check", "responses": { "200": { "description": "Health status", "schema": { "$ref": "#/definitions/models.HealthResponse" } } } } }, "/identities": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of available identities from all identity providers", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "identities" ], "summary": "List identities", "parameters": [ { "type": "string", "description": "Filter query", "name": "q", "in": "query" } ], "responses": { "200": { "description": "List of identities", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/metrics": { "get": { "description": "Get service metrics including uptime, request counts, and resource counts", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "metrics" ], "summary": "Service metrics", "responses": { "200": { "description": "Service metrics", "schema": { "$ref": "#/definitions/models.MetricsInfo" } } } } }, "/provider/{provider}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve detailed information about a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "Get provider by name", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true } ], "responses": { "200": { "description": "Provider details", "schema": { "$ref": "#/definitions/models.ProviderResponse" } }, "404": { "description": "Provider not found", "schema": { "type": "object", "additionalProperties": true } } } } }, "/provider/{provider}/authorizeSession": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Authorize a session with a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "Authorize provider session", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true }, { "description": "Authorization request", "name": "user", "in": "body", "required": true, "schema": { "$ref": "#/definitions/models.AuthorizeUser" } } ], "responses": { "200": { "description": "Authorization response", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Provider not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/provider/{provider}/identities": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of identities available in a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "List provider identities", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true }, { "type": "string", "description": "Filter query", "name": "q", "in": "query" } ], "responses": { "200": { "description": "Provider roles", "schema": { "$ref": "#/definitions/models.ProviderRolesResponse" } }, "404": { "description": "Provider not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/provider/{provider}/permissions": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of permissions available in a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "List provider permissions", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true }, { "type": "string", "description": "Filter query", "name": "q", "in": "query" } ], "responses": { "200": { "description": "Provider permissions", "schema": { "$ref": "#/definitions/models.ProviderPermissionsResponse" } }, "404": { "description": "Provider not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/provider/{provider}/roles": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of roles available in a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "List provider roles", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true }, { "type": "string", "description": "Filter query", "name": "q", "in": "query" } ], "responses": { "200": { "description": "Provider roles", "schema": { "$ref": "#/definitions/models.ProviderRolesResponse" } }, "404": { "description": "Provider not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/providers": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of all available providers with optional capability filtering", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "List providers", "parameters": [ { "type": "string", "description": "Comma-separated list of capabilities to filter by", "name": "capability", "in": "query" } ], "responses": { "200": { "description": "List of providers", "schema": { "$ref": "#/definitions/models.ProvidersResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } } } } }, "/ready": { "get": { "description": "Check if the service is ready to accept requests", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "health" ], "summary": "Readiness check", "responses": { "200": { "description": "Ready status", "schema": { "type": "object", "additionalProperties": true } } } } }, "/register": { "post": { "description": "Register a new agent with the server", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "registration" ], "summary": "Register agent", "parameters": [ { "description": "Registration request", "name": "registration", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.RegistrationRequest" } } ], "responses": { "200": { "description": "Registration successful", "schema": { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.RegistrationResponse" } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } } } } }, "/role/{role}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve detailed information about a specific role", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "roles" ], "summary": "Get role by name", "parameters": [ { "type": "string", "description": "Role name", "name": "role", "in": "path", "required": true } ], "responses": { "200": { "description": "Role details", "schema": { "$ref": "#/definitions/models.RoleResponse" } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Role not found", "schema": { "type": "object", "additionalProperties": true } } } } }, "/roles": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of all available roles with optional provider filtering", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "roles" ], "summary": "List roles", "parameters": [ { "type": "string", "description": "Comma-separated list of providers to filter by", "name": "provider", "in": "query" } ], "responses": { "200": { "description": "List of roles", "schema": { "$ref": "#/definitions/models.RolesResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } } } } }, "/roles/evaluate": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Evaluate a role against an identity to get the composite role with all inherited permissions resolved", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "roles" ], "summary": "Evaluate composite role", "parameters": [ { "description": "Role evaluation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/daemon.EvaluateRoleRequest" } } ], "responses": { "200": { "description": "Evaluated composite role", "schema": { "$ref": "#/definitions/daemon.EvaluateRoleResponse" } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Role or identity not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/session/{provider}": { "get": { "description": "Retrieve session information for a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "sessions" ], "summary": "Get session by provider", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true } ], "responses": { "200": { "description": "Session information", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Session not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } }, "delete": { "description": "Remove a session for a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "sessions" ], "summary": "Delete session", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true } ], "responses": { "200": { "description": "Session deleted successfully", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/sessions": { "get": { "description": "Retrieve all active sessions for the user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "sessions" ], "summary": "Get all sessions", "responses": { "200": { "description": "List of sessions", "schema": { "$ref": "#/definitions/sessions.LoginServer" } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } }, "post": { "description": "Create a new session with the provided session token", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "sessions" ], "summary": "Create a new session", "parameters": [ { "description": "Session creation request", "name": "session", "in": "body", "required": true, "schema": { "$ref": "#/definitions/models.SessionCreateRequest" } } ], "responses": { "200": { "description": "Session created successfully", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/sync": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the current sync status and version information", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "sync" ], "summary": "Sync status", "responses": { "200": { "description": "Sync status", "schema": { "type": "object", "additionalProperties": true } } } } }, "/workflow/{name}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve detailed information about a specific workflow", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "workflows" ], "summary": "Get workflow by name", "parameters": [ { "type": "string", "description": "Workflow name", "name": "name", "in": "path", "required": true } ], "responses": { "200": { "description": "Workflow details", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Workflow not found", "schema": { "type": "object", "additionalProperties": true } } } } }, "/workflows": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of all available workflows", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "workflows" ], "summary": "List workflows", "responses": { "200": { "description": "List of workflows", "schema": { "$ref": "#/definitions/models.WorkflowsResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } } } } } }, "definitions": { "config.ProviderPlugin": { "type": "object" }, "config.ProviderPluginConfig": { "type": "object", "properties": { "definitions": { "description": "Load providers directly from config using mapstructure:\",remain\"", "type": "object", "additionalProperties": { "$ref": "#/definitions/config.ProviderPlugin" } }, "path": { "type": "string" }, "url": { "type": "string" } } }, "config.WorkflowPlugin": { "type": "object" }, "config.WorkflowPluginConfig": { "type": "object", "properties": { "definitions": { "description": "Store everything in memory", "type": "object", "additionalProperties": { "$ref": "#/definitions/config.WorkflowPlugin" } }, "path": { "type": "string" }, "url": { "type": "string" } } }, "daemon.EvaluateRoleRequest": { "type": "object", "required": [ "identity", "role" ], "properties": { "identity": { "description": "Identity ID to evaluate against", "type": "string" }, "role": { "description": "Role name to evaluate", "type": "string" } } }, "daemon.EvaluateRoleResponse": { "type": "object", "properties": { "role": { "description": "The evaluated composite role", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Role" } ] } } }, "daemon.ExecutionStatePageData": { "type": "object", "properties": { "execution": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.WorkflowExecutionInfo" }, "workflow": { "$ref": "#/definitions/model.Workflow" } } }, "daemon.ExecutionsPageData": { "type": "object", "properties": { "config": { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.Config" }, "environment": { "$ref": "#/definitions/models.EnvironmentConfig" }, "executions": { "type": "array", "items": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.WorkflowExecutionInfo" } }, "provider": { "type": "string" }, "serviceName": { "type": "string" }, "status": { "type": "string" }, "user": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.User" }, "version": { "type": "string" } } }, "github_com_thand-io_agent_internal_config.Config": { "type": "object", "properties": { "api": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.APIConfig" }, "environment": { "description": "Environment configuration and core services", "allOf": [ { "$ref": "#/definitions/models.EnvironmentConfig" } ] }, "logging": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.LoggingConfig" }, "login": { "description": "System configuration", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.LoginConfig" } ] }, "providers": { "description": "These are integration providers like AWS, GCP, etc.", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.ProviderConfig" } ] }, "roles": { "description": "Workflow engine config", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.RoleConfig" } ] }, "secret": { "description": "Secret used for signing cookies and tokens", "type": "string" }, "server": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ServerConfig" }, "services": { "description": "External services / non-core services", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ServicesConfig" } ] }, "thand": { "description": "This is ONLY if the agent is running in server mode\nand you want to use https://www.thand.io hosted services", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ThandConfig" } ] }, "workflows": { "description": "These are workflows to run for role associated workflows", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.WorkflowConfig" } ] } } }, "github_com_thand-io_agent_internal_config.Mode": { "type": "string", "enum": [ "server", "agent", "client" ], "x-enum-varnames": [ "ModeServer", "ModeAgent", "ModeClient" ] }, "github_com_thand-io_agent_internal_config.ProviderConfig": { "type": "object", "properties": { "definitions": { "description": "Load providers directly from config using mapstructure:\",remain\"", "type": "object", "additionalProperties": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Provider" } }, "path": { "type": "string" }, "plugins": { "description": "Load dynamic provider configs", "allOf": [ { "$ref": "#/definitions/config.ProviderPluginConfig" } ] }, "url": { "$ref": "#/definitions/model.Endpoint" }, "vault": { "description": "vault secret / path to use", "type": "string" } } }, "github_com_thand-io_agent_internal_config.RegistrationRequest": { "type": "object", "properties": { "commit": { "type": "string" }, "environment": { "$ref": "#/definitions/models.EnvironmentConfig" }, "identifier": { "type": "string" }, "mode": { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.Mode" }, "version": { "type": "string" } } }, "github_com_thand-io_agent_internal_config.RegistrationResponse": { "type": "object", "properties": { "logging": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.LoggingConfig" }, "providers": { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.ProviderConfig" }, "roles": { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.RoleConfig" }, "services": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ServicesConfig" }, "success": { "type": "boolean" }, "workflows": { "$ref": "#/definitions/github_com_thand-io_agent_internal_config.WorkflowConfig" } } }, "github_com_thand-io_agent_internal_config.RoleConfig": { "type": "object", "properties": { "definitions": { "description": "Store everything in memory", "type": "object", "additionalProperties": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Role" } }, "path": { "type": "string" }, "url": { "$ref": "#/definitions/model.Endpoint" }, "vault": { "description": "vault secret / path to use", "type": "string" } } }, "github_com_thand-io_agent_internal_config.WorkflowConfig": { "type": "object", "properties": { "definitions": { "description": "Store everything in memory", "type": "object", "additionalProperties": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Workflow" } }, "path": { "type": "string" }, "plugins": { "description": "Load dynamic plugin registry for custom call tools", "allOf": [ { "$ref": "#/definitions/config.WorkflowPluginConfig" } ] }, "url": { "$ref": "#/definitions/model.Endpoint" }, "vault": { "description": "vault secret / path to use", "type": "string" } } }, "github_com_thand-io_agent_internal_models.APIConfig": { "type": "object", "properties": { "rate_limit": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.RateLimitConfig" }, "version": { "type": "string", "default": "v1" } } }, "github_com_thand-io_agent_internal_models.BasicConfig": { "type": "object", "additionalProperties": {} }, "github_com_thand-io_agent_internal_models.CORSConfig": { "type": "object", "properties": { "allow_credentials": { "type": "boolean" }, "allowed_headers": { "type": "array", "items": { "type": "string" } }, "allowed_methods": { "type": "array", "items": { "type": "string" } }, "allowed_origins": { "type": "array", "items": { "type": "string" } }, "expose_headers": { "type": "array", "items": { "type": "string" } }, "max_age": { "type": "integer" } } }, "github_com_thand-io_agent_internal_models.Groups": { "type": "object", "properties": { "allow": { "type": "array", "items": { "type": "string" } }, "deny": { "type": "array", "items": { "type": "string" } } } }, "github_com_thand-io_agent_internal_models.HealthConfig": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true }, "path": { "description": "Don't use /healthz as it conflicts with google k8s health checks", "type": "string", "default": "/health" } } }, "github_com_thand-io_agent_internal_models.LocalSession": { "type": "object", "properties": { "endpoint": { "description": "Optional endpoint associated with the session", "type": "string" }, "expiry": { "description": "Expiry time of the session", "type": "string" }, "session": { "description": "Encoded session token", "type": "string" }, "version": { "description": "Version of the session config", "type": "integer" } } }, "github_com_thand-io_agent_internal_models.LoggingConfig": { "type": "object", "properties": { "format": { "type": "string", "default": "text" }, "level": { "type": "string", "default": "info" }, "open_telemetry": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.OpenTelemetryConfig" }, "output": { "type": "string" } } }, "github_com_thand-io_agent_internal_models.LoginConfig": { "type": "object", "properties": { "base": { "description": "Base path for login endpoint e.g. /", "type": "string", "default": "/" }, "endpoint": { "type": "string", "default": "https://auth.thand.io/" } } }, "github_com_thand-io_agent_internal_models.MetricsConfig": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true }, "namespace": { "type": "string" }, "path": { "type": "string", "default": "/metrics" } } }, "github_com_thand-io_agent_internal_models.OpenTelemetryConfig": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "endpoint": { "description": "Endpoint specifies the OTLP endpoint for remote logging.\nThe structure of model.Endpoint may include fields such as URL, protocol, and authentication.\nExample YAML:\n endpoint:\n url: \"https://otel-collector.example.com:4317\"\n protocol: \"grpc\"\n auth:\n type: \"basic\"\n username: \"user\"\n password: \"pass\"\nRefer to serverlessworkflow/sdk-go/model.Endpoint documentation for full details.", "allOf": [ { "$ref": "#/definitions/model.Endpoint" } ] } } }, "github_com_thand-io_agent_internal_models.Permissions": { "type": "object", "properties": { "allow": { "type": "array", "items": { "type": "string" } }, "deny": { "type": "array", "items": { "type": "string" } } } }, "github_com_thand-io_agent_internal_models.Provider": { "type": "object", "properties": { "config": { "description": "Provider-specific configuration", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.BasicConfig" } ] }, "description": { "type": "string" }, "enabled": { "description": "Whether this provider is enabled", "type": "boolean" }, "name": { "type": "string" }, "provider": { "description": "e.g. aws, gcp, azure", "type": "string" }, "role": { "description": "The base role for this provider", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Role" } ] }, "version": { "$ref": "#/definitions/version.Version" } } }, "github_com_thand-io_agent_internal_models.RateLimitConfig": { "type": "object", "properties": { "burst": { "type": "integer" }, "requests_per_minute": { "type": "integer" } } }, "github_com_thand-io_agent_internal_models.ReadyConfig": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true }, "path": { "type": "string", "default": "/ready" } } }, "github_com_thand-io_agent_internal_models.Resources": { "type": "object", "properties": { "allow": { "type": "array", "items": { "type": "string" } }, "deny": { "type": "array", "items": { "type": "string" } } } }, "github_com_thand-io_agent_internal_models.Role": { "type": "object", "properties": { "authenticators": { "description": "All the auth providers that the role can use. If empty then any provider can be used", "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "enabled": { "description": "By default enable the role", "type": "boolean", "default": true }, "groups": { "description": "groups to add the user to", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Groups" } ] }, "inherits": { "description": "roles to inherit from or provider specific roles/policies etc", "type": "array", "items": { "type": "string" } }, "name": { "type": "string" }, "permissions": { "description": "granular permissions for the role", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Permissions" } ] }, "providers": { "description": "providers that can assign this role", "type": "array", "items": { "type": "string" } }, "resources": { "description": "resource access rules, apis, files, systems etc", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Resources" } ] }, "scopes": { "description": "scope of who can be assigned this role", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.RoleScopes" } ] }, "version": { "$ref": "#/definitions/version.Version" }, "workflows": { "description": "The workflows to execute", "type": "array", "items": { "type": "string" } } } }, "github_com_thand-io_agent_internal_models.RoleScopes": { "type": "object", "properties": { "domains": { "type": "array", "items": { "type": "string" } }, "groups": { "type": "array", "items": { "type": "string" } }, "users": { "type": "array", "items": { "type": "string" } } } }, "github_com_thand-io_agent_internal_models.SecurityConfig": { "type": "object", "properties": { "cors": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.CORSConfig" } } }, "github_com_thand-io_agent_internal_models.ServerConfig": { "type": "object", "properties": { "health": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.HealthConfig" }, "host": { "type": "string" }, "limits": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ServerLimitsConfig" }, "metrics": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.MetricsConfig" }, "port": { "type": "integer" }, "ready": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ReadyConfig" }, "security": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.SecurityConfig" } } }, "github_com_thand-io_agent_internal_models.ServerLimitsConfig": { "type": "object", "properties": { "burst": { "type": "integer" }, "idle_timeout": { "$ref": "#/definitions/time.Duration" }, "read_timeout": { "$ref": "#/definitions/time.Duration" }, "requests_per_minute": { "type": "integer" }, "write_timeout": { "$ref": "#/definitions/time.Duration" } } }, "github_com_thand-io_agent_internal_models.ServicesConfig": { "type": "object", "properties": { "encryption": { "description": "Encryption - used for encrypting sensitive data", "allOf": [ { "$ref": "#/definitions/models.ServiceConfig" } ] }, "largeLanguageModel": { "description": "LLM - used for large language model interactions", "allOf": [ { "$ref": "#/definitions/models.LargeLanguageModelConfig" } ] }, "scheduler": { "description": "Scheduler - used for scheduling tasks", "allOf": [ { "$ref": "#/definitions/models.ServiceConfig" } ] }, "temporal": { "description": "Temporal - used for workflow processing and orchestration", "allOf": [ { "$ref": "#/definitions/models.TemporalConfig" } ] }, "vault": { "description": "Vault - used for storing sensitive data", "allOf": [ { "$ref": "#/definitions/models.ServiceConfig" } ] } } }, "github_com_thand-io_agent_internal_models.ThandConfig": { "type": "object", "properties": { "api_key": { "description": "The API key for authenticating with Thand.io", "type": "string" }, "base": { "description": "Base path for login endpoint e.g. /", "type": "string", "default": "/" }, "endpoint": { "type": "string", "default": "https://app.thand.io/" }, "sync": { "description": "Whether to enable synchronization with Thand.io", "type": "boolean", "default": true } } }, "github_com_thand-io_agent_internal_models.User": { "type": "object", "properties": { "email": { "description": "Email is the user's email address, often used as a primary identifier.", "type": "string" }, "groups": { "description": "Groups is a list of group names or IDs that this user belongs to.", "type": "array", "items": { "type": "string" } }, "id": { "description": "ID is the unique identifier for the user.", "type": "string" }, "name": { "description": "Name is the user's full display name.", "type": "string" }, "source": { "description": "Source identifies the identity provider or system where this user originated.", "type": "string" }, "username": { "description": "Username is the user's login name or handle.", "type": "string" }, "verified": { "description": "Verified indicates whether the user's identity has been verified.", "type": "boolean" } } }, "github_com_thand-io_agent_internal_models.Workflow": { "type": "object", "properties": { "description": { "type": "string" }, "enabled": { "description": "By default enable the workflow", "type": "boolean", "default": true }, "name": { "type": "string" }, "version": { "$ref": "#/definitions/version.Version" }, "workflow": { "$ref": "#/definitions/model.Workflow" } } }, "github_com_thand-io_agent_internal_models.WorkflowExecutionInfo": { "type": "object", "properties": { "approved": { "description": "nil = pending approval, true = approved, false = denied", "type": "boolean" }, "context": {}, "duration": { "description": "Duration in seconds", "type": "integer" }, "finished_at": { "type": "string" }, "history": { "description": "History of state transitions", "type": "array", "items": { "type": "string" } }, "id": { "type": "string" }, "identities": { "type": "array", "items": { "type": "string" } }, "input": { "description": "Context" }, "name": { "description": "SearchAttributes are the custom search attributes associated with the workflow", "type": "string" }, "output": {}, "providers": { "type": "array", "items": { "type": "string" } }, "reason": { "type": "string" }, "role": { "type": "string" }, "run": { "type": "string" }, "started_at": { "type": "string" }, "status": { "type": "string" }, "task": { "type": "string" }, "user": { "type": "string" } } }, "model.AuthenticationPolicy": { "type": "object", "properties": { "basic": { "$ref": "#/definitions/model.BasicAuthenticationPolicy" }, "bearer": { "$ref": "#/definitions/model.BearerAuthenticationPolicy" }, "digest": { "$ref": "#/definitions/model.DigestAuthenticationPolicy" }, "oauth2": { "$ref": "#/definitions/model.OAuth2AuthenticationPolicy" }, "oidc": { "$ref": "#/definitions/model.OpenIdConnectAuthenticationPolicy" } } }, "model.BackoffDefinition": { "type": "object", "properties": { "definition": { "type": "object", "additionalProperties": true } } }, "model.BasicAuthenticationPolicy": { "type": "object", "properties": { "password": { "type": "string" }, "use": { "type": "string" }, "username": { "type": "string" } } }, "model.BearerAuthenticationPolicy": { "type": "object", "properties": { "token": { "type": "string" }, "use": { "type": "string" } } }, "model.Catalog": { "type": "object", "required": [ "endpoint" ], "properties": { "endpoint": { "$ref": "#/definitions/model.Endpoint" } } }, "model.Correlation": { "type": "object", "required": [ "from" ], "properties": { "expect": { "description": "Expected value or runtime expression", "type": "string" }, "from": { "description": "Runtime expression to extract the correlation value", "type": "string" } } }, "model.DigestAuthenticationPolicy": { "type": "object", "properties": { "password": { "type": "string" }, "use": { "type": "string" }, "username": { "type": "string" } } }, "model.Document": { "type": "object", "required": [ "dsl", "name", "namespace", "version" ], "properties": { "dsl": { "type": "string" }, "metadata": { "type": "object", "additionalProperties": true }, "name": { "type": "string" }, "namespace": { "type": "string" }, "summary": { "type": "string" }, "tags": { "type": "object", "additionalProperties": { "type": "string" } }, "title": { "type": "string" }, "version": { "type": "string" } } }, "model.Duration": { "type": "object" }, "model.Endpoint": { "type": "object" }, "model.Error": { "type": "object", "required": [ "status", "type" ], "properties": { "detail": { "description": "A human-readable explanation specific to this occurrence of the error.", "allOf": [ { "$ref": "#/definitions/model.StringOrRuntimeExpr" } ] }, "instance": { "description": "A JSON Pointer used to reference the component the error originates from.\nRuntimes MUST set the property when raising or escalating the error. Otherwise ignore.", "allOf": [ { "$ref": "#/definitions/model.JsonPointerOrRuntimeExpression" } ] }, "status": { "description": "The status code generated by the origin for this occurrence of the error.\nFor cross-compatibility concerns, it is strongly recommended to use HTTP Status Codes whenever possible.\nRuntimes MUST ensure that the property has been set when raising or escalating the error.", "type": "integer" }, "title": { "description": "A short, human-readable summary of the error.", "allOf": [ { "$ref": "#/definitions/model.StringOrRuntimeExpr" } ] }, "type": { "description": "A URI reference that identifies the error type.\nFor cross-compatibility concerns, it is strongly recommended to use Standard Error Types whenever possible.\nRuntimes MUST ensure that the property has been set when raising or escalating the error.", "allOf": [ { "$ref": "#/definitions/model.URITemplateOrRuntimeExpr" } ] } } }, "model.EventConsumptionStrategy": { "type": "object", "properties": { "all": { "type": "array", "items": { "$ref": "#/definitions/model.EventFilter" } }, "any": { "type": "array", "items": { "$ref": "#/definitions/model.EventFilter" } }, "one": { "$ref": "#/definitions/model.EventFilter" }, "until": { "$ref": "#/definitions/model.EventConsumptionUntil" } } }, "model.EventConsumptionUntil": { "type": "object" }, "model.EventFilter": { "type": "object", "required": [ "with" ], "properties": { "correlate": { "description": "Keyed correlation filters", "type": "object", "additionalProperties": { "$ref": "#/definitions/model.Correlation" } }, "with": { "$ref": "#/definitions/model.EventProperties" } } }, "model.EventProperties": { "type": "object", "properties": { "datacontenttype": { "type": "string" }, "dataschema": { "description": "URI template or runtime expression", "allOf": [ { "$ref": "#/definitions/model.URITemplateOrRuntimeExpr" } ] }, "id": { "type": "string" }, "source": { "description": "URI template or runtime expression", "allOf": [ { "$ref": "#/definitions/model.URITemplateOrRuntimeExpr" } ] }, "subject": { "type": "string" }, "time": { "description": "ISO 8601 date-time string or runtime expression", "allOf": [ { "$ref": "#/definitions/model.StringOrRuntimeExpr" } ] }, "type": { "type": "string" } } }, "model.ExtensionItem": { "type": "object" }, "model.ExternalResource": { "type": "object", "required": [ "endpoint" ], "properties": { "endpoint": { "$ref": "#/definitions/model.Endpoint" }, "name": { "type": "string" } } }, "model.Input": { "type": "object", "properties": { "from": { "$ref": "#/definitions/model.ObjectOrRuntimeExpr" }, "schema": { "$ref": "#/definitions/model.Schema" } } }, "model.JsonPointerOrRuntimeExpression": { "type": "object" }, "model.NamedTaskMap": { "type": "object", "additionalProperties": {} }, "model.OAuth2AutenthicationDataClient": { "type": "object", "properties": { "assertion": { "type": "string" }, "authentication": { "$ref": "#/definitions/model.OAuthClientAuthenticationType" }, "id": { "type": "string" }, "secret": { "type": "string" } } }, "model.OAuth2AuthenticationDataGrant": { "type": "string", "enum": [ "authorization_code", "client_credentials", "password", "refresh_token", "urn:ietf:params:oauth:grant-type:token-exchange" ], "x-enum-comments": { "TokenExchangeGrant": "#nosec G101" }, "x-enum-descriptions": [ "", "", "", "", "#nosec G101" ], "x-enum-varnames": [ "AuthorizationCodeGrant", "ClientCredentialsGrant", "PasswordGrant", "RefreshTokenGrant", "TokenExchangeGrant" ] }, "model.OAuth2AuthenticationPolicy": { "type": "object", "properties": { "endpoints": { "$ref": "#/definitions/model.OAuth2Endpoints" }, "properties": { "$ref": "#/definitions/model.OAuth2AuthenticationProperties" }, "use": { "type": "string" } } }, "model.OAuth2AuthenticationProperties": { "type": "object", "properties": { "actor": { "$ref": "#/definitions/model.OAuth2Token" }, "audiences": { "type": "array", "items": { "type": "string" } }, "authority": {}, "client": { "$ref": "#/definitions/model.OAuth2AutenthicationDataClient" }, "grant": { "enum": [ "authorization_code", "client_credentials", "password", "refresh_token", "urn:ietf:params:oauth:grant-type:token-exchange" ], "allOf": [ { "$ref": "#/definitions/model.OAuth2AuthenticationDataGrant" } ] }, "issuers": { "type": "array", "items": { "type": "string" } }, "password": { "type": "string" }, "request": { "$ref": "#/definitions/model.OAuth2TokenRequest" }, "scopes": { "type": "array", "items": { "type": "string" } }, "subject": { "$ref": "#/definitions/model.OAuth2Token" }, "username": { "type": "string" } } }, "model.OAuth2Endpoints": { "type": "object", "properties": { "introspection": { "type": "string" }, "revocation": { "type": "string" }, "token": { "type": "string" } } }, "model.OAuth2Token": { "type": "object", "properties": { "token": { "description": "Token The security token to use", "type": "string" }, "type": { "description": "Type The type of the security token to use.", "type": "string" } } }, "model.OAuth2TokenRequest": { "type": "object", "properties": { "encoding": { "$ref": "#/definitions/model.OAuth2TokenRequestEncodingType" } } }, "model.OAuth2TokenRequestEncodingType": { "type": "string", "enum": [ "application/x-www-form-urlencoded", "application/json" ], "x-enum-varnames": [ "EncodingTypeFormUrlEncoded", "EncodingTypeApplicationJson" ] }, "model.OAuthClientAuthenticationType": { "type": "string", "enum": [ "client_secret_basic", "client_secret_post", "client_secret_jwt", "private_key_jwt", "none" ], "x-enum-varnames": [ "OAuthClientAuthClientSecretBasic", "OAuthClientAuthClientSecretPost", "OAuthClientAuthClientSecretJWT", "OAuthClientAuthPrivateKeyJWT", "OAuthClientAuthNone" ] }, "model.ObjectOrRuntimeExpr": { "type": "object" }, "model.OpenIdConnectAuthenticationPolicy": { "type": "object", "properties": { "properties": { "$ref": "#/definitions/model.OAuth2AuthenticationProperties" }, "use": { "type": "string" } } }, "model.Output": { "type": "object", "properties": { "as": { "$ref": "#/definitions/model.ObjectOrRuntimeExpr" }, "schema": { "$ref": "#/definitions/model.Schema" } } }, "model.RetryBackoff": { "type": "object", "properties": { "constant": { "$ref": "#/definitions/model.BackoffDefinition" }, "exponential": { "$ref": "#/definitions/model.BackoffDefinition" }, "linear": { "$ref": "#/definitions/model.BackoffDefinition" } } }, "model.RetryLimit": { "type": "object", "properties": { "attempt": { "$ref": "#/definitions/model.RetryLimitAttempt" }, "duration": { "$ref": "#/definitions/model.Duration" } } }, "model.RetryLimitAttempt": { "type": "object", "properties": { "count": { "type": "integer" }, "duration": { "$ref": "#/definitions/model.Duration" } } }, "model.RetryPolicy": { "type": "object", "properties": { "backoff": { "$ref": "#/definitions/model.RetryBackoff" }, "delay": { "$ref": "#/definitions/model.Duration" }, "exceptWhen": { "$ref": "#/definitions/model.RuntimeExpression" }, "jitter": { "$ref": "#/definitions/model.RetryPolicyJitter" }, "limit": { "$ref": "#/definitions/model.RetryLimit" }, "when": { "$ref": "#/definitions/model.RuntimeExpression" } } }, "model.RetryPolicyJitter": { "type": "object", "required": [ "from", "to" ], "properties": { "from": { "$ref": "#/definitions/model.Duration" }, "to": { "$ref": "#/definitions/model.Duration" } } }, "model.RuntimeExpression": { "type": "object" }, "model.Schedule": { "type": "object", "properties": { "after": { "$ref": "#/definitions/model.Duration" }, "cron": { "type": "string" }, "every": { "$ref": "#/definitions/model.Duration" }, "on": { "$ref": "#/definitions/model.EventConsumptionStrategy" } } }, "model.Schema": { "type": "object", "properties": { "document": {}, "format": { "type": "string" }, "resource": { "$ref": "#/definitions/model.ExternalResource" } } }, "model.StringOrRuntimeExpr": { "type": "object" }, "model.TaskItem": { "type": "object" }, "model.Timeout": { "type": "object", "required": [ "after" ], "properties": { "after": { "description": "After The duration after which to timeout", "allOf": [ { "$ref": "#/definitions/model.Duration" } ] } } }, "model.TimeoutOrReference": { "type": "object" }, "model.URITemplateOrRuntimeExpr": { "type": "object" }, "model.Use": { "type": "object", "properties": { "authentications": { "type": "object", "additionalProperties": { "$ref": "#/definitions/model.AuthenticationPolicy" } }, "catalogs": { "type": "object", "additionalProperties": { "$ref": "#/definitions/model.Catalog" } }, "errors": { "type": "object", "additionalProperties": { "$ref": "#/definitions/model.Error" } }, "extensions": { "type": "array", "items": { "$ref": "#/definitions/model.ExtensionItem" } }, "functions": { "$ref": "#/definitions/model.NamedTaskMap" }, "retries": { "type": "object", "additionalProperties": { "$ref": "#/definitions/model.RetryPolicy" } }, "secrets": { "type": "array", "items": { "type": "string" } }, "timeouts": { "type": "object", "additionalProperties": { "$ref": "#/definitions/model.Timeout" } } } }, "model.Workflow": { "type": "object", "required": [ "do", "document" ], "properties": { "do": { "type": "array", "items": { "$ref": "#/definitions/model.TaskItem" } }, "document": { "$ref": "#/definitions/model.Document" }, "input": { "$ref": "#/definitions/model.Input" }, "output": { "$ref": "#/definitions/model.Output" }, "schedule": { "$ref": "#/definitions/model.Schedule" }, "timeout": { "$ref": "#/definitions/model.TimeoutOrReference" }, "use": { "$ref": "#/definitions/model.Use" } } }, "models.AuthorizeUser": { "type": "object", "properties": { "code": { "type": "string" }, "redirect_uri": { "type": "string" }, "scopes": { "type": "array", "items": { "type": "string" } }, "state": { "type": "string" } } }, "models.ElevateLLMRequest": { "type": "object", "properties": { "reason": { "type": "string" } } }, "models.ElevateRequest": { "type": "object", "properties": { "authenticator": { "description": "Which provider to use for authentication", "type": "string" }, "duration": { "description": "Duration in ISO 8601 format", "type": "string" }, "identities": { "description": "Optional identities to elevate, if empty the requesting user is used", "type": "array", "items": { "type": "string" } }, "providers": { "description": "A role can be applied to multiple providers", "type": "array", "items": { "type": "string" } }, "reason": { "type": "string" }, "role": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Role" }, "session": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.LocalSession" }, "workflow": { "type": "string" } } }, "models.EnvironmentConfig": { "type": "object", "properties": { "architecture": { "description": "amd64, arm64", "type": "string", "default": "amd64" }, "config": { "description": "Settings for the platform", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.BasicConfig" } ] }, "ephemeral": { "description": "true if running in an ephemeral environment", "type": "boolean", "default": false }, "hostname": { "type": "string", "default": "localhost" }, "metaData": { "description": "Metadata for the environment", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.BasicConfig" } ] }, "name": { "description": "This is the name of the environment or hostname", "type": "string", "default": "development" }, "operatingSystem": { "description": "Operating System details", "type": "string", "default": "linux" }, "operatingSystemVersion": { "description": "e.g. 10, 11, 12 for macOS", "type": "string", "default": "latest" }, "platform": { "description": "AWS, GCP, Kubernetes, Local", "default": "aws", "allOf": [ { "$ref": "#/definitions/models.EnvironmentPlatform" } ] } } }, "models.EnvironmentPlatform": { "type": "string", "enum": [ "aws", "gcp", "azure", "kubernetes", "local" ], "x-enum-varnames": [ "AWS", "GCP", "Azure", "Kubernetes", "Local" ] }, "models.HealthResponse": { "type": "object", "properties": { "path": { "type": "string" }, "services": { "type": "object", "additionalProperties": { "$ref": "#/definitions/models.HealthState" } }, "status": { "$ref": "#/definitions/models.HealthState" }, "timestamp": { "type": "string" }, "version": { "type": "string" } } }, "models.HealthState": { "type": "string", "enum": [ "healthy", "degraded", "unhealthy" ], "x-enum-varnames": [ "HealthStatusHealthy", "HealthStatusDegraded", "HealthStatusUnhealthy" ] }, "models.LargeLanguageModelConfig": { "type": "object", "properties": { "apikey": { "type": "string" }, "baseURL": { "description": "e.g. https://api.openai.com/v1", "type": "string" }, "model": { "description": "e.g. gpt-4, gpt-3.5-turbo, etc", "type": "string" }, "provider": { "description": "e.g. openai, azure, etc", "type": "string", "enum": [ "openai", "gemini", "anthropic" ] } } }, "models.MetricsInfo": { "type": "object", "properties": { "elevate_requests": { "type": "integer" }, "providers_count": { "type": "integer" }, "roles_count": { "type": "integer" }, "total_requests": { "type": "integer" }, "uptime": { "type": "string" }, "workflows_count": { "type": "integer" } } }, "models.ProviderPermission": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "title": { "type": "string" } } }, "models.ProviderPermissionsResponse": { "type": "object", "properties": { "permissions": { "type": "array", "items": { "$ref": "#/definitions/models.ProviderPermission" } }, "provider": { "type": "string" }, "version": { "type": "string" } } }, "models.ProviderResponse": { "type": "object", "properties": { "description": { "type": "string" }, "enabled": { "type": "boolean" }, "name": { "type": "string" }, "provider": { "description": "e.g. aws, gcp, azure", "type": "string" } } }, "models.ProviderRole": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "title": { "type": "string" } } }, "models.ProviderRolesResponse": { "type": "object", "properties": { "provider": { "type": "string" }, "roles": { "type": "array", "items": { "$ref": "#/definitions/models.ProviderRole" } }, "version": { "type": "string" } } }, "models.ProvidersResponse": { "type": "object", "properties": { "providers": { "type": "object", "additionalProperties": { "$ref": "#/definitions/models.ProviderResponse" } }, "version": { "type": "string" } } }, "models.RoleResponse": { "type": "object", "properties": { "authenticators": { "description": "All the auth providers that the role can use. If empty then any provider can be used", "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "enabled": { "description": "By default enable the role", "type": "boolean", "default": true }, "groups": { "description": "groups to add the user to", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Groups" } ] }, "inherits": { "description": "roles to inherit from or provider specific roles/policies etc", "type": "array", "items": { "type": "string" } }, "name": { "type": "string" }, "permissions": { "description": "granular permissions for the role", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Permissions" } ] }, "providers": { "description": "providers that can assign this role", "type": "array", "items": { "type": "string" } }, "resources": { "description": "resource access rules, apis, files, systems etc", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Resources" } ] }, "scopes": { "description": "scope of who can be assigned this role", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.RoleScopes" } ] }, "version": { "$ref": "#/definitions/version.Version" }, "workflows": { "description": "The workflows to execute", "type": "array", "items": { "type": "string" } } } }, "models.RolesResponse": { "type": "object", "properties": { "roles": { "type": "object", "additionalProperties": { "$ref": "#/definitions/models.RoleResponse" } }, "version": { "type": "string" } } }, "models.ServiceConfig": { "type": "object", "properties": { "config": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.BasicConfig" }, "provider": { "description": "aws|gcp|azure|local", "type": "string", "default": "local" } } }, "models.SessionCreateRequest": { "type": "object", "required": [ "code", "provider", "session" ], "properties": { "code": { "description": "Verification code", "type": "string" }, "provider": { "description": "Provider ID", "type": "string" }, "session": { "description": "Encoded session token", "type": "string" } } }, "models.TemporalConfig": { "type": "object", "properties": { "apiKey": { "type": "string" }, "disableVersioning": { "description": "DisableVersioning disables worker versioning/deployments for testing", "type": "boolean", "default": false }, "host": { "type": "string", "default": "localhost" }, "mtlsCertificate": { "type": "string" }, "mtlsCertificatePath": { "type": "string" }, "namespace": { "type": "string", "default": "default" }, "port": { "type": "integer", "default": 7233 } } }, "models.WorkflowResponse": { "type": "object", "properties": { "description": { "type": "string" }, "enabled": { "type": "boolean" }, "name": { "type": "string" } } }, "models.WorkflowsResponse": { "type": "object", "properties": { "version": { "type": "string" }, "workflows": { "type": "object", "additionalProperties": { "$ref": "#/definitions/models.WorkflowResponse" } } } }, "sessions.LoginServer": { "type": "object", "properties": { "sessions": { "type": "object", "additionalProperties": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.LocalSession" } }, "timestamp": { "type": "string" }, "version": { "description": "Map of session ID to Session object", "type": "string", "default": "1.0" } } }, "time.Duration": { "type": "integer", "format": "int64", "enum": [ -9223372036854775808, 9223372036854775807, 1, 1000, 1000000, 1000000000, 60000000000, 3600000000000 ], "x-enum-varnames": [ "minDuration", "maxDuration", "Nanosecond", "Microsecond", "Millisecond", "Second", "Minute", "Hour" ] }, "version.Version": { "type": "object" } }, "securityDefinitions": { "BearerAuth": { "description": "Bearer token authentication", "type": "apiKey", "name": "Authorization", "in": "header" } } }