Attesto

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.

SurfaceGebruik wanneerPrimary routesCredential
v1 SDK EventsJe 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/verifyTenant system key of tenant auth, afhankelijk van route.
v2 ProofstreamJe 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 APIJe evidence ontvangt en dit moet controleren voordat je erop vertrouwt./v2/verify, /v1/public/verifyGeen tenant cookie voor public proof objects.
Audit packsJe een portable evidence bundle nodig hebt voor een auditor- of regulator workflow./v2/audit/packs, /v2/tenant/audit/packsTenant auth/system policy.
ConnectorsEen extern source system evidence naar Attesto emit./v2/connectors/signed-webhooks/{id}/events, /v2/connectors/repository-webhooks/{id}/eventsConnector-specific signed envelope.
MarketplaceJe 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 settingsEen tenant user inlogt, een invite accepteert of enterprise SSO configureert./v1/auth/discover, /v1/auth/external/start, /v1/settings/identity-providersTenant browser session en CSRF voor settings; short-lived login state voor SSO.
Public statusJe customer-safe component health, latency, uptime bars en incident state wilt./api/status, /v1/statusPublic, secret-free status payload.

Origins

OriginDoel
https://verify.attesto.euPublic API, health, signing public key, v1 proof verification, v2 Proofstream verification.
https://dashboard.attesto.euTenant dashboard, system registration, key reveal-once, exports, webhooks, connectors, billing.
https://audit.attesto.euAuditor-facing portal voor invited external auditors.
https://status.attesto.euCustomer-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.

RouteDoelSecurity notes
POST /v1/auth/discoverAccepteert 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/providersRetourneert veilige provider labels voor enabled login paths.Geen client secrets of private metadata.
POST /v1/auth/external/startMaakt 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/signupPassword 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-inviteAccepteert 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/meSession 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.

FieldBetekenisRequirement
occurred_atSource-system event time.Vereist voor Proofstream events en moet timezone of UTC offset bevatten.
source_timezoneIANA timezone voor het geregistreerde source system.Default vanuit tenant timezone; gebruik waarden zoals Europe/Amsterdam of Europe/Berlin.
Connector received timeWanneer Attesto of Local Vault het source event ontving.Wordt gezet door de receiving service, niet door untrusted frontend code.
Normalized UTC timeCanonical 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.

CaseResult
Same key, same requestOriginal response wordt replayed.
Same key, changed payload409 Conflict.
No key on write pathRequest 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.

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 familyDoelCredential
GET /v1/dashboardRetourneert 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-keySource 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}/proofTenant events en proof material inspecteren.Tenant session.
POST /v1/events/{event_id}/retrieve, GET /v1/events/{event_id}/retrieve/statusArchive 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/verifyTruth 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}/deliveriesSigned 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-inviteTenant users uitnodigen, invites opnieuw sturen, rollen/status bijwerken en toegang intrekken.Tenant session; owner/admin role voor mutaties.
GET/POST/PATCH/DELETE /v1/partiesExternal 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/portalHet 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}/revokeExternal 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.

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 familyDoelCredential
GET /v2/tenant/streams, GET /v2/tenant/streams/{stream_id}/eventsStreams 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/epochsProof health, fork evidence en Proof of Evolution epochs lezen.Tenant session.
GET /v2/tenant/streams/{stream_id}/windows, /checkpointsClosed windows en checkpoints voor een stream inspecteren.Tenant session.
POST /v2/tenant/audit/packsEen 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.

RouteDoel
GET /v1/settingsRetourneert de tenant settings snapshot, inclusief veilige identity-provider metadata.
PATCH /v1/settings/tenantWerkt tenant display settings, locale en timezone policy bij.
GET /v1/settings/identity-providersList tenant SSO providers en public setup values.
POST /v1/settings/identity-providersVoegt 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 familyDoelCredential
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}/commitS3/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}/eventsNeemt een signed webhook event uit een extern source system op.Connector signed envelope.
POST /v2/connectors/repository-webhooks/{connector_id}/eventsNeemt 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-tokensMaak een kortlevend, single-use enrollment token; na creatie wordt alleen de tokenhash opgeslagen.Tenant session.
POST /v2/local-vault/enrollWissel een geldig enrollment token om voor een installation credential en publieke installation metadata.Single-use enrollment token.
POST /v2/local-vault/installations/{installation_id}/eventsRelay encrypted-spool events vanaf de customer edge naar Proofstream.Local Vault installation credential.
POST /v2/local-vault/installations/{installation_id}/witness/checkpointsDien 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 familyDoelCredential
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/meMaak 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/installsList tenant connector entitlements en installs.Tenant session.
POST /v1/marketplace/items/{slug}/acquire, /install, /install/update, /revokeAcquire, install, update of revoke tenant access tot een connector asset.Tenant session en CSRF.
GET /v1/marketplace/items/{slug}/artifactDownload 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/profileCreate, read en update publisher profile metadata.Marketplace developer session en CSRF voor writes.
GET /v1/marketplace/publisher/billing-state, POST /publisher/upgrade, /publisher/billing-portalInspecteer 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/statusStart Stripe Connect payout onboarding en refresh payout readiness voor paid connector publishing.Marketplace developer session en CSRF.
POST /v1/marketplace/publisher/assetsDien 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.

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

StatusBetekenisIntegrator action
400Malformed request of unsupported verifier object.Fix request shape en retry met een nieuwe idempotency key als body verandert.
401Missing of invalid system key.Rotate of herconfigureer server-side credential.
403Authenticated key mist toegang tot tenant, system of stream.Controleer tenant/system assignment.
404Object is niet zichtbaar voor de caller of bestaat niet.Bevestig IDs en tenant scope.
409Idempotency conflict, sequence conflict of append conflict.Retry changed bodies niet blind; inspecteer conflict details.
422Request is syntactically valid maar schendt het route contract.Fix field values, policy references of object kind.
429Rate limit.Back off met jitter en houd idempotency keys stabiel.
5xxService-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.