{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/deputy/main/json-schema/deputy-copy-request-copy-request-data-schema.json",
  "title": "CopyRequestCopyRequestData",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/deputy-v2-api-openapi.yml#/components/schemas/CopyRequestCopyRequestData",
  "type": "object",
  "properties": {
    "startDate": {
      "type": "string",
      "description": "Start date of the shifts to copy. Format: YYYY-MM-DD (e.g., \"2023-03-11\"). Required for pattern 1."
    },
    "endDate": {
      "type": "string",
      "description": "End date of the shifts to copy (inclusive). Format: YYYY-MM-DD (e.g., \"2023-03-18\"). Required for pattern 1."
    },
    "areas": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Array of area IDs to filter shifts for copying. If empty, all areas are included. Used for pattern 1."
    },
    "targetDates": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Target dates to copy shifts to. Format: YYYY-MM-DD. Each date will receive copies of the source shifts.\nMutually exclusive with dayOffsets."
    },
    "viewType": {
      "$ref": "#/$defs/modelViewType",
      "description": "View type that determines which shifts are included in the copy operation.\nRequired when using targetDates. Not required when using dayOffsets."
    },
    "shiftIds": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Array of specific shift IDs to copy. Used for pattern 2. If provided, startDate, endDate, and areas are ignored."
    },
    "dayOffsets": {
      "type": "array",
      "items": {
        "type": "integer",
        "format": "int32"
      },
      "description": "Day offsets for copying shifts. Each value is the number of days to offset\nfrom source shift dates. Mutually exclusive with targetDates.\nWhen provided, viewType is not required."
    }
  },
  "$defs": {
    "modelViewType": {
      "type": "string",
      "enum": [
        "DAILY",
        "DAILY_EMP",
        "WEEKLY",
        "WEEKLY_EMPLOYEE",
        "FORTNIGHTLY",
        "FORTNIGHTLY_EMP",
        "MONTHLY_EMPLOYEE",
        "FOURWEEKLY_EMP",
        "MONTHLY"
      ],
      "default": "DAILY"
    }
  }
}