Deel: Create shifts — request body — body data shifts item shift type: REGULAR
Create shifts: request body, field body / data / shifts / item / shift_type: REGULAR. Complete fields and constraints for contract 2026-10-27.
API reference · Contract 2026-10-27
SDK schema: Create shifts — request body — body / data / shifts / item / shift_type: REGULAR
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
date_of_work | string | Required within parent | Pattern: ^\d{4}-\d{2}-\d{2}$ |
description | string | Required within parent | Description of the shift. Maximum length: 30000 Minimum length: 1 |
external_id | string | Required within parent | External ID of the shift. Maximum length: 48 Minimum length: 8 |
payroll_cycle_ref | Model | Optional | Expand Update a shift — 200 response body — data payroll cycle ref Payroll cycle reference |
shift_type | string | Optional | Type of the shift Default: REGULAR One of: REGULAR |
summary | Model | Required within parent | Expand Create shifts — request body — body / data / shifts / item / shift_type: REGULAR summary Shift summary. The fields here form two mutually exclusive groups — hours-based (`shift_duration_hours`, `total_break_hours`, `payable_break_hours`, `total_payable_hours`) and unit-amount (`time_amount`, `time_unit`) — and the schema cannot express this as a strict either/or because which group is required depends on the shift rate (`shift_rate_external_id`) type, resolved server-side: PER_UNIT_FLAT_RATE requires the unit-amount group, PER_HOUR_FLAT_RATE requires the hours-based group, and MULTIPLIER_PERCENTAGE (or no shift rate) accepts either group but not a mix of both. Sending fields from both groups, or the wrong group for the rate type, is rejected. |
Referenced models: Update a shift — 200 response body — data payroll cycle ref, Create shifts — request body — body / data / shifts / item / shift_type: REGULAR summary