This is a stand-in for the VI-Stream API, so that developers can build their integration without a real streamer instance, a real recorder instance or a real interrogation room.
GET /openapi.json serves the identical OpenAPI document the real system generates.
| URL | What it is |
|---|---|
/openapi.json |
The document. Integrate against this one. |
/ |
Index: the rooms, the auth, some curls. |
Every route except /app/config wants the case-management API key as X-API-KEY, exactly as the
real streamer does. Default dummy-cm-api-key; a wrong or missing key answers 401.
Note for production: real keys are 256-bit random secrets, e.g.
sk_LMzJZrNds89LKkxBtILxupM2mMQLjDBMnRxeRZYyCno.
Every state a real room can report is available, so each possible situation can be reproduced :
| Room key | Always reports | Exercises |
|---|---|---|
room-free |
free |
the happy path |
room-busy |
busy |
409 — someone is being interrogated in there |
room-offline |
offline |
503 — its recorder is not connected |
room-maintenance |
maintenance |
503 — online, but not fit to record |
room-random-1 |
changes | a picker that must not assume a state is fixed |
room-random-2 |
changes | the same, out of step with the other one |
Any other room key answers 404.
The two random rooms change every 30 seconds and hold their value in between.
A successful handover returns a launchUrl — which the case management system opens in the officer's browser
(the "Start VEV" button). It is short-lived (15 minutes).
The officer-authentication step that sits in front of the launch in the real system is a placeholder there too right now.
# Load list of rooms
curl -H 'X-API-KEY: dummy-cm-api-key' https://vis.tmp.veeting.net/vi-api/v1/rooms
# Start an interrogation in an empty room
curl -X POST https://vis.tmp.veeting.net/vi-api/v1/interrogations \
-H 'X-API-KEY: dummy-cm-api-key' -H 'Content-Type: application/json' \
-d '{"roomKey":"room-free","case":{"caseId":"2026-001234"}}'
# 409 — the room is in use
curl -i -X POST https://vis.tmp.veeting.net/vi-api/v1/interrogations \
-H 'X-API-KEY: dummy-cm-api-key' -H 'Content-Type: application/json' \
-d '{"roomKey":"room-busy"}'
Real case data The
caseobject in the CURL above ({"caseId":"2026-001234"}) is a placeholder. This dummy accepts any data structure within thecase.