UNPKG

windmill-yaml-validator

Version:

YAML validator for Windmill flow, schedule, and trigger files

207 lines (206 loc) 8.2 kB
{ "type": "object", "properties": { "schedule": { "type": "string", "description": "Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon" }, "timezone": { "type": "string", "description": "IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York')" }, "enabled": { "type": "boolean", "description": "Whether the schedule is currently active and will trigger jobs" }, "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" }, "args": { "type": "object", "description": "The arguments to pass to the script or flow", "additionalProperties": true, "nullable": true }, "on_failure": { "type": "string", "nullable": true, "description": "Path to a script or flow to run when the scheduled job fails" }, "on_failure_times": { "type": "number", "nullable": true, "description": "Number of consecutive failures before the on_failure handler is triggered (default 1)" }, "on_failure_exact": { "type": "boolean", "nullable": true, "description": "If true, trigger on_failure handler only on exactly N failures, not on every failure after N" }, "on_failure_extra_args": { "type": "object", "description": "The arguments to pass to the script or flow", "additionalProperties": true, "nullable": true }, "on_recovery": { "type": "string", "nullable": true, "description": "Path to a script or flow to run when the schedule recovers after failures" }, "on_recovery_times": { "type": "number", "nullable": true, "description": "Number of consecutive successes before the on_recovery handler is triggered (default 1)" }, "on_recovery_extra_args": { "type": "object", "description": "The arguments to pass to the script or flow", "additionalProperties": true, "nullable": true }, "on_success": { "type": "string", "nullable": true, "description": "Path to a script or flow to run after each successful execution" }, "on_success_extra_args": { "type": "object", "description": "The arguments to pass to the script or flow", "additionalProperties": true, "nullable": true }, "ws_error_handler_muted": { "type": "boolean", "description": "If true, the workspace-level error handler will not be triggered for this schedule's failures" }, "retry": { "type": "object", "description": "Retry configuration for failed module 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" ] } }, "nullable": true }, "summary": { "type": "string", "nullable": true, "description": "Short summary describing the purpose of this schedule" }, "description": { "type": "string", "nullable": true, "description": "Detailed description of what this schedule does" }, "no_flow_overlap": { "type": "boolean", "description": "If true, skip this schedule's execution if the previous run is still in progress (prevents concurrent runs)" }, "tag": { "type": "string", "nullable": true, "description": "Worker tag to route jobs to specific worker groups" }, "paused_until": { "type": "string", "format": "date-time", "nullable": true, "description": "ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time" }, "cron_version": { "type": "string", "nullable": true, "description": "Cron parser version. Use 'v2' for extended syntax with additional features" }, "dynamic_skip": { "type": "string", "nullable": true, "description": "Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false)" }, "labels": { "type": "array", "items": { "type": "string" }, "default": [] }, "draft_only": { "description": "True when this row is a per-user draft with no deployed\nschedule at the same path. 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" }, "inherited_labels": { "type": "array", "items": { "type": "string" }, "description": "Labels inherited from the parent folder, computed at read time. Read-only — edit them on the folder.\n" } }, "required": [ "schedule", "script_path", "timezone", "is_flow", "enabled" ] }