What Control does
Control owns the operational picture.- Calls come in and are recorded by hand. A call is converted into a new incident, attached to an existing one, or resolved with no incident.
- Incidents are created, edited, closed and reopened.
- Units are dispatched to incidents and released from them.
- Control can also create and edit units, set any unit’s status, and change its crew.
cad.view. Each kind of change needs a second permission:
What a crew does
A crew member manages their own presence, and nothing else.- Book on to start a unit, or join one that is already on duty.
- Change status within what the unit’s situation allows.
- Book off to leave.
- Read their current unit, which includes the incident it has been sent to.
How a dispatch reaches a crew
There is no push channel. A dispatch is a change of state that both sides read.1
Control assigns
POST /api/cad/incidents/{id}/assign with the unit’s ID and version. The unit becomes ASSIGNED.2
The crew sees it
The crew’s client polls
GET /api/cad/me/unit. The unit now has status: "ASSIGNED" and incident filled in.3
The crew responds
POST /api/cad/me/unit/status with EN_ROUTE, then ON_SCENE.4
Control releases
POST /api/cad/incidents/{id}/remove, or the incident is closed. The unit returns to AVAILABLE.History
Every CAD change writes an event to an append-only history, together with an audit entry, in the same transaction as the change.GET /api/cad/events reads it, for one incident, one unit, or everything. Events are immutable: the database rejects updates and deletes.
Nothing in CAD is deleted. Incidents are closed, units go off duty, and crew memberships end.
What CAD does not do yet
- It does not ingest calls from ER:LC. Calls are typed in.
- It has no map, locations are free text, and it does not suggest the nearest unit.
- It does not link incidents to PNC people or vehicles.