# Crewli API Contract Base path: `/api/v1/` Auth: Bearer token (Sanctum) ## Auth - `POST /auth/login` - `POST /auth/logout` - `GET /auth/me` ## Organisations - `GET /organisations` — list (super admin) - `POST /organisations` — create - `GET /organisations/{org}` — show - `PUT /organisations/{org}` — update - `GET /organisations/{org}/members` — members - `POST /organisations/{org}/invite` — invite user ## Events - `GET /organisations/{org}/events` - `POST /organisations/{org}/events` - `GET /organisations/{org}/events/{event}` - `PUT /organisations/{org}/events/{event}` ## Crowd Types - `GET /organisations/{org}/crowd-types` - `POST /organisations/{org}/crowd-types` - `PUT /organisations/{org}/crowd-types/{type}` - `DELETE /organisations/{org}/crowd-types/{type}` ## Companies - `GET /organisations/{org}/companies` - `POST /organisations/{org}/companies` - `PUT /organisations/{org}/companies/{company}` - `DELETE /organisations/{org}/companies/{company}` ## Festival Sections - `GET /events/{event}/sections` - `POST /events/{event}/sections` - `PUT /events/{event}/sections/{section}` - `DELETE /events/{event}/sections/{section}` - `POST /events/{event}/sections/reorder` ## Time Slots - `GET /events/{event}/time-slots` - `POST /events/{event}/time-slots` - `PUT /events/{event}/time-slots/{timeSlot}` - `DELETE /events/{event}/time-slots/{timeSlot}` ## Shifts - `GET /events/{event}/sections/{section}/shifts` - `POST /events/{event}/sections/{section}/shifts` - `PUT /events/{event}/sections/{section}/shifts/{shift}` - `DELETE /events/{event}/sections/{section}/shifts/{shift}` - `POST /events/{event}/sections/{section}/shifts/{shift}/assign` - `POST /events/{event}/sections/{section}/shifts/{shift}/claim` ## Persons - `GET /events/{event}/persons` - `POST /events/{event}/persons` - `GET /events/{event}/persons/{person}` - `PUT /events/{event}/persons/{person}` - `POST /events/{event}/persons/{person}/approve` - `DELETE /events/{event}/persons/{person}` ## Crowd Lists - `GET /events/{event}/crowd-lists` - `POST /events/{event}/crowd-lists` - `PUT /events/{event}/crowd-lists/{list}` - `DELETE /events/{event}/crowd-lists/{list}` - `POST /events/{event}/crowd-lists/{list}/persons` - `DELETE /events/{event}/crowd-lists/{list}/persons/{person}` ## Locations - `GET /events/{event}/locations` - `POST /events/{event}/locations` - `PUT /events/{event}/locations/{location}` - `DELETE /events/{event}/locations/{location}` _(Extend this contract per module as endpoints are implemented.)_