UNPKG

windmill-yaml-validator

Version:

YAML validator for Windmill flow, schedule, and trigger files

197 lines (196 loc) 7.52 kB
{ "type": "object", "properties": { "script_path": { "type": "string", "description": "Path to the script or flow to execute when triggered" }, "is_flow": { "type": "boolean", "description": "True if script_path points to a flow, false if it points to a script" }, "labels": { "type": "array", "items": { "type": "string" }, "default": [] }, "draft_only": { "description": "True when this row is a per-user draft with no deployed\ntrigger at the same path. Set by list endpoints when\n`include_draft_only=true` synthesizes the row from the\ndraft. Frontend renders a \"Draft\" badge.\n", "type": "boolean" }, "is_draft": { "description": "True when the authed user has a per-user draft at this path\n(over a deployed row or a synthesized draft-only row).\nFrontend appends a `*` to the displayed name.\n", "type": "boolean" }, "route_path": { "type": "string", "description": "The URL route path that will trigger this endpoint (e.g., 'api/myendpoint'). Must NOT start with a /." }, "static_asset_config": { "type": "object", "nullable": true, "description": "Configuration for serving static assets (s3 bucket, storage path, filename)", "properties": { "s3": { "type": "string", "description": "S3 bucket path for static assets" }, "storage": { "type": "string", "description": "Storage path for static assets" }, "filename": { "type": "string", "description": "Filename for the static asset" } }, "required": [ "s3" ] }, "http_method": { "type": "string", "enum": [ "get", "post", "put", "delete", "patch" ], "description": "HTTP method (get, post, put, delete, patch) that triggers this endpoint" }, "authentication_resource_path": { "type": "string", "nullable": true, "description": "Path to the resource containing authentication configuration (for api_key, basic_http, custom_script, signature methods)" }, "summary": { "type": "string", "nullable": true, "description": "Short summary describing the purpose of this trigger" }, "description": { "type": "string", "nullable": true, "description": "Detailed description of what this trigger does" }, "request_type": { "type": "string", "enum": [ "sync", "async", "sync_sse" ], "description": "How the request is handled - 'sync' waits for result, 'async' returns job ID immediately, 'sync_sse' streams results via Server-Sent Events" }, "authentication_method": { "type": "string", "enum": [ "none", "windmill", "api_key", "basic_http", "custom_script", "signature" ], "description": "How requests are authenticated - 'none' (public), 'windmill' (Windmill token), 'api_key', 'basic_http', 'custom_script', 'signature'" }, "is_static_website": { "type": "boolean", "description": "If true, serves static files from S3/storage instead of running a script" }, "workspaced_route": { "type": "boolean", "description": "If true, the route includes the workspace ID in the path" }, "wrap_body": { "type": "boolean", "description": "If true, wraps the request body in a 'body' parameter" }, "raw_string": { "type": "boolean", "description": "If true, passes the request body as a raw string instead of parsing as JSON" }, "error_handler_path": { "type": "string", "description": "Path to a script or flow to run when the triggered job fails" }, "error_handler_args": { "type": "object", "description": "Arguments to pass to the error handler", "additionalProperties": true }, "retry": { "type": "object", "description": "Retry configuration for failed executions", "properties": { "constant": { "type": "object", "description": "Retry with constant delay between attempts", "properties": { "attempts": { "type": "integer", "description": "Number of retry attempts" }, "seconds": { "type": "integer", "description": "Seconds to wait between retries" } } }, "exponential": { "type": "object", "description": "Retry with exponential backoff (delay doubles each time)", "properties": { "attempts": { "type": "integer", "description": "Number of retry attempts" }, "multiplier": { "type": "integer", "description": "Multiplier for exponential backoff" }, "seconds": { "type": "integer", "minimum": 1, "description": "Initial delay in seconds" }, "random_factor": { "type": "integer", "minimum": 0, "maximum": 100, "description": "Random jitter percentage (0-100) to avoid thundering herd" } } }, "retry_if": { "type": "object", "description": "Conditional retry based on error or result", "properties": { "expr": { "type": "string", "description": "JavaScript expression that returns true to retry. Has access to 'result' and 'error' variables" } }, "required": [ "expr" ] } } } }, "required": [ "script_path", "is_flow", "route_path", "request_type", "authentication_method", "http_method", "is_static_website", "workspaced_route", "wrap_body", "raw_string" ] }