SDKs & APIs

API-Referenz

Referenz für KLA Control Plane tRPC-Prozeduren, Evidence-REST-Routen, Authentifizierung und Tenant-Header.

5 Min. Lesezeit1041 Wörter

Die KLA Control Plane stellt zwei HTTP-Transporte unter dem Basispfad /v1 bereit:

  • Generierte tRPC-Prozeduren verwenden einen Namen mit Punkten wie agents.create. Die CLI stellt jede Operation aus dem generierten Control-Plane-Katalog bereit.
  • REST-Routen decken den Evidence-Export, den Dateitransport, die Policy Registry, Telemetrie und weitere servicespezifische Oberflächen ab.

Verwenden Sie die CLI für tRPC-Prozeduren und kla api rest oder curl für REST-Routen. Der API-Host in den Beispielen ist die bereitgestellte Dev-API:

export KLA_API_URL='https://api.dev.kla.digital'
export KLA_ACCESS_TOKEN='<short-lived access token>'
export KLA_TENANT_ID='<tenant external ID>'

# Build the repository CLI while the package is private, then expose it in this shell.
corepack enable
pnpm install --frozen-lockfile
pnpm kla --help
KLA_REPO_ROOT="$(git rev-parse --show-toplevel)"
kla() { KLA_CLI_CWD="$PWD" pnpm --dir "$KLA_REPO_ROOT" --silent kla "$@"; }

Der Katalog wird aus dem Server-AppRouter generiert. Die Anzahl seiner Operationen ändert sich, wenn Prozeduren hinzukommen oder entfernt werden. Führen Sie kla api list aus, um die aktuelle Anzahl zu prüfen, und kla api doctor, um den eingebetteten Katalog mit dem konfigurierten Server zu vergleichen.

Authentifizierung und Tenant-Header

Jede Anfrage enthält ein kurzlebiges OAuth-2.0-Bearer-Token. Der verifizierte Tenant-Claim liefert den Standard-Tenant. Bewahren Sie Token und Client-Secrets in der Umgebung des aufrufenden Dienstes auf.

Header Erforderlich Semantik
Authorization Ja Bearer <access token> authentifiziert den Aufrufer.
x-kla-tenant-external-id Nein Wählt einen Tenant anhand der externen ID aus, wenn der authentifizierte Subject eine aktive Mitgliedschaft in diesem Tenant hat. Die Auswahl eines Tenants ohne Mitgliedschaft liefert 403.
x-kla-tenant-id Nein Interne UUID des Mandanten. Authentifizierung und bestätigte Mitgliedschaft bestimmen den Mandanten.
Content-Type Bei JSON-Schreibvorgängen application/json.

Die CLI sendet ihre konfigurierte KLA_TENANT_ID als x-kla-tenant-id. Befehle mit einer ausdrücklichen Tenant-Auswahl, etwa kla evidence export --tenant <external-id>, verwenden x-kla-tenant-external-id und erfordern eine aktive Mitgliedschaft.

kla auth test

curl -sS "$KLA_API_URL/v1/tenants.current" \
  -H "Authorization: Bearer $KLA_ACCESS_TOKEN" \
  -H "x-kla-tenant-external-id: $KLA_TENANT_ID"

tRPC-Prozeduren

Der tRPC-Handler ist unter /v1 eingebunden. Der HTTP-Pfad einer Prozedur lautet /v1/<procedure>:

Prozedurtyp HTTP-Methode Beispiel
Mutation POST POST /v1/agents.create
Query GET GET /v1/approvals.getPending
Subscription Realtime/WebSocket traces.stream

Der generierte Katalog und der Server validieren dieselbe Zod-Eingabe. Ermitteln Sie Eingabeschemas mit:

kla api list --prefix agents.
kla api describe agents.create
kla api describe approvals.decide

Einen Agenten registrieren

agents.create akzeptiert das Agenten-Manifest als YAML-String. Der kuratierte Befehl ruft dieselbe Prozedur wie der generische Befehl auf:

  • Endpunkt: POST /v1/agents.create
kla agent create --file /tmp/claims-triage.yaml
# Equivalent generated procedure command:
kla api agents create --input "$(jq -Rs '{yaml: .}' /tmp/claims-triage.yaml)"

Die Antwort enthält die ID des registrierten Agenten. Eine genehmigte Policy-Bindung und ein Release sind erforderlich, bevor executions.execute den Agenten ausführen kann.

Eine Ausführung starten und prüfen

Die Ausführungsprozedur liefert eine executionId:

kla agent run AGENT_UUID \
  --environment sandbox \
  --input '{"claim_id":"clm_9921","requested_refund":1250.00}'

kla api executions get --input '{"id":"EXECUTION_UUID"}'
kla api executions getEvents --input '{"id":"EXECUTION_UUID"}'

Ausstehende Genehmigungen lesen und auflösen

approvals.getPending listet ausstehende Decision Requests für den aktuellen Tenant auf. approvals.decide akzeptiert approve, reject oder escalate und erfordert eine Begründung.

  • Endpunkt: GET /v1/approvals.getPending
  • Endpunkt: POST /v1/approvals.decide
kla api approvals getPending --input '{"limit":20}'
export KLA_REVIEWER_ACCESS_TOKEN='<reviewer short-lived access token>'
cat > /tmp/approval-decision.json <<'JSON'
{
  "approvalId": "APPROVAL_UUID",
  "decision": "approve",
  "decisionAcknowledged": true,
  "reason": "Reviewed the claim evidence and authorized the refund."
}
JSON
KLA_ACCESS_TOKEN="$KLA_REVIEWER_ACCESS_TOKEN" \
  kla api approvals decide --input @/tmp/approval-decision.json

Die API wendet Tenant-Berechtigungen und Maker-Checker-Regeln auf die Entscheidung an. Ein Reviewer darf eine Anfrage derselben Identität nicht genehmigen, die sie erstellt hat, wenn die Policy des Tenants eine Aufgabentrennung verlangt.

Traces prüfen und verifizieren

traces.getTrace liefert die Spans eines einzelnen Traces. Sensible Werte bleiben maskiert, sofern der Aufrufer nicht über die gesonderte Unmask-Berechtigung verfügt und eine Begründung angibt.

  • Endpunkt: GET /v1/traces.getTrace
  • Endpunkt: GET /v1/traces.verify
kla api traces getTrace \
  --input '{"traceId":"TRACE_ID","tenantId":"TENANT_EXTERNAL_ID","includeSensitiveData":false}'

kla api traces verify \
  --input '{"tenant":"TENANT_EXTERNAL_ID","auditId":"AUDIT_ID","date":"PROOF_DATE","nonce":"PROOF_NONCE","merkleRoot":"MERKLE_ROOT"}'

traces.verify erfordert die Berechtigung trace:verify. Seine Eingabe enthält immer tenant; die Proof-Felder werden angegeben, wenn der zugehörige Audit-Datensatz sie enthält.

Evidence-REST-Routen

Der Evidence-Export verwendet einen asynchronen REST-Job der API. Die Anfrage akzeptiert ein Zeitfenster sowie Flags für Proofs und Rohdaten. evidence:export erstellt einen Job und liest Jobs desselben Akteurs. evidence:list liest Jobs des gesamten Tenants. evidence:read liest das versiegelte Manifest und Archiv.

Einen Export erstellen

  • Endpunkt: POST /v1/evidence/export-jobs
EXPORT_JOB=$(curl -sS -X POST "$KLA_API_URL/v1/evidence/export-jobs" \
  -H "Authorization: Bearer $KLA_ACCESS_TOKEN" \
  -H "x-kla-tenant-external-id: $KLA_TENANT_ID" \
  -H 'Content-Type: application/json' \
  -d '{"startDate":"2026-07-01T00:00:00.000Z","endDate":"2026-07-31T00:00:00.000Z","includeProofs":true}')
echo "$EXPORT_JOB"

Die Antwort enthält exportId, status und pollTimeoutMs. Polling endet bei completed, completed_with_omissions, failed oder canceled.

Pollen, Manifest lesen und Archiv herunterladen

  • Endpunkt: GET /v1/evidence/factory/jobs/$EXPORT_ID
  • Endpunkt: GET /v1/evidence/factory/jobs/$EXPORT_ID/manifest
  • Endpunkt: GET /v1/evidence/factory/jobs/$EXPORT_ID/download
EXPORT_ID=$(jq -r '.exportId' <<<"$EXPORT_JOB")

curl -sS "$KLA_API_URL/v1/evidence/factory/jobs/$EXPORT_ID" \
  -H "Authorization: Bearer $KLA_ACCESS_TOKEN" \
  -H "x-kla-tenant-external-id: $KLA_TENANT_ID" | jq

curl -sS "$KLA_API_URL/v1/evidence/factory/jobs/$EXPORT_ID/manifest" \
  -H "Authorization: Bearer $KLA_ACCESS_TOKEN" \
  -H "x-kla-tenant-external-id: $KLA_TENANT_ID" | jq

curl -sS -f "$KLA_API_URL/v1/evidence/factory/jobs/$EXPORT_ID/download" \
  -H "Authorization: Bearer $KLA_ACCESS_TOKEN" \
  -H "x-kla-tenant-external-id: $KLA_TENANT_ID" \
  -o "./evidence-$EXPORT_ID.zip"

Das Archiv ist ein versiegeltes Paket vom Typ evidence-room-bundle-v1. Verifizieren Sie es offline mit:

kla evidence verify --bundle "./evidence-$EXPORT_ID.zip" --out ./evidence-report

Der Befehl kla evidence export erstellt den Job über POST /v1/evidence/export-jobs, pollt GET /v1/evidence/factory/jobs/:exportId und liest Manifest und Archiv über die kanonischen Evidence-Factory-Routen. Er verwendet den API-Ursprung, die Tenant-Auswahl und das Zugangstoken aus dem ausgewählten CLI-Kontext.

Verhalten und Fehler bei REST-Anfragen

REST-Antworten verwenden JSON für Metadaten und application/zip für Archiv-Downloads. Häufige Statuscodes sind:

Status Bedeutung
400 Request-Validierung fehlgeschlagen oder Tenant-Kontext unvollständig.
401 Bearer-Token fehlt, ist abgelaufen oder ungültig.
403 Dem Aufrufer fehlen die erforderliche Berechtigung oder Tenant-Mitgliedschaft.
404 Ressource oder Route existiert für den ausgewählten Tenant nicht.
409 Die Anfrage steht im Konflikt mit dem aktuellen Ressourcenstatus.
429 Das Tenant-Rate-Limit wurde überschritten.
5xx Vorübergehender Fehler eines Dienstes oder einer Abhängigkeit.

Behandeln Sie eine fehlgeschlagene Policy-Entscheidung, eine fehlgeschlagene Genehmigungsautorisierung oder einen fehlgeschlagenen Evidence-Preflight als fehlgeschlagene Operation. Wiederholen Sie nur, wenn die Antwort einen vorübergehenden Fehler nennt und die Operation sicher wiederholt werden kann.

API-Referenz | Developer Docs | KLA Control Plane