{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/ScheduleIteration",
  "title": "ScheduleIteration",
  "type": "object",
  "description": "Schedule iteration configuration defining when and how often a schedule runs",
  "required": [
    "iterationType",
    "startTime"
  ],
  "properties": {
    "iterationType": {
      "type": "string",
      "enum": [
        "Once",
        "Hourly",
        "Daily",
        "Weekly",
        "Monthly",
        "Custom",
        "Cron"
      ],
      "description": "The frequency pattern for the schedule",
      "example": "Once"
    },
    "startTime": {
      "type": "string",
      "format": "date-time",
      "description": "Start date and time (ISO 8601, must be in the future)",
      "example": "2026-01-15T10:30:00Z"
    },
    "endTime": {
      "type": "string",
      "format": "date-time",
      "description": "End date and time (ISO 8601)",
      "example": "2026-01-15T10:30:00Z"
    },
    "hourlyContract": {
      "type": "object",
      "description": "Configuration for hourly iteration",
      "properties": {
        "hours": {
          "type": "integer",
          "description": "Number of hours between executions"
        },
        "minutes": {
          "type": "integer",
          "description": "Number of minutes between executions"
        }
      },
      "example": "https://www.example.com"
    },
    "dailyContract": {
      "type": "object",
      "description": "Configuration for daily iteration",
      "properties": {
        "runOnlyWorkWeek": {
          "type": "boolean",
          "description": "Whether to run only on workdays (Monday-Friday)"
        }
      },
      "example": "example_value"
    },
    "weeklyContract": {
      "type": "object",
      "description": "Configuration for weekly iteration",
      "properties": {
        "daysOfWeek": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Days of the week to run"
        }
      },
      "example": "example_value"
    },
    "monthlyContract": {
      "type": "object",
      "description": "Configuration for monthly iteration",
      "properties": {
        "simpleDayOfMonth": {
          "type": "boolean",
          "description": "Whether to use a simple day-of-month pattern"
        },
        "dayOfMonth": {
          "type": "string",
          "description": "Day of the month to run"
        },
        "occurrence": {
          "type": "string",
          "description": "Occurrence pattern (First, Second, Third, Fourth, Last)"
        },
        "dayOfWeek": {
          "type": "integer",
          "description": "Day of the week (0=Sunday, 6=Saturday)"
        }
      },
      "example": "example_value"
    },
    "customContract": {
      "type": "object",
      "description": "Configuration for custom iteration",
      "properties": {
        "daysOfMonth": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Specific days of the month to run"
        },
        "months": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Specific months to run (1-12)"
        }
      },
      "example": "example_value"
    },
    "cronContract": {
      "type": "object",
      "description": "Configuration for cron-based iteration",
      "properties": {
        "cronExpression": {
          "type": "string",
          "description": "Cron expression with 5 mandatory fields: minute, hour, day-of-month, month, day-of-week"
        }
      },
      "example": "example_value"
    }
  }
}