API tabulí
Tabule je společná kreslicí plocha v rámci relace (na pozadí Excalidraw). Když ji operátor sejme, platforma zachytí jak vykreslený PNG, tak kanonický JSON prvků Excalidraw, zahashované dohromady — aby auditní řetězec mohl prokázat, že tvary, které jste viděli na obrazovce, jsou tytéž, které auditor uvidí později.
Zachycení tabule je jen řádek důkazu s kind=whiteboard. Vyhrazený endpoint níže je pohodlný filtr — použijte ho, když vás zajímají pouze tabule; API důkazů použijte, když chcete všechny artefakty najednou.
Výpis tabulí relace
GET /api/v1/public/sessions/{session_id}/whiteboards — Oprávnění whiteboards:read
curl "https://app.nexbasira.com/api/v1/public/sessions/0c8f.../whiteboards?limit=25" \
-H "Authorization: Bearer nb_sec_..." Vrací kurzorem stránkované řádky důkazů druhu kind=whiteboard.
{
"data": [
{
"id": "ev-wb1...",
"session": "0c8f...",
"kind": "whiteboard",
"status": "ready",
"mime": "image/png",
"byte_size": 42178,
"sha256": "8e2c01...",
"captured_at": "2026-05-23T10:18:44Z",
"created_at": "2026-05-23T10:18:44Z",
"completed_at":"2026-05-23T10:18:45Z"
}
],
"has_more": false,
"next_cursor": null
} Stahování + ověřování
Stejné jako u jakéhokoli jiného řádku důkazu — načtěte podepsanou URL z endpointu stažení důkazu, zahashujte bajty pomocí SHA-256, porovnejte s vráceným sha256:
curl "https://app.nexbasira.com/api/v1/public/evidence/ev-wb1.../download" \
-H "Authorization: Bearer nb_sec_..." JSON prvků Excalidraw
U každého řádku tabule pole integrity_jsonb.whiteboard_state ukládá kanonickou scénu Excalidraw, která vytvořila PNG. Kombinovaný sha256 ukotví PNG i JSON dohromady, takže pozdější opětovné vykreslení JSON dá bajtově identické PNG. JSON záměrně není ve veřejné podobě pro čtení — vyžádejte si /download URL pro daný řádek, abyste načetli surový .png, a použijte endpoint ověření auditu na straně SPA, když potřebujete JSON pro důkazy opětovného vykreslení.
Časté chyby
| Stav | Kód | Kdy |
|---|---|---|
| 403 | permission_denied | Přihlašovacím údajům chybí whiteboards:read. |
| 404 | not_found | Relace v organizaci přihlašovacích údajů neexistuje. |