Windmill · Schema
Schedule
Windmill Schedule schema
AutomationInternal ToolsOpen SourceProCode API CompositionScriptsWebhooksWorkflow EngineWorkflows
Properties
| Name | Type | Description |
|---|---|---|
| path | string | The unique Windmill path for this schedule. Must be of the form `u/ |
| edited_by | string | Username of the last person who edited this schedule |
| edited_at | string | Timestamp of the last edit |
| schedule | string | Cron expression with 6 fields (seconds, minutes, hours, day of month, month, day of week). Example '0 0 12 * * *' for daily at noon |
| timezone | string | IANA timezone for the schedule (e.g., 'UTC', 'Europe/Paris', 'America/New_York') |
| enabled | boolean | Whether the schedule is currently active and will trigger jobs |
| script_path | string | Path to the script or flow to execute when triggered |
| is_flow | boolean | True if script_path points to a flow, false if it points to a script |
| args | object | |
| extra_perms | object | Additional permissions for this schedule |
| string | Email of the user who owns this schedule, used for permissioned_as | |
| permissioned_as | string | The user or group this schedule runs as (e.g., 'u/admin' or 'g/mygroup') |
| error | string | Last error message if the schedule failed to trigger |
| on_failure | string | Path to a script or flow to run when the scheduled job fails |
| on_failure_times | number | Number of consecutive failures before the on_failure handler is triggered (default 1) |
| on_failure_exact | boolean | If true, trigger on_failure handler only on exactly N failures, not on every failure after N |
| on_failure_extra_args | object | |
| on_recovery | string | Path to a script or flow to run when the schedule recovers after failures |
| on_recovery_times | number | Number of consecutive successes before the on_recovery handler is triggered (default 1) |
| on_recovery_extra_args | object | |
| on_success | string | Path to a script or flow to run after each successful execution |
| on_success_extra_args | object | |
| ws_error_handler_muted | boolean | If true, the workspace-level error handler will not be triggered for this schedule's failures |
| retry | object | |
| summary | string | Short summary describing the purpose of this schedule |
| description | string | Detailed description of what this schedule does |
| no_flow_overlap | boolean | If true, skip this schedule's execution if the previous run is still in progress (prevents concurrent runs) |
| tag | string | Worker tag to route jobs to specific worker groups |
| paused_until | string | ISO 8601 datetime until which the schedule is paused. Schedule resumes automatically after this time |
| cron_version | string | Cron parser version. Use 'v2' for extended syntax with additional features |
| dynamic_skip | string | Path to a script that validates scheduled datetimes. Receives scheduled_for datetime and returns boolean to skip (true) or run (false) |
| labels | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/windmill/refs/heads/main/json-schema/windmill-schedule-schema.json",
"title": "Schedule",
"description": "Windmill Schedule schema",
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The unique Windmill path for this schedule. Must be of the form `u/<user>/<path>` or `f/<folder>/<path>`."
},
"edited_by": {
"type": "string",
"description": "Username of the last person who edited this schedule"
},
"edited_at": {
"type": "string",
"format": "date-time",
"description": "Timestamp of the last edit"
},
"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": {
"$ref": "#/components/schemas/ScriptArgs",
"nullable": true
},
"extra_perms": {
"type": "object",
"additionalProperties": {
"type": "boolean"
},
"description": "Additional permissions for this schedule"
},
"email": {
"type": "string",
"description": "Email of the user who owns this schedule, used for permissioned_as"
},
"permissioned_as": {
"type": "string",
"description": "The user or group this schedule runs as (e.g., 'u/admin' or 'g/mygroup')"
},
"error": {
"type": "string",
"nullable": true,
"description": "Last error message if the schedule failed to trigger"
},
"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": {
"$ref": "#/components/schemas/ScriptArgs",
"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": {
"$ref": "#/components/schemas/ScriptArgs",
"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": {
"$ref": "#/components/schemas/ScriptArgs",
"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": {
"$ref": "../../openflow.openapi.yaml#/components/schemas/Retry",
"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": []
}
},
"required": [
"path",
"edited_by",
"edited_at",
"schedule",
"script_path",
"timezone",
"extra_perms",
"is_flow",
"enabled",
"email",
"permissioned_as"
]
}