Skip to content

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

http
GET /api/events/export
Authorization: Bearer <session-token>
X-API-Version: v1
QueryDefaultNotes
formatjsonljsonl (NDJSON, one event per line) or json (array)
serviceExact service filter
typeExact event type (e.g. deploy.succeeded)
changeIdExact Change id
from / toRFC3339 or unix seconds (inclusive)
limit50000Hard 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

bash
# 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.json

Response 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).

EndpointContents
GET /api/eventsSame filters, JSON array for UI (no attachment headers)
GET /api/audit-events/exportOrg 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:

bash
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.

Evitrus — observability for auditability