Data portability & exit
Evitrus stores Evidence Events in a tenant-scoped, append-only event store. Data Export takes those events out. It is not Search (Changelog / evidence Audit log), not Evaluate (Control Results), and not the org activity log.
You can pull events at any time — no proprietary lock-in beyond the documented Evidence Event JSON shape (v1).
v1 packages are events only (JSONL + manifest). Changes, correlation overrides, and join explanations are views; they can be rebuilt from the events.
Bulk export Evidence Events
GET /api/events/export
Authorization: Bearer <session-token>
X-API-Version: v1| Query | Default | Notes |
|---|---|---|
format | jsonl | jsonl (NDJSON, one event per line) or json (array) |
service | — | Exact service filter |
type | — | Exact event type (e.g. deploy.succeeded) |
changeId | — | Exact Change id |
from / to | — | RFC3339 or unix seconds (inclusive) |
limit | 50000 | Hard cap 50 000 per request |
Requires permission export.run. Until that key ships, the running API authorizes this download with changes.view (admin and member).
A manifest accompanies a full export (intent): schema version v1, tenant id, time window, event count, and that integrity fields (contentHash, signature, receivedAt) are included as ingested. Correlation is omitted.
Examples
# Full dump as JSONL (pipe-friendly)
curl -fsS -H "Authorization: Bearer $TOKEN" -H "X-API-Version: v1" \
"https://api.evitrus.io/events/export" -o evidence-events.jsonl
# JSON array for a single service window
curl -fsS -H "Authorization: Bearer $TOKEN" -H "X-API-Version: v1" \
"https://api.evitrus.io/events/export?format=json&service=payments-api&from=2026-01-01T00:00:00Z" \
-o payments.jsonResponse headers include Content-Disposition: attachment; filename="evidence-events.jsonl" (or .json) so browsers download the file.
For tenants larger than the per-request cap, page with from/to windows (or raise successive from to the last exported timestamp).
Related exports
| Endpoint | Contents |
|---|---|
GET /api/events | Same filters, JSON array for UI (no attachment headers) |
GET /api/audit-events/export | Org activity audit log (CSV/JSON) — not the evidence Audit log and not Evidence Events |
Async dump to customer S3
Not shipped yet. Planned: an async job that writes JSONL to a customer-owned bucket (cross-account role). Until then, use the sync export above from CI or a scheduled job that uploads the file yourself.
Integrity
Each event includes contentHash (sha256:…) of the sealed body and an ingest signature (ed25519:…) over id + hash, plus operational receivedAt. Exports preserve these fields. Verify a single event with:
curl -fsS -H "Authorization: Bearer $TOKEN" -H "X-API-Version: v1" \
"https://api.evitrus.io/events/$EVENT_ID/integrity"
# → { "id", "contentHash", "valid", "legacy" }Event rows are append-only; org Change-assignment overlays are separate and not part of the hash.
Retention
Evidence Events are retained per plan (see Organization → Usage): free tier is short; paid tiers keep two years by default. Export before a plan downgrade if you need a longer offline copy.
Residency & CMEK
Managed cloud data is hosted in the EU. Customer-managed keys are not in MVP — see Security & residency.
Scale
Plan quotas, export caps, and latency targets: Scale & SLOs.