Files

3089 lines
104 KiB
Go

// Package apiswagger Code generated by swaggo/swag. DO NOT EDIT
package apiswagger
import "github.com/swaggo/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"contact": {},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/": {
"get": {
"description": "Get server version and info",
"produces": [
"application/json"
],
"tags": [
"Info"
],
"summary": "Server info",
"responses": {
"200": {
"description": "Server information",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/health": {
"get": {
"description": "Check if the server is running",
"produces": [
"application/json"
],
"tags": [
"Health"
],
"summary": "Health check",
"responses": {
"200": {
"description": "status: ok",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/health/ready": {
"get": {
"description": "Check if the server is ready to accept requests",
"produces": [
"application/json"
],
"tags": [
"Health"
],
"summary": "Readiness check",
"responses": {
"200": {
"description": "status: ready",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
},
"/osm/api/artifacts": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a paginated list of artifacts with optional filtering and existence checks",
"produces": [
"application/json"
],
"tags": [
"Artifacts"
],
"summary": "List artifacts",
"parameters": [
{
"type": "string",
"description": "Filter by workspace name",
"name": "workspace",
"in": "query"
},
{
"type": "string",
"description": "Search in artifact name/path",
"name": "search",
"in": "query"
},
{
"type": "integer",
"description": "Filter by HTTP status code (also accepts statusCode)",
"name": "status_code",
"in": "query"
},
{
"type": "boolean",
"default": false,
"description": "Annotate results with path_exists and path_is_dir",
"name": "verify_exist",
"in": "query"
},
{
"type": "integer",
"default": 0,
"description": "Number of records to skip",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"default": 20,
"description": "Maximum number of records to return",
"name": "limit",
"in": "query"
}
],
"responses": {
"200": {
"description": "List of artifacts with pagination",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to fetch artifacts",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/artifacts/{workspace_name}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Download a single file under the given workspace by relative artifact path",
"produces": [
"application/octet-stream"
],
"tags": [
"Artifacts"
],
"summary": "Download workspace artifact",
"parameters": [
{
"type": "string",
"description": "Workspace name",
"name": "workspace_name",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Relative path to artifact under workspace",
"name": "artifact_path",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "Artifact file",
"schema": {
"type": "file"
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Artifact not found",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to download artifact",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/assets": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a paginated list of assets with optional filtering",
"produces": [
"application/json"
],
"tags": [
"Assets"
],
"summary": "List assets",
"parameters": [
{
"type": "string",
"description": "Filter by workspace name",
"name": "workspace",
"in": "query"
},
{
"type": "string",
"description": "Search in asset_value, url, title, host_ip",
"name": "search",
"in": "query"
},
{
"type": "integer",
"description": "Filter by HTTP status code",
"name": "status_code",
"in": "query"
},
{
"type": "integer",
"default": 0,
"description": "Number of records to skip",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"default": 20,
"description": "Maximum number of records to return",
"name": "limit",
"in": "query"
}
],
"responses": {
"200": {
"description": "List of assets with pagination",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to fetch assets",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/event-logs": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a paginated list of event logs with optional filtering",
"produces": [
"application/json"
],
"tags": [
"EventLogs"
],
"summary": "List event logs",
"parameters": [
{
"type": "string",
"description": "Filter by event topic (e.g., run.started, run.completed)",
"name": "topic",
"in": "query"
},
{
"type": "string",
"description": "Filter by event name",
"name": "name",
"in": "query"
},
{
"type": "string",
"description": "Filter by source (scheduler, api, webhook)",
"name": "source",
"in": "query"
},
{
"type": "string",
"description": "Filter by workspace",
"name": "workspace",
"in": "query"
},
{
"type": "string",
"description": "Filter by run ID",
"name": "run_id",
"in": "query"
},
{
"type": "string",
"description": "Filter by workflow name",
"name": "workflow_name",
"in": "query"
},
{
"type": "string",
"description": "Filter by processed status (true/false)",
"name": "processed",
"in": "query"
},
{
"type": "integer",
"default": 0,
"description": "Number of records to skip",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"default": 20,
"description": "Maximum number of records to return",
"name": "limit",
"in": "query"
}
],
"responses": {
"200": {
"description": "List of event logs with pagination",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to fetch event logs",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/functions/eval": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Execute a utility function script with template rendering and JavaScript execution",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Functions"
],
"summary": "Execute utility function",
"parameters": [
{
"description": "Function evaluation request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.FunctionEvalRequest"
}
}
],
"responses": {
"200": {
"description": "Evaluation result",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/functions/list": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a flat list of all available utility functions with metadata",
"produces": [
"application/json"
],
"tags": [
"Functions"
],
"summary": "List utility functions",
"responses": {
"200": {
"description": "List of functions with total count",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/jobs/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get the aggregated status of a job and its runs",
"produces": [
"application/json"
],
"tags": [
"Jobs"
],
"summary": "Get job status",
"parameters": [
{
"type": "string",
"description": "Job ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Job status",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Job not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/llm/v1/chat/completions": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Send a chat completion request to the configured LLM provider (OpenAI-compatible)",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"LLM"
],
"summary": "LLM Chat Completion",
"parameters": [
{
"description": "Chat request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.LLMChatRequest"
}
}
],
"responses": {
"200": {
"description": "Chat response",
"schema": {
"$ref": "#/definitions/handlers.LLMChatResponse"
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "LLM error",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/llm/v1/embeddings": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Generate embeddings for input text using the configured LLM provider",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"LLM"
],
"summary": "Generate Embeddings",
"parameters": [
{
"description": "Embedding request",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.LLMEmbeddingRequest"
}
}
],
"responses": {
"200": {
"description": "Embedding response",
"schema": {
"$ref": "#/definitions/handlers.LLMEmbeddingResponse"
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "LLM error",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/login": {
"post": {
"description": "Authenticate user and get JWT token",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Auth"
],
"summary": "User login",
"parameters": [
{
"description": "Login credentials",
"name": "credentials",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.LoginRequest"
}
}
],
"responses": {
"200": {
"description": "JWT token",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"401": {
"description": "Invalid credentials",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/registry-info": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get binary registry with mode support (direct-fetch or nix-build)",
"produces": [
"application/json"
],
"tags": [
"Install"
],
"summary": "Get registry info",
"parameters": [
{
"type": "string",
"default": "direct-fetch",
"description": "Registry mode: direct-fetch or nix-build",
"name": "registry_mode",
"in": "query"
}
],
"responses": {
"200": {
"description": "Registry data",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to load registry",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/registry-install": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Install binaries from registry or workflows from git/zip URL. Supports direct-fetch and nix-build modes.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Install"
],
"summary": "Install binaries or workflows",
"parameters": [
{
"description": "Installation configuration",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.InstallRequest"
}
}
],
"responses": {
"200": {
"description": "Installation result",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Installation failed",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/runs": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a paginated list of workflow runs with optional filters",
"produces": [
"application/json"
],
"tags": [
"Runs"
],
"summary": "List runs",
"parameters": [
{
"type": "integer",
"default": 0,
"description": "Number of records to skip",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"default": 20,
"description": "Maximum number of records to return",
"name": "limit",
"in": "query"
},
{
"type": "string",
"description": "Filter by status (pending, running, completed, failed, cancelled)",
"name": "status",
"in": "query"
},
{
"type": "string",
"description": "Filter by workflow name",
"name": "workflow",
"in": "query"
},
{
"type": "string",
"description": "Filter by target (partial match)",
"name": "target",
"in": "query"
}
],
"responses": {
"200": {
"description": "List of runs",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Execute a workflow against one or more targets. Supports multiple targets via array or file, concurrency control, priority levels, custom timeouts, runner configuration (host/docker/ssh), and scheduling via cron expressions.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Runs"
],
"summary": "Create a new run",
"parameters": [
{
"description": "Run configuration with optional priority, timeout, runner config, and scheduling",
"name": "run",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.CreateRunRequest"
}
}
],
"responses": {
"202": {
"description": "Run started",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Workflow not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/runs/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get details of a specific run by ID, including steps and artifacts",
"produces": [
"application/json"
],
"tags": [
"Runs"
],
"summary": "Get run details",
"parameters": [
{
"type": "string",
"description": "Run ID or RunID",
"name": "id",
"in": "path",
"required": true
},
{
"type": "boolean",
"default": false,
"description": "Include step results",
"name": "include_steps",
"in": "query"
},
{
"type": "boolean",
"default": false,
"description": "Include artifacts",
"name": "include_artifacts",
"in": "query"
}
],
"responses": {
"200": {
"description": "Run details",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Run not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"delete": {
"security": [
{
"BearerAuth": []
}
],
"description": "Cancel a running workflow execution",
"produces": [
"application/json"
],
"tags": [
"Runs"
],
"summary": "Cancel a run",
"parameters": [
{
"type": "string",
"description": "Run ID or RunID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Run cancelled",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Run cannot be cancelled",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Run not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/schedules": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a paginated list of all scheduled workflows",
"produces": [
"application/json"
],
"tags": [
"Schedules"
],
"summary": "List all schedules",
"parameters": [
{
"type": "integer",
"default": 0,
"description": "Number of records to skip",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"default": 20,
"description": "Maximum number of records to return",
"name": "limit",
"in": "query"
}
],
"responses": {
"200": {
"description": "List of schedules",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Create a scheduled workflow execution with cron expression",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Schedules"
],
"summary": "Create a new schedule",
"parameters": [
{
"description": "Schedule configuration",
"name": "schedule",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.CreateScheduleRequest"
}
}
],
"responses": {
"201": {
"description": "Schedule created",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/schedules/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get details of a specific schedule by ID",
"produces": [
"application/json"
],
"tags": [
"Schedules"
],
"summary": "Get schedule details",
"parameters": [
{
"type": "string",
"description": "Schedule ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Schedule details",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Schedule not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"put": {
"security": [
{
"BearerAuth": []
}
],
"description": "Update an existing schedule",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Schedules"
],
"summary": "Update a schedule",
"parameters": [
{
"type": "string",
"description": "Schedule ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "Schedule update data",
"name": "schedule",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.UpdateScheduleRequest"
}
}
],
"responses": {
"200": {
"description": "Schedule updated",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Schedule not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"delete": {
"security": [
{
"BearerAuth": []
}
],
"description": "Delete a schedule by ID",
"produces": [
"application/json"
],
"tags": [
"Schedules"
],
"summary": "Delete a schedule",
"parameters": [
{
"type": "string",
"description": "Schedule ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Schedule deleted",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Schedule not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/schedules/{id}/disable": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Disable an enabled schedule",
"produces": [
"application/json"
],
"tags": [
"Schedules"
],
"summary": "Disable a schedule",
"parameters": [
{
"type": "string",
"description": "Schedule ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Schedule disabled",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/schedules/{id}/enable": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Enable a disabled schedule",
"produces": [
"application/json"
],
"tags": [
"Schedules"
],
"summary": "Enable a schedule",
"parameters": [
{
"type": "string",
"description": "Schedule ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Schedule enabled",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/schedules/{id}/trigger": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Manually trigger a scheduled workflow execution",
"produces": [
"application/json"
],
"tags": [
"Schedules"
],
"summary": "Trigger a schedule",
"parameters": [
{
"type": "string",
"description": "Schedule ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"202": {
"description": "Schedule triggered",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/settings/yaml": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Returns the entire configuration file with sensitive fields redacted",
"produces": [
"text/yaml"
],
"tags": [
"Settings"
],
"summary": "Get YAML configuration",
"responses": {
"200": {
"description": "YAML configuration content",
"schema": {
"type": "string"
}
},
"500": {
"description": "Internal server error",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/snapshot-download/{workspace_name}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Compress a workspace folder into a zip file and download it",
"produces": [
"application/zip"
],
"tags": [
"Snapshots"
],
"summary": "Download workspace snapshot",
"parameters": [
{
"type": "string",
"description": "Workspace name",
"name": "workspace_name",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Zip file download",
"schema": {
"type": "file"
}
},
"404": {
"description": "Workspace not found",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to create snapshot",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/snapshots": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a list of available snapshot files in the snapshot directory",
"produces": [
"application/json"
],
"tags": [
"Snapshots"
],
"summary": "List snapshots",
"responses": {
"200": {
"description": "List of snapshots",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to list snapshots",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/snapshots/export": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Export a workspace to a compressed zip archive and download it",
"consumes": [
"application/json"
],
"produces": [
"application/zip"
],
"tags": [
"Snapshots"
],
"summary": "Export workspace snapshot",
"parameters": [
{
"description": "Workspace to export",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.SnapshotExportRequest"
}
}
],
"responses": {
"200": {
"description": "Snapshot zip file",
"schema": {
"type": "file"
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Workspace not found",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to create snapshot",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/snapshots/import": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Import a workspace from an uploaded zip file or URL",
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"Snapshots"
],
"summary": "Import workspace snapshot",
"parameters": [
{
"type": "file",
"description": "Snapshot zip file to import",
"name": "file",
"in": "formData"
},
{
"type": "string",
"description": "URL of snapshot to download and import",
"name": "url",
"in": "formData"
},
{
"type": "boolean",
"description": "Overwrite existing workspace if present",
"name": "force",
"in": "formData"
},
{
"type": "boolean",
"description": "Skip database import (files only)",
"name": "skip_db",
"in": "formData"
}
],
"responses": {
"200": {
"description": "Import result",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to import snapshot",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/snapshots/{name}": {
"delete": {
"security": [
{
"BearerAuth": []
}
],
"description": "Delete a snapshot file by name",
"produces": [
"application/json"
],
"tags": [
"Snapshots"
],
"summary": "Delete snapshot",
"parameters": [
{
"type": "string",
"description": "Snapshot filename",
"name": "name",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Snapshot deleted",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Snapshot not found",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to delete snapshot",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/stats": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get aggregated counts for workflows, runs, workspaces, assets, vulnerabilities, and schedules",
"produces": [
"application/json"
],
"tags": [
"Stats"
],
"summary": "Get system statistics",
"responses": {
"200": {
"description": "System statistics",
"schema": {
"$ref": "#/definitions/database.SystemStats"
}
},
"500": {
"description": "Failed to get stats",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/tasks": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a list of all running and completed tasks",
"produces": [
"application/json"
],
"tags": [
"Distributed"
],
"summary": "List all tasks",
"responses": {
"200": {
"description": "List of running and completed tasks",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to list tasks",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Submit a new task to the distributed worker queue",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Distributed"
],
"summary": "Submit a new task",
"parameters": [
{
"description": "Task configuration",
"name": "task",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.SubmitTaskRequest"
}
}
],
"responses": {
"202": {
"description": "Task submitted",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to submit task",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/tasks/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get details for a specific task by ID",
"produces": [
"application/json"
],
"tags": [
"Distributed"
],
"summary": "Get task details",
"parameters": [
{
"type": "string",
"description": "Task ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Task details",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Task not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/upload-file": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Upload a file containing a list of inputs (targets, URLs, etc.) for later use in runs",
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"Files"
],
"summary": "Upload input file",
"parameters": [
{
"type": "file",
"description": "Input file to upload",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "File uploaded with path",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/vulnerabilities": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a paginated list of vulnerabilities with optional workspace, severity, and confidence filtering",
"produces": [
"application/json"
],
"tags": [
"Vulnerabilities"
],
"summary": "List vulnerabilities",
"parameters": [
{
"type": "string",
"description": "Filter by workspace name",
"name": "workspace",
"in": "query"
},
{
"type": "string",
"description": "Filter by severity (critical, high, medium, low, info)",
"name": "severity",
"in": "query"
},
{
"type": "string",
"description": "Filter by confidence (certain, firm, tentative, manual review required)",
"name": "confidence",
"in": "query"
},
{
"type": "string",
"description": "Filter by asset value (partial match)",
"name": "asset_value",
"in": "query"
},
{
"type": "integer",
"default": 0,
"description": "Number of records to skip",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"default": 20,
"description": "Maximum number of records to return",
"name": "limit",
"in": "query"
}
],
"responses": {
"200": {
"description": "List of vulnerabilities with pagination",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to fetch vulnerabilities",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Create a new vulnerability record",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Vulnerabilities"
],
"summary": "Create vulnerability",
"parameters": [
{
"description": "Vulnerability data",
"name": "vulnerability",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/handlers.CreateVulnerabilityInput"
}
}
],
"responses": {
"201": {
"description": "Created vulnerability",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid input",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to create vulnerability",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/vulnerabilities/summary": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a summary of vulnerabilities grouped by severity",
"produces": [
"application/json"
],
"tags": [
"Vulnerabilities"
],
"summary": "Get vulnerability summary",
"parameters": [
{
"type": "string",
"description": "Filter by workspace name",
"name": "workspace",
"in": "query"
}
],
"responses": {
"200": {
"description": "Vulnerability summary by severity",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to get summary",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/vulnerabilities/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a single vulnerability by its ID",
"produces": [
"application/json"
],
"tags": [
"Vulnerabilities"
],
"summary": "Get vulnerability by ID",
"parameters": [
{
"type": "integer",
"description": "Vulnerability ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Vulnerability details",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid ID",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Vulnerability not found",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to fetch vulnerability",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
},
"delete": {
"security": [
{
"BearerAuth": []
}
],
"description": "Delete a vulnerability by ID",
"produces": [
"application/json"
],
"tags": [
"Vulnerabilities"
],
"summary": "Delete vulnerability",
"parameters": [
{
"type": "integer",
"description": "Vulnerability ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Vulnerability deleted",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid ID",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Vulnerability not found",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to delete vulnerability",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workers": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a list of all registered workers in the distributed pool",
"produces": [
"application/json"
],
"tags": [
"Distributed"
],
"summary": "List all workers",
"responses": {
"200": {
"description": "List of workers",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to list workers",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workers/{id}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get details for a specific worker by ID",
"produces": [
"application/json"
],
"tags": [
"Distributed"
],
"summary": "Get worker details",
"parameters": [
{
"type": "string",
"description": "Worker ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Worker details",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Worker not found",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to get worker",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workflow-upload": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Upload a raw YAML workflow file and save it to the workflows directory",
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"Workflows"
],
"summary": "Upload workflow file",
"parameters": [
{
"type": "file",
"description": "Workflow YAML file",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"201": {
"description": "Workflow uploaded",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "Invalid request or YAML",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workflows": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a list of all available workflows with details",
"produces": [
"application/json"
],
"tags": [
"Workflows"
],
"summary": "List all workflows",
"responses": {
"200": {
"description": "List of workflows",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to load workflows",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workflows/refresh": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Re-index all workflows from filesystem to database",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Workflows"
],
"summary": "Refresh workflow index",
"parameters": [
{
"type": "boolean",
"description": "Force re-index all workflows regardless of checksum",
"name": "force",
"in": "query"
}
],
"responses": {
"200": {
"description": "Indexing result",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Indexing failed",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workflows/tags": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get all unique tags from indexed workflows in database",
"produces": [
"application/json"
],
"tags": [
"Workflows"
],
"summary": "Get all workflow tags",
"responses": {
"200": {
"description": "List of tags",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to get tags",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workflows/{name}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get workflow content. Returns raw YAML by default. Use json=true to get JSON with parsed details.",
"produces": [
"application/json",
"text/yaml"
],
"tags": [
"Workflows"
],
"summary": "Get workflow details",
"parameters": [
{
"type": "string",
"description": "Workflow name",
"name": "name",
"in": "path",
"required": true
},
{
"type": "boolean",
"description": "Return JSON with parsed details instead of raw YAML",
"name": "json",
"in": "query"
}
],
"responses": {
"200": {
"description": "Workflow details (JSON) or raw YAML content",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "Workflow not found",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workspace-names": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a sorted list of workspace names from the database",
"produces": [
"application/json"
],
"tags": [
"Workspaces"
],
"summary": "List workspace names",
"responses": {
"200": {
"description": "Workspace names",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
"500": {
"description": "Failed to list workspace names",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/osm/api/workspaces": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Get a list of all run workspaces. By default returns full workspace records from database. Use filesystem=true to list workspaces derived from assets.",
"produces": [
"application/json"
],
"tags": [
"Workspaces"
],
"summary": "List all workspaces",
"parameters": [
{
"type": "boolean",
"default": false,
"description": "List workspaces from filesystem/assets instead of workspaces table",
"name": "filesystem",
"in": "query"
},
{
"type": "integer",
"default": 0,
"description": "Number of records to skip",
"name": "offset",
"in": "query"
},
{
"type": "integer",
"default": 20,
"description": "Maximum number of records to return (max 10000)",
"name": "limit",
"in": "query"
}
],
"responses": {
"200": {
"description": "List of workspaces",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "Failed to read workspaces",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/server-info": {
"get": {
"description": "Get server version and info in JSON",
"produces": [
"application/json"
],
"tags": [
"Info"
],
"summary": "Server info JSON",
"responses": {
"200": {
"description": "Server information",
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
}
},
"definitions": {
"core.LLMMessage": {
"type": "object",
"properties": {
"content": {
"description": "string or []LLMContentPart"
},
"name": {
"type": "string"
},
"role": {
"$ref": "#/definitions/core.LLMMessageRole"
},
"tool_call_id": {
"type": "string"
},
"tool_calls": {
"type": "array",
"items": {
"$ref": "#/definitions/core.LLMToolCall"
}
}
}
},
"core.LLMMessageRole": {
"type": "string",
"enum": [
"system",
"user",
"assistant",
"tool"
],
"x-enum-varnames": [
"LLMRoleSystem",
"LLMRoleUser",
"LLMRoleAssistant",
"LLMRoleTool"
]
},
"core.LLMResponseFormat": {
"type": "object",
"properties": {
"json_schema": {
"type": "object",
"additionalProperties": true
},
"type": {
"description": "\"text\", \"json_object\", \"json_schema\"",
"type": "string"
}
}
},
"core.LLMTool": {
"type": "object",
"properties": {
"function": {
"$ref": "#/definitions/core.LLMToolFunction"
},
"type": {
"description": "\"function\"",
"type": "string"
}
}
},
"core.LLMToolCall": {
"type": "object",
"properties": {
"function": {
"$ref": "#/definitions/core.LLMToolCallFunction"
},
"id": {
"type": "string"
},
"type": {
"description": "\"function\"",
"type": "string"
}
}
},
"core.LLMToolCallFunction": {
"type": "object",
"properties": {
"arguments": {
"description": "JSON string",
"type": "string"
},
"name": {
"type": "string"
}
}
},
"core.LLMToolFunction": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"name": {
"type": "string"
},
"parameters": {
"type": "object",
"additionalProperties": true
}
}
},
"database.AssetStats": {
"type": "object",
"properties": {
"total": {
"type": "integer"
}
}
},
"database.RunStats": {
"type": "object",
"properties": {
"completed": {
"type": "integer"
},
"failed": {
"type": "integer"
},
"pending": {
"type": "integer"
},
"running": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"database.ScheduleStats": {
"type": "object",
"properties": {
"enabled": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"database.SystemStats": {
"type": "object",
"properties": {
"assets": {
"$ref": "#/definitions/database.AssetStats"
},
"runs": {
"$ref": "#/definitions/database.RunStats"
},
"schedules": {
"$ref": "#/definitions/database.ScheduleStats"
},
"vulnerabilities": {
"$ref": "#/definitions/database.VulnerabilityStats"
},
"workflows": {
"$ref": "#/definitions/database.WorkflowStats"
},
"workspaces": {
"$ref": "#/definitions/database.WorkspaceStats"
}
}
},
"database.VulnerabilityStats": {
"type": "object",
"properties": {
"critical": {
"type": "integer"
},
"high": {
"type": "integer"
},
"low": {
"type": "integer"
},
"medium": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"database.WorkflowStats": {
"type": "object",
"properties": {
"flows": {
"type": "integer"
},
"modules": {
"type": "integer"
},
"total": {
"type": "integer"
}
}
},
"database.WorkspaceStats": {
"type": "object",
"properties": {
"total": {
"type": "integer"
}
}
},
"handlers.CreateRunRequest": {
"type": "object",
"properties": {
"concurrency": {
"description": "Concurrency control",
"type": "integer"
},
"docker_image": {
"description": "Docker image to use when runner_type=docker",
"type": "string"
},
"empty_target": {
"description": "Run without target (generates placeholder target)",
"type": "boolean"
},
"flow": {
"description": "Workflow identification",
"type": "string"
},
"heuristics_check": {
"description": "Heuristics check level: none, basic, advanced",
"type": "string"
},
"module": {
"description": "Module workflow name",
"type": "string"
},
"notify_on_complete": {
"description": "Send notification when run completes",
"type": "boolean"
},
"params": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"priority": {
"description": "Priority and timeout",
"type": "string"
},
"repeat": {
"description": "Repeat run after completion",
"type": "boolean"
},
"repeat_wait_time": {
"description": "Wait time between repeats (e.g., 30s, 20m, 10h, 1d)",
"type": "string"
},
"runner_type": {
"description": "Runner configuration",
"type": "string"
},
"schedule": {
"description": "Scheduling options",
"type": "string"
},
"schedule_enabled": {
"description": "Enable scheduled execution",
"type": "boolean"
},
"ssh_host": {
"description": "SSH host when runner_type=ssh",
"type": "string"
},
"target": {
"type": "string"
},
"target_file": {
"description": "Path to file containing targets (one per line)",
"type": "string"
},
"targets": {
"description": "Multi-target support",
"type": "array",
"items": {
"type": "string"
}
},
"threads_hold": {
"description": "Execution options (mirrors CLI flags)",
"type": "integer"
},
"timeout": {
"description": "Timeout in minutes (0 = no timeout)",
"type": "integer"
}
}
},
"handlers.CreateScheduleRequest": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"params": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"runner_type": {
"type": "string"
},
"schedule": {
"description": "cron expression",
"type": "string"
},
"target": {
"type": "string"
},
"workflow_kind": {
"description": "flow or module",
"type": "string"
},
"workflow_name": {
"type": "string"
}
}
},
"handlers.CreateVulnerabilityInput": {
"type": "object",
"properties": {
"asset_type": {
"type": "string"
},
"asset_value": {
"type": "string"
},
"detail_http_request": {
"type": "string"
},
"detail_http_response": {
"type": "string"
},
"raw_vuln_json": {
"type": "string"
},
"severity": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"vuln_desc": {
"type": "string"
},
"vuln_info": {
"type": "string"
},
"vuln_poc": {
"type": "string"
},
"vuln_title": {
"type": "string"
},
"workspace": {
"type": "string"
}
}
},
"handlers.FunctionEvalRequest": {
"type": "object",
"properties": {
"params": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"script": {
"type": "string"
},
"target": {
"type": "string"
}
}
},
"handlers.InstallRequest": {
"type": "object",
"properties": {
"install_all": {
"description": "Install all binaries from registry (for type=binary)",
"type": "boolean"
},
"names": {
"description": "Binary names to install (for type=binary)",
"type": "array",
"items": {
"type": "string"
}
},
"registry_mode": {
"description": "\"direct-fetch\" or \"nix-build\" (default: direct-fetch)",
"type": "string"
},
"registry_url": {
"description": "Custom registry URL (optional, for type=binary)",
"type": "string"
},
"source": {
"description": "Git URL, zip URL, or file path (for type=workflow)",
"type": "string"
},
"type": {
"description": "\"binary\" or \"workflow\"",
"type": "string"
}
}
},
"handlers.LLMChatRequest": {
"type": "object",
"properties": {
"max_tokens": {
"type": "integer"
},
"messages": {
"type": "array",
"items": {
"$ref": "#/definitions/core.LLMMessage"
}
},
"model": {
"type": "string"
},
"n": {
"type": "integer"
},
"response_format": {
"$ref": "#/definitions/core.LLMResponseFormat"
},
"stream": {
"type": "boolean"
},
"temperature": {
"type": "number"
},
"tool_choice": {},
"tools": {
"type": "array",
"items": {
"$ref": "#/definitions/core.LLMTool"
}
},
"top_k": {
"type": "integer"
},
"top_p": {
"type": "number"
}
}
},
"handlers.LLMChatResponse": {
"type": "object",
"properties": {
"content": {},
"finish_reason": {
"type": "string"
},
"id": {
"type": "string"
},
"model": {
"type": "string"
},
"tool_calls": {
"type": "array",
"items": {
"$ref": "#/definitions/core.LLMToolCall"
}
},
"usage": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
}
}
},
"handlers.LLMEmbeddingRequest": {
"type": "object",
"properties": {
"input": {
"type": "array",
"items": {
"type": "string"
}
},
"model": {
"type": "string"
}
}
},
"handlers.LLMEmbeddingResponse": {
"type": "object",
"properties": {
"embeddings": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "number",
"format": "float64"
}
}
},
"model": {
"type": "string"
},
"usage": {
"type": "object",
"additionalProperties": {
"type": "integer"
}
}
}
},
"handlers.LoginRequest": {
"type": "object",
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"handlers.SnapshotExportRequest": {
"type": "object",
"properties": {
"workspace": {
"type": "string"
}
}
},
"handlers.SubmitTaskRequest": {
"type": "object",
"properties": {
"params": {
"type": "object",
"additionalProperties": true
},
"target": {
"type": "string"
},
"workflow_kind": {
"type": "string"
},
"workflow_name": {
"type": "string"
}
}
},
"handlers.UpdateScheduleRequest": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"params": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"schedule": {
"type": "string"
},
"target": {
"type": "string"
}
}
}
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "",
Host: "",
BasePath: "",
Schemes: []string{},
Title: "",
Description: "",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}