API
Public API
De production API origin voor SDKs en publieke verificatie is
https://verify.attesto.eu. Tenant browser workflows staan
op https://dashboard.attesto.eu.
Kies de juiste API family
Attesto heeft meerdere publieke surfaces omdat evidence work op verschillende plekken gebeurt. Gebruik de SDK/API vanaf je server om evidence te maken, webhooks om lifecycle notifications te ontvangen, connectors om source-system observations vast te leggen en verifier endpoints wanneer een ander systeem evidence moet controleren voordat het daarop vertrouwt.
| Surface | Gebruik wanneer | Primary routes | Credential |
|---|---|---|---|
| v1 SDK Events | Je stable event logging, receipts, anchoring en exports nodig hebt. | /v1/sdk/events, /v1/sdk/events/batch, /v1/events/{id}/proof, /v1/exports/{id}/truth-package/verify | Tenant system key of tenant auth, afhankelijk van route. |
| v2 Proofstream | Je ordered streams, receipts, windows, checkpoints, witnesses, anchors en bundles nodig hebt. | /v2/streams, /v2/streams/{id}/events, /v2/checkpoints/{id} | Tenant system key voor server ingest; tenant session voor dashboard views. |
| Verifier API | Je evidence ontvangt en dit moet controleren voordat je erop vertrouwt. | /v2/verify, /v1/public/verify | Geen tenant cookie voor public proof objects. |
| Audit packs | Je een portable evidence bundle nodig hebt voor een auditor- of regulator workflow. | /v2/audit/packs, /v2/tenant/audit/packs | Tenant auth/system policy. |
| Connectors | Een extern source system evidence naar Attesto emit. | /v2/connectors/signed-webhooks/{id}/events, /v2/connectors/repository-webhooks/{id}/events | Connector-specific signed envelope. |
| Marketplace | Je public connector catalog, tenant installs, developer accounts, publisher billing of asset submission nodig hebt. | /v1/marketplace/items, /v1/marketplace/auth/*, /v1/marketplace/publisher/* | Public read-only, tenant session of marketplace developer session afhankelijk van route. |
| Identity en settings | Een tenant user inlogt, een invite accepteert of enterprise SSO configureert. | /v1/auth/discover, /v1/auth/external/start, /v1/settings/identity-providers | Tenant browser session en CSRF voor settings; short-lived login state voor SSO. |
| Public status | Je customer-safe component health, latency, uptime bars en incident state wilt. | /api/status, /v1/status | Public, secret-free status payload. |
Origins
| Origin | Doel |
|---|---|
https://verify.attesto.eu | Public API, health, signing public key, v1 proof verification, v2 Proofstream verification. |
https://dashboard.attesto.eu | Tenant dashboard, system registration, key reveal-once, exports, webhooks, connectors, billing. |
https://audit.attesto.eu | Auditor-facing portal voor invited external auditors. |
https://status.attesto.eu | Customer-safe service status API en status page. Het private admin control panel staat hier bewust niet op. |
Authentication
Server-side event ingest gebruikt een tenant system key in de
Authorization: Bearer header. Public verification routes
valideren aangeleverde proof objects en vereisen geen tenant cookies.
Tenant dashboard routes gebruiken de bestaande secure browser session
plus CSRF recovery voor mutating requests. Plaats geen system keys of
SSO client secrets in frontend bundles.
curl -X POST https://verify.attesto.eu/v1/sdk/events \
-H "Authorization: Bearer $ATTESTO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $ATTESTO_IDEMPOTENCY_KEY" \
--data-binary @event.json
Email-first authentication routes
Main tenant users loggen in via email discovery op
dashboard.attesto.eu. Attesto retourneert één aanbevolen
next step in plaats van alle providers tegelijk te tonen. Marketplace
developer accounts, admin staff auth en auditor auth blijven aparte
surfaces.
| Route | Doel | Security notes |
|---|---|---|
POST /v1/auth/discover | Accepteert een email en optionele invite token, en retourneert password, OAuth/OIDC, SAML, organization SSO of signup/trial als next step. | Expose geen provider wall of secret provider config. |
GET /v1/auth/providers | Retourneert veilige provider labels voor enabled login paths. | Geen client secrets of private metadata. |
POST /v1/auth/external/start | Maakt OAuth/OIDC state, nonce en PKCE data en retourneert daarna de redirect URL voor de discovered provider. | State is short-lived en single-use. |
GET /v1/auth/external/callback/{provider_id} | Verifieert de provider callback en geeft de bestaande tenant session cookies uit. | Issuer, audience, nonce, JWKS en verified email worden gecontroleerd. |
GET /v1/auth/saml/metadata/{provider_id} | Retourneert tenant-specific SAML SP metadata voor enterprise setup. | Veilig te delen met de tenant identity provider. |
POST /v1/auth/saml/acs/{provider_id} | Verwerkt signed SAML assertions. | Weigert unsigned, replayed, expired, wrong-audience en wrong-recipient assertions. |
POST /v1/auth/login, POST /v1/auth/signup | Password fallback en schone signup/trial creatie nadat discovery dat pad adviseert. | Password fallback blijft tenant-dashboard scoped; marketplace developer accounts zijn apart. |
GET /v1/auth/invite/{token} | Retourneert invite context voor de email-first acceptance flow. | Invite token wordt gevalideerd voordat identity wordt gelinkt. |
POST /v1/auth/accept-invite | Accepteert een invite met password setup of provider-based activation. | External linking vereist verified email en tenant match. |
POST /v1/auth/refresh, POST /v1/auth/logout, GET /v1/auth/csrf, GET /v1/auth/me | Session refresh, logout, CSRF recovery en current user identity. | Gebruik browser credentials; log nooit session cookies. |
Zie Tenant SSO voor de Entra ID, generic OIDC en SAML setup guide.
Source time en timezone policy
Attesto registreert wanneer het source system zegt dat een event
plaatsvond en wanneer Attesto het ontving. Event APIs vereisen
timezone-aware timestamps zoals 2026-06-07T12:00:00+02:00
of 2026-06-07T10:00:00Z. Tenant timezone is
configureerbaar; systems erven standaard de tenant timezone en kunnen
hun eigen source_timezone zetten wanneer de verbonden
bron in een andere jurisdiction draait.
| Field | Betekenis | Requirement |
|---|---|---|
occurred_at | Source-system event time. | Vereist voor Proofstream events en moet timezone of UTC offset bevatten. |
source_timezone | IANA timezone voor het geregistreerde source system. | Default vanuit tenant timezone; gebruik waarden zoals Europe/Amsterdam of Europe/Berlin. |
| Connector received time | Wanneer Attesto of Local Vault het source event ontving. | Wordt gezet door de receiving service, niet door untrusted frontend code. |
| Normalized UTC time | Canonical comparison time voor verification en ordering. | Server-side afgeleid terwijl source context bewaard blijft. |
Idempotency en replay behavior
Write routes accepteren Idempotency-Key. Dezelfde key met
hetzelfde canonical request herhalen retourneert het oorspronkelijke
result. Dezelfde key met een ander request herhalen faalt als conflict.
Dit beschermt connector retries en server-side job retries tegen
dubbele evidence.
| Case | Result |
|---|---|
| Same key, same request | Original response wordt replayed. |
| Same key, changed payload | 409 Conflict. |
| No key on write path | Request wordt geweigerd wanneer de route dedupe vereist. |
v1 event ingest
Gebruik v1 wanneer je de stable event audit trail en anchoring path nodig hebt. SDKs zetten defaults voor event type, status, retries en idempotency.
POST /v1/sdk/eventslogt één event.POST /v1/sdk/events/batchlogt tot 1000 events.GET /v1/events/{eventId}/proofretourneert anchored proof material voor een event.POST /v1/public/verifyverifieert een v1 proof object.POST /v1/exports/{exportId}/truth-package/verifylegt een backend-validatedtruth_package.verifiedevent vast nadat een verifier report bewijst dat het geëxporteerde package cryptografisch is gecontroleerd.
Tenant dashboard v1 APIs
Deze browser APIs voeden dashboard.attesto.eu. Muterende
calls gebruiken tenant session cookies en CSRF recovery. Gebruik
system keys en SDK routes voor server-side ingest; gebruik deze routes
voor tenant operators die hun workspace beheren.
| Route family | Doel | Credential |
|---|---|---|
GET /v1/dashboard | Retourneert de tenant dashboard summary voor de operator UI. | Tenant session. |
GET/POST /v1/systems, PATCH/DELETE /v1/systems/{system_id}, POST /v1/systems/{system_id}/rotate-key | Source systems registreren, source timezone policy bewaren en system keys eenmalig tonen of roteren. | Tenant session; writer role voor mutaties. |
GET /v1/events, GET /v1/events/{event_id}, GET /v1/events/{event_id}/proof | Tenant events en proof material inspecteren. | Tenant session. |
POST /v1/events/{event_id}/retrieve, GET /v1/events/{event_id}/retrieve/status | Archive retrieval voor archived event evidence starten en volgen. | Tenant session; writer role om retrieval te starten. |
GET/POST/DELETE /v1/exports, POST /v1/exports/{export_id}/download/prepare, GET /v1/exports/{export_id}/download?ticket=..., POST /v1/exports/{export_id}/truth-package/verify | Truth Package exports maken, downloaden, verwijderen en verificatie registreren. | Tenant session; writer role voor aanmaak, verwijdering en verificatie-registratie. |
GET/POST/PATCH/DELETE /v1/webhooks, POST /v1/webhooks/{webhook_id}/rotate-secret, GET /v1/webhooks/{webhook_id}/deliveries | Signed tenant webhooks beheren, de one-shot delivery secret roteren en delivery attempts inspecteren. | Tenant session; admin role voor webhook-mutaties. |
GET/POST/PATCH/DELETE /v1/users, POST /v1/users/{user_id}/resend-invite | Tenant users uitnodigen, invites opnieuw sturen, rollen/status bijwerken en toegang intrekken. | Tenant session; owner/admin role voor mutaties. |
GET/POST/PATCH/DELETE /v1/parties | External party records beheren die in tenant evidence workflows worden gebruikt. | Tenant session; admin role voor mutaties. |
GET /v1/packs, POST /v1/packs/{vertical_id}/install, DELETE /v1/packs/{vertical_id} | Tenant evidence packs listen, installeren en verwijderen zonder synthetische seeddata aan te maken. | Tenant session; admin role voor install/remove. |
GET /v1/billing/plan, POST /v1/billing/checkout, POST /v1/billing/portal | Het actieve plan lezen, Stripe Checkout starten voor Starter/Growth/Realtime abonnementen met 30-daagse trial, of de Stripe billing portal openen. | Tenant session; admin role voor checkout en portal sessions. |
GET/POST /v1/auditor-invites, POST /v1/auditor-invites/{access_id}/revoke | External auditor access verlenen, listen en intrekken voor de read-only audit portal. | Tenant session; admin role voor grant/revoke. |
Minimale event body:
{
"type": "ai.decision",
"status": "verified",
"occurred_at": "2026-06-07T12:00:00Z",
"source_ref": "case-2026-0001",
"payload": {
"model": "risk-classifier-v4",
"decision": "manual_review",
"policy_id": "policy-2026-01"
}
}
v2 Proofstream
Proofstream voegt append-only streams, signed receipts, windows, checkpoints, witness evidence, anchors, bundles en offline verification toe.
POST /v2/streamsmaakt een stream.POST /v2/streams/{streamId}/eventsvoegt één event toe en retourneert een signed receipt.POST /v2/streams/{streamId}/events/batchvoegt meerdere events toe met receipt results.GET /v2/streams/{streamId}/headretourneert de huidige append-only stream head.GET /v2/receipts/{eventId}retourneert de opgeslagen receipt.POST /v2/verify/receiptverifieert één receipt object direct.GET /v2/windows/{windowId}retourneert window evidence en inclusion material.GET /v2/checkpoints/{checkpointId}retourneert checkpoint evidence.GET /v2/checkpoints/{checkpointId}/consistency?from=...retourneert consistency evidence.GET /v2/witness/policies/{policyId}retourneert de witness policy voor quorum checks.GET /v2/anchors/{anchorEpochId}retourneert anchor epoch evidence.GET /v2/ivc/epochs/{ivcEpochId}retourneert Proof of Evolution epoch evidence.POST /v2/audit/packsmaakt een offline verifier bundle wanneer de range de vereiste witness en anchor evidence heeft.POST /v2/verifyverifieert receipt, stream, checkpoint, consistency, anchor, IVC of bundle objects.
Maak een stream:
curl -X POST https://verify.attesto.eu/v2/streams \
-H "Authorization: Bearer $ATTESTO_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<JSON
{
"system_id": "sys_...",
"use_case": "ai-decision-history",
"policy_id": "policy-2026-01",
"metadata": {
"owner": "risk-platform",
"environment": "production"
}
}
JSON
Voeg een event toe:
curl -X POST https://verify.attesto.eu/v2/streams/$STREAM_ID/events \
-H "Authorization: Bearer $ATTESTO_API_KEY" \
-H "Idempotency-Key: $ATTESTO_IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<JSON
{
"source_ref": "case-2026-0001:decision-1",
"event_type": "ai.decision",
"occurred_at": "2026-06-07T12:00:00+02:00",
"payload": {
"decision": "manual_review",
"score": 91,
"policy_id": "policy-2026-01"
}
}
JSON
Receipt response shape:
{
"stream_event_id": "sev_...",
"stream_id": "str_...",
"seq_no": 1,
"event_hash": "sha256-hex",
"stream_head_hash": "sha256-hex",
"receipt": {
"protocol": "ATTESTO-PROOFSTREAM-001",
"alg": "Ed25519",
"kid": "proofstream-receipt-key",
"signature": "hex-encoded-signature"
}
}
Tenant Proofstream en dashboard APIs
Tenant browser APIs tonen hetzelfde evidence model in het dashboard zonder frontend toegang tot server-side system keys. Mutating dashboard calls gebruiken browser cookies en CSRF recovery.
| Route family | Doel | Credential |
|---|---|---|
GET /v2/tenant/streams, GET /v2/tenant/streams/{stream_id}/events | Streams listen en stream events inspecteren die zichtbaar zijn voor de tenant. | Tenant session. |
GET /v2/tenant/receipts/{stream_event_id} | De opgeslagen receipt voor een tenant-visible stream event inspecteren. | Tenant session. |
GET /v2/tenant/streams/{stream_id}/proof-state, /forks, /ivc/epochs | Proof health, fork evidence en Proof of Evolution epochs lezen. | Tenant session. |
GET /v2/tenant/streams/{stream_id}/windows, /checkpoints | Closed windows en checkpoints voor een stream inspecteren. | Tenant session. |
POST /v2/tenant/audit/packs | Een tenant-authorized offline bundle maken voor auditor review. | Tenant session plus tenant policy. |
PUT /v2/tenant/witness/policies/{policy_id} | Een tenant witness policy bijwerken met de ingestelde quorum rules. | Tenant session plus tenant policy permission. |
Tenant settings en SSO APIs
Tenant settings zijn alleen beschikbaar voor authenticated tenant users met de vereiste rol. Provider secrets worden server-side versleuteld en worden na opslaan nooit teruggegeven aan de browser.
| Route | Doel |
|---|---|
GET /v1/settings | Retourneert de tenant settings snapshot, inclusief veilige identity-provider metadata. |
PATCH /v1/settings/tenant | Werkt tenant display settings, locale en timezone policy bij. |
GET /v1/settings/identity-providers | List tenant SSO providers en public setup values. |
POST /v1/settings/identity-providers | Voegt Entra ID, generic OIDC of SAML provider configuration toe. |
PATCH /v1/settings/identity-providers/{provider_id} | Werkt enabled state, domains, issuer metadata of rotated secrets bij. |
DELETE /v1/settings/identity-providers/{provider_id} | Schakelt een tenant identity provider uit en verwijdert die. |
Connector en Local Vault APIs
Connectors zijn production evidence sources. Tenant users configureren connector records in het dashboard, terwijl source systems events posten via provider-specific signed envelopes of Local Vault relay. Elk connector event moet source system, source object, source event type, source timestamp met timezone, idempotency reference en een normalized payload commitment bevatten.
| Route family | Doel | Credential |
|---|---|---|
GET/POST /v2/tenant/connectors/signed-webhooks, DELETE /v2/tenant/connectors/signed-webhooks/{connector_id} | Generic signed webhook connectors maken, listen en revoken. Connector secrets worden waar van toepassing alleen bij creatie één keer teruggegeven en daarna nooit opnieuw. | Tenant session. |
GET/POST /v2/tenant/connectors/s3-objects, DELETE /v2/tenant/connectors/s3-objects/{connector_id}, POST /v2/tenant/connectors/s3-objects/{connector_id}/commit | S3/R2 object evidence connectors maken, listen, revoken en committen. De commitroute legt objectmetadata en integrity vast zonder object content te proxyen. | Tenant session. |
GET/POST /v2/tenant/connectors/repository-webhooks, DELETE /v2/tenant/connectors/repository-webhooks/{connector_id} | GitHub/GitLab repository webhook connectors maken, listen en revoken. | Tenant session. |
POST /v2/connectors/signed-webhooks/{connector_id}/events | Neemt een signed webhook event uit een extern source system op. | Connector signed envelope. |
POST /v2/connectors/repository-webhooks/{connector_id}/events | Neemt repository change evidence op. | Provider webhook/signature contract. |
GET/POST /v2/tenant/local-vault/installations, DELETE /v2/tenant/local-vault/installations/{installation_id} | Local Vault edge installations beheren en edge credentials fail-closed revoken. | Tenant session. |
POST /v2/tenant/local-vault/enrollment-tokens | Maak een kortlevend, single-use enrollment token; na creatie wordt alleen de tokenhash opgeslagen. | Tenant session. |
POST /v2/local-vault/enroll | Wissel een geldig enrollment token om voor een installation credential en publieke installation metadata. | Single-use enrollment token. |
POST /v2/local-vault/installations/{installation_id}/events | Relay encrypted-spool events vanaf de customer edge naar Proofstream. | Local Vault installation credential. |
POST /v2/local-vault/installations/{installation_id}/witness/checkpoints | Dien customer-side witness checkpoint statements in wanneer witness mode door policy is enabled. | Local Vault witness credential. |
Marketplace APIs
Marketplace APIs sturen marketplace.attesto.eu. De
public catalog is read-only. Tenant acquisition, install, artifact
download en revoke vereisen een authenticated tenant session plus CSRF.
Publisher signup, profile management, developer checkout, payout
onboarding en asset submission gebruiken een apart marketplace-only
developer account. Publieke docs laten private Attesto review- en
publication-endpoints bewust weg.
| Route family | Doel | Credential |
|---|---|---|
GET /v1/marketplace/categories, /developer-tiers, /items, /items/{slug} | Browse public connector categories, developer tiers en gevalideerde public assets. | Public, read-only. |
POST /v1/marketplace/auth/signup, /auth/login, /auth/logout, GET /auth/csrf, /auth/me | Maak en gebruik marketplace-only developer accounts. Deze accounts kunnen niet inloggen op het tenant dashboard. | Marketplace developer credentials/session. |
GET /v1/marketplace/me/entitlements, /me/installs | List tenant connector entitlements en installs. | Tenant session. |
POST /v1/marketplace/items/{slug}/acquire, /install, /install/update, /revoke | Acquire, install, update of revoke tenant access tot een connector asset. | Tenant session en CSRF. |
GET /v1/marketplace/items/{slug}/artifact | Download het connector manifest artifact nadat entitlement actief is. | Tenant session met active entitlement. |
GET /v1/marketplace/evidence/{receipt_id} | Haal marketplace evidence receipt metadata op voor tenant-visible marketplace actions. | Tenant of marketplace session scoped op de evidence tenant. |
GET/POST/PATCH /v1/marketplace/publisher/profile | Create, read en update publisher profile metadata. | Marketplace developer session en CSRF voor writes. |
GET /v1/marketplace/publisher/billing-state, POST /publisher/upgrade, /publisher/billing-portal | Inspecteer developer tier state, start Stripe Checkout voor paid developer tiers of open de billing portal. | Marketplace developer session en CSRF voor writes. |
POST /v1/marketplace/publisher/payout/onboarding, /publisher/payout/status | Start Stripe Connect payout onboarding en refresh payout readiness voor paid connector publishing. | Marketplace developer session en CSRF. |
POST /v1/marketplace/publisher/assets | Dien een connector manifest in voor private Attesto review. Public listing is nooit automatisch. | Marketplace developer session, CSRF en eligible developer tier voor paid assets. |
Public status API
status.attesto.eu exposeert customer-safe health voor
publieke services. Het bevat component status, latency, uptime bars,
incident summaries, generated time en timezone metadata. Het exposeert
geen private admin status, tenant identifiers, logs, secrets, provider
payloads of raw database details.
GET https://status.attesto.eu/healthretourneert status-service health.GET https://status.attesto.eu/api/statusretourneert de public status payload die de page gebruikt.GET https://status.attesto.eu/v1/statusis de versioned status payload alias.
Zie Public status page voor het publieke visibility model en component list.
Verification behavior
Verification faalt gesloten bij malformed objects, changed payloads, changed sequence numbers, removed of inserted events, stale checkpoints, wrong witness signatures, wrong anchors en ambiguous fork evidence.
Truth Package downloads en verificatie zijn aparte lifecycle events.
Een download legt truth_package.accessed vast, wat bewijst
dat het package is geserveerd. Een succesvol verifier report dat naar
/v1/exports/{exportId}/truth-package/verify wordt
gestuurd, legt truth_package.verified vast en bewijst dat
een verifier de package hash, manifest hash en included artifacts
heeft gecontroleerd. De uiteindelijke ZIP hash wordt vastgelegd nadat
de ZIP bytes finalized zijn en wordt niet terug in dezelfde ZIP
ingebed; zo vermijden we circular self-reference terwijl de
downloadbare bytes zelfstandig hashbaar blijven.
curl -X POST https://dashboard.attesto.eu/v1/exports/$EXPORT_ID/truth-package/verify \
-H "Authorization: Bearer $ATTESTO_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @truth-package-verification-report.json
curl -X POST https://verify.attesto.eu/v2/verify \
-H "Content-Type: application/json" \
--data-binary @attesto-bundle.json
Error semantics
| Status | Betekenis | Integrator action |
|---|---|---|
400 | Malformed request of unsupported verifier object. | Fix request shape en retry met een nieuwe idempotency key als body verandert. |
401 | Missing of invalid system key. | Rotate of herconfigureer server-side credential. |
403 | Authenticated key mist toegang tot tenant, system of stream. | Controleer tenant/system assignment. |
404 | Object is niet zichtbaar voor de caller of bestaat niet. | Bevestig IDs en tenant scope. |
409 | Idempotency conflict, sequence conflict of append conflict. | Retry changed bodies niet blind; inspecteer conflict details. |
422 | Request is syntactically valid maar schendt het route contract. | Fix field values, policy references of object kind. |
429 | Rate limit. | Back off met jitter en houd idempotency keys stabiel. |
5xx | Service-side failure. | Retry met dezelfde idempotency key en behoud de oorspronkelijke body. |
API keys blijven server-side
Attesto system keys zijn bearer credentials. Gebruik ze alleen vanuit trusted server-side processes, connector edges of secret-managed job runners.
