{"openapi":"3.1.0","jsonSchemaDialect":"https://spec.openapis.org/oas/3.1/dialect/base","info":{"title":"ProviBet API","version":"1.0.0","summary":"API autenticada de catálogo, destinos y créditos.","description":"Integración HTTPS de servidor a servidor. Importes públicos como strings decimales; crédito asíncrono. Describe capacidades implementadas; su disponibilidad depende del entorno y permisos. No contiene información de integraciones privadas.\n\nFirma v1: unir exactamente ocho campos con LF y sin LF final: v1, API key completa, método HTTP en mayúsculas, ruta cruda con query en su orden/codificación originales, X-Timestamp, X-Nonce, Idempotency-Key o string vacío, SHA256 hexadecimal del body crudo. Aplicar HMAC-SHA256 con API Secret como string literal y enviar hexadecimal minúsculo en X-Signature. GET lleva body vacío. No modificar body o target después de firmar.\n\nNonce único por credencial. Cada reintento utiliza nonce y timestamp nuevos; una intención financiera conserva Idempotency-Key y datos originales. Reloj sincronizado: ventana máxima ±300 segundos, configurable a menos. Whitelist vacía deniega acceso. Permisos y credenciales se evalúan por request. Guardar secretos únicamente en el backend, nunca en navegador o app móvil."},"servers":[{"url":"/","description":"Origen HTTPS asignado para esta integración."}],"tags":[{"name":"Estado"},{"name":"Consultas"},{"name":"Créditos"},{"name":"Operaciones"}],"security":[{"ApiKey":[],"HmacSignature":[]}],"paths":{"/api/v1/status":{"get":{"operationId":"getStatus","summary":"Estado básico","tags":["Estado"],"security":[],"responses":{"200":{"description":"Servicio disponible.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"},"example":{"status":"ok"}}}},"500":{"$ref":"#/components/responses/Error500"},"503":{"description":"Mantenimiento.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceStatus"},"example":{"status":"maintenance"}}}}}}},"/api/v1/catalog":{"get":{"operationId":"getCatalog","summary":"Consultar catálogo","description":"Catálogo completo sin paginación. No incluye URLs de juegos o lanzamiento. Depende de la vigencia del caché.","tags":["Consultas"],"x-required-permission":"catalog:read","parameters":[{"$ref":"#/components/parameters/Timestamp"},{"$ref":"#/components/parameters/Nonce"},{"$ref":"#/components/parameters/SignatureVersion"}],"responses":{"200":{"description":"Catálogo con identificadores ProviBet.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogResponse"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"409":{"$ref":"#/components/responses/Error409"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/balance":{"get":{"operationId":"getBalance","summary":"Consultar créditos del cliente","description":"Créditos no implica conversión a moneda fiduciaria. credits/add no recarga el saldo comercial del cliente.","tags":["Consultas"],"x-required-permission":"balance:read","parameters":[{"$ref":"#/components/parameters/Timestamp"},{"$ref":"#/components/parameters/Nonce"},{"$ref":"#/components/parameters/SignatureVersion"}],"responses":{"200":{"description":"Saldo disponible y reservado.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceResponse"},"example":{"success":true,"data":{"available":"1500.00","reserved":"200.00","unit":"credits","scale":2}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"409":{"$ref":"#/components/responses/Error409"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/destinations":{"get":{"operationId":"listDestinations","summary":"Listar destinos propios","description":"Orden descendente por fecha de creación e ID. Incluye activos e inactivos. Altas/cambios se coordinan con el administrador. Sólo limit y before son parámetros aceptados.","tags":["Consultas"],"x-required-permission":"balance:read","parameters":[{"$ref":"#/components/parameters/Timestamp"},{"$ref":"#/components/parameters/Nonce"},{"$ref":"#/components/parameters/SignatureVersion"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Before"}],"responses":{"200":{"description":"Destinos asignados al cliente.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestinationPageResponse"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/transactions":{"get":{"operationId":"listTransactions","summary":"Listar operaciones propias","description":"Orden descendente por fecha de creación e ID. Incluye ajustes administrativos. Consultar hasta next_before=null; una página final puede estar vacía. Sólo limit y before son aceptados.","tags":["Operaciones"],"x-required-permission":"transactions:read","parameters":[{"$ref":"#/components/parameters/Timestamp"},{"$ref":"#/components/parameters/Nonce"},{"$ref":"#/components/parameters/SignatureVersion"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Before"}],"responses":{"200":{"description":"Historial paginado.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationPageResponse"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/transaction/{id}":{"get":{"operationId":"getTransaction","summary":"Consultar estado actual de una operación","description":"No expone operaciones de otros clientes. pending_verification requiere consultar la misma operación; no repetir la intención con otra clave.","tags":["Operaciones"],"x-required-permission":"transactions:read","parameters":[{"$ref":"#/components/parameters/Timestamp"},{"$ref":"#/components/parameters/Nonce"},{"$ref":"#/components/parameters/SignatureVersion"},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Operación propia.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/transfer":{"post":{"operationId":"unsupportedTransfer","summary":"Transferencia no disponible","description":"Ruta sin operación implementada. Requiere autenticación válida, IP habilitada y permiso; superados esos controles devuelve HTTP 422. No usar para cargas o retiros.","tags":["Operaciones"],"x-required-permission":"balance:read","parameters":[{"$ref":"#/components/parameters/Timestamp"},{"$ref":"#/components/parameters/Nonce"},{"$ref":"#/components/parameters/SignatureVersion"}],"responses":{"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"409":{"$ref":"#/components/responses/Error409"},"422":{"description":"OPERATION_NOT_SUPPORTED. No ejecuta movimiento.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"OPERATION_NOT_SUPPORTED","message":"Operation not supported"},"request_id":"550e8400-e29b-41d4-a716-446655440000"}}}},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}}}},"/api/v1/credits/add":{"post":{"operationId":"addCredits","summary":"Solicitar carga a un destino","description":"Persistir Idempotency-Key antes del primer envío. Misma clave y datos equivalentes devuelven el mismo UUID y la aceptación original, incluso si ya cambió el estado. Consulte status_url para estado actual. El replay está sujeto a autenticación, permisos y controles operativos vigentes. Cambiar intención/destino/importe/referencia causa 409. Un timeout no autoriza a cambiar la clave. No hay SLA de finalización garantizado. Reserva saldo disponible al aceptar; confirmación consume la reserva, rechazo definitivo la libera.","tags":["Créditos"],"x-required-permission":"credits:add","parameters":[{"$ref":"#/components/parameters/Timestamp"},{"$ref":"#/components/parameters/Nonce"},{"$ref":"#/components/parameters/SignatureVersion"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"202":{"description":"Aceptación asíncrona original; replay válido también devuelve HTTP 202. No significa operación completada.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedCreditResponse"},"example":{"success":true,"data":{"id":"31f1e19e-16c6-4de7-915d-906a7d124c8a","status":"pending","kind":"add","amount":"100.00","status_url":"/api/v1/transaction/31f1e19e-16c6-4de7-915d-906a7d124c8a"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"413":{"$ref":"#/components/responses/Error413"},"415":{"$ref":"#/components/responses/Error415"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditRequest"},"example":{"destination_id":"0bfa0cc3-d659-4ecb-bf7d-0d8d34df96af","amount":"100.00","reference":"orden-1038"}}}}}},"/api/v1/credits/remove":{"post":{"operationId":"removeCredits","summary":"Solicitar retiro de un destino","description":"Persistir Idempotency-Key antes del primer envío. Misma clave y datos equivalentes devuelven el mismo UUID y la aceptación original, incluso si ya cambió el estado. Consulte status_url para estado actual. El replay está sujeto a autenticación, permisos y controles operativos vigentes. Cambiar intención/destino/importe/referencia causa 409. Un timeout no autoriza a cambiar la clave. No hay SLA de finalización garantizado. Acredita saldo del cliente sólo cuando el retiro se confirma.","tags":["Créditos"],"x-required-permission":"credits:remove","parameters":[{"$ref":"#/components/parameters/Timestamp"},{"$ref":"#/components/parameters/Nonce"},{"$ref":"#/components/parameters/SignatureVersion"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"202":{"description":"Aceptación asíncrona original; replay válido también devuelve HTTP 202. No significa operación completada.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptedCreditResponse"},"example":{"success":true,"data":{"id":"31f1e19e-16c6-4de7-915d-906a7d124c8a","status":"pending","kind":"remove","amount":"100.00","status_url":"/api/v1/transaction/31f1e19e-16c6-4de7-915d-906a7d124c8a"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"413":{"$ref":"#/components/responses/Error413"},"415":{"$ref":"#/components/responses/Error415"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditRequest"},"example":{"destination_id":"0bfa0cc3-d659-4ecb-bf7d-0d8d34df96af","amount":"100.00","reference":"orden-1038"}}}}}}},"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Clave completa; 32–128 caracteres [A-Za-z0-9_-]."},"HmacSignature":{"type":"apiKey","in":"header","name":"X-Signature","description":"HMAC-SHA256 de mensaje v1: exactamente 64 caracteres hexadecimales minúsculos. Se genera por request, no es un token constante."}},"parameters":{"Timestamp":{"name":"X-Timestamp","in":"header","required":true,"description":"Unix timestamp en segundos; tolerancia máxima ±300 segundos.","schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,10})$"}},"Nonce":{"name":"X-Nonce","in":"header","required":true,"description":"Aleatorio nuevo por intento; duplicado devuelve DUPLICATE_REQUEST (409).","schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"SignatureVersion":{"name":"X-Signature-Version","in":"header","required":false,"description":"Si se omite, se interpreta v1.","schema":{"type":"string","const":"v1"}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"description":"Persistir antes del primer envío. Única por intención/cliente, conservar en reintentos. Distinta del nonce.","schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}},"Limit":{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},"Before":{"name":"before","in":"query","required":false,"description":"UUID next_before recibido; pertenece al mismo cliente y listado.","schema":{"type":"string","format":"uuid"}}},"schemas":{"Error":{"type":"object","additionalProperties":false,"required":["success","error","request_id"],"properties":{"success":{"const":false},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","description":"Código estable para lógica de cliente; no depender del texto de message."},"message":{"type":"string"}}},"request_id":{"type":"string","format":"uuid"}}},"MoneyInput":{"type":"string","maxLength":13,"pattern":"^(?:[1-9][0-9]{0,8}(?:\\.[0-9]{1,2})?|0\\.(?:0[1-9]|[1-9][0-9]?)|1000000000(?:\\.0{1,2})?)$","description":"Mayor a cero, máximo 1000000000.00. Sin exponentes, comas, signos, ceros iniciales o más de dos decimales.","examples":["0.01","100.00","1000000000.00"]},"MoneyOutput":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)\\.[0-9]{2}$","description":"Importe en créditos no negativo, dos decimales; no convertir a float.","examples":["0.00","1500.00"]},"UtcDatabaseTime":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?$","description":"UTC, formato YYYY-MM-DD HH:mm:ss.ffffff, sin sufijo de zona.","examples":["2026-09-22 15:30:00.123456"]},"Product":{"type":"object","additionalProperties":false,"required":["id","name","status"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string","maxLength":160},"status":{"type":"string","enum":["active","inactive"]}}},"Catalog":{"type":"object","additionalProperties":false,"required":["items","updated_at","stale"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"updated_at":{"type":"string","format":"date-time"},"stale":{"type":"boolean","description":"true después de 15 minutos. Caché inexistente o con más de 24 horas produce 503."}}},"Balance":{"type":"object","additionalProperties":false,"required":["available","reserved","unit","scale"],"properties":{"available":{"$ref":"#/components/schemas/MoneyOutput"},"reserved":{"$ref":"#/components/schemas/MoneyOutput"},"unit":{"const":"credits"},"scale":{"const":2}}},"Destination":{"type":"object","additionalProperties":false,"required":["id","external_reference","enabled"],"properties":{"id":{"type":"string","format":"uuid"},"external_reference":{"type":"string","maxLength":80},"enabled":{"type":"integer","enum":[0,1],"description":"1 activo, 0 inactivo."}}},"DestinationPage":{"type":"object","additionalProperties":false,"required":["items","next_before"],"properties":{"items":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/Destination"}},"next_before":{"type":["string","null"],"format":"uuid"}}},"CreditRequest":{"type":"object","additionalProperties":false,"required":["destination_id","amount"],"properties":{"destination_id":{"type":"string","format":"uuid","description":"Destino propio habilitado por el administrador."},"amount":{"$ref":"#/components/schemas/MoneyInput"},"reference":{"type":["string","null"],"maxLength":128,"pattern":"^[^\\u0000-\\u001F]*$","description":"Opcional; máximo 128 bytes UTF-8. No sustituye Idempotency-Key."}}},"AcceptedCredit":{"type":"object","additionalProperties":false,"required":["id","status","kind","amount","status_url"],"properties":{"id":{"type":"string","format":"uuid"},"status":{"const":"pending"},"kind":{"type":"string","enum":["add","remove"]},"amount":{"$ref":"#/components/schemas/MoneyOutput"},"status_url":{"type":"string","pattern":"^/api/v1/transaction/[0-9a-f-]{36}$","description":"Requiere HMAC y transactions:read."}}},"Operation":{"type":"object","additionalProperties":false,"required":["id","destination_id","kind","amount","status","error_code","reference","created_at","updated_at"],"properties":{"id":{"type":"string","format":"uuid"},"destination_id":{"type":["string","null"],"format":"uuid","description":"Null en ajustes administrativos."},"kind":{"type":"string","enum":["add","remove","transfer","admin_add","admin_remove"],"description":"transfer está reservado en el modelo; no se puede solicitar vía API."},"amount":{"$ref":"#/components/schemas/MoneyOutput"},"status":{"type":"string","enum":["pending","processing","pending_verification","completed","failed"]},"error_code":{"type":["string","null"]},"reference":{"type":["string","null"],"maxLength":128},"created_at":{"$ref":"#/components/schemas/UtcDatabaseTime"},"updated_at":{"$ref":"#/components/schemas/UtcDatabaseTime"}}},"OperationPage":{"type":"object","additionalProperties":false,"required":["items","next_before"],"properties":{"items":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/Operation"}},"next_before":{"type":["string","null"],"format":"uuid","description":"Continuar hasta null; la siguiente página puede estar vacía."}}},"Status":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"const":"ok"}}},"MaintenanceStatus":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"const":"maintenance"}}},"CatalogResponse":{"type":"object","additionalProperties":false,"required":["success","data"],"properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Catalog"}}},"BalanceResponse":{"type":"object","additionalProperties":false,"required":["success","data"],"properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Balance"}}},"DestinationPageResponse":{"type":"object","additionalProperties":false,"required":["success","data"],"properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/DestinationPage"}}},"AcceptedCreditResponse":{"type":"object","additionalProperties":false,"required":["success","data"],"properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/AcceptedCredit"}}},"OperationResponse":{"type":"object","additionalProperties":false,"required":["success","data"],"properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/Operation"}}},"OperationPageResponse":{"type":"object","additionalProperties":false,"required":["success","data"],"properties":{"success":{"const":true},"data":{"$ref":"#/components/schemas/OperationPage"}}}},"responses":{"Error400":{"description":"Solicitud inválida; falta clave de idempotencia o importe inválido.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error401":{"description":"Credenciales, firma o timestamp inválidos.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error403":{"description":"IP no habilitada o permiso insuficiente.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error404":{"description":"Recurso o destino no encontrado para este cliente.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error409":{"description":"Nonce reutilizado, conflicto de idempotencia, destino ocupado o saldo insuficiente.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error413":{"description":"El body excede 64 KiB.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error415":{"description":"Content-Type o codificación no admitida.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error422":{"description":"Campos o parámetros inválidos, u operación no soportada.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error429":{"description":"Límite excedido. Respetar Retry-After.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Segundos antes del siguiente intento.","schema":{"type":"string","pattern":"^[0-9]+$","examples":["60"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error500":{"description":"Error interno. No inferir que una intención financiera no se registró.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error503":{"description":"Mantenimiento, pausa operativa o servicio temporalmente no disponible.","headers":{"X-Request-ID":{"description":"Identificador de request generado por ProviBet.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"x-signature-v1":{"algorithm":"HMAC-SHA256","encoding":"lowercase-hex","separator":"LF","trailingSeparator":false,"fields":["v1","api_key","HTTP_METHOD","raw_request_target","timestamp","nonce","idempotency_key_or_empty","sha256_raw_body_lowercase_hex"],"secretEncoding":"literal UTF-8 string","bodyMaxBytes":65536}}