Skip to content

Time Off / PTO Tools

See Time Off Requests workflow for the full step-by-step process.


setup_protected_projects

Create (or verify) the protected internal PTO, Sick, and Leave projects for the tenant. Owner only.

Console-only — not reachable from Slack; use the web console.

Writes to: 02. Projects (creates any of PTO, Sick, Leave that don't already exist)

Parameters: requesting_user_slack_id

Idempotent — safe to call again; existing protected projects are left untouched. Run once during tenant onboarding, before any time off tool is used — every time off tool errors if its project hasn't been created yet.


request_time_off

Submit a time off request. Creates a pending record and DMs all Managers and Owners. Time is not logged until approved.

Writes to: 10. Pending_PTO, 11. Unresolved_Items

Parameters:

ParamRequiredDescription
requesting_user_slack_idMust be the user making the request — self only
dateYYYY-MM-DD
time_off_type"PTO" | "Sick" | "Leave"
hoursDefaults to tenant's hours-per-day (usually 8)
notesReason for the request

Response: "Your PTO request for March 20 has been submitted. Your manager has been notified and will confirm."

Use request_time_off — not request_pto — for all new time off requests.


request_pto

Submit a PTO request directly (used by the console self-service /console/my-time-off page). Creates a pending record and DMs all Managers and Owners. Time is not logged until approved.

Parameters:

ParamRequiredDescription
requesting_user_slack_idMust be the user making the request — self only
dateYYYY-MM-DD
hoursHours to request. When omitted or blank, defaults to the tenant's standard working-day length (work_week.hours_per_day, default 8)
notesReason for the request

Response: { success: true, request_id, date, hours, status: "pending" }


update_time_off_request

Edit a pending PTO request — the date, hours, or notes.

Console-only — not reachable from Slack; use the web console.

Updates: 10. Pending_PTO

Parameters:

ParamRequiredDescription
requesting_user_slack_idMust be the person who made the request — self only
pending_id
dateYYYY-MM-DD
hoursPositive number
notes

Only the requester can edit their own request, and only while it's still pending — an already-approved or rejected request can't be changed here. The same minimum-notice rule request_pto enforces applies to a date change too.


cancel_time_off_request

Withdraw a pending PTO request before it's been acted on.

Console-only — not reachable from Slack; use the web console.

Deletes from: 10. Pending_PTO

Parameters: requesting_user_slack_id, pending_id

Only the requester can cancel their own request, and only while it's still pending.


approve_time_off

Approve a pending time off request. Logs the time entry and notifies the user via DM. Manager/Owner only.

Updates: 10. Pending_PTO (status → "approved") Writes to: 01. Time Entries (logs hours to Out of Office project)

Parameters:

ParamRequiredDescription
requesting_user_slack_id
request_idThe pending PTO record ID

get_my_time_off

View own time off history (pending, approved, rejected).

Reads from: 10. Pending_PTO

Parameters:

ParamDescription
requesting_user_slack_id
time_off_typeOptional filter: "PTO" | "Sick" | "Leave"
start_dateOptional range filter
end_dateOptional range filter

get_team_time_off

View team-wide Out of Office history across all users. Owner only.

Reads from: 01. Time Entries, 02. Projects, 03. Users

Parameters:

ParamDescription
requesting_user_slack_id
user_idOptional — filter to one user by internal ID
time_off_typeOptional filter: "PTO" | "Sick" | "Leave"
start_dateOptional range filter
end_dateOptional range filter

Each entry includes user_name so the Owner can see who took what time off.


list_pending_pto

All unresolved time off requests. Manager/Owner only.

Reads from: 10. Pending_PTO, 03. Users

Managers see requests for users on their projects. Owners see all.


log_sick_day

Log a sick day directly for a user. Does not require the request/approval flow. Manager/Owner only (Managers cannot log for themselves — only Owners can).

Writes to: 01. Time Entries, 11. Unresolved_Items (flags conflict if user had active allocations that day)

Parameters:

ParamRequiredDescription
requesting_user_slack_id
user_name or slack_user_id
dateDefaults to today
hoursDefaults to 8

Use case: When a team member is unexpectedly sick, a Manager can log it directly without a pending/approval cycle.


log_leave

Log leave (unpaid or extended) for a user over a date range. Automatically skips weekends and company holidays. Manager/Owner only.

Writes to: 01. Time Entries (one entry per working day), 11. Unresolved_Items

Parameters:

ParamRequiredDescription
requesting_user_slack_id
user_name or slack_user_id
start_dateYYYY-MM-DD
end_dateYYYY-MM-DD
hours_per_dayDefaults to 8
notes

set_pto_notice

Set the tenant's minimum PTO notice period, in weeks. Owner only.

Console-only — not reachable from Slack; use the web console.

Updates: tenant config (minimum_pto_notice_weeks)

Parameters:

ParamRequiredDescription
requesting_user_slack_id
minimum_pto_notice_weeksWhole number, 052

Unresolved items from time off

When a sick day or leave is logged, VERA automatically checks if the user had active allocations on the affected dates. If so, it creates an Unresolved Item flagging the conflict:

  • sick_conflict — user is sick on a day with active allocations
  • leave_conflict — leave logged over dates with active allocations
  • pto_conflict — PTO approved for a date with active allocations

Managers are shown these conflicts in morning summaries as 🔴 blocks and can resolve or dismiss them via resolve_item / dismiss_item.