Cards
Approvals
Pagos retenidos por cap: listar y resolver.
GET /api/card/approvals
POST /api/card/approvals/request
GET /api/card/approvals/{id}Un approval se crea cuando un pago supera el cap del agente (hold-no-block). Guarda el
motivo (reasons[]) con el breach (type: "limitExceeded"). Solo un humano / el owner lo
resuelve; el agente que lo originó no. Ver Approvals.
Listar GET /approvals
{
"items": [
{
"kind": "approval",
"id": "appr_4b5c6d7e8f9001a2b3c4d5e6f7081920",
"actionType": "wallet_pay",
"amountCents": 250000,
"currency": "ARS",
"payee": "Insumos SRL",
"agent": "compras",
"reasons": null,
"agentReason": "Compra de insumos",
"channel": "inbox",
"createdAt": "2026-08-20T09:10:00.000Z",
"expiresAt": "2026-08-20T10:10:00.000Z"
}
],
"count": 1
}Resolver POST /approvals/{id}
Body: { "decision": "approved" } o { "decision": "rejected", "declineReason": "..." }.
Al aprobar y liquidar OK:
{
"id": "appr_4b5c6d7e8f9001a2b3c4d5e6f7081920",
"status": "approved",
"settled": true,
"kind": "wallet_pay",
"amountCents": 250000,
"payee": "Insumos SRL",
"masterAfterCents": 750000,
"capAfter": 500000
}Si se aprueba pero la liquidación falla, el status es approved con settled: false,
error y message (HTTP 502).
Errores
| Status | Body |
|---|---|
400 | { "error": "invalid_request", "message": "approval already decided" } |
400 | { "error": "invalid_request", "message": "approval expired" } |
401 | { "error": "unauthorized", "message": "Authentication required" } |
403 | { "error": "forbidden", "message": "approval belongs to another cardholder" } |
404 | { "error": "not_found", "message": "approval not found" } |