Zum Inhalt

curl / HTTP

Alle Kavra-Siegel-Endpoints sind standard-REST. Hier die wichtigsten Aufrufe mit curl.

Stempel erstellen

curl -X POST https://siegel.kavra.cloud/api/v1/internal/v1/stamp \
  -H "Content-Type: application/json" \
  -H "X-Kavra-Service-Token: sk_your_token_here" \
  -d '{
    "hash": "a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4",
    "tier": "basic",
    "metadata": {"source": "cli-test"}
  }'

Response (201 Created):

{
  "token_id": "550e8400-e29b-41d4-a716-446655440000",
  "issued_at": "2026-05-14T12:00:00Z",
  "content_sha256": "a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4",
  "token": "MIIBxjAOBgorBgEE...<base64>...",
  "tier": "basic",
  "tsp_provider": "mock",
  "is_qualified": false,
  "verify_url": "/api/v1/verify/v1/token/550e8400-e29b-41d4-a716-446655440000",
  "sealed_storage_url": null
}

Stempel verifizieren

curl https://siegel.kavra.cloud/api/v1/verify/v1/token/550e8400-e29b-41d4-a716-446655440000

Kein Auth-Header nötig

Der Verify-Endpoint ist öffentlich. Jeder kann einen Stempel verifizieren.

Response (200 OK):

{
  "valid": true,
  "token_id": "550e8400-e29b-41d4-a716-446655440000",
  "issued_at": "2026-05-14T12:00:00Z",
  "content_sha256": "a1b2c3d4...a1b2c3d4",
  "tsp_provider": "mock",
  "is_qualified": false,
  "reason": null
}

Response (404 Not Found):

{
  "valid": false,
  "token_id": null,
  "reason": "Token nicht gefunden"
}

Health-Check

curl https://siegel.kavra.cloud/health

Response:

{
  "status": "ok",
  "environment": "production",
  "tsp_provider": "mock",
  "is_qualified": false,
  "version": "0.1.0"
}

Fehler-Responses

Status Bedeutung Beispiel
401 Service-Token fehlt oder ungültig {"detail": "Ungültiger Service-Token"}
422 Validierungsfehler (z.B. Hash nicht 64 Zeichen) {"detail": "hash must be hexadecimal"}
502 TSP-Adapter-Fehler {"detail": "Stempel konnte nicht erstellt werden"}

Hash lokal berechnen

# Datei hashen
sha256sum vertrag.pdf | awk '{print $1}'

# String hashen
echo -n "Mein Dokument" | sha256sum | awk '{print $1}'

# Dann stempeln
HASH=$(sha256sum vertrag.pdf | awk '{print $1}')
curl -X POST https://siegel.kavra.cloud/api/v1/internal/v1/stamp \
  -H "Content-Type: application/json" \
  -H "X-Kavra-Service-Token: sk_your_token_here" \
  -d "{\"hash\": \"$HASH\", \"tier\": \"basic\"}"