{ "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": "OAuth2 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 } } } }, "post": { "description": "Handle the SAML POST callback from the provider", "consumes": [ "application/x-www-form-urlencoded" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "SAML authentication callback", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true }, { "type": "string", "description": "SAML RelayState (SP-initiated)", "name": "RelayState", "in": "formData" }, { "type": "string", "description": "SAML Response", "name": "SAMLResponse", "in": "formData", "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}/approvals": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Accept a simple approval decision and signal the workflow execution", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "executions" ], "summary": "Approve workflow execution", "parameters": [ { "type": "string", "description": "Workflow execution ID", "name": "id", "in": "path", "required": true }, { "type": "boolean", "description": "Approval decision (true|false)", "name": "approved", "in": "query", "required": true } ], "responses": { "200": { "description": "Approval processed and workflow signaled", "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}/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/github_com_thand-io_agent_internal_models.ProviderResponse" } }, "404": { "description": "Provider not found", "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 identities", "schema": { "$ref": "#/definitions/models.ProviderIdentitiesResponse" } }, "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}/resources": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of resources available in a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "List provider resources", "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 resources", "schema": { "$ref": "#/definitions/models.ProviderResourcesResponse" } }, "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 } } } } }, "/provider/{provider}/tenants": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of tenants available in a specific provider", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "List provider tenants", "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 tenants", "schema": { "$ref": "#/definitions/models.ProviderTenantsResponse" } }, "404": { "description": "Provider not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/provider/{provider}/{function}": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Execute a specific function on a provider. Requires server mode and authentication. Supported functions: authorizesession (authorize user session), listidentities (list provider identities with optional search parameters)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "providers" ], "summary": "Execute provider function", "parameters": [ { "type": "string", "description": "Provider name", "name": "provider", "in": "path", "required": true }, { "type": "string", "description": "Function name (authorizesession, listidentities)", "name": "function", "in": "path", "required": true }, { "description": "Function-specific request body (optional)", "name": "body", "in": "body", "schema": { "type": "object" } } ], "responses": { "200": { "description": "Function response", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "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 } } } } }, "/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/github_com_thand-io_agent_internal_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": { "description": "Display a page showing the composite role with all inherited permissions resolved", "consumes": [ "text/html" ], "produces": [ "text/html" ], "tags": [ "roles" ], "summary": "Get role page", "parameters": [ { "type": "string", "description": "Role key", "name": "role", "in": "path", "required": true } ], "responses": { "200": { "description": "Role page HTML" }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Role not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/roles": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of all available roles with optional provider filtering and search", "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" }, { "type": "string", "description": "Search query for roles", "name": "q", "in": "query" }, { "type": "integer", "description": "Maximum number of search results (default: 10)", "name": "limit", "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 with default provider", "schema": { "$ref": "#/definitions/models.SessionsResponse" } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal server error", "schema": { "type": "object", "additionalProperties": true } } } }, "put": { "description": "Update the default session provider for the user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "sessions" ], "summary": "Set default session provider", "parameters": [ { "description": "Provider selection request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/models.SessionSetDefaultRequest" } } ], "responses": { "200": { "description": "Default provider updated successfully", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad request", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Provider session not found", "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 } } } }, "delete": { "description": "Remove all sessions for the user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "sessions" ], "summary": "Delete all sessions", "responses": { "200": { "description": "All sessions 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 } } } } }, "/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 } } } } }, "/whoami": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get information about the currently authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "sessions" ], "summary": "Get current user", "responses": { "200": { "description": "Current user information", "schema": { "$ref": "#/definitions/models.WhoamiResponse" } }, "401": { "description": "Unauthorized", "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.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" } } }, "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" } } }, "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 key (identifier) 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/daemon.SimpleConfig" }, "environment": { "$ref": "#/definitions/daemon.SimpleEnvrinment" }, "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" } } }, "daemon.SimpleConfig": { "type": "object", "properties": { "apiBasePath": { "type": "string" }, "server": { "$ref": "#/definitions/daemon.SimpleServer" }, "services": { "$ref": "#/definitions/daemon.SimpleServices" } } }, "daemon.SimpleEnvrinment": { "type": "object", "properties": { "platform": { "type": "string" } } }, "daemon.SimpleHealth": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "path": { "type": "string" } } }, "daemon.SimpleMetrics": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "path": { "type": "string" } } }, "daemon.SimpleServer": { "type": "object", "properties": { "health": { "$ref": "#/definitions/daemon.SimpleHealth" }, "host": { "type": "string" }, "metrics": { "$ref": "#/definitions/daemon.SimpleMetrics" }, "port": { "type": "integer" } } }, "daemon.SimpleServices": { "type": "object", "properties": { "llm": { "type": "boolean" }, "temporal": { "type": "boolean" } } }, "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.ProviderDefinitionsConfig": { "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.ProviderConfig" } }, "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/github_com_thand-io_agent_internal_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.ProviderDefinitionsConfig" }, "roles": { "$ref": "#/definitions/config.RoleConfig" }, "services": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ServicesConfig" }, "success": { "type": "boolean" }, "workflows": { "$ref": "#/definitions/config.WorkflowConfig" } } }, "github_com_thand-io_agent_internal_models.BasicConfig": { "type": "object", "additionalProperties": {} }, "github_com_thand-io_agent_internal_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" } ] } } }, "github_com_thand-io_agent_internal_models.Group": { "type": "object", "properties": { "email": { "description": "Email is the email address associated with the group (e.g., a mailing list).", "type": "string" }, "id": { "description": "ID is the unique identifier for the group.", "type": "string" }, "name": { "description": "Name is the human-readable name of the group.", "type": "string" }, "parent": { "description": "Parent is the ID of the parent group, if any.", "type": "string" } } }, "github_com_thand-io_agent_internal_models.Identity": { "type": "object", "properties": { "group": { "description": "Group contains the group details if this identity represents a group.\nWill be nil if this identity represents a user.", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Group" } ] }, "id": { "description": "ID is the unique identifier for this identity. This will most likely be an email for users\nor a group name for groups. This will be used to tie identities across providers.", "type": "string" }, "label": { "description": "Label is a human-readable name or description for this identity.", "type": "string" }, "providers": { "description": "The providers this identity is associated with\nFormat is map[provider_name]provider_type", "type": "object", "additionalProperties": { "type": "string" } }, "tenant": { "description": "Tenant represents the tenant or organization this identity belongs to.\nThis is useful for multi-tenant systems where identities are scoped to specific tenants.", "type": "string" }, "user": { "description": "User contains the user details if this identity represents a user.\nWill be nil if this identity represents a group.", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.User" } ] } } }, "github_com_thand-io_agent_internal_models.LocalSession": { "type": "object", "properties": { "endpoint": { "description": "Optional endpoint associated with the session", "allOf": [ { "$ref": "#/definitions/model.Endpoint" } ] }, "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.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.ProviderCapabilities": { "type": "object", "properties": { "authorizer": { "description": "SSO Capabilities", "allOf": [ { "$ref": "#/definitions/models.AuthorizerConfiguration" } ] }, "groups": { "$ref": "#/definitions/models.GroupsConfiguration" }, "identities": { "description": "Identity management capabilities", "allOf": [ { "$ref": "#/definitions/models.IdentitiesConfiguration" } ] }, "notifier": { "description": "Notifier", "allOf": [ { "$ref": "#/definitions/models.NotifierConfiguration" } ] }, "permissions": { "$ref": "#/definitions/models.PermissionsConfiguration" }, "provisioning": { "description": "Rbac capabilities", "allOf": [ { "$ref": "#/definitions/models.ProvisioningConfiguration" } ] }, "resources": { "$ref": "#/definitions/models.ResourcesConfiguration" }, "roles": { "$ref": "#/definitions/models.RolesConfiguration" }, "tenants": { "description": "Tenant discovery capability", "allOf": [ { "$ref": "#/definitions/models.TenantsConfiguration" } ] }, "users": { "$ref": "#/definitions/models.UsersConfiguration" }, "webhook": { "$ref": "#/definitions/models.NotifierConfiguration" } } }, "github_com_thand-io_agent_internal_models.ProviderConfig": { "type": "object", "required": [ "name", "provider" ], "properties": { "capabilities": { "description": "Allows the user to specify what this provider can do", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ProviderCapabilities" } ] }, "config": { "description": "Provider-specific configuration", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.BasicConfig" } ] }, "description": { "type": "string", "maxLength": 500 }, "enabled": { "description": "Whether this provider is enabled", "type": "boolean" }, "name": { "type": "string", "maxLength": 100, "minLength": 1 }, "provider": { "description": "e.g. aws, gcp, azure", "type": "string", "maxLength": 50, "minLength": 2 }, "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.ProviderPermission": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "title": { "type": "string" } } }, "github_com_thand-io_agent_internal_models.ProviderResource": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "metadata": { "description": "Store additional metadata if needed", "type": "object", "additionalProperties": {} }, "name": { "type": "string" }, "type": { "type": "string" } } }, "github_com_thand-io_agent_internal_models.ProviderResponse": { "type": "object", "properties": { "capabilities": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ProviderCapabilities" }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "id": { "type": "string" }, "name": { "type": "string" }, "provider": { "description": "e.g. aws, gcp, azure", "type": "string" } } }, "github_com_thand-io_agent_internal_models.ProviderRole": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "title": { "type": "string" } } }, "github_com_thand-io_agent_internal_models.ProvidersResponse": { "type": "object", "properties": { "providers": { "type": "object", "additionalProperties": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ProviderResponse" } }, "version": { "type": "string" } } }, "github_com_thand-io_agent_internal_models.Role": { "type": "object", "required": [ "name" ], "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" } }, "composite": { "description": "Whether this role is a composite role (i.e., aggregates other roles)", "type": "boolean", "default": false }, "description": { "type": "string", "maxLength": 500 }, "enabled": { "description": "By default enable the role", "type": "boolean", "default": true }, "identifier": { "type": "string" }, "inherits": { "description": "roles to inherit from or provider specific roles/policies etc", "type": "array", "maxItems": 50, "items": { "type": "string" } }, "name": { "type": "string", "maxLength": 100, "minLength": 1 }, "permissions": { "description": "CSP-agnostic permission statements", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.RolePermissions" } ] }, "providers": { "description": "providers that can assign this role", "type": "array", "maxItems": 5, "items": { "type": "string" } }, "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", "maxItems": 5, "items": { "type": "string" } } } }, "github_com_thand-io_agent_internal_models.RolePermissions": { "type": "object", "properties": { "allow": { "type": "array", "maxItems": 500, "items": { "$ref": "#/definitions/models.Statement" } }, "deny": { "type": "array", "maxItems": 500, "items": { "$ref": "#/definitions/models.Statement" } } } }, "github_com_thand-io_agent_internal_models.RoleScopes": { "type": "object", "properties": { "allow": { "$ref": "#/definitions/models.ScopeIdentities" }, "deny": { "$ref": "#/definitions/models.ScopeIdentities" } } }, "github_com_thand-io_agent_internal_models.ServicesConfig": { "type": "object", "properties": { "analytics": { "description": "Analytics - used for telemetry and usage data", "allOf": [ { "$ref": "#/definitions/models.AnalyticsConfig" } ] }, "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" } ] }, "publicKeyInfrastructure": { "description": "Public Key Infrastructure - used for managing keys and certificates", "allOf": [ { "$ref": "#/definitions/models.PublicKeyInfrastructureConfig" } ] }, "scheduler": { "description": "Scheduler - used for scheduling tasks", "allOf": [ { "$ref": "#/definitions/models.ServiceConfig" } ] }, "temporal": { "description": "Temporal - used for workflow processing and orchestration", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.TemporalConfig" } ] }, "vault": { "description": "Vault - used for storing sensitive data", "allOf": [ { "$ref": "#/definitions/models.ServiceConfig" } ] } } }, "github_com_thand-io_agent_internal_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" }, "mtlsCert": { "type": "string" }, "mtlsCertFile": { "type": "string" }, "mtlsKey": { "type": "string" }, "mtlsKeyFile": { "type": "string" }, "mtlsVaultName": { "description": "HSM key resource ID (AWS KMS ARN, Azure Key Vault key URL, GCP KMS resource name)", "type": "string" }, "mtlsVaultPassword": { "type": "string" }, "mtlsVaultType": { "description": "Optional: auto-detected from platform", "type": "string" }, "namespace": { "type": "string", "default": "default" }, "port": { "type": "integer", "default": 7233 } } }, "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", "required": [ "name", "workflow" ], "properties": { "description": { "type": "string", "maxLength": 500 }, "enabled": { "description": "By default enable the workflow", "type": "boolean", "default": true }, "name": { "type": "string", "maxLength": 100, "minLength": 1 }, "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": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Identity" } }, "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" }, "proxy_bearer": { "$ref": "#/definitions/model.ProxyBearerAuthenticationPolicy" } } }, "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.ProxyBearerAuthenticationPolicy": { "type": "object", "properties": { "token": { "type": "string" }, "use": { "type": "string" } } }, "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.AnalyticsConfig": { "type": "object", "properties": { "config": { "description": "Config - additional configuration parameters for the Analytics service", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.BasicConfig" } ] }, "disabled": { "description": "Disable Analytics service", "type": "boolean", "default": false }, "provider": { "description": "Provider - the Analytics service provider (e.g., \"posthog\")", "type": "string" } } }, "models.AuthorizerConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" } } }, "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" }, "tenants": { "description": "Optional tenant IDs for multi-account providers", "type": "array", "items": { "type": "string" } }, "workflow": { "type": "string" } } }, "models.EnvironmentPlatform": { "type": "string", "enum": [ "aws", "gcp", "azure", "kubernetes", "local" ], "x-enum-varnames": [ "AWS", "GCP", "Azure", "Kubernetes", "Local" ] }, "models.GroupsConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "interval": { "description": "in minutes (max 30 days)", "type": "integer", "maximum": 43200, "minimum": 1 }, "synchronizable": { "type": "boolean" } } }, "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.IdentitiesConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "interval": { "description": "in minutes (max 30 days)", "type": "integer", "maximum": 43200, "minimum": 1 }, "synchronizable": { "type": "boolean" } } }, "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_count": { "type": "integer" }, "identities_count": { "type": "integer" }, "providers_count": { "type": "integer" }, "requests_count": { "type": "integer" }, "roles_count": { "type": "integer" }, "tenants_count": { "type": "integer" }, "uptime": { "type": "string" }, "workflows_count": { "type": "integer" } } }, "models.NotifierConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" } } }, "models.PermissionsConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "interval": { "description": "in minutes (max 30 days)", "type": "integer", "maximum": 43200, "minimum": 1 }, "synchronizable": { "type": "boolean" } } }, "models.ProviderIdentitiesResponse": { "type": "object", "properties": { "identities": { "type": "array", "items": { "type": "object", "properties": { "_id": { "type": "string" }, "_reason": { "type": "string" }, "_score": { "type": "number" }, "_source": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.Identity" } } } }, "provider": { "type": "string" }, "version": { "type": "string" } } }, "models.ProviderPermissionsResponse": { "type": "object", "properties": { "permissions": { "type": "array", "items": { "type": "object", "properties": { "_id": { "type": "string" }, "_reason": { "type": "string" }, "_score": { "type": "number" }, "_source": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ProviderPermission" } } } }, "provider": { "type": "string" }, "version": { "type": "string" } } }, "models.ProviderResourcesResponse": { "type": "object", "properties": { "provider": { "type": "string" }, "resources": { "type": "array", "items": { "type": "object", "properties": { "_id": { "type": "string" }, "_reason": { "type": "string" }, "_score": { "type": "number" }, "_source": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ProviderResource" } } } }, "version": { "type": "string" } } }, "models.ProviderRolesResponse": { "type": "object", "properties": { "provider": { "type": "string" }, "roles": { "type": "array", "items": { "type": "object", "properties": { "_id": { "type": "string" }, "_reason": { "type": "string" }, "_score": { "type": "number" }, "_source": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.ProviderRole" } } } }, "version": { "type": "string" } } }, "models.ProviderTenant": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "parent": { "type": "string" }, "type": { "description": "account, folder, organization, etc.", "type": "string" } } }, "models.ProviderTenantsResponse": { "type": "object", "properties": { "provider": { "type": "string" }, "tenants": { "type": "array", "items": { "type": "object", "properties": { "_id": { "type": "string" }, "_reason": { "type": "string" }, "_score": { "type": "number" }, "_source": { "$ref": "#/definitions/models.ProviderTenant" } } } }, "version": { "type": "string" } } }, "models.ProvisioningConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" } } }, "models.PublicKeyInfrastructureConfig": { "type": "object", "properties": { "config": { "description": "Provider-specific configuration", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.BasicConfig" } ] }, "provider": { "description": "aws|gcp|azure|local (defaults to environment platform)", "type": "string" } } }, "models.ResourcesConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "interval": { "description": "in minutes (max 30 days)", "type": "integer", "maximum": 43200, "minimum": 1 }, "synchronizable": { "type": "boolean" } } }, "models.RoleResponse": { "type": "object", "required": [ "name" ], "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" } }, "composite": { "description": "Whether this role is a composite role (i.e., aggregates other roles)", "type": "boolean", "default": false }, "description": { "type": "string", "maxLength": 500 }, "enabled": { "description": "By default enable the role", "type": "boolean", "default": true }, "identifier": { "type": "string" }, "inherits": { "description": "roles to inherit from or provider specific roles/policies etc", "type": "array", "maxItems": 50, "items": { "type": "string" } }, "name": { "type": "string", "maxLength": 100, "minLength": 1 }, "permissions": { "description": "CSP-agnostic permission statements", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.RolePermissions" } ] }, "providers": { "description": "providers that can assign this role", "type": "array", "maxItems": 5, "items": { "type": "string" } }, "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", "maxItems": 5, "items": { "type": "string" } } } }, "models.RolesConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "interval": { "description": "in minutes (max 30 days)", "type": "integer", "maximum": 43200, "minimum": 1 }, "synchronizable": { "type": "boolean" } } }, "models.RolesResponse": { "type": "object", "properties": { "roles": { "type": "object", "additionalProperties": { "$ref": "#/definitions/models.RoleResponse" } }, "version": { "type": "string" } } }, "models.ScopeIdentities": { "type": "object", "properties": { "domains": { "type": "array", "maxItems": 50, "items": { "type": "string" } }, "groups": { "type": "array", "maxItems": 100, "items": { "type": "string" } }, "users": { "type": "array", "maxItems": 500, "items": { "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.SessionInfo": { "type": "object", "properties": { "expiry": { "description": "Session expiry time", "type": "string" }, "uuid": { "description": "Session UUID", "type": "string" } } }, "models.SessionSetDefaultRequest": { "type": "object", "required": [ "provider" ], "properties": { "provider": { "description": "Provider ID to set as default", "type": "string" } } }, "models.SessionsResponse": { "type": "object", "properties": { "defaultProvider": { "description": "Current default provider from cookie", "type": "string" }, "sessions": { "description": "Map of provider name to session", "type": "object", "additionalProperties": { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.LocalSession" } }, "timestamp": { "description": "Timestamp of the response", "type": "string" }, "version": { "description": "Version of the response format", "type": "string" } } }, "models.Statement": { "type": "object", "properties": { "conditions": { "description": "Conditions contains optional provider-specific conditions.\nWARNING: Conditions are PRESERVED but NOT EVALUATED by this system.\nEnforcement is delegated to the target provider's IAM system.\nExamples: {\"IpAddress\": {\"aws:SourceIp\": \"10.0.0.0/8\"}} for AWS", "type": "object", "additionalProperties": {} }, "operations": { "description": "Operations contains provider-specific actions/permissions.\nExamples: [\"s3:GetObject\", \"s3:PutObject\"] for AWS, [\"storage.buckets.get\"] for GCP", "type": "array", "maxItems": 500, "items": { "type": "string" } }, "targets": { "description": "Targets contains provider-specific resource identifiers.\nExamples: [\"arn:aws:s3:::my-bucket/*\"] for AWS, [\"projects/my-project/buckets/my-bucket\"] for GCP", "type": "array", "maxItems": 100, "items": { "type": "string" } } } }, "models.TenantsConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "interval": { "description": "in minutes (max 30 days)", "type": "integer", "maximum": 43200, "minimum": 1 }, "synchronizable": { "type": "boolean" } } }, "models.UsersConfiguration": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "interval": { "description": "in minutes (max 30 days)", "type": "integer", "maximum": 43200, "minimum": 1 }, "synchronizable": { "type": "boolean" } } }, "models.WhoamiResponse": { "type": "object", "properties": { "provider": { "description": "The authentication provider", "type": "string" }, "session": { "description": "Session metadata", "allOf": [ { "$ref": "#/definitions/models.SessionInfo" } ] }, "user": { "description": "The authenticated user", "allOf": [ { "$ref": "#/definitions/github_com_thand-io_agent_internal_models.User" } ] } } }, "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" } } } }, "version.Version": { "type": "object" } }, "securityDefinitions": { "BearerAuth": { "description": "Bearer token authentication", "type": "apiKey", "name": "Authorization", "in": "header" } } }