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
- Training:
POST /v1/readiness/snapshotswithworkRequirements - A downstream system POSTs the same snapshot to Planning:
POST /v1/eligibility/snapshots - Demand rows reference those work-requirement IDs via
eligibilityProfileId - 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.