---
title: "Validate external shifts"
method: POST
path: "/management/v2/shifts:validate"
tags: ["Shifts"]
---

# Validate external shifts

`POST /management/v2/shifts:validate`

## Request

- Base URL: `https://your-subdomain.deputy.deputy.com/api`
- URL: `https://your-subdomain.deputy.deputy.com/api/management/v2/shifts:validate`
- Auth: API key in header `OAuth`

Validate external shifts.

## Request body

- ValidateExternalShiftsRequestValidateExternalShiftsData
  - `shifts` ModelExternalShift[]
    - `externalId` string
    - `startDate` string
    - `startTime` string
    - `endDate` string
    - `endTime` string
    - `employeeEmail` string
    - `location` string
    - `area` string
    - `note` string
    - `published` boolean
    - `open` boolean
    - `overrideWarning` boolean
    - `breaks` ModelExternalBreak[]
      - `externalId` string
      - `type` string
      - `breakMins` integer
      - `breakStartDate` string
      - `breakStartTime` string
      - `breakEndDate` string
      - `breakEndTime` string
    - `children` ModelExternalShift[]: Note that some child shift fields may be ignored.
    - `customFields` Tenantsharedv2modelCustomField[]
      - `id` string, int64
      - `booleanField` ModelBooleanField
        - `value` boolean
      - `stringField` ModelStringField
        - `value` string
      - `listField` ModelListField
        - `value` string
      - `multiListField` ModelMultiListField
        - `value` string[]
      - `fileField` ModelFileField
        - `value` integer
      - `employeeVisible` boolean
    - `approvalRequired` boolean

## Response `200`

A successful response.

- ScheduleShiftValidateExternalShiftsResponse
  - `success` boolean
  - `shifts` ValidateExternalShiftsResponseValidatedShift[]
    - `externalIds` string[]
    - `success` boolean
    - `shift` Tenantschedulev2modelShift
      - `id` integer
      - `start` string
      - `end` string
      - `mealbreakDuration` number, float
      - `mealbreakSlots` ModelBreak[]
        - `slotType` 'BREAK' | 'WORK' | 'CUSTOM'
        - `start` integer
        - `end` integer
        - `state` 'NOT_START' | 'IN_PROGRESS' | 'FINISHED' | 'DURATION_ONLY' | 'DURATION_FINISHED'
        - `canStartEarly` boolean
        - `canEndEarly` boolean
        - `isMandatory` boolean
        - `type` 'MEAL_BREAK' | 'REST_BREAK'
        - `typeLabel` string
        - `startDateTime` string
        - `endDateTime` string
      - `duration` number, float
      - `cost` number, float
      - `area` integer
      - `employee` integer
      - `note` string
      - `warning` string
      - `warningOverrideComment` string
      - `isPublished` boolean
      - `timesheet` integer
      - `isOpen` boolean
      - `approvalRequired` boolean
      - `confirmationStatus` 'ROSTER_CONFIRMATION_NOT_REQUIRED' | 'ROSTER_CONFIRMATION_REQUIRED' | 'ROSTER_CONFIRMATION_DONE' | 'ROSTER_CONFIRMATION_DECLINED'
      - `confirmationNote` string
      - `confirmedByWhom` integer
      - `confirmedAt` string
      - `swapStatus` 'SWAP_STATUS_NOT_REQUIRED' | 'SWAP_STATUS_PENDING_OUT' | 'SWAP_STATUS_PENDING_IN' | 'SWAP_STATUS_PENDING_IN_OUT' | 'SWAP_STATUS_PENDING_APPROVAL' | 'SWAP_STATUS_APPROVED' | 'SWAP_STATUS_CANCELLED' | 'SWAP_STATUS_DECLINED'
      - `swapApprovedBy` integer
      - `shiftTemplate` integer
      - `children` V2modelChildShift[]
        - `id` integer
        - `start` string
        - `end` string
        - `cost` number, float
        - `area` integer
        - `canEdit` boolean
        - `parentId` integer
        - `isOpen` boolean
        - `approvalRequired` boolean
        - `isPublished` boolean
        - `confirmationStatus` 'ROSTER_CONFIRMATION_NOT_REQUIRED' | 'ROSTER_CONFIRMATION_REQUIRED' | 'ROSTER_CONFIRMATION_DONE' | 'ROSTER_CONFIRMATION_DECLINED'
        - `confirmedByWhom` integer
        - `confirmedAt` string
        - `creator` integer
        - `createdAt` string
        - `modifiedAt` string
        - `warning` string
        - `warningOverrideComment` string
        - `areaName` string
        - `location` integer
        - `locationName` string
      - `canEdit` boolean
      - `customFields` Tenantsharedv2modelCustomField[]
        - `id` string, int64
        - `booleanField` ModelBooleanField
          - `value` boolean
        - `stringField` ModelStringField
          - `value` string
        - `listField` ModelListField
          - `value` string
        - `multiListField` ModelMultiListField
          - `value` string[]
        - `fileField` ModelFileField
          - `value` integer
        - `employeeVisible` boolean
      - `customFieldData` integer
      - `creator` integer
      - `createdAt` string
      - `modifiedAt` string
      - `consentChangesets` ModelShiftConsentChangeset[]
        - `id` integer
        - `shiftId` integer
        - `consentTransactionId` string
        - `action` 'CREATE' | 'MODIFY' | 'DELETE'
        - `status` 'PENDING' | 'ACTIONED' | 'AUTO_ACTIONED'
        - `newData` ShiftConsentChangesetShiftConsentChangesetData
          - `start` string
          - `end` string
          - `approvalRequired` boolean
          - `cost` number, float
          - `date` string
          - `employee` integer
          - `mealbreakSlotsUnpaidMinutes` number, float
          - `mealbreakSlots` ModelBreak[]
            - `slotType` 'BREAK' | 'WORK' | 'CUSTOM'
            - `start` integer
            - `end` integer
            - `state` 'NOT_START' | 'IN_PROGRESS' | 'FINISHED' | 'DURATION_ONLY' | 'DURATION_FINISHED'
            - `canStartEarly` boolean
            - `canEndEarly` boolean
            - `isMandatory` boolean
            - `type` 'MEAL_BREAK' | 'REST_BREAK'
            - `typeLabel` string
            - `startDateTime` string
            - `endDateTime` string
          - `isOpen` boolean
          - `area` integer
          - `duration` number, float
          - `location` integer
        - `oldData` ShiftConsentChangesetShiftConsentChangesetData
          - `start` string
          - `end` string
          - `approvalRequired` boolean
          - `cost` number, float
          - `date` string
          - `employee` integer
          - `mealbreakSlotsUnpaidMinutes` number, float
          - `mealbreakSlots` ModelBreak[]
            - `slotType` 'BREAK' | 'WORK' | 'CUSTOM'
            - `start` integer
            - `end` integer
            - `state` 'NOT_START' | 'IN_PROGRESS' | 'FINISHED' | 'DURATION_ONLY' | 'DURATION_FINISHED'
            - `canStartEarly` boolean
            - `canEndEarly` boolean
            - `isMandatory` boolean
            - `type` 'MEAL_BREAK' | 'REST_BREAK'
            - `typeLabel` string
            - `startDateTime` string
            - `endDateTime` string
          - `isOpen` boolean
          - `area` integer
          - `duration` number, float
          - `location` integer
        - `violatedRules` ModelViolatedRules[]
          - `ruleCode` string
          - `warning` ModelViolatedRulesWarning
            - `message` string
          - `ruleConfigs` ModelViolatedRulesRuleConfig[]
            - `field` string
            - `operation` 'NOT_SPECIFIED' | 'GREATER_THAN' | 'LESS_THAN' | 'GREATER_THAN_OR_EQUAL' | 'LESS_THAN_OR_EQUAL' | 'EQUAL' | 'NOT_EQUAL'
            - `value` string
            - `gap` integer
            - `space` integer
        - `creator` integer
        - `createdAt` string
        - `modifiedAt` string
        - `consents` ModelConsent[]
          - `id` string
          - `recordId` string
          - `recordType` 'SHIFT' | 'TIMESHEET' | 'REGULAR_SCHEDULE'
          - `transactionId` string
          - `employeeId` integer
          - `status` 'PENDING' | 'ACCEPTED' | 'DECLINED' | 'CANCELLED' | 'OVERRIDDEN_ACCEPTED'
          - `description` string
          - `metadata` ModelShiftTypeConsentMetadata
            - `comment` string
            - `extras` object
          - `creator` integer
          - `createdAt` string, date-time
      - `areaName` string
      - `location` integer
      - `locationName` string
    - `errors` ScheduleShiftValidateExternalShiftsResponseValidationError[]
      - `type` 'VALIDATION_ERR' | 'VALIDATION_MULTI_ERR' | 'INVALID_ARGUMENT_ERR' | 'INTERNAL_SERVER_ERR'
      - `details` ValidateExternalShiftsResponseValidationErrorDetails[]
        - `externalId` string
        - `field` 'NO_FIELD' | 'START_DATE' | 'START_TIME' | 'END_DATE' | 'END_TIME' | 'EMPLOYEE_EMAIL' | 'LOCATION' | 'AREA' | 'NOTE' | 'PUBLISHED_SHIFT' | 'OPEN_SHIFT' | 'MEAL_BREAK_MINS' | 'MEAL_BREAK_START_DATE' | 'MEAL_BREAK_START_TIME' | 'MEAL_BREAK_END_DATE' | 'MEAL_BREAK_END_TIME' | 'REST_BREAK_MINS' | 'REST_BREAK_START_DATE' | 'REST_BREAK_START_TIME' | 'REST_BREAK_END_DATE' | 'REST_BREAK_END_TIME' | 'BREAK_TYPE' | 'CUSTOM_FIELD' | 'GROUP_REFERENCE'
        - `messages` string[]
        - `canOverride` boolean

---

[API](https://skmtc.dev/deputy/apis/deputy-v2-api.md) - [All operations](https://skmtc.dev/deputy/apis/deputy-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/deputy/apis/deputy-v2-api/revisions/78f0278f4608?raw)
