Skip to main content

Staff Tools

Manage staff members, create and update shifts, view schedules, perform bulk shift operations, and ask staff when they can work.

Required scope: staff:read for read tools, staff:write for write tools

Tools Overviewโ€‹

ToolDescriptionRead-only?
list_staffList staff membersYes
get_staffGet staff member detailsYes
get_staff_scheduleGet staff shifts for a dateYes
get_shift_historyView the audit trail for a shiftYes
create_staffCreate a new staff memberNo
update_staffUpdate a staff memberNo
create_staff_shiftCreate a new shiftNo
update_staff_shiftUpdate an existing shiftNo
delete_staff_shiftDelete a shiftNo
repeat_staff_shiftCopy a shift onto one or more target datesNo
move_staff_shiftMove a shift to a new date, time, or staff memberNo
bulk_delete_shiftsDelete every shift within a date rangeNo
bulk_update_shiftsChange start/end time on every shift in a date rangeNo
mark_shifts_openClear staff assignments and mark shifts as openNo
get_staff_availabilityGet when a staff member can work, and their days off waiting for an OKYes
set_staff_availabilitySet a staff member's usual week, specific dates, or bothNo
send_staff_availability_linkAsk one or more staff members for their availabilityNo
get_training_progressWho has finished their training, and each person's next lessonYes
get_role_trainingThe lessons each job role gets, and how many people finishedYes
change_role_trainingAdd or remove a job role's lessons, or go back to Dash's picksNo

list_staffโ€‹

List staff members.

Parametersโ€‹

NameTypeRequiredDescription
searchstringNoSearch by name
limitintegerNoNumber of results (default 10)

get_staffโ€‹

Get staff member details.

Parametersโ€‹

NameTypeRequiredDescription
staff_idintegerYesThe staff ID

get_staff_scheduleโ€‹

Get staff shifts for a date, optionally filtered by staff member.

Parametersโ€‹

NameTypeRequiredDescription
datestringNoDate to get shifts for
staff_idintegerNoFilter by specific staff member
staff_searchstringNoSearch by staff name

get_shift_historyโ€‹

View the audit trail for a shift: who created it, every edit, and status changes.

Parametersโ€‹

NameTypeRequiredDescription
shift_idintegerYesThe shift ID

Response Fieldsโ€‹

Returns shift_id and a logs array. Each log entry includes the user who made the change, the field(s) changed, old and new values, and a timestamp.


create_staffโ€‹

Create a new staff member.

Parametersโ€‹

NameTypeRequiredDescription
first_namestringYesFirst name
last_namestringYesLast name
emailstringNoEmail address
phonestringNoPhone number
employment_typestringNoEmployment type: full_time, part_time, casual, contractor
user_confirmedbooleanYesMust be true to create

update_staffโ€‹

Update a staff member.

Parametersโ€‹

NameTypeRequiredDescription
staff_idintegerYesThe staff member ID
first_namestringNoNew first name
last_namestringNoNew last name
emailstringNoNew email
phonestringNoNew phone
statusstringNoNew status: active, inactive
user_confirmedbooleanYesMust be true to update

create_staff_shiftโ€‹

Create a new staff shift.

Parametersโ€‹

NameTypeRequiredDescription
staff_idintegerYesThe staff member ID
shift_datestringYesDate of the shift (YYYY-MM-DD)
start_timestringYesShift start time (HH:MM, 24-hour format)
end_timestringYesShift end time (HH:MM, 24-hour format)
location_idintegerNoLocation ID
break_typestringNoBreak type: Meal Break, Rest Break, Other
break_timestringNoBreak duration: 15 min, 30 min, 45 min, 1 hour
break_paymentstringNoBreak payment: Paid, Unpaid
notesstringNoShift notes
user_confirmedbooleanYesMust be true to create

update_staff_shiftโ€‹

Update an existing staff shift.

Parametersโ€‹

NameTypeRequiredDescription
shift_idintegerYesThe shift ID
start_timestringNoNew start time (HH:MM, 24-hour format)
end_timestringNoNew end time (HH:MM, 24-hour format)
break_typestringNoBreak type: Meal Break, Rest Break, Other
break_timestringNoBreak duration: 15 min, 30 min, 45 min, 1 hour
break_paymentstringNoBreak payment: Paid, Unpaid
remove_breakbooleanNoSet to true to remove the break
notesstringNoUpdated notes
user_confirmedbooleanYesMust be true to update

delete_staff_shiftโ€‹

Delete a staff shift.

Parametersโ€‹

NameTypeRequiredDescription
shift_idintegerYesThe shift ID to delete
user_confirmedbooleanYesMust be true to delete

repeat_staff_shiftโ€‹

Copy a shift onto one or more target dates, keeping the same staff member and times.

Parametersโ€‹

NameTypeRequiredDescription
shift_idintegerYesThe shift ID to repeat
datesarray of stringsYesTarget dates in YYYY-MM-DD format

Response Fieldsโ€‹

Returns source_shift_id, created_shift_ids (array of new shift IDs), and count.


move_staff_shiftโ€‹

Move a shift to a new date, time, or staff member โ€” the drag-and-drop equivalent.

Parametersโ€‹

NameTypeRequiredDescription
shift_idintegerYesThe shift ID to move
shift_datestringYesNew shift date (YYYY-MM-DD)
start_timestringYesNew start time (HH:MM)
end_timestringYesNew end time (HH:MM)
staff_idintegerNoNew staff ID. Omit to leave the assignment unchanged or to make the shift open.

Response Fieldsโ€‹

Returns success and the updated shift object including staff and location.


bulk_delete_shiftsโ€‹

Delete every shift within a date range. This is destructive and requires explicit user confirmation.

Parametersโ€‹

NameTypeRequiredDescription
start_datestringYesStart of range (YYYY-MM-DD)
end_datestringYesEnd of range (YYYY-MM-DD)
user_confirmedbooleanYesMust be true โ€” user must confirm deletion

Response Fieldsโ€‹

Returns success and deleted_count.


bulk_update_shiftsโ€‹

Change start_time or end_time on every shift within a date range. At least one of new_start_time or new_end_time must be provided.

Parametersโ€‹

NameTypeRequiredDescription
start_datestringYesStart of range (YYYY-MM-DD)
end_datestringYesEnd of range (YYYY-MM-DD)
new_start_timestringNoNew start time (HH:MM). Required if new_end_time not given.
new_end_timestringNoNew end time (HH:MM). Required if new_start_time not given.
only_unpublishedbooleanNoDefault true โ€” only update unpublished/draft shifts.

Response Fieldsโ€‹

Returns success and updated_count.


mark_shifts_openโ€‹

Clear the staff assignment on every shift within a date range and mark them as OPEN.

Parametersโ€‹

NameTypeRequiredDescription
start_datestringYesStart of range (YYYY-MM-DD)
end_datestringYesEnd of range (YYYY-MM-DD)

Response Fieldsโ€‹

Returns success and affected_count.


get_staff_availabilityโ€‹

Get a staff member's usual week, their answers for upcoming dates, and any days off they asked for that are still waiting for an OK.

Parametersโ€‹

NameTypeRequiredDescription
staff_idintegerYesThe staff ID

Response Fieldsโ€‹

Returns staff_id, name, and the availability object (week, set_by, dates), plus time_off_waiting_for_ok: a list of time_off_id, dates and reason for each pending day-off request.


set_staff_availabilityโ€‹

Set a staff member's usual week, their answers for specific dates, or both. Days left out of week keep their current hours. Same rules as Update Staff Availability.

Parametersโ€‹

NameTypeRequiredDescription
staff_idintegerYesThe staff ID
weekobjectNoKeyed by day, monday to sunday. Each day takes on (boolean), start and end (HH:MM, 24-hour).
datesarrayNoRows of date (YYYY-MM-DD, required), on, start and end. on: false means they can't work that date.

Response Fieldsโ€‹

Returns success, a message, and the updated availability object.


Ask one or more staff members when they can work. Each gets their own link by email and, where your account has texting set up, by text. Same rules as Ask Staff for Availability.

Parametersโ€‹

NameTypeRequiredDescription
staff_idsarray of integersYesThe staff IDs to ask
kindstringNoweekly (default) or dates
from_datestringFor datesFirst date to ask about (YYYY-MM-DD)
to_datestringFor datesLast date to ask about (YYYY-MM-DD), three months at most after from_date
reply_bystringNoDate to answer by (YYYY-MM-DD). Anyone who has not answered gets one reminder the day before.
emailbooleanNoSend by email. Default true.
textbooleanNoSend by text. Default true.

Response Fieldsโ€‹

Returns success, a message such as "Sent to 6 people.", request_id, sent, and not_reached (names nothing could be sent to).



get_training_progressโ€‹

How far each active staff member is with their training. The numbers match the Staff list's Training column and Team training.

Parametersโ€‹

NameTypeRequiredDescription
staff_idintegerNoOne staff member. Leave out for everyone

Each person has a status: done, in_progress, not_started, no_login (they cannot log in yet, so they cannot start) or none. See Training progress for the full shape.


get_role_trainingโ€‹

Every job role plus "Everyone else" (staff with no job role): its lessons in order with their ids, picked_by (dash or owner), people and finished. No parameters.


change_role_trainingโ€‹

Change the lessons a job role gets. Everyone with the role, including new hires, gets the new list. Lessons people already finished stay finished. Needs the staff:write scope.

Parametersโ€‹

NameTypeRequiredDescription
rolestringYesThe job role's name, or Everyone else
addstring[]NoLesson ids or exact titles to add at the end
removestring[]NoLesson ids or exact titles to take off
use_dash_picksbooleanNotrue replaces the list with Dash's picks again

Once changed, the role reads picked_by: owner and Dash no longer replaces its list when the shop starts selling something new.