People And Scheduling
People and scheduling endpoints expose user references, absences, shifts, and shift day notes used by editorial planning workflows.
Use this page for v2 behavior. Use the Users API reference, Absences API reference, and Shifts API reference for exact schemas, examples, response codes, and endpoint-specific validation.
Users
Users are read-only through the public API.
Public endpoints:
Code
User lists use the shared pagination shape. Query options include:
includeExternal=falsewhen only internal users should be returned.includeGroups=truewhen the response must include group references.
There is no public v2 endpoint for direct user lookup by email.
Absences
Absences use plural /api/v2/absences paths:
Code
External-ID write paths are also available where documented in the API reference.
Absence create uses a structured request body:
Absence create request
In the user object, email and externalId identify the user, and supplierId is the
organization-scoped supplier identifier used for external/freelancer users.
Important rules:
POST /api/v2/absencesreturns201 Created.PUTis full replacement and requiresperiodandtype.PATCHis presence-aware.externalId: nullandnote: nullclear those fields where the API reference documents that behavior.period.fromDateandperiod.toDateare required when the period object is created or replaced.period.fromTimeandperiod.toTimeare optional time boundaries.- delete operations return
204 No Content.
Absence lists support pagination plus filters such as fromDate, toDate, userId, userEmail,
and type.
Shifts
Shifts are configuration data for work schedules.
Public v2 shift writes are intentionally narrow
- shift create is not exposed through public v2 REST.
- shift delete is not exposed through public v2 REST.
- shift writes by external ID are not exposed for the shift resource itself.
PUT/PATCH /api/v2/shifts/{id}update onlynameandexternalId.
External-ID clearing uses JSON null:
Code
For shift updates, an exactly empty external ID ("") is treated like null and clears the field.
Whitespace-only external IDs are invalid, and non-empty external IDs are trimmed. For full
replacement, name is required and cannot be null.
Shift Day Notes
Shift day notes use plural /notes paths:
| Operation | v2 path |
|---|---|
| Read by shift ID and date | GET /api/v2/shifts/{shiftId}/notes/{date} |
| Read by external shift ID and date | GET /api/v2/shifts/external-id/{externalId}/notes/{date} |
| Create by shift ID | POST /api/v2/shifts/{shiftId}/notes |
| Create by external shift ID | POST /api/v2/shifts/external-id/{externalId}/notes |
| Replace by shift ID and date | PUT /api/v2/shifts/{shiftId}/notes/{date} |
| Replace by external shift ID and date | PUT /api/v2/shifts/external-id/{externalId}/notes/{date} |
Create requests require date and note:
Code
Replace requests require date and note; the body date must match the path date.
Important rules:
- create returns
201 Created. - duplicate notes return
409 Conflict. - create can return
400 Bad Requestwhen the date is not part of the shift schedule. - note text must stay within the documented length limit.
- prefer persisted shift IDs when possible. External shift IDs are integration identifiers; use the v2 shift ID to target a specific shift.
Related Migration Notes
For v1 field mappings and path changes, see People And Scheduling Migration.