Introduction

Planning

API-only service that answers: who should be assigned to what, and when?

It builds explainable workforce schedules from demand, availability, working rules, and eligibility snapshots from Training. It does not own training records or readiness rules.

The same solver covers construction (sites, trades, travel, equipment) and hospitality (stations, split-capacity shifts).

User types: admin, area-manager, manager, member (from Directory memberships on service planning). Garage roles on garage-crm map onto those types. Directory tokens omit actorType.

userId, locationId, brandId, and venueId are opaque ids from the calling site. Eligibility snapshots are posted by the caller. This service does not call HR or Training, and it does not own access roles.


How it fits with Training

  1. Training: POST /v1/readiness/snapshots with workRequirements
  2. A downstream system POSTs the same snapshot to Planning: POST /v1/eligibility/snapshots
  3. Demand rows reference those work-requirement IDs via eligibilityProfileId
  4. A planning run assigns people, lists unassigned demand, and explains gaps

Planning never calls Training directly.


Main areas

Catalog (locations, job_roles, users), demand (jobs, shifts), eligibility snapshots, planning runs (assignments, explanations, publish), and operations (coverage, utilisation, urgent-work).

See the Planning API reference.