Skip to main content

API Overview

Versioning

All endpoints live under /api/v1. Breaking changes increment to /api/v2. Additive changes (new fields, new endpoints) do not bump the version.

Base URL

https://{project}-api.{domain}/api/v1

For local development with Docker Compose:

http://localhost:8000/api/v1

Content Types

  • Requests: application/json (or multipart/form-data for uploads).
  • Responses: application/json.

Pagination

Cursor pagination on list endpoints:

GET /api/v1/attendances?limit=50&cursor=eyJpZCI6MTAwfQ

Response envelope:

{
"data": [ /* ... */ ],
"meta": {
"next_cursor": "eyJpZCI6MTUwfQ",
"limit": 50
}
}

Timestamps

  • All timestamps are ISO-8601 in UTC: 2026-04-23T09:05:12Z.
  • The Flutter and React clients render them in the unit's timezone.

Idempotency

Write endpoints accept an optional Idempotency-Key header. When present, the server dedupes requests with the same key within a 24-hour window.

Health

GET /up          →  200 "healthy"
GET /api/v1/ping → 200 { "now": "2026-04-23T09:05:12Z" }