Sentinel API v1

From your first API call to production

Booking-driven missions

Calendar API: bookings drive missions

Your booking system pushes signed JSON events to Sentinel. During an active window, cameras mapped to the space automatically use that event’s mission.

1. Map the space

A camera config’s spaceUuid must exactly equal the event’s space_uuid. Multiple cameras sharing a space switch together.

2. Push a signed event

POST /api/enterprise/calendar/events
Content-Type: application/json
X-Sentinel-Timestamp: 1751990400
X-Sentinel-Signature: sha256=<HMAC-SHA256(secret, timestamp + "." + raw_body)>
{
  "events": [
    {
      "id": "booking-001",
      "space_uuid": "room-studio-a",
      "start": "2026-09-28T21:00:00+08:00",
      "end": "2026-09-28T22:00:00+08:00",
      "title": "Private booking",
      "kind": "one_to_one",
      "preset_id": "elder_fall_detect"
    }
  ]
}

Events are accepted only after a calendar API secret is configured. The signature includes a timestamp; requests outside the five-minute window are rejected to reduce replay risk.

Fields and priority

FieldPurpose
idStable unique key; re-sending the ID updates the event.
space_uuidMaps to camera space.
start / endTimezone-aware ISO timestamps; end must be after start.
prompt / preset_idMission for the booking; custom prompt wins.
Priority: event prompt → event preset_id → space default mission → the camera’s original mission. Overlapping bookings resolve to the latest start.

3. Reconcile and delete

GET /api/enterprise/calendar/events?space_uuid=room-studio-a&active=1
DELETE /api/enterprise/calendar/events/booking-001