{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/qstash/main/json-schema/qstash-schedule.json",
  "title": "QStash Schedule",
  "description": "A CRON-based schedule that causes QStash to deliver messages on a recurring basis",
  "type": "object",
  "properties": {
    "scheduleId": {
      "type": "string",
      "description": "Unique identifier for the schedule",
      "example": "scd_2XavMmRcJHJf7HkNtNqjfVf8uQe"
    },
    "cron": {
      "type": "string",
      "description": "CRON expression defining the schedule (e.g. '0 0 * * *'). Supports CRON_TZ prefix for timezone.",
      "example": "0 9 * * 1-5"
    },
    "destination": {
      "type": "string",
      "description": "Target URL, URL Group name, or queue destination"
    },
    "body": {
      "type": "string",
      "description": "Message body to deliver on each invocation"
    },
    "header": {
      "type": "object",
      "description": "HTTP headers to include in each delivery",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "retries": {
      "type": "integer",
      "minimum": 0,
      "maximum": 5,
      "description": "Number of retry attempts per scheduled delivery"
    },
    "createdAt": {
      "type": "integer",
      "description": "Unix timestamp when the schedule was created"
    },
    "paused": {
      "type": "boolean",
      "description": "Whether the schedule is currently paused",
      "default": false
    }
  },
  "required": ["scheduleId", "cron"],
  "additionalProperties": false
}
