SKU#16 · ruleset x402-auth-capture-brief-v1

Auth-capture brief

Brief informativo del flujo hold → capture|void|reclaim|refund. Son reglas explícitas LupaRiel: no es una reserva, no un escrow y no una autorización de pago. Este SKU no ejecuta hold on-chain.

Endpoint

GET /api/reserve/brief — x402 v2 Exact, $0.01 USDC en Base (eip155:8453, amount atómico 10000). Sin pago responde HTTP 402 + PAYMENT-REQUIRED. resource ausente o que no sea URL http(s) responde 400 { error, hint } antes del cobro. Un resource no indexado no es 404: v1 siempre devuelve un brief genérico.

Probe unpaid (debe ser 402 tras el deploy):

curl -i 'https://lupariel.com/api/reserve/brief?resource=https%3A%2F%2Flupapago.com%2Fapi%2Ffee%2Fquote%3Fpsp%3Dmobbex%26amount%3D50000%26cuotas%3D3&amount=0.10&lang=es'

Lookup sigue en /api/lookup. Liveness sigue en /api/liveness. HTML y /rieles.json no cambian.

Query

  • resource (requerido): URL http(s) a briefear.
  • amount (opcional, default 0.10): monto decimal del hold descrito. No es el precio del SKU.
  • asset (default USDC), network (default eip155:8453), lang (es|en, default es).

Respuesta 200 (post-pago)

{
  "scheme": "auth-capture",
  "resource": "https://lupapago.com/api/fee/quote?psp=mobbex&amount=50000&cuotas=3",
  "network": "eip155:8453",
  "asset": "USDC",
  "amount": "0.10",
  "flow": {
    "phases": ["authorize", "capture", "void", "reclaim", "refund"],
    "authorize": "Autoriza / retiene el monto (hold). No transfiere inventario ni completa el settle.",
    "capture": "Captura el monto retenido tras cumplir. El settle real es COMPLETED (o el status de sesión), no el HTTP 200 del authorize.",
    "void": "Libera el hold sin capturar (cancelación del vendedor).",
    "reclaim": "El comprador reclama el hold si expiró sin capture ni void.",
    "refund": "Reembolso después de un capture."
  },
  "autoCapture": false,
  "deadlines": { "captureDeadline": null, "refundDeadline": null },
  "settlementTruth": "COMPLETED (o status de sesión), no el HTTP 200 del authorize",
  "notInventory": true,
  "summary": "Reserva fondos, no inventario. Hold → capture|void|reclaim|refund.",
  "ruleset": "x402-auth-capture-brief-v1",
  "examples": {
    "holdThenCapture": "authorize 0.10 USDC → fulfill → capture",
    "holdThenVoid": "authorize → cancel → void",
    "holdExpireReclaim": "authorize → timeout → reclaim"
  }
}

Qué no es

  • No ejecuta authorize/capture/void on-chain.
  • No escribe estado de reserva ni escrow.
  • No es inventario. notInventory: true.
  • No reemplaza a /api/lookup, rail-matrix ni liveness.

Discovery: /openapi.json y /.well-known/x402. Facilitator por defecto: PayAI (https://facilitator.payai.network).