SKU#14 · ruleset riel-liveness-v1

Liveness de catálogo

¿Responde el endpoint canónico de una ficha? Son reglas explícitas LupaRiel: solo se sondean URLs resueltas desde el mismo catálogo que /rieles.json. No es un oráculo, no un consejo y no un dump gratis.

Endpoint

POST /api/liveness — x402 v2 Exact, $0.02 USDC en Base (eip155:8453, amount atómico 20000). Sin pago responde HTTP 402 + PAYMENT-REQUIRED. Body ausente, ids vacío o más de 10 ids responde 400 { error, hint } antes del cobro. GET responde 405.

Probe unpaid (debe ser 402 tras el deploy):

curl -i -X POST https://lupariel.com/api/liveness \
  -H 'Content-Type: application/json' \
  -d '{"ids":["lupapago-consent-hop","lupaplaza-plaza-discover","lupaplaza-plaza-probe","lupariel-rail-matrix","lupapago-psp-recommend"]}'

Lookup sigue en /api/lookup. Rail matrix sigue en /api/rail/matrix. HTML y /rieles.json no cambian.

Body

  • ids (1–10): slug de ficha, plaza_id o URL canónica que ya esté en el catálogo.

Reglas

  1. Cada id se resuelve contra el snapshot de fichas (mismo que el sitio). Si no hay match, live: false y no se fetchea.
  2. Si hay match, se usa la URL canónica de la ficha. Solo http(s) público. No se siguen redirects (3xx cuenta como reachable).
  3. Probe unpaid corto (GET, ~6s). live=true si el status es 2xx, 3xx o 402. 5xx, timeout, error de red o id desconocido → live=false.
  4. is_402 es status === 402. Hasta 4 probes en paralelo.

Respuesta 200 (post-pago)

{
  "product": "LupaRiel",
  "kind": "liveness",
  "ruleset": "riel-liveness-v1",
  "results": [
    {
      "id": "lupapago-consent-hop",
      "live": true,
      "http_status": 402,
      "is_402": true,
      "notes": "HTTP 402 Payment Required"
    }
  ],
  "count": 1,
  "disclaimer": "Checks LupaRiel catalog URLs; no es asesoramiento."
}

Qué no es

  • No sondea URLs arbitrarias del caller (anti-SSRF).
  • No autoriza ni mueve fondos. El cobro de la llamada es x402 Exact USDC Base.
  • No reemplaza a /api/lookup ni a rail-matrix.

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