List all the scheduled shifts accessible by current user. The result is paginated
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shiftsPath Parameters
ID of the organisation
Query Parameters
Start date of the range in ISO-8601 format (inclusive)
End date of the range in ISO-8601 format (inclusive)
Statuses of the scheduled shifts to filter by
Location IDs of the scheduled shifts to filter by
Member IDs of the scheduled shifts to filter by
Whether to return only unassigned shifts
Whether to exclude shifts that overlap with from_date.
If this flag is set to true: Retrieve the shift which start time in [from_date, to_date)
Otherwise: Retrieve the shift which start time in [from_date - 1, to_date) and end time in (from_date, to_date + 1]
Current page index
11Number of items per page
20100Response Body
The scheduled shifts current user can access
ID of the scheduled shift
Shift start time
Shift end time
Status of the scheduled shift
Notes for the scheduled shift
Whether the shift is open
ID of the location where the shift is scheduled
Name of the location where the shift is scheduled
ID of the work site where the shift is scheduled
Name of the work site where the shift is scheduled
The status of the work site where the shift is scheduled
ID of the position for which the shift is scheduled
Name of the position for which the shift is scheduled
The status of the position for which the shift is scheduled
ID of the member scheduled for the shift
Full name of the member scheduled for the shift
Time after which shift swap is not allowed
Type of the shift
ID of the work type for the shift
Name of the work type for the shift
Details of the shift swap
Breaks during the shift
Current page index
11Number of items per page
20100Total items
Total pages
Example
curl -X GET \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"Response
{ "data": { "items": [ { "id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "start_time": "2024-06-14T09:00:00.000Z", "end_time": "2024-06-14T17:00:00.000Z", "status": "published", "notes": "Hello world", "is_open_shift": false, "location_id": "23e55174-2c7f-468d-9d11-9c387e2c3e70", "location_name": "John Doe Hospital", "work_site_id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "work_site_name": "LA Work Site", "work_site_status": "active", "position_id": "032d4063-2a79-45e6-b047-5b4876b59afc", "position_name": "Barber", "position_status": "active", "member_id": "6664453a-c118-48f1-897e-3df62d45bd84", "member_full_name": "John Doe", "shift_swap_cutoff_time": null, "type": "RosteredShift", "work_type_id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "work_type_name": "Full time", "shift_swap": { "id": "d71690b7-381f-4d54-8bdc-e4fd9d3e3be1", "requesting_shift_id": "4a35ccb6-8ff6-4719-b7fb-726b40467957", "receiving_shift_id": "dbab7b49-b40b-4e0d-ae69-a5fde016c5c7", "status": "awaiting_receiver", "requesting_notes": null }, "breaks": [ { "start_time": "2024-06-14T12:00:00.000Z", "end_time": "2024-06-14T13:00:00.000Z" } ] } ], "page_index": 1, "item_per_page": 20, "total_items": 1, "total_pages": 1 }}Get scheduled shift record using its ID
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/:idPath Parameters
ID of the organisation
ID of the scheduled shift record
Response Body
The scheduled shift record
ID of the scheduled shift
Shift start time
Shift end time
Status of the scheduled shift
Notes for the scheduled shift
Whether the shift is open
ID of the location where the shift is scheduled
Name of the location where the shift is scheduled
ID of the work site where the shift is scheduled
Name of the work site where the shift is scheduled
The status of the work site where the shift is scheduled
ID of the position for which the shift is scheduled
Name of the position for which the shift is scheduled
The status of the position for which the shift is scheduled
ID of the member scheduled for the shift
Full name of the member scheduled for the shift
Time after which shift swap is not allowed
Type of the shift
ID of the work type for the shift
Name of the work type for the shift
Details of the shift swap
Breaks during the shift
Example
curl -X GET \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/:id" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"Response
{ "data": { "id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "start_time": "2024-06-14T09:00:00.000Z", "end_time": "2024-06-14T17:00:00.000Z", "status": "published", "notes": "Hello world", "is_open_shift": false, "location_id": "23e55174-2c7f-468d-9d11-9c387e2c3e70", "location_name": "John Doe Hospital", "work_site_id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "work_site_name": "LA Work Site", "work_site_status": "active", "position_id": "032d4063-2a79-45e6-b047-5b4876b59afc", "position_name": "Barber", "position_status": "active", "member_id": "6664453a-c118-48f1-897e-3df62d45bd84", "member_full_name": "John Doe", "shift_swap_cutoff_time": null, "type": "RosteredShift", "work_type_id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "work_type_name": "Full time", "shift_swap": { "id": "d71690b7-381f-4d54-8bdc-e4fd9d3e3be1", "requesting_shift_id": "4a35ccb6-8ff6-4719-b7fb-726b40467957", "receiving_shift_id": "dbab7b49-b40b-4e0d-ae69-a5fde016c5c7", "status": "awaiting_receiver", "requesting_notes": null }, "breaks": [ { "start_time": "2024-06-14T12:00:00.000Z", "end_time": "2024-06-14T13:00:00.000Z" } ] }}Get the summarized scheduled shift costs for a given period of time
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/costPath Parameters
ID of the organisation
Query Parameters
Start datetime of the range.
End datetime of the range. Must not be more than 30 days from the start date.
Work site IDs to filter by, applicable only for Payroll-integrated organisations
Position IDs to filter by, applicable only for Payroll-integrated organisations
Location IDs to filter by, applicable only for standalone HR organisations
Member IDs to filter by
Statuses to filter by
Response Body
The summarized scheduled shift costs for a given period of time.
Costs of the scheduled shifts
Open (unassigned) shifts. Not included in cost calculation
Example
curl -X GET \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/cost" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"Response
{ "data": { "costs": [ { "total_cost": 1471.15, "unit": "AUD", "shift_ids": [ "1557a4b4-78b8-464f-bc7f-bf160d8285ed", "68187eff-fc05-4731-a6fe-5866941c4fee" ] }, { "total_cost": 761.54, "unit": "GBP", "shift_ids": [ "624cd1d5-9863-41a7-a7e0-b87074d85b11", "4afb4820-6e5a-4f24-b1ec-1add7db1ec34" ] } ], "open_shifts": [ { "shift_id": "ca2685b6-ed99-4df9-8736-1f5c493294a0", "start_time": "2025-11-06T09:00:00.000Z", "end_time": "2025-11-06T17:00:00.000Z" }, { "shift_id": "def126d9-b0d8-4c0b-9da6-91fa69a1e257", "start_time": "2025-11-07T09:00:00.000Z", "end_time": "2025-11-07T17:00:00.000Z" } ] }}Get roles (standalone HR) or tags (payroll-connected)
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rolesPath Parameters
ID of the organisation
Query Parameters
Current page index
11Number of items per page
20100Response Body
The roles available in this organisation
ID of the role
Name of the role
Current page index
11Number of items per page
20100Total items
Total pages
Example
curl -X GET \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/roles" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"Response
{ "data": { "items": [ { "id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "name": "Full time" } ], "page_index": 1, "item_per_page": 20, "total_items": 1, "total_pages": 1 }}Create a background job to handle scheduled shifts bulk creation.
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/bulk_createPath Parameters
ID of the organisation
Request Body
Start date time of the scheduled shifts
End date time of the scheduled shifts
Number of shifts to create, if this number is greater than the number of member_ids, the remaining shifts are created as open shifts
ID of the work site to create scheduled shifts for (position based rostering only)
ID of the position to create scheduled shifts for (position based rostering only)
ID of the location to create scheduled shifts for (cost centre based rostering only)
IDs of the members to create scheduled shifts for
IDs of the biddable members for the open shifts (only applicable if member_ids is not provided)
Breaks to create for the scheduled shifts
Notes for the scheduled shifts
Whether to publish the scheduled shifts immediately after creation
Response Body
The status of the scheduled shift bulk job. Use the Get Scheduled Shifts Bulk Job Status API to confirm successful shift creation.
ID of the scheduled shift bulk job
Status of the scheduled shift bulk job
Errors of the scheduled shift bulk job
Example
curl -X POST \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/bulk_create" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \ -H "Content-Type: application/json" \ -d '{ "start_date_time": "2025-11-06T09:00:00.000Z", "end_date_time": "2025-11-07T09:00:00.000Z", "number_of_shifts": 10, "member_ids": [ "6664453a-c118-48f1-897e-3df62d45bd84" ], "biddable_member_ids": [ "6664453a-c118-48f1-897e-3df62d45bd84" ], "breaks": [ { "start_time": "2025-11-06T12:00:00.000Z", "end_time": "2025-11-06T13:00:00.000Z" } ], "notes": "Bulk created shifts", "published": true }'Response
{ "data": { "id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "status": "completed", "job_errors": [] }}Publish up to 30 draft or unpublished scheduled shifts in a single request. Processing is asynchronous.
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/bulk_publishPath Parameters
ID of the organisation
Request Body
IDs of the scheduled shifts to publish (1 to 30 IDs)
Response Body
Returns 202 Accepted. The shifts are processed asynchronously in a background job.
When the status is completed, the result contains published_count, and optionally awaiting_confirmation_count, blocked_count and blocked_rule_name.
ID of the background job. Use it with the Get Scheduled Shifts Bulk Job Status API to poll for the result.
Example
curl -X POST \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/bulk_publish" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \ -H "Content-Type: application/json" \ -d '{ "ids": [ "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "7eebfc35-9264-53b0-a359-d52d0c7d866f" ] }'Response
{ "data": { "job_id": "bulk_publish_6ddbfb24-8153-42a9-9248-c41c9b6c755e" }}Unpublish up to 30 published (or awaiting confirmation) scheduled shifts in a single request. Processing is asynchronous.
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/bulk_unpublishPath Parameters
ID of the organisation
Request Body
IDs of the scheduled shifts to unpublish (1 to 30 IDs)
Response Body
Returns 202 Accepted. The shifts are processed asynchronously in a background job.
If any shift cannot be unpublished (e.g. it is not currently published), the job status becomes failed with the reason in job_errors.
ID of the background job. Use it with the Get Scheduled Shifts Bulk Job Status API to poll for the result.
Example
curl -X POST \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/bulk_unpublish" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \ -H "Content-Type: application/json" \ -d '{ "ids": [ "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "7eebfc35-9264-53b0-a359-d52d0c7d866f" ] }'Response
{ "data": { "job_id": "bulk_unpublish_6ddbfb24-8153-42a9-9248-c41c9b6c755e" }}Soft-delete up to 30 draft or unpublished scheduled shifts in a single request. Processing is asynchronous.
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/bulk_destroyPath Parameters
ID of the organisation
Request Body
IDs of the scheduled shifts to delete (1 to 30 IDs)
Response Body
Returns 202 Accepted. The shifts are processed asynchronously in a background job.
When the status is completed, the shifts have been soft-deleted. If the deletion fails, the status becomes failed with the reason in job_errors.
ID of the background job. Use it with the Get Scheduled Shifts Bulk Job Status API to poll for the result.
Example
curl -X POST \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/bulk_destroy" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \ -H "Content-Type: application/json" \ -d '{ "ids": [ "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "7eebfc35-9264-53b0-a359-d52d0c7d866f" ] }'Response
{ "data": { "job_id": "bulk_destroy_6ddbfb24-8153-42a9-9248-c41c9b6c755e" }}Get the status of a scheduled shift bulk job by its job id. The job can be a bulk create, bulk publish, bulk unpublish or bulk delete job, using the job_id returned by the corresponding endpoint.
For bulk publish jobs, the result may include extra fields such as published_count, awaiting_confirmation_count, blocked_count and blocked_rule_name.
https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/job_status/:job_idPath Parameters
ID of the organisation
ID of the scheduled shift bulk job
Response Body
The status of the scheduled shift bulk job
ID of the scheduled shift bulk job
Status of the scheduled shift bulk job
Errors of the scheduled shift bulk job
Example
curl -X GET \ "https://api.employmenthero.com/api/v1/organisations/:organisation_id/rostered_shifts/job_status/:job_id" \ -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"Response
{ "data": { "id": "6ddbfb24-8153-42a9-9248-c41c9b6c755e", "status": "completed", "job_errors": [] }}