List all the rostered 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 rostered shifts to filter by
Location IDs of the rostered shifts to filter by
Member IDs of the rostered 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 rostered shifts current user can access
ID of the rostered shift
Shift start time
Shift end time
Status of the rostered shift
Notes for the rostered shift
Whether the shift is open
ID of the location where the shift is rostered
Name of the location where the shift is rostered
ID of the work site where the shift is rostered
Name of the work site where the shift is rostered
The status of the work site where the shift is rostered
ID of the position for which the shift is rostered
Name of the position for which the shift is rostered
The status of the position for which the shift is rostered
ID of the member rostered for the shift
Full name of the member rostered 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 rostered 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 rostered shift record
Response Body
The rostered shift record
ID of the rostered shift
Shift start time
Shift end time
Status of the rostered shift
Notes for the rostered shift
Whether the shift is open
ID of the location where the shift is rostered
Name of the location where the shift is rostered
ID of the work site where the shift is rostered
Name of the work site where the shift is rostered
The status of the work site where the shift is rostered
ID of the position for which the shift is rostered
Name of the position for which the shift is rostered
The status of the position for which the shift is rostered
ID of the member rostered for the shift
Full name of the member rostered 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 rostered 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 rostered shift costs for a given period of time.
Costs of the rostered 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 rostered 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 rostered shifts
End date time of the rostered 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 rostered shifts for (position based rostering only)
ID of the position to create rostered shifts for (position based rostering only)
ID of the location to create rostered shifts for (cost centre based rostering only)
IDs of the members to create rostered shifts for
IDs of the biddable members for the open shifts (only applicable if member_ids is not provided)
Breaks to create for the rostered shifts
Notes for the rostered shifts
Whether to publish the rostered shifts immediately after creation
Response Body
The status of the rostered shift bulk job. Use the Get Rostered Shifts Bulk Job Status API to confirm successful shift creation.
ID of the rostered shift bulk job
Status of the rostered shift bulk job
Errors of the rostered 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 rostered 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 rostered 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 Rostered 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) rostered 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 rostered 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 Rostered 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 rostered 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 rostered 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 Rostered 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 rostered 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 rostered shift bulk job
Response Body
The status of the rostered shift bulk job
ID of the rostered shift bulk job
Status of the rostered shift bulk job
Errors of the rostered 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": [] }}