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//` or `f//`.
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
email 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
View JSON Schema on GitHub

JSON Schema

windmill-schedule-schema.json Raw ↑
{
  "$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"
  ]
}