PurrOSDocs

Scheduling & Forecasting

Demand drivers, forecasts, staffing rules and needs, shifts, publishing, swaps and availability.

For how this area works day to day, see the Scheduling & forecasting guide.

Webhook events: forecast.updated, schedule.published, shift.changed, shift.swap_requested, shift.swap_approved, open_shift.posted. See Webhooks.

All paths are relative to /api/v1. Key is the scope an integration key needs, People the permission a signed-in person or personal key needs, and Feature the feature switch the endpoint belongs to. See how to read this reference.

  • GET/availability

    List availabilitys

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • POST/availability

    Create an availability

    Keyscheduling:write
    Peopleschedules.manage
    Featurescheduling
  • GET/availability/{id}

    Get an availability

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • PATCH/availability/{id}

    Update an availability (partial)

    Keyscheduling:write
    Peopleschedules.manage
    Featurescheduling
  • DELETE/availability/{id}

    Archive an availability

    Keyscheduling:write
    Peopleschedules.manage
    Featurescheduling
  • POST/demand-drivers

    Send demand drivers (appointments, foot traffic, orders…)

    Keyscheduling:write
    Peoplenot allowed
    Featurescheduling
  • GET/forecasts

    Forecast a demand driver

    Keyscheduling:read
    Peopleforecasts.read
    Featurescheduling.forecasting
  • POST/forecasts/adjustments

    Adjust a day's forecast by a percentage

    Keyscheduling:write
    Peopleforecasts.manage
    Featurescheduling.forecasting
  • GET/schedules

    A location's schedule with hours and estimated cost

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • POST/schedules:publish

    Publish draft shifts for a location and period

    Keyscheduling:write
    Peopleschedules.publish
    Featurescheduling
  • GET/shift-swaps

    List shift swap requests

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling.shift_swaps
  • POST/shift-swaps

    Request a shift swap

    Keyscheduling:write
    Peopleschedules.manage
    Featurescheduling.shift_swaps
  • POST/shift-swaps/{id}:approve

    Approve a swap (reassigns the shift)

    Keyscheduling:write
    Peopleshift_swaps.approve
    Featurescheduling.shift_swaps
  • POST/shift-swaps/{id}:reject

    Reject a swap

    Keyscheduling:write
    Peopleshift_swaps.approve
    Featurescheduling.shift_swaps
  • GET/shifts

    List shifts

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • POST/shifts

    Create a shift

    Keyscheduling:write
    Peopleschedules.manage
    Featurescheduling
  • GET/shifts/external/{externalId}

    Get a shift by external ID

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • PUT/shifts/external/{externalId}

    Create or replace a shift by external ID

    Keyscheduling:write
    Peopleschedules.manage
    Featurescheduling
  • GET/shifts/{id}

    Get a shift

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • PATCH/shifts/{id}

    Update a shift (partial)

    Keyscheduling:write
    Peopleschedules.manage
    Featurescheduling
  • POST/shifts/{id}:claim

    Assign an open shift to an employee

    Keyscheduling:write
    Peopleschedules.manage
    Featurescheduling.open_shifts
  • GET/staffing-needs

    Staff needed vs scheduled, hour by hour

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • GET/staffing-rules

    List staffing rules

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • POST/staffing-rules

    Create a staffing rule

    Keyscheduling:write
    Peoplestaffing_rules.manage
    Featurescheduling
  • GET/staffing-rules/{id}

    Get a staffing rule

    Keyscheduling:read
    Peopleschedules.read
    Featurescheduling
  • PATCH/staffing-rules/{id}

    Update a staffing rule (partial)

    Keyscheduling:write
    Peoplestaffing_rules.manage
    Featurescheduling
  • DELETE/staffing-rules/{id}

    Archive a staffing rule

    Keyscheduling:write
    Peoplestaffing_rules.manage
    Featurescheduling