Evidence-API
En Evidence-rad är en artefakt som fångats under en session — en skärmdump, en whiteboard, ett videoklipp, en inspelning eller ett uppladdat dokument. Varje rad bär en sha256 + byte_size + mime så att integritetsverifieringskedjan kan bevisa att bytena inte manipulerades mellan infångning och granskning.
Evidence-objektet
{
"id": "ev-7f3a...",
"session": "0c8f4d2e-1a3b-4c5d-9e7f-1234567890ab",
"kind": "snapshot",
"status": "ready",
"mime": "image/jpeg",
"byte_size": 184523,
"sha256": "f9cc12fda76c30dcc9bee627baed6c9e8fe11b813313de70b1463f9f73e5e418",
"captured_at": "2026-05-23T10:14:02.481Z",
"created_at": "2026-05-23T10:14:02.917Z",
"completed_at": "2026-05-23T10:14:03.211Z"
} Typer
| Typ | Fångad av | Anteckningar |
|---|---|---|
snapshot | Operatör eller fältsida | Enstaka stillbild (JPEG). Den vanligaste typen. |
whiteboard | Operatör | Excalidraw-export — PNG + kanonisk JSON. Se Whiteboards. |
clip | Operatör | Kort MP4-klipp från livesessionen — används för att fånga rörelse som fältanvändaren visar. |
recording | System | Fullständig sessionsinspelning. Efterbearbetas till libx264 medium / crf20 efter att sessionen avslutats. |
document | Operatör | Filbilaga från chatten i sessionen (PDF:er, foton osv.). Grunden för PDF-för-signering. |
Status
| Status | Betydelse |
|---|---|
pending | Raden skapad; bytena ännu inte i objektlagringen. |
uploading | Flerdelad uppladdning pågår. |
ready | Bytena är persistenta; sha256 + byte_size är slutförda. Endast ready -rader går att ladda ner. |
failed | Infångning eller uppladdning avbröts. completed_at är null. |
Lista sessionsbevis
GET /api/v1/public/sessions/{session_id}/evidence — scope evidence:read
curl "https://app.nexbasira.com/api/v1/public/sessions/0c8f.../evidence?kind=snapshot&limit=50" \
-H "Authorization: Bearer nb_sec_..." Frågeparametrar
| Param | Typ | Anteckningar |
|---|---|---|
kind | string | Filter — en av snapshot, whiteboard, clip, recording, document. |
limit | int | Max 100. Faller tillbaka på 25. |
cursor | opaque | Från föregående svars next_cursor. |
Hämta en signerad nedladdnings-URL
GET /api/v1/public/evidence/{evidence_id}/download — scope evidence:read
Returnerar en kortlivad förhandssignerad URL som kunden hämtar de råa bytena från. URL:en pekar direkt på objektlagringens backend så nedladdningar går förbi våra appservrar — inga avgifter för bandbreddsutgång i din ände av det publika API:et.
curl "https://app.nexbasira.com/api/v1/public/evidence/ev-7f3a.../download" \
-H "Authorization: Bearer nb_sec_..." {
"url": "https://s3.eu-central-1.amazonaws.com/nb-prod-evidence/orgs/.../snapshot.jpg?X-Amz-Algorithm=...",
"expires_in_seconds": 900,
"sha256": "f9cc12fda76c30dcc9bee627baed6c9e8fe11b813313de70b1463f9f73e5e418",
"byte_size": 184523,
"mime": "image/jpeg",
"kind": "snapshot"
} Anropa igen när URL:en löper ut — inget hastighetsgränsstraff för upprepade skapanden. Hasha bytena med SHA-256 efter nedladdning och jämför med den returnerade sha256 för att verifiera att filen är intakt hela vägen.
# integrity check — Python
import hashlib, requests
r = requests.get(presigned["url"]); r.raise_for_status()
assert hashlib.sha256(r.content).hexdigest() == presigned["sha256"] Vanliga fel
| Status | Kod | När |
|---|---|---|
| 403 | permission_denied | Behörigheten saknar evidence:read. |
| 404 | not_found | Evidence-raden finns inte i behörighetens organisation. |
| 409 | evidence_not_ready | Nedladdning begärd på en rad vars status inte är ready. |
| 410 | retention_expired | Organisationens lagringspolicy har passerat radens åldersgräns; bytena har rensats från objektlagringen. |
Anteckningar
- Ingen POST/PATCH/DELETE. Bevis fångas på klientsidan (operatör + fält-SPA) under sessionen. Det publika API:et är skrivskyddat på denna resurs.
- Lagring. Varje organisation konfigurerar ett lagringsfönster (som standard 7 år för eIDAS-anpassade driftsättningar). Efter fönstret rensar objektlagringens livscykelregler bytena; raden kvarstår så att granskningskedjan inte bryts, men
/downloadreturnerar 410. - Förankrat i granskningskedjan. Varje
ready-rad bidrar med sin sha256 till hashkedjan per session, som förankras hos TSA:n vid sessionsslut. Kedjehuvudet + TSA-kvittot nås via SPA-sidans audit-verify-endpoint.