Idempotency
Shift start, heartbeat, and stop require Idempotency-Key so network retries stay safe.
Header
Code samplehttp
Idempotency-Key: <unique-value>Behavior
- Missing key on start/heartbeat/stop →
400 invalid_request - Same key + same request fingerprint → original success body replayed
- Same key + different fingerprint →
409 conflict
Endpoints that require it
POST /v1/activity/shifts/startPOST /v1/activity/shifts/{shiftId}/heartbeatPOST /v1/activity/shifts/{shiftId}/stop
Read endpoints such as integration, staff profile, summaries, and leaderboard do not use idempotency keys.

