SDK y API

Referencia de la API

Referencia de los procedimientos tRPC del KLA Control Plane, las rutas REST de Evidence, la autenticación y las cabeceras de tenant.

5 min de lectura1161 palabras

KLA Control Plane expone dos transportes HTTP bajo la ruta base /v1:

  • Los procedimientos tRPC generados usan un nombre de operación con puntos, como agents.create. La CLI expone todas las operaciones del catálogo de control plane generado.
  • Las rutas REST cubren la exportación de Evidence, el transporte de archivos, el registro de políticas, la telemetría y otras superficies propias de cada servicio.

Usa la CLI para los procedimientos tRPC y kla api rest o curl para las rutas REST. El host de API de los ejemplos es la API dev desplegada:

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 "$@"; }

El catálogo se genera desde el AppRouter del servidor. El número de operaciones cambia cuando cambian los procedimientos. Ejecuta kla api list para consultar el número actual y kla api doctor para comparar el catálogo integrado con el servidor configurado.

Autenticación y cabeceras de tenant

Cada solicitud lleva un token bearer OAuth 2.0 de corta duración. El claim de tenant verificado proporciona el tenant predeterminado. Conserva los tokens y secretos de cliente en el entorno del servicio que realiza la llamada.

Cabecera Obligatoria Semántica
Authorization Bearer <access token> autentica al llamante.
x-kla-tenant-external-id No Selecciona un tenant por su ID externo cuando el sujeto autenticado tiene una membresía activa en ese tenant. Una selección sin membresía devuelve 403.
x-kla-tenant-id No UUID interno del tenant. La autenticación y la pertenencia verificada determinan el tenant.
Content-Type En escrituras JSON application/json.

La CLI envía su KLA_TENANT_ID configurado como x-kla-tenant-id. Los comandos con una selección explícita, como kla evidence export --tenant <external-id>, usan x-kla-tenant-external-id y requieren una membresía activa.

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"

Procedimientos tRPC

El controlador tRPC está montado en /v1. La ruta HTTP de un procedimiento es /v1/<procedure>:

Tipo de procedimiento Método HTTP Ejemplo
Mutation POST POST /v1/agents.create
Query GET GET /v1/approvals.getPending
Subscription Realtime/WebSocket traces.stream

El catálogo generado y el servidor validan la misma entrada Zod. Descubre los esquemas de entrada con:

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

Registrar un agente

agents.create acepta el manifiesto del agente como una cadena YAML. El comando curado llama al mismo procedimiento que el comando genérico:

  • Endpoint: 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)"

La respuesta incluye el identificador del agente registrado. Se necesitan una vinculación de política aprobada y un release antes de que executions.execute pueda ejecutar el agente.

Iniciar e inspeccionar una ejecución

El procedimiento de ejecución devuelve un 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"}'

Leer y resolver aprobaciones pendientes

approvals.getPending enumera las Decision Requests pendientes del tenant actual. approvals.decide acepta approve, reject o escalate y requiere un motivo.

  • Endpoint: GET /v1/approvals.getPending
  • Endpoint: 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

La API aplica permisos de tenant y reglas maker-checker a la decisión. Un reviewer no puede aprobar una solicitud creada por su misma identidad cuando la política del tenant exige separación de funciones.

Inspeccionar y verificar traces

traces.getTrace devuelve los spans de un trace. Los valores sensibles permanecen enmascarados, salvo que el llamante tenga el permiso independiente de desenmascarado y proporcione una justificación.

  • Endpoint: GET /v1/traces.getTrace
  • Endpoint: 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 requiere el permiso trace:verify. Su entrada siempre incluye tenant; los campos de proof se proporcionan cuando el registro de auditoría correspondiente los contiene.

Rutas REST de Evidence

La exportación de Evidence usa un trabajo REST asíncrono de la API. La solicitud acepta una ventana temporal y flags de proofs o payloads sin procesar. evidence:export crea un trabajo y lee trabajos del mismo actor. evidence:list lee trabajos de todo el tenant. evidence:read lee el manifiesto y archivo sellados.

Crear una exportación

  • Endpoint: 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"

La respuesta contiene exportId, status y pollTimeoutMs. El sondeo termina con completed, completed_with_omissions, failed o canceled.

Consultar, leer el manifiesto y descargar el archivo

  • Endpoint: GET /v1/evidence/factory/jobs/$EXPORT_ID
  • Endpoint: GET /v1/evidence/factory/jobs/$EXPORT_ID/manifest
  • Endpoint: 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"

El archivo es un paquete sellado de tipo evidence-room-bundle-v1. Verifícalo sin conexión con:

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

El comando kla evidence export crea el trabajo en POST /v1/evidence/export-jobs, consulta GET /v1/evidence/factory/jobs/:exportId y lee el manifiesto y descarga desde las rutas canónicas de Evidence Factory. Usa el origen de API, la selección de tenant y la credencial del contexto de CLI seleccionado.

Comportamiento y errores de las solicitudes REST

Las respuestas REST usan JSON para los metadatos y application/zip para las descargas de archivos. Los códigos de estado habituales son:

Estado Significado
400 Falló la validación de la solicitud o falta el contexto de tenant.
401 Falta el token bearer, ha caducado o no es válido.
403 Faltan el permiso requerido o la membresía de tenant.
404 El recurso o la ruta no existe para el tenant seleccionado.
409 La solicitud entra en conflicto con el estado actual del recurso.
429 Se superó el límite de tasa del tenant.
5xx Fallo transitorio del servicio o de una dependencia.

Trata una decisión de política fallida, una autorización de aprobación fallida o un preflight de Evidence fallido como una operación fallida. Reintenta solo cuando la respuesta identifica un fallo transitorio y la operación se puede repetir con seguridad.

Referencia de la API | Developer Docs | KLA Control Plane