API
Public API
La production API origin per SDKs e public verification è
https://verify.attesto.eu. I tenant browser workflows
vivono su https://dashboard.attesto.eu.
Scegliere la API family corretta
Attesto ha più public surfaces perché l'evidence work avviene in luoghi diversi. Usa SDK/API dal tuo server per creare evidence, webhooks per ricevere lifecycle notifications, connectors per catturare source-system observations e verifier endpoints quando un altro sistema deve controllare evidence prima di fidarsi.
| Surface | Usa quando | Primary routes | Credential |
|---|---|---|---|
| v1 SDK Events | Ti servono stable event logging, receipts, anchoring ed exports. | /v1/sdk/events, /v1/sdk/events/batch, /v1/events/{id}/proof, /v1/exports/{id}/truth-package/verify | Tenant system key o tenant auth, a seconda della route. |
| v2 Proofstream | Ti servono ordered streams, receipts, windows, checkpoints, witnesses, anchors e bundles. | /v2/streams, /v2/streams/{id}/events, /v2/checkpoints/{id} | Tenant system key per server ingest; tenant session per dashboard views. |
| Verifier API | Ricevi evidence e devi controllarla prima di usarla. | /v2/verify, /v1/public/verify | Nessun tenant cookie per public proof objects. |
| Audit packs | Ti serve un portable evidence bundle per un workflow auditor o regulator. | /v2/audit/packs, /v2/tenant/audit/packs | Tenant auth/system policy. |
| Connectors | Un source system esterno emette evidence in Attesto. | /v2/connectors/signed-webhooks/{id}/events, /v2/connectors/repository-webhooks/{id}/events | Connector-specific signed envelope. |
| Marketplace | Ti servono public connector catalog, tenant installs, developer accounts, publisher billing o asset submission. | /v1/marketplace/items, /v1/marketplace/auth/*, /v1/marketplace/publisher/* | Public read-only, tenant session o marketplace developer session a seconda della route. |
| Identity e settings | Un tenant user accede, accetta un invite o configura enterprise SSO. | /v1/auth/discover, /v1/auth/external/start, /v1/settings/identity-providers | Tenant browser session e CSRF per settings; login state breve per SSO. |
| Public status | Vuoi component health, latency, uptime bars e incident state customer-safe. | /api/status, /v1/status | Public, secret-free status payload. |
Origins
| Origin | Scopo |
|---|---|
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 | Portal auditor-facing per invited external auditors. |
https://status.attesto.eu | Customer-safe service status API e status page. Il private admin control panel è deliberatamente escluso. |
Authentication
Server-side event ingest usa una tenant system key nell'header
Authorization: Bearer. Public verification routes valida
i proof objects forniti e non richiede tenant cookies.
Le tenant dashboard routes usano la secure browser session esistente
più CSRF recovery per mutating requests. Non inserire system keys o
SSO client secrets nei 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
I main tenant users accedono tramite email discovery su
dashboard.attesto.eu. Attesto restituisce un solo next
step raccomandato invece di mostrare tutti i providers insieme.
Marketplace developer accounts, admin staff auth e auditor auth
restano surfaces separate.
| Route | Scopo | Security notes |
|---|---|---|
POST /v1/auth/discover | Accetta email e invite token opzionale, poi restituisce password, OAuth/OIDC, SAML, organization SSO o signup/trial come next step. | Non espone provider wall o secret provider config. |
GET /v1/auth/providers | Restituisce safe provider labels per enabled login paths. | Nessun client secrets o private metadata. |
POST /v1/auth/external/start | Crea OAuth/OIDC state, nonce e PKCE data, poi restituisce la redirect URL per il discovered provider. | State breve e single-use. |
GET /v1/auth/external/callback/{provider_id} | Verifica il provider callback ed emette le tenant session cookies esistenti. | Issuer, audience, nonce, JWKS e verified email sono controllati. |
GET /v1/auth/saml/metadata/{provider_id} | Restituisce tenant-specific SAML SP metadata per enterprise setup. | Sicuro da condividere con il tenant identity provider. |
POST /v1/auth/saml/acs/{provider_id} | Consuma signed SAML assertions. | Rifiuta assertions unsigned, replayed, expired, wrong-audience e wrong-recipient. |
POST /v1/auth/login, POST /v1/auth/signup | Password fallback e creazione pulita signup/trial dopo che discovery raccomanda quel percorso. | Password fallback resta scoped ai tenant dashboard users; i marketplace developer accounts sono separati. |
GET /v1/auth/invite/{token} | Restituisce invite context per email-first acceptance flow. | Invite token validato prima di qualsiasi identity linking. |
POST /v1/auth/accept-invite | Accetta un invite con password setup o provider-based activation. | External linking richiede verified email e tenant match. |
POST /v1/auth/refresh, POST /v1/auth/logout, GET /v1/auth/csrf, GET /v1/auth/me | Session refresh, logout, CSRF recovery e current user identity. | Usa browser credentials; non loggare mai session cookies. |
Vedi Tenant SSO per la guida setup di Entra ID, generic OIDC e SAML.
Source time e timezone policy
Attesto registra quando il source system dichiara che un event è
avvenuto e quando Attesto lo ha ricevuto. Le Event APIs richiedono
timezone-aware timestamps come
2026-06-07T12:00:00+02:00 o
2026-06-07T10:00:00Z. Tenant timezone è configurabile;
systems eredita di default la tenant timezone e può impostare il
proprio source_timezone quando la fonte collegata opera
in un'altra giurisdizione.
| Field | Meaning | Requirement |
|---|---|---|
occurred_at | Source-system event time. | Richiesto per Proofstream events e deve includere timezone o UTC offset. |
source_timezone | IANA timezone per il source system registrato. | Default dalla tenant timezone; usa valori come Europe/Amsterdam o Europe/Berlin. |
| Connector received time | Quando Attesto o Local Vault ha ricevuto il source event. | Impostato dal receiving service, non da untrusted frontend code. |
| Normalized UTC time | Canonical comparison time per verification e ordering. | Derivato server-side preservando source context. |
Idempotency e replay behavior
Write routes accetta Idempotency-Key. Ripetere la stessa
key con la stessa canonical request restituisce il result originale.
Ripetere la stessa key con una request diversa fallisce come conflict.
Questo protegge connector retries e server-side job retries dalla
creazione di evidence duplicata.
| Case | Result |
|---|---|
| Same key, same request | Original response viene replayed. |
| Same key, changed payload | 409 Conflict. |
| No key on write path | Request rifiutata quando la route richiede dedupe. |
v1 event ingest
Usa v1 quando ti serve lo stable event audit trail e anchoring path. Gli SDKs impostano defaults per event type, status, retries e idempotency.
POST /v1/sdk/eventslogga un event.POST /v1/sdk/events/batchlogga fino a 1000 events.GET /v1/events/{eventId}/proofrestituisce anchored proof material per un event.POST /v1/public/verifyverifica un v1 proof object.POST /v1/exports/{exportId}/truth-package/verifyregistra un event backend-validatedtruth_package.verifieddopo che un verifier report prova che il package esportato è stato controllato crittograficamente.
Tenant dashboard v1 APIs
Queste browser APIs alimentano dashboard.attesto.eu. Le
mutating calls usano tenant session cookies e CSRF recovery. Usa
system keys e SDK routes per server-side ingest; usa queste routes
per tenant operators che gestiscono il workspace.
| Route family | Scopo | Credential |
|---|---|---|
GET /v1/dashboard | Restituisce il tenant dashboard summary usato dalla operator UI. | Tenant session. |
GET/POST /v1/systems, PATCH/DELETE /v1/systems/{system_id}, POST /v1/systems/{system_id}/rotate-key | Registra source systems, conserva source timezone policy e rivela o ruota system keys una sola volta. | Tenant session; writer role per mutations. |
GET /v1/events, GET /v1/events/{event_id}, GET /v1/events/{event_id}/proof | Ispeziona tenant events e proof material. | Tenant session. |
POST /v1/events/{event_id}/retrieve, GET /v1/events/{event_id}/retrieve/status | Avvia e monitora archive retrieval per archived event evidence. | Tenant session; writer role per avviare 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 | Crea, scarica, elimina e registra la verifica di Truth Package exports. | Tenant session; writer role per creazione, eliminazione e verification record submission. |
GET/POST/PATCH/DELETE /v1/webhooks, POST /v1/webhooks/{webhook_id}/rotate-secret, GET /v1/webhooks/{webhook_id}/deliveries | Gestisce signed tenant webhooks, ruota il one-shot delivery secret e ispeziona delivery attempts. | Tenant session; admin role per webhook mutations. |
GET/POST/PATCH/DELETE /v1/users, POST /v1/users/{user_id}/resend-invite | Invita tenant users, reinvia invites, aggiorna roles/status e revoca access. | Tenant session; owner/admin role per mutations. |
GET/POST/PATCH/DELETE /v1/parties | Mantiene external party records usati nei tenant evidence workflows. | Tenant session; admin role per mutations. |
GET /v1/packs, POST /v1/packs/{vertical_id}/install, DELETE /v1/packs/{vertical_id} | Lista, installa e rimuove tenant evidence packs senza creare dati seed sintetici. | Tenant session; admin role per install/remove. |
GET /v1/billing/account, POST /v1/billing/top-up, PATCH /v1/billing/auto-reload, GET /v1/billing/ledger, GET /v1/billing/usage, POST /v1/billing/portal | Legge il piano attivo, avvia Stripe Checkout per top-ups PAYG Evidence Credits/Enterprise con trial di 30 giorni, o apre lo Stripe billing portal. | Tenant session; admin role per checkout e portal sessions. |
GET/POST /v1/auditor-invites, POST /v1/auditor-invites/{access_id}/revoke | Concede, lista e revoca external auditor access al read-only audit portal. | Tenant session; admin role per grant/revoke. |
Minimal 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 aggiunge append-only streams, signed receipts, windows, checkpoints, witness evidence, anchors, bundles e offline verification.
POST /v2/streamscrea uno stream.POST /v2/streams/{streamId}/eventsaggiunge un event e restituisce un signed receipt.POST /v2/streams/{streamId}/events/batchaggiunge più events con receipt results.GET /v2/streams/{streamId}/headrestituisce lo stream head append-only corrente.GET /v2/receipts/{eventId}restituisce il receipt archiviato.POST /v2/verify/receiptverifica direttamente un receipt object.GET /v2/windows/{windowId}restituisce window evidence e inclusion material.GET /v2/checkpoints/{checkpointId}restituisce checkpoint evidence.GET /v2/checkpoints/{checkpointId}/consistency?from=...restituisce consistency evidence.GET /v2/witness/policies/{policyId}restituisce la witness policy usata per quorum checks.GET /v2/anchors/{anchorEpochId}restituisce anchor epoch evidence.GET /v2/ivc/epochs/{ivcEpochId}restituisce Proof of Evolution epoch evidence.POST /v2/audit/packscrea un offline verifier bundle quando la range ha la witness e anchor evidence richiesta.POST /v2/verifyverifica receipt, stream, checkpoint, consistency, anchor, IVC o bundle objects.
Crea uno 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
Aggiungi un event:
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 e dashboard APIs
Le Tenant browser APIs espongono lo stesso evidence model nel dashboard senza dare al frontend accesso ai server-side system keys. Le mutating dashboard calls usano browser cookies e CSRF recovery.
| Route family | Scopo | Credential |
|---|---|---|
GET /v2/tenant/streams, GET /v2/tenant/streams/{stream_id}/events | Lista streams e ispeziona stream events visibili al tenant. | Tenant session. |
GET /v2/tenant/receipts/{stream_event_id} | Ispeziona lo stored receipt per un tenant-visible stream event. | Tenant session. |
GET /v2/tenant/streams/{stream_id}/proof-state, /forks, /ivc/epochs | Legge proof health, fork evidence e Proof of Evolution epochs. | Tenant session. |
GET /v2/tenant/streams/{stream_id}/windows, /checkpoints | Ispeziona closed windows e checkpoints per uno stream. | Tenant session. |
POST /v2/tenant/audit/packs | Crea un tenant-authorized offline bundle per auditor review. | Tenant session plus tenant policy. |
PUT /v2/tenant/witness/policies/{policy_id} | Aggiorna una tenant witness policy con le quorum rules configurate. | Tenant session plus tenant policy permission. |
Tenant settings e SSO APIs
Tenant settings è disponibile solo per authenticated tenant users con il ruolo richiesto. I provider secrets sono cifrati server-side e non vengono mai restituiti al browser dopo il salvataggio.
| Route | Scopo |
|---|---|
GET /v1/settings | Restituisce il tenant settings snapshot, inclusi safe identity-provider metadata. |
PATCH /v1/settings/tenant | Aggiorna tenant display settings, locale e timezone policy. |
GET /v1/settings/identity-providers | Lista tenant SSO providers e public setup values. |
POST /v1/settings/identity-providers | Aggiunge Entra ID, generic OIDC o SAML provider configuration. |
PATCH /v1/settings/identity-providers/{provider_id} | Aggiorna enabled state, domains, issuer metadata o rotated secrets. |
DELETE /v1/settings/identity-providers/{provider_id} | Disabilita e rimuove un tenant identity provider. |
Connector e Local Vault APIs
Connectors sono production evidence sources. Tenant users configurano connector records nel dashboard, mentre source systems inviano events tramite provider-specific signed envelopes o Local Vault relay. Ogni connector event deve includere source system, source object, source event type, source timestamp con timezone, idempotency reference e normalized payload commitment.
| Route family | Scopo | Credential |
|---|---|---|
GET/POST /v2/tenant/connectors/signed-webhooks, DELETE /v2/tenant/connectors/signed-webhooks/{connector_id} | Crea, lista e revoca generic signed webhook connectors. I connector secrets vengono restituiti una sola volta alla creazione quando applicabile, e mai di nuovo. | 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 | Crea, lista, revoca e commit S3/R2 object evidence connectors. La route commit registra metadata e integrity senza proxy object content. | Tenant session. |
GET/POST /v2/tenant/connectors/repository-webhooks, DELETE /v2/tenant/connectors/repository-webhooks/{connector_id} | Crea, lista e revoca GitHub/GitLab repository webhook connectors. | Tenant session. |
POST /v2/connectors/signed-webhooks/{connector_id}/events | Ingests un signed webhook event da un source system esterno. | Connector signed envelope. |
POST /v2/connectors/repository-webhooks/{connector_id}/events | Ingests repository change evidence. | Provider webhook/signature contract. |
GET/POST /v2/tenant/local-vault/installations, DELETE /v2/tenant/local-vault/installations/{installation_id} | Gestisce Local Vault edge installations e revoca edge credentials fail-closed. | Tenant session. |
POST /v2/tenant/local-vault/enrollment-tokens | Crea un enrollment token breve e single-use; dopo la creazione viene salvato solo l'hash del token. | Tenant session. |
POST /v2/local-vault/enroll | Scambia un enrollment token valido con una installation credential e public installation metadata. | Single-use enrollment token. |
POST /v2/local-vault/installations/{installation_id}/events | Relay di encrypted-spool events dal customer edge verso Proofstream. | Local Vault installation credential. |
POST /v2/local-vault/installations/{installation_id}/witness/checkpoints | Invia customer-side witness checkpoint statements quando witness mode è enabled dalla policy. | Local Vault witness credential. |
API di provenienza (Attesto 3)
La provenance lane è attiva su https://verify.attesto.eu.
Uno stream di classe provenance riceve envelopes
commitment-only da un Local Vault in provenance mode: commitments
randomizzati, materiale di prova e metadati pubblici consentiti. Il
contenuto grezzo, i prompt, i nomi dei file e l'output dei provider
non raggiungono mai la piattaforma, e non esiste un'API per
recuperare una capsule perché Attesto non ne conserva. Le route
rispondono 404 su un deployment con la provenance lane
disabilitata; gli errori portano un dettaglio
{"code", "message"}.
| Route | Scopo | Credenziale |
|---|---|---|
PUT /v2/tenant/witness/policies/{policy_id} | Dichiara la witness quorum policy prima di creare uno stream sotto quel policyId. La produzione richiede una policy esplicita, quindi la creazione dello stream rifiuta di inventarne una (409 explicit witness quorum policy required); mode: "managed-shadow" con witnessKeys vuoto seleziona il managed witness. | Sessione tenant owner/admin. |
POST /v2/provenance/streams | Crea un provenance stream da useCase e policyId; il body non ha metadata. Idempotente: gli stessi input restituiscono lo stesso stream con created: false. POST /v2/streams continua a creare legacy streams; finché la provenance lane della piattaforma è attiva, ogni legacy stream appena creato porta un compatibilityWarning visibile, e una volta disattivata la creazione legacy la route rifiuta con 403 legacy_stream_creation_disabled. | System API key. |
POST /v2/local-vault/installations/{installation_id}/provenance-events | Inoltra un envelope ATTESTO-PROVENANCE-001 dal vault; lo stream viene letto dall'envelope e l'oggetto installazione annuncia il percorso come provenanceEndpointPath. Restituisce il receipt Proofstream più provenanceAck (accepted, replayed, installationId, sourceRef, envelopeHash). | La firma Ed25519 dell'installazione sull'envelope; nessun bearer token. |
POST /v2/streams/{stream_id}/provenance-events | Lo stesso ingest, indirizzato per stream. Un legacy stream risponde 409 provenance_stream_class_required; un envelope L1/L2 che la piattaforma non può sostanziare risponde 422 provenance_assurance_not_substantiated. | System API key più la firma dell'envelope. |
POST /v2/local-vault/installations/{installation_id}/attestations, GET .../attestations/{attestation_ref} | Registra e legge un record ATTESTO-VAULT-ATTESTATION-001: pkcs11-key-custody sostanzia L1, tpm2-quote sostanzia L2. La piattaforma verifica il record e restituisce attestationRef, assuranceCapability, verified ed expiresAt. | Record firmato dalla chiave dell'installazione; la lettura è pubblica. |
GET /v2/local-vault/installations/{installation_id}/key-status | Il key lifecycle dell'installazione per i controlli di revoca offline: keyId, publicKeyHex, status, revokedAt, revocationReason, replacedByInstallationId, revocationInstantReconstructed. Risponde anche per installazioni revocate, non porta riepiloghi di attività né verdetti; il verificatore confronta con il proprio receipt time. | Nessuna (pubblica di proposito). |
GET /v2/streams/{stream_id}/provenance-events/{source_ref}/bundle-inclusion?from_checkpoint_id=&to_checkpoint_id= | L'inclusion object che dimostra una capsule root sotto la provenance_root di un verifier bundle, indirizzato tramite l'intervallo di checkpoint con cui il bundle è stato costruito. Consegnalo insieme al bundle a verify_bundle_provenance di un SDK. | System API key. |
GET/PUT /v2/tenant/provenance/provider-policy, GET /v2/local-vault/installations/{installation_id}/provider-policy | Quali provider un'installazione può eseguire, con una motivazione rivedibile per ogni provider consentito; il vault legge la policy del suo tenant dalla route dell'installazione. | Sessione tenant; lettura legata all'installazione. |
POST /v2/local-vault/installations/{installation_id}/migration-status, GET /v2/tenant/local-vault/migration-status | Il report firmato della fase di migrazione del vault (observe, parity, cutover-ready, cutover, legacy-retained) e la vista del tenant, con reportedAt. | Firmato dalla chiave dell'installazione; sessione tenant per l'elenco. |
Creare un provenance stream:
curl -X POST https://verify.attesto.eu/v2/provenance/streams \
-H "Authorization: Bearer $ATTESTO_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<JSON
{
"useCase": "ai-image-provenance",
"policyId": "policy-2026-01"
}
JSON
Stato del rollout: la fase A del rollout controllato è stata eseguita in produzione il 2026-08-23 con un tenant first-party, e il rollback per lane è stato provato contro la produzione; le fasi da B a D non sono iniziate. I verificatori offline per disclosures, bundle provenance, key revocation ed effective assurance sono documentati nella guida SDK; il lato vault nella guida Local Vault.
Marketplace APIs
Le Marketplace APIs alimentano marketplace.attesto.eu. Il
public catalog è read-only. Tenant acquisition, installation, artifact
download e revocation richiedono una authenticated tenant session più
CSRF. Publisher signup, profile management, developer checkout, payout
onboarding e asset submission usano un account separato
marketplace-only developer. La documentazione pubblica omette
intenzionalmente gli endpoint privati di Attesto review e publication.
| Route family | Scopo | Credential |
|---|---|---|
GET /v1/marketplace/categories, /developer-tiers, /items, /items/{slug} | Browse public connector categories, developer tiers e validated public assets. | Public, read-only. |
POST /v1/marketplace/auth/signup, /auth/login, /auth/logout, GET /auth/csrf, /auth/me | Crea e usa marketplace-only developer accounts. Questi account non possono accedere al tenant dashboard. | Marketplace developer credentials/session. |
GET /v1/marketplace/me/entitlements, /me/installs | Lista connector entitlements e installs del tenant. | Tenant session. |
POST /v1/marketplace/items/{slug}/acquire, /install, /install/update, /revoke | Acquire, install, update o revoke tenant access a un connector asset. | Tenant session e CSRF. |
GET /v1/marketplace/items/{slug}/artifact | Scarica il connector manifest artifact dopo che entitlement è active. | Tenant session con active entitlement. |
GET /v1/marketplace/evidence/{receipt_id} | Recupera marketplace evidence receipt metadata per tenant-visible marketplace actions. | Tenant o marketplace session scoped all'evidence tenant. |
GET/POST/PATCH /v1/marketplace/publisher/profile | Crea, legge e aggiorna publisher profile metadata. | Marketplace developer session e CSRF per writes. |
GET /v1/marketplace/publisher/billing-state, POST /publisher/upgrade, /publisher/billing-portal | Ispeziona developer tier state, avvia Stripe Checkout per paid developer tiers o apre il billing portal. | Marketplace developer session e CSRF per writes. |
POST /v1/marketplace/publisher/payout/onboarding, /publisher/payout/status | Avvia Stripe Connect payout onboarding e aggiorna payout readiness per paid connector publishing. | Marketplace developer session e CSRF. |
POST /v1/marketplace/publisher/assets | Invia un connector manifest a private Attesto review. Public listing non è mai automatico. | Marketplace developer session, CSRF ed eligible developer tier per paid assets. |
Public status API
status.attesto.eu espone health customer-safe per i
servizi pubblici. Include component status, latency, uptime bars,
incident summaries, generated time e timezone metadata. Non espone
private admin status, tenant identifiers, logs, secrets, provider
payloads o raw database details.
GET https://status.attesto.eu/healthrestituisce status-service health.GET https://status.attesto.eu/api/statusrestituisce il public status payload usato dalla pagina.GET https://status.attesto.eu/v1/statusè il versioned status payload alias.
Vedi Public status page per il public visibility model e la component list.
Verification behavior
Verification fail-closed su malformed objects, changed payloads, changed sequence numbers, removed o inserted events, stale checkpoints, wrong witness signatures, wrong anchors e ambiguous fork evidence.
Truth Package downloads e verification sono lifecycle events separati.
Un download registra truth_package.accessed, provando che
il package è stato servito. Un verifier report riuscito inviato a
/v1/exports/{exportId}/truth-package/verify registra
truth_package.verified, provando che un verifier ha
controllato package hash, manifest hash e included artifacts. Il final
ZIP hash viene registrato dopo la finalizzazione dei ZIP bytes e non
viene reinserito nello stesso ZIP; questo evita circular self-reference
mantenendo i bytes scaricabili indipendentemente hashabili.
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 | Meaning | Azione integratore |
|---|---|---|
400 | Malformed request o unsupported verifier object. | Correggi request shape e retry con una nuova idempotency key se il body cambia. |
401 | Missing o invalid system key. | Ruota o riconfigura la credential server-side. |
403 | Authenticated key senza accesso a tenant, system o stream. | Controlla tenant/system assignment. |
404 | Object non visibile al caller o inesistente. | Conferma IDs e tenant scope. |
409 | Idempotency conflict, sequence conflict o append conflict. | Non retry changed bodies alla cieca; ispeziona conflict details. |
422 | Request syntactically valid ma viola il route contract. | Correggi field values, policy references o object kind. |
429 | Rate limit. | Back off con jitter e mantieni stabili le idempotency keys. |
5xx | Service-side failure. | Retry con la stessa idempotency key e preserva il body originale. |
API keys restano server-side
Attesto system keys sono bearer credentials. Usale solo da trusted server-side processes, connector edges o secret-managed job runners.
