API
Public API
Der Production API Origin für SDKs und öffentliche Verification ist
https://verify.attesto.eu. Tenant Browser Workflows
laufen auf https://dashboard.attesto.eu.
Die richtige API Family wählen
Attesto hat mehrere öffentliche Surfaces, weil Evidence Work an verschiedenen Stellen passiert. Verwenden Sie SDK/API von Ihrem Server, um Evidence zu erstellen, Webhooks für Lifecycle Notifications, Connectors für Source-system Observations und Verifier Endpoints, wenn ein anderes System Evidence prüfen muss, bevor es ihr vertraut.
| Surface | Nutzen wenn | Primary routes | Credential |
|---|---|---|---|
| v1 SDK Events | Sie stable event logging, receipts, anchoring und exports benötigen. | /v1/sdk/events, /v1/sdk/events/batch, /v1/events/{id}/proof, /v1/exports/{id}/truth-package/verify | Tenant system key oder tenant auth, abhängig von Route. |
| v2 Proofstream | Sie ordered streams, receipts, windows, checkpoints, witnesses, anchors und bundles benötigen. | /v2/streams, /v2/streams/{id}/events, /v2/checkpoints/{id} | Tenant system key für Server-Ingest; Tenant Session für Dashboard Views. |
| Verifier API | Sie Evidence erhalten und vor Vertrauen prüfen müssen. | /v2/verify, /v1/public/verify | Kein Tenant Cookie für Public Proof Objects. |
| Audit packs | Sie ein portable Evidence Bundle für einen Auditor- oder Regulator Workflow benötigen. | /v2/audit/packs, /v2/tenant/audit/packs | Tenant auth/system policy. |
| Connectors | Ein externes Source System Evidence in Attesto emittiert. | /v2/connectors/signed-webhooks/{id}/events, /v2/connectors/repository-webhooks/{id}/events | Connector-specific signed envelope. |
| Marketplace | Sie Public Connector Catalog, Tenant Installs, Developer Accounts, Publisher Billing oder Asset Submission benötigen. | /v1/marketplace/items, /v1/marketplace/auth/*, /v1/marketplace/publisher/* | Public read-only, Tenant Session oder Marketplace Developer Session je nach Route. |
| Identity und Settings | Ein Tenant User sich anmeldet, eine Invite akzeptiert oder Enterprise SSO konfiguriert. | /v1/auth/discover, /v1/auth/external/start, /v1/settings/identity-providers | Tenant Browser Session und CSRF für Settings; kurzlebiger Login State für SSO. |
| Public status | Sie customer-safe component health, latency, uptime bars und incident state benötigen. | /api/status, /v1/status | Public, secret-free status payload. |
Origins
| Origin | Zweck |
|---|---|
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 für invited external auditors. |
https://status.attesto.eu | Customer-safe service status API und status page. Das private admin control panel wird bewusst ausgeschlossen. |
Authentication
Server-side Event Ingest verwendet einen Tenant System Key im
Authorization: Bearer Header. Public Verification Routes
validieren gelieferte Proof Objects und benötigen keine Tenant Cookies.
Tenant Dashboard Routes verwenden die bestehende sichere Browser
Session plus CSRF recovery für mutating requests. Legen Sie keine
system keys oder 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 melden sich über Email Discovery auf
dashboard.attesto.eu an. Attesto gibt genau einen
empfohlenen next step zurück, statt alle Provider gleichzeitig zu
zeigen. Marketplace developer accounts, admin staff auth und auditor
auth bleiben getrennte Surfaces.
| Route | Zweck | Security notes |
|---|---|---|
POST /v1/auth/discover | Nimmt eine Email und optionales invite token an und gibt password, OAuth/OIDC, SAML, organization SSO oder signup/trial als next step zurück. | Exponiert keine provider wall oder secret provider config. |
GET /v1/auth/providers | Gibt sichere Provider Labels für enabled login paths zurück. | Keine client secrets oder private metadata. |
POST /v1/auth/external/start | Erzeugt OAuth/OIDC state, nonce und PKCE data und gibt danach die redirect URL für den discovered provider zurück. | State ist kurzlebig und single-use. |
GET /v1/auth/external/callback/{provider_id} | Verifiziert den provider callback und stellt die bestehenden tenant session cookies aus. | Issuer, audience, nonce, JWKS und verified email werden geprüft. |
GET /v1/auth/saml/metadata/{provider_id} | Gibt tenant-specific SAML SP metadata für Enterprise Setup zurück. | Sicher mit dem tenant identity provider teilbar. |
POST /v1/auth/saml/acs/{provider_id} | Verarbeitet signed SAML assertions. | Lehnt unsigned, replayed, expired, wrong-audience und wrong-recipient assertions ab. |
POST /v1/auth/login, POST /v1/auth/signup | Password fallback und saubere signup/trial creation, nachdem discovery diesen Pfad empfiehlt. | Password fallback bleibt auf Tenant Dashboard Users begrenzt; marketplace developer accounts sind separat. |
GET /v1/auth/invite/{token} | Gibt invite context für den email-first acceptance flow zurück. | Invite token wird validiert, bevor eine Identity verknüpft wird. |
POST /v1/auth/accept-invite | Akzeptiert eine Invite mit password setup oder provider-based activation. | External linking verlangt verified email und tenant match. |
POST /v1/auth/refresh, POST /v1/auth/logout, GET /v1/auth/csrf, GET /v1/auth/me | Session refresh, logout, CSRF recovery und current user identity. | Browser credentials verwenden; session cookies niemals loggen. |
Siehe Tenant SSO für den Entra ID, generic OIDC und SAML setup guide.
Source time und timezone policy
Attesto speichert, wann das Source System ein Event als passiert
meldet, und wann Attesto es empfangen hat. Event APIs verlangen
timezone-aware timestamps wie 2026-06-07T12:00:00+02:00
oder 2026-06-07T10:00:00Z. Tenant timezone ist
konfigurierbar; Systems erben standardmäßig die Tenant Timezone und
können eine eigene source_timezone setzen, wenn die
verbundene Quelle in einer anderen Jurisdiktion läuft.
| Field | Bedeutung | Requirement |
|---|---|---|
occurred_at | Source-system event time. | Erforderlich für Proofstream events und muss timezone oder UTC offset enthalten. |
source_timezone | IANA timezone für das registrierte source system. | Default aus Tenant Timezone; Werte wie Europe/Amsterdam oder Europe/Berlin verwenden. |
| Connector received time | Wann Attesto oder Local Vault das source event empfangen hat. | Wird vom receiving service gesetzt, nicht von untrusted frontend code. |
| Normalized UTC time | Canonical comparison time für Verification und Ordering. | Server-side abgeleitet, während source context erhalten bleibt. |
Idempotency und Replay Behavior
Write Routes akzeptieren Idempotency-Key. Wiederholung
desselben Keys mit demselben canonical Request gibt das Original
Result zurück. Wiederholung desselben Keys mit einem anderen Request
schlägt als Conflict fehl. Das schützt Connector Retries und
server-side Job Retries vor doppelter Evidence.
| Case | Result |
|---|---|
| Same key, same request | Original response wird replayed. |
| Same key, changed payload | 409 Conflict. |
| No key on write path | Request wird abgelehnt, wenn die Route dedupe verlangt. |
v1 Event Ingest
Verwenden Sie v1, wenn Sie den stable Event Audit Trail und Anchoring Path benötigen. SDKs setzen Defaults für Event Type, Status, Retries und Idempotency.
POST /v1/sdk/eventsloggt ein Event.POST /v1/sdk/events/batchloggt bis zu 1000 Events.GET /v1/events/{eventId}/proofgibt anchored proof material für ein Event zurück.POST /v1/public/verifyverifiziert ein v1 Proof Object.POST /v1/exports/{exportId}/truth-package/verifyzeichnet ein backend-validatedtruth_package.verifiedEvent auf, nachdem ein Verifier Report beweist, dass das exportierte Package kryptografisch geprüft wurde.
Tenant dashboard v1 APIs
Diese browser APIs betreiben dashboard.attesto.eu.
Mutating calls nutzen Tenant Session Cookies und CSRF recovery.
Verwende System Keys und SDK routes für server-side ingest; verwende
diese Routes für Tenant Operators, die ihre Workspace verwalten.
| Route family | Zweck | Credential |
|---|---|---|
GET /v1/dashboard | Gibt die Tenant Dashboard Summary für die Operator UI zurück. | Tenant session. |
GET/POST /v1/systems, PATCH/DELETE /v1/systems/{system_id}, POST /v1/systems/{system_id}/rotate-key | Source systems registrieren, source timezone policy bewahren und system keys einmalig anzeigen oder rotieren. | Tenant session; writer role für Mutationen. |
GET /v1/events, GET /v1/events/{event_id}, GET /v1/events/{event_id}/proof | Tenant events und proof material einsehen. | Tenant session. |
POST /v1/events/{event_id}/retrieve, GET /v1/events/{event_id}/retrieve/status | Archive retrieval für archived event evidence starten und überwachen. | Tenant session; writer role zum Starten der retrieval. |
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 erstellen, herunterladen, löschen und verification record einreichen. | Tenant session; writer role für Erstellung, Löschung und verification record. |
GET/POST/PATCH/DELETE /v1/webhooks, POST /v1/webhooks/{webhook_id}/rotate-secret, GET /v1/webhooks/{webhook_id}/deliveries | Signed tenant webhooks verwalten, one-shot delivery secret rotieren und delivery attempts einsehen. | Tenant session; admin role für webhook mutations. |
GET/POST/PATCH/DELETE /v1/users, POST /v1/users/{user_id}/resend-invite | Tenant users einladen, invites erneut senden, roles/status aktualisieren und access widerrufen. | Tenant session; owner/admin role für Mutationen. |
GET/POST/PATCH/DELETE /v1/parties | External party records pflegen, die in tenant evidence workflows verwendet werden. | Tenant session; admin role für Mutationen. |
GET /v1/packs, POST /v1/packs/{vertical_id}/install, DELETE /v1/packs/{vertical_id} | Tenant evidence packs listen, installieren und entfernen, ohne synthetische Seed-Daten zu erzeugen. | Tenant session; admin role für install/remove. |
GET /v1/billing/plan, POST /v1/billing/checkout, POST /v1/billing/portal | Aktiven Plan lesen, Stripe Checkout für Starter/Growth/Realtime Subscriptions mit 30-Tage Trial starten oder das Stripe billing portal öffnen. | Tenant session; admin role für checkout und portal sessions. |
GET/POST /v1/auditor-invites, POST /v1/auditor-invites/{access_id}/revoke | External auditor access für das read-only audit portal gewähren, listen und widerrufen. | Tenant session; admin role für grant/revoke. |
Minimaler 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 fügt append-only Streams, signed Receipts, Windows, Checkpoints, Witness Evidence, Anchors, Bundles und Offline Verification hinzu.
POST /v2/streamserstellt einen Stream.POST /v2/streams/{streamId}/eventshängt ein Event an und gibt ein signed Receipt zurück.POST /v2/streams/{streamId}/events/batchhängt mehrere Events mit Receipt Results an.GET /v2/streams/{streamId}/headgibt den aktuellen append-only Stream Head zurück.GET /v2/receipts/{eventId}gibt das gespeicherte Receipt zurück.POST /v2/verify/receiptverifiziert ein Receipt Object direkt.GET /v2/windows/{windowId}gibt Window Evidence und Inclusion Material zurück.GET /v2/checkpoints/{checkpointId}gibt Checkpoint Evidence zurück.GET /v2/checkpoints/{checkpointId}/consistency?from=...gibt Consistency Evidence zurück.GET /v2/witness/policies/{policyId}gibt die Witness Policy für Quorum Checks zurück.GET /v2/anchors/{anchorEpochId}gibt Anchor Epoch Evidence zurück.GET /v2/ivc/epochs/{ivcEpochId}gibt Proof of Evolution Epoch Evidence zurück.POST /v2/audit/packserstellt ein Offline Verifier Bundle, wenn die Range die erforderliche Witness und Anchor Evidence hat.POST /v2/verifyverifiziert Receipt, Stream, Checkpoint, Consistency, Anchor, IVC oder Bundle Objects.
Einen Stream erstellen:
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
Ein Event anhängen:
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 und dashboard APIs
Tenant browser APIs zeigen dasselbe Evidence Model im Dashboard, ohne Frontend-Zugriff auf server-side system keys. Mutating dashboard calls verwenden browser cookies und CSRF recovery.
| Route family | Zweck | Credential |
|---|---|---|
GET /v2/tenant/streams, GET /v2/tenant/streams/{stream_id}/events | Streams listen und Stream Events einsehen, die für den Tenant sichtbar sind. | Tenant session. |
GET /v2/tenant/receipts/{stream_event_id} | Stored receipt für ein tenant-visible stream event einsehen. | Tenant session. |
GET /v2/tenant/streams/{stream_id}/proof-state, /forks, /ivc/epochs | Proof health, fork evidence und Proof of Evolution epochs lesen. | Tenant session. |
GET /v2/tenant/streams/{stream_id}/windows, /checkpoints | Closed windows und checkpoints für einen Stream einsehen. | Tenant session. |
POST /v2/tenant/audit/packs | Ein tenant-authorized offline bundle für Auditor Review erstellen. | Tenant session plus tenant policy. |
PUT /v2/tenant/witness/policies/{policy_id} | Eine Tenant Witness Policy mit den konfigurierten Quorum Rules aktualisieren. | Tenant session plus tenant policy permission. |
Tenant settings und SSO APIs
Tenant settings sind nur für authenticated tenant users mit der nötigen Rolle verfügbar. Provider secrets werden server-side verschlüsselt und nach dem Speichern nie an den Browser zurückgegeben.
| Route | Zweck |
|---|---|
GET /v1/settings | Gibt den Tenant Settings Snapshot einschließlich sicherer identity-provider metadata zurück. |
PATCH /v1/settings/tenant | Aktualisiert tenant display settings, locale und timezone policy. |
GET /v1/settings/identity-providers | Listet tenant SSO providers und public setup values. |
POST /v1/settings/identity-providers | Fügt Entra ID, generic OIDC oder SAML provider configuration hinzu. |
PATCH /v1/settings/identity-providers/{provider_id} | Aktualisiert enabled state, domains, issuer metadata oder rotated secrets. |
DELETE /v1/settings/identity-providers/{provider_id} | Deaktiviert und entfernt einen tenant identity provider. |
Connector und Local Vault APIs
Connectors sind production evidence sources. Tenant users konfigurieren connector records im Dashboard, während source systems Events über provider-specific signed envelopes oder Local Vault relay posten. Jedes connector event muss source system, source object, source event type, source timestamp mit timezone, idempotency reference und ein normalized payload commitment enthalten.
| Route family | Zweck | Credential |
|---|---|---|
GET/POST /v2/tenant/connectors/signed-webhooks, DELETE /v2/tenant/connectors/signed-webhooks/{connector_id} | Generic signed webhook connectors erstellen, listen und revoken. Connector secrets werden, falls zutreffend, nur bei Erstellung einmal zurückgegeben und danach nie wieder. | 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 erstellen, listen, revoken und committen. Die Commit-Route zeichnet Objektmetadaten und Integrity auf, ohne Object Content zu proxyen. | Tenant session. |
GET/POST /v2/tenant/connectors/repository-webhooks, DELETE /v2/tenant/connectors/repository-webhooks/{connector_id} | GitHub/GitLab repository webhook connectors erstellen, listen und revoken. | Tenant session. |
POST /v2/connectors/signed-webhooks/{connector_id}/events | Nimmt ein signed webhook event aus einem externen source system auf. | Connector signed envelope. |
POST /v2/connectors/repository-webhooks/{connector_id}/events | Nimmt repository change evidence auf. | Provider webhook/signature contract. |
GET/POST /v2/tenant/local-vault/installations, DELETE /v2/tenant/local-vault/installations/{installation_id} | Local Vault edge installations verwalten und Edge Credentials fail-closed revoken. | Tenant session. |
POST /v2/tenant/local-vault/enrollment-tokens | Erzeugt ein kurzlebiges, single-use enrollment token; nach Erstellung wird nur der Token-Hash gespeichert. | Tenant session. |
POST /v2/local-vault/enroll | Tauscht ein gültiges enrollment token gegen ein installation credential und öffentliche installation metadata. | Single-use enrollment token. |
POST /v2/local-vault/installations/{installation_id}/events | Relayt encrypted-spool events vom Customer Edge in Proofstream. | Local Vault installation credential. |
POST /v2/local-vault/installations/{installation_id}/witness/checkpoints | Reicht customer-side witness checkpoint statements ein, wenn witness mode per Policy enabled ist. | Local Vault witness credential. |
Marketplace APIs
Marketplace APIs betreiben marketplace.attesto.eu. Der
public catalog ist read-only. Tenant acquisition, installation,
artifact download und revocation benötigen eine authenticated tenant
session plus CSRF. Publisher signup, profile management, developer
checkout, payout onboarding und asset submission verwenden ein
separates marketplace-only developer account. Öffentliche Docs lassen
private Attesto review- und publication-endpoints bewusst aus.
| Route family | Zweck | Credential |
|---|---|---|
GET /v1/marketplace/categories, /developer-tiers, /items, /items/{slug} | Public connector categories, developer tiers und validierte public assets browsen. | Public, read-only. |
POST /v1/marketplace/auth/signup, /auth/login, /auth/logout, GET /auth/csrf, /auth/me | Marketplace-only developer accounts erstellen und nutzen. Diese Accounts können sich nicht im Tenant Dashboard anmelden. | Marketplace developer credentials/session. |
GET /v1/marketplace/me/entitlements, /me/installs | Connector entitlements und installs des Tenants listen. | Tenant session. |
POST /v1/marketplace/items/{slug}/acquire, /install, /install/update, /revoke | Tenant access auf ein connector asset erwerben, installieren, aktualisieren oder revoken. | Tenant session und CSRF. |
GET /v1/marketplace/items/{slug}/artifact | Connector manifest artifact herunterladen, nachdem entitlement aktiv ist. | Tenant session mit active entitlement. |
GET /v1/marketplace/evidence/{receipt_id} | Marketplace evidence receipt metadata für tenant-visible marketplace actions abrufen. | Tenant oder marketplace session scoped auf den evidence tenant. |
GET/POST/PATCH /v1/marketplace/publisher/profile | Publisher profile metadata erstellen, lesen und aktualisieren. | Marketplace developer session und CSRF für writes. |
GET /v1/marketplace/publisher/billing-state, POST /publisher/upgrade, /publisher/billing-portal | Developer tier state prüfen, Stripe Checkout für paid developer tiers starten oder das billing portal öffnen. | Marketplace developer session und CSRF für writes. |
POST /v1/marketplace/publisher/payout/onboarding, /publisher/payout/status | Stripe Connect payout onboarding starten und payout readiness für paid connector publishing aktualisieren. | Marketplace developer session und CSRF. |
POST /v1/marketplace/publisher/assets | Ein connector manifest in private Attesto review einreichen. Public listing ist nie automatisch. | Marketplace developer session, CSRF und eligible developer tier für paid assets. |
Public status API
status.attesto.eu exponiert customer-safe health für
öffentliche Services. Enthalten sind component status, latency, uptime
bars, incident summaries, generated time und timezone metadata. Nicht
exponiert werden private admin status, tenant identifiers, logs,
secrets, provider payloads oder raw database details.
GET https://status.attesto.eu/healthgibt status-service health zurück.GET https://status.attesto.eu/api/statusgibt den public status payload der Seite zurück.GET https://status.attesto.eu/v1/statusist der versioned status payload alias.
Siehe Public status page für das public visibility model und die component list.
Verification Behavior
Verification schlägt fail-closed fehl bei malformed objects, changed payloads, changed sequence numbers, removed oder inserted events, stale checkpoints, wrong witness signatures, wrong anchors und ambiguous fork evidence.
Truth Package Downloads und Verification sind getrennte Lifecycle
Events. Ein Download zeichnet truth_package.accessed auf
und beweist, dass das Package ausgeliefert wurde. Ein erfolgreicher
Verifier Report an
/v1/exports/{exportId}/truth-package/verify zeichnet
truth_package.verified auf und beweist, dass ein Verifier
Package Hash, Manifest Hash und enthaltene Artifacts geprüft hat. Der
finale ZIP Hash wird nach Finalisierung der ZIP Bytes aufgezeichnet
und nicht wieder in dieselbe ZIP eingebettet; das vermeidet Circular
Self-reference und hält die herunterladbaren Bytes unabhängig hashbar.
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 | Bedeutung | Integrator Action |
|---|---|---|
400 | Malformed Request oder unsupported verifier object. | Request Shape fixen und mit neuem Idempotency Key retryen, wenn sich der Body ändert. |
401 | Missing oder invalid system key. | Server-side Credential rotieren oder neu konfigurieren. |
403 | Authenticated Key hat keinen Zugriff auf Tenant, System oder Stream. | Tenant/System Assignment prüfen. |
404 | Object ist für den Caller nicht sichtbar oder existiert nicht. | IDs und Tenant Scope bestätigen. |
409 | Idempotency Conflict, Sequence Conflict oder Append Conflict. | Changed Bodies nicht blind retryen; Conflict Details prüfen. |
422 | Request ist syntactically valid, verletzt aber den Route Contract. | Field Values, Policy References oder Object Kind fixen. |
429 | Rate Limit. | Mit Jitter backoff und Idempotency Keys stabil halten. |
5xx | Service-side Failure. | Mit demselben Idempotency Key retryen und Original Body bewahren. |
API Keys bleiben server-side
Attesto System Keys sind Bearer Credentials. Verwenden Sie sie nur aus trusted server-side Processes, Connector Edges oder secret-managed Job Runners.
