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
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):
Health-Check
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\"}"