@veriko-mx/sdk 0.4.11 → 0.4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/README.md +196 -38
- package/dist/cjs/client.d.ts +3 -2
- package/dist/cjs/client.d.ts.map +1 -1
- package/dist/cjs/client.js +3 -2
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/generated/openapi.d.ts +1353 -195
- package/dist/cjs/generated/openapi.d.ts.map +1 -1
- package/dist/cjs/http.d.ts +2 -0
- package/dist/cjs/http.d.ts.map +1 -1
- package/dist/cjs/http.js +1 -1
- package/dist/cjs/http.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/resources.d.ts +104 -16
- package/dist/cjs/resources.d.ts.map +1 -1
- package/dist/cjs/resources.js +233 -34
- package/dist/cjs/resources.js.map +1 -1
- package/dist/cjs/types.d.ts +182 -22
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +6 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client.d.ts +3 -2
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +3 -2
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/generated/openapi.d.ts +1353 -195
- package/dist/esm/generated/openapi.d.ts.map +1 -1
- package/dist/esm/http.d.ts +2 -0
- package/dist/esm/http.d.ts.map +1 -1
- package/dist/esm/http.js +1 -1
- package/dist/esm/http.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/resources.d.ts +104 -16
- package/dist/esm/resources.d.ts.map +1 -1
- package/dist/esm/resources.js +232 -34
- package/dist/esm/resources.js.map +1 -1
- package/dist/esm/types.d.ts +182 -22
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +6 -0
- package/dist/esm/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -65,9 +65,11 @@ export interface paths {
|
|
|
65
65
|
* - Clave de rastreo / Referencia numérica.
|
|
66
66
|
* - Banco emisor.
|
|
67
67
|
* - Banco receptor.
|
|
68
|
-
* - Cuenta beneficiaria.
|
|
68
|
+
* - Cuenta beneficiaria, o una lista de cuentas candidatas.
|
|
69
|
+
*
|
|
70
|
+
* La cuenta beneficiaria (`cuenta_beneficiaria`) es obligatoria en esta operación, salvo que se envíe `cuentas_candidatas`. Si faltan las dos, la petición se rechaza con `422 preflight_failed` y el error de campo `cuenta_required`: el servicio no la busca entre los beneficiarios guardados.
|
|
69
71
|
*
|
|
70
|
-
* La cuenta
|
|
72
|
+
* Cuando no se sabe a cuál de varias cuentas se hizo el pago, `cuentas_candidatas` sustituye a `cuenta_beneficiaria`: de 2 cuentas al máximo que admite el servicio (3 de forma predeterminada) en una sola validación y con una sola unidad de cuota. La consulta recorre las candidatas en el orden enviado y adopta la primera que coincide con la transferencia; esa cuenta vuelve completa en `normalized_data.cuenta_beneficiaria` y su posición en `candidate_match`. Si ninguna coincide, la respuesta es un estado HTTP `422` con el motivo en `code`. Las dos formas no pueden enviarse juntas (`422 cuenta_y_candidatas_excluyentes`) y una lista que no cumple se rechaza con `422 cuentas_candidatas_invalidas`, las dos antes de consumir cuota.
|
|
71
73
|
*
|
|
72
74
|
* El veredicto final (estado terminal) de una validación puede ser alguno de estos:
|
|
73
75
|
*
|
|
@@ -135,7 +137,17 @@ export interface paths {
|
|
|
135
137
|
*
|
|
136
138
|
* {% callout type="info" %}
|
|
137
139
|
* El campo `cuenta_beneficiaria` permite enviar explícitamente la cuenta receptora de la transferencia, enviarlo es especialmente útil cuando la imagen no lleva este dato o lo lleva incompleto.\
|
|
138
|
-
* Un beneficiario guardado (con `POST /v1/beneficiaries`) no sustituye a este campo: solo sirve para completar los dígitos de la cuenta que la imagen sí muestra. Si la imagen no trae dígitos suficientes, la validación se rechaza con `cuenta_unresolvable`, porque las cuentas guardadas no se prueban una por una
|
|
140
|
+
* Un beneficiario guardado (con `POST /v1/beneficiaries`) no sustituye a este campo: solo sirve para completar los dígitos de la cuenta que la imagen sí muestra. Si la imagen no trae dígitos suficientes, la validación se rechaza con `cuenta_unresolvable`, porque las cuentas guardadas no se prueban una por una.\
|
|
141
|
+
* \
|
|
142
|
+
* Cuando no se sabe cuál de varias cuentas recibió el pago, `cuentas_candidatas` las prueba en una sola validación (de 2 cuentas al máximo que admite el servicio, 3 de forma predeterminada; una sola unidad de cuota, también con `?async=1`) y sustituye a `cuenta_beneficiaria`: enviar las dos se rechaza con `422 cuenta_y_candidatas_excluyentes`, y una lista que no cumple, con `422 cuentas_candidatas_invalidas`, las dos antes de consumir cuota. La lista tiene prioridad sobre la cuenta que se lea en la imagen; la ganadora vuelve completa en `normalized_data.cuenta_beneficiaria` y su posición en `candidate_match`. Si ninguna coincide, la respuesta es un estado HTTP `422` con el motivo en `code`.
|
|
143
|
+
*
|
|
144
|
+
* {% /callout %}
|
|
145
|
+
*
|
|
146
|
+
* {% callout type="info" %}
|
|
147
|
+
* **Retención del comprobante:**\
|
|
148
|
+
* De forma predeterminada el archivo del comprobante se conserva y se sirve con `GET /v1/validations/{id}/image`. Con `retain_image=false`, se borra cuando la validación llega a un estado terminal del que ya no se necesita, y el veredicto y los datos extraídos se conservan. La validación publica `image_retained=false` y la imagen responde un estado HTTP `410` (con `image_not_retained` en el cuerpo).\
|
|
149
|
+
* \
|
|
150
|
+
* Un valor que no es booleano responde un estado HTTP `422` (con `invalid_retain_image` en el cuerpo), antes de consumir cuota. Para borrar después una validación y todo lo que dejó, está `POST /v1/validations/{id}/purge/prepare`, descrito en {% concept slug="data-retention" %}la retención de comprobantes y datos{% /concept %}.
|
|
139
151
|
*
|
|
140
152
|
* {% /callout %}
|
|
141
153
|
*
|
|
@@ -281,6 +293,12 @@ export interface paths {
|
|
|
281
293
|
* Si el `ETag` enviado en `If-None-Match` sigue vigente, responde con un estado HTTP `304` sin cuerpo, como describe {% concept slug="conditional-caching" %}la caché condicional{% /concept %}.
|
|
282
294
|
*
|
|
283
295
|
* {% /callout %}
|
|
296
|
+
*
|
|
297
|
+
* {% callout type="info" %}
|
|
298
|
+
* **Validaciones purgadas:**\
|
|
299
|
+
* Una validación purgada con `POST /v1/validations/{id}/purge/execute` responde con un estado HTTP `200` y queda como una lápida: conserva el veredicto, las fechas y el monto, y trae `purged_at`. Ya no tiene `request_data`, `ocr_result`, `banxico_result` ni archivos.
|
|
300
|
+
*
|
|
301
|
+
* {% /callout %}
|
|
284
302
|
*/
|
|
285
303
|
get: operations["getValidation"];
|
|
286
304
|
put?: never;
|
|
@@ -290,6 +308,8 @@ export interface paths {
|
|
|
290
308
|
* @description Retira una validación del historial de validaciones del usuario autenticado.
|
|
291
309
|
*
|
|
292
310
|
* La eliminación es lógica, no física. Lo que quiere decir que puede seguir apareciendo en las listas como `GET /v1/validations` si se usa el filtro `with_deleted` u otros.
|
|
311
|
+
*
|
|
312
|
+
* El registro, el CEP, los datos extraídos y el archivo del comprobante se conservan. Para borrarlos de forma definitiva está `POST /v1/validations/{id}/purge/prepare`, seguido de `POST /v1/validations/{id}/purge/execute`.
|
|
293
313
|
*/
|
|
294
314
|
delete: operations["deleteValidation"];
|
|
295
315
|
options?: never;
|
|
@@ -306,7 +326,7 @@ export interface paths {
|
|
|
306
326
|
};
|
|
307
327
|
/**
|
|
308
328
|
* Descargar el CEP oficial
|
|
309
|
-
* @description Descarga el {% concept slug="cep-concept" %}Comprobante Electrónico de Pago (CEP){% /concept %} emitido por Banxico de una validación con veredicto `valid
|
|
329
|
+
* @description Descarga el {% concept slug="cep-concept" %}Comprobante Electrónico de Pago (CEP){% /concept %} emitido por Banxico de una validación con veredicto `valid`, o `returned` cuando el CEP se descargó antes de conocerse la devolución.
|
|
310
330
|
*
|
|
311
331
|
* El formato predeterminado es `xml`; con `format=pdf` se solicita el documento en PDF.
|
|
312
332
|
*
|
|
@@ -364,6 +384,8 @@ export interface paths {
|
|
|
364
384
|
* para que un navegador no lo abra dentro del propio origen.
|
|
365
385
|
*
|
|
366
386
|
* Si la validación no tiene imagen disponible, responde con un estado HTTP `404` (con `image_not_available` en el cuerpo).
|
|
387
|
+
*
|
|
388
|
+
* Si la validación se creó con `retain_image=false`, responde con un estado HTTP `410` (con `image_not_retained` en el cuerpo); si se purgó, con un estado HTTP `410` (con `validation_purged` en el cuerpo). Un `410` no se resuelve reintentando: el archivo no existe.
|
|
367
389
|
*/
|
|
368
390
|
get: operations["getValidationImage"];
|
|
369
391
|
put?: never;
|
|
@@ -416,13 +438,13 @@ export interface paths {
|
|
|
416
438
|
* **No se admite en tres casos:**\
|
|
417
439
|
* — Validaciones que llegaron por importación masiva.\
|
|
418
440
|
* — Validaciones ya resueltas.\
|
|
419
|
-
* — Validaciones
|
|
441
|
+
* — Validaciones con más de siete días de antigüedad.
|
|
420
442
|
*
|
|
421
443
|
* {% /callout %}
|
|
422
444
|
*
|
|
423
445
|
* Un ciclo de reintentos puede devolver `terminal_state="exhausted"` cuando se alcanzan el máximo de reintentos configurado. También puede devolver `terminal_state="cancelled"` cuando el usuario cancela manualmente los reintentos de la validación.
|
|
424
446
|
*
|
|
425
|
-
* En ambos casos, el ciclo puede reactivarse
|
|
447
|
+
* En ambos casos, el ciclo puede reactivarse hasta tres veces; pasado ese tope, la petición se rechaza con `422 reactivation_cap_exceeded`.
|
|
426
448
|
*
|
|
427
449
|
* El estado completo de una validación se obtiene con `GET /v1/validations/{id}`, y los límites están descritos en {% concept slug="retry-policy" %}la política de reintentos{% /concept %}.
|
|
428
450
|
*/
|
|
@@ -458,6 +480,146 @@ export interface paths {
|
|
|
458
480
|
patch?: never;
|
|
459
481
|
trace?: never;
|
|
460
482
|
};
|
|
483
|
+
"/validations/{id}/recheck": {
|
|
484
|
+
parameters: {
|
|
485
|
+
query?: never;
|
|
486
|
+
header?: never;
|
|
487
|
+
path?: never;
|
|
488
|
+
cookie?: never;
|
|
489
|
+
};
|
|
490
|
+
get?: never;
|
|
491
|
+
put?: never;
|
|
492
|
+
/**
|
|
493
|
+
* Volver a consultar el estado de pago de una validación
|
|
494
|
+
* @description Vuelve a consultar a Banxico el estado del pago de una validación `valid` y, si lo reporta devuelto, la pasa a `returned`.
|
|
495
|
+
*
|
|
496
|
+
* Un veredicto `valid` es la foto del momento de la consulta: el CEP acredita que la transferencia se liquidó, no que el dinero siguiera en la cuenta del beneficiario, y la institución receptora puede devolverlo horas o días después. Esta operación hace sólo esa consulta, con los datos que la validación ya guardó:
|
|
497
|
+
*
|
|
498
|
+
* - No usa IA ni descarga otro CEP.
|
|
499
|
+
* - **No consume cuota** ni cuenta como una validación nueva.
|
|
500
|
+
* - Guarda la respuesta de Banxico en `banxico_result._payment_status`.
|
|
501
|
+
* - Con el estado `devuelto` o `en_proceso_devolucion`, cambia `status` y `banxico_status` a `returned`, conserva el CEP y emite el webhook `validation.returned`.
|
|
502
|
+
*
|
|
503
|
+
* Qué admite:
|
|
504
|
+
*
|
|
505
|
+
* - `valid` creada hace 72 horas como máximo: se consulta. Pasado ese plazo responde con un estado HTTP `422` (con `recheck_window_expired` en el cuerpo).
|
|
506
|
+
* - `returned`: responde su estado actual sin consultar a Banxico, con `meta.recheck.checked_at` en `null`.
|
|
507
|
+
* - Cualquier otro estado: responde con un estado HTTP `422` (con `recheck_not_eligible` en el cuerpo).
|
|
508
|
+
*
|
|
509
|
+
* Cada validación admite una consulta cada 10 minutos. Si se repite antes, responde con un estado HTTP `429` (con `recheck_rate_limited` en el cuerpo) y la cabecera `Retry-After` indica los segundos que faltan. Ese tope se suma a los de la clave de API.
|
|
510
|
+
*
|
|
511
|
+
* La respuesta es la misma validación que devuelve `GET /v1/validations/{id}`, con el resultado de la revisión en `meta.recheck`:
|
|
512
|
+
*
|
|
513
|
+
* - `checked_at`: Fecha y hora de la consulta a Banxico, en ISO 8601 UTC. `null` cuando no se consultó nada porque la validación ya estaba `returned`.
|
|
514
|
+
* - `changed`: `true` cuando esta consulta pasó la validación de `valid` a `returned`.
|
|
515
|
+
* - `previous_status`: Veredicto de Banxico antes de la consulta, `valid` o `returned`.
|
|
516
|
+
*
|
|
517
|
+
* {% callout type="info" %}
|
|
518
|
+
* **Si Banxico no responde:**\
|
|
519
|
+
* Cuando Banxico no entrega un estado legible, responde con un estado HTTP `503` (con `recheck_unavailable` en el cuerpo) y la validación conserva su intervalo: se puede reintentar de inmediato. Un `503` no dice nada sobre la transferencia.
|
|
520
|
+
*
|
|
521
|
+
* {% /callout %}
|
|
522
|
+
*
|
|
523
|
+
* El significado de `valid` y de `returned` está en {% concept slug="cep-concept" %}el CEP y sus veredictos{% /concept %}, y la entrega del evento en {% concept slug="webhooks-architecture" %}la arquitectura de webhooks{% /concept %}.
|
|
524
|
+
*/
|
|
525
|
+
post: operations["recheckValidation"];
|
|
526
|
+
delete?: never;
|
|
527
|
+
options?: never;
|
|
528
|
+
head?: never;
|
|
529
|
+
patch?: never;
|
|
530
|
+
trace?: never;
|
|
531
|
+
};
|
|
532
|
+
"/validations/{id}/purge/prepare": {
|
|
533
|
+
parameters: {
|
|
534
|
+
query?: never;
|
|
535
|
+
header?: never;
|
|
536
|
+
path?: never;
|
|
537
|
+
cookie?: never;
|
|
538
|
+
};
|
|
539
|
+
get?: never;
|
|
540
|
+
put?: never;
|
|
541
|
+
/**
|
|
542
|
+
* Preparar el borrado definitivo de una validación
|
|
543
|
+
* @description Describe lo que borraría el borrado definitivo de una validación propia y emite el token con el que `POST /v1/validations/{id}/purge/execute` lo confirma. No cambia nada: la validación y sus archivos quedan como estaban.
|
|
544
|
+
*
|
|
545
|
+
* `DELETE /v1/validations/{id}` solo retira la validación del historial; el registro, el CEP, los datos extraídos y el archivo del comprobante siguen existiendo. El borrado definitivo, en dos pasos, los elimina.
|
|
546
|
+
*
|
|
547
|
+
* La respuesta incluye:
|
|
548
|
+
*
|
|
549
|
+
* - `confirmation_token`: Token de un solo uso, atado a la cuenta y a esta validación, que caduca en `expires_in` segundos.
|
|
550
|
+
* - `will_delete`: Lo que se borrará: el archivo, el CEP, los campos con contenido y la cantidad de registros derivados.
|
|
551
|
+
* - `will_keep`: Los campos que conserva la lápida en que queda la validación.
|
|
552
|
+
* - `cancels_pending_retries`: `true` cuando hay un ciclo de reintentos abierto, que el borrado cancela.
|
|
553
|
+
* - `same_image_validation_ids`: Otras validaciones de la cuenta con el mismo comprobante, que no se tocan.
|
|
554
|
+
* - `irreversible`: `true` siempre.
|
|
555
|
+
*
|
|
556
|
+
* Solo se admite una validación propia en un estado terminal. Una validación en curso responde un estado HTTP `409` (con `purge_validation_in_progress` en el cuerpo), y una ya purgada, un estado HTTP `410` (con `validation_purged` en el cuerpo).
|
|
557
|
+
*
|
|
558
|
+
* {% callout type="warning" %}
|
|
559
|
+
* **El borrado es irreversible:**\
|
|
560
|
+
* Lo borrado no se recupera, ni siquiera desde la plataforma. La validación queda como una lápida y **no devuelve cuota**.\
|
|
561
|
+
* Los respaldos de infraestructura no se alteran: conservan una copia hasta que el ciclo de respaldos la retira.
|
|
562
|
+
*
|
|
563
|
+
* {% /callout %}
|
|
564
|
+
*
|
|
565
|
+
* La lápida, lo que se borra y las limitaciones están en {% concept slug="data-retention" %}la retención de comprobantes y datos{% /concept %}.
|
|
566
|
+
*/
|
|
567
|
+
post: operations["prepareValidationPurge"];
|
|
568
|
+
delete?: never;
|
|
569
|
+
options?: never;
|
|
570
|
+
head?: never;
|
|
571
|
+
patch?: never;
|
|
572
|
+
trace?: never;
|
|
573
|
+
};
|
|
574
|
+
"/validations/{id}/purge/execute": {
|
|
575
|
+
parameters: {
|
|
576
|
+
query?: never;
|
|
577
|
+
header?: never;
|
|
578
|
+
path?: never;
|
|
579
|
+
cookie?: never;
|
|
580
|
+
};
|
|
581
|
+
get?: never;
|
|
582
|
+
put?: never;
|
|
583
|
+
/**
|
|
584
|
+
* Ejecutar el borrado definitivo de una validación
|
|
585
|
+
* @description Borra de forma definitiva el contenido de una validación propia, con el token que emitió `POST /v1/validations/{id}/purge/prepare`. Es el segundo paso de un flujo de dos pasos: sin ese token no se borra nada.
|
|
586
|
+
*
|
|
587
|
+
* Se borra:
|
|
588
|
+
*
|
|
589
|
+
* - El archivo del comprobante, imagen o PDF.
|
|
590
|
+
* - El CEP, en XML y en PDF.
|
|
591
|
+
* - `request_data`, `ocr_result`, `banxico_result` y las advertencias de normalización. De `normalized_data` solo se conserva el monto.
|
|
592
|
+
* - Los registros derivados con datos personales: intentos de reintento, sondeos de cuenta, respuestas guardadas de `Idempotency-Key` y notificaciones de la bandeja.
|
|
593
|
+
* - El cuerpo enviado y la respuesta del receptor en las entregas de webhook de esa validación, y el contenido de sus notificaciones. El registro de cada entrega se conserva.
|
|
594
|
+
* - Los cuerpos de las filas de auditoría que nombran la validación, y el contexto libre de sus eventos de seguridad.
|
|
595
|
+
*
|
|
596
|
+
* La validación queda como una lápida: conserva `id`, `validation_type`, `status`, `banxico_status`, las fechas, `processing_time_ms`, `error_code`, el monto y `purged_at`. Con eso la cuota, las estadísticas, finanzas y el historial siguen cuadrando. **El borrado no devuelve cuota.**
|
|
597
|
+
*
|
|
598
|
+
* Después del borrado, `GET /v1/validations/{id}` responde la lápida con un estado HTTP `200` y `purged_at`. La imagen, el CEP, los reintentos y la revisión posterior responden un estado HTTP `410` (con `validation_purged` en el cuerpo), y los webhooks, los reintentos y los barridos la ignoran. Un ciclo de reintentos abierto se cancela.
|
|
599
|
+
*
|
|
600
|
+
* El token se verifica antes de borrar:
|
|
601
|
+
*
|
|
602
|
+
* - Falta, está mal formado, su firma no es válida o venció: responde un estado HTTP `422` con su código (`confirmation_token_missing`, `confirmation_token_malformed`, `confirmation_token_signature_invalid` o `confirmation_token_expired`).
|
|
603
|
+
* - Es de otra validación, de otra cuenta o de otra operación: responde un estado HTTP `422` (con `purge_token_mismatch` o `confirmation_token_operation_mismatch` en el cuerpo).
|
|
604
|
+
* - Ya se usó: responde un estado HTTP `409` (con `confirmation_token_already_used` en el cuerpo).
|
|
605
|
+
*
|
|
606
|
+
* Si la respuesta no llega, `GET /v1/validations/{id}` dice si el borrado se completó: una validación purgada trae `purged_at`. Repetir este paso sobre una validación purgada responde un estado HTTP `410`.
|
|
607
|
+
*
|
|
608
|
+
* {% callout type="warning" %}
|
|
609
|
+
* **El borrado es irreversible:**\
|
|
610
|
+
* Lo borrado no se recupera, ni siquiera desde la plataforma. Los respaldos de infraestructura no se alteran y el catálogo global de cuentas, que no guarda vínculo con la validación, no se toca.
|
|
611
|
+
*
|
|
612
|
+
* {% /callout %}
|
|
613
|
+
*
|
|
614
|
+
* Lo que se borra, la lápida y las limitaciones están en {% concept slug="data-retention" %}la retención de comprobantes y datos{% /concept %}.
|
|
615
|
+
*/
|
|
616
|
+
post: operations["executeValidationPurge"];
|
|
617
|
+
delete?: never;
|
|
618
|
+
options?: never;
|
|
619
|
+
head?: never;
|
|
620
|
+
patch?: never;
|
|
621
|
+
trace?: never;
|
|
622
|
+
};
|
|
461
623
|
"/public/banks": {
|
|
462
624
|
parameters: {
|
|
463
625
|
query?: never;
|
|
@@ -506,6 +668,41 @@ export interface paths {
|
|
|
506
668
|
patch?: never;
|
|
507
669
|
trace?: never;
|
|
508
670
|
};
|
|
671
|
+
"/public/spei-calendar/{year}": {
|
|
672
|
+
parameters: {
|
|
673
|
+
query?: never;
|
|
674
|
+
header?: never;
|
|
675
|
+
path?: never;
|
|
676
|
+
cookie?: never;
|
|
677
|
+
};
|
|
678
|
+
/**
|
|
679
|
+
* Obtener el calendario de días inhábiles SPEI de un año
|
|
680
|
+
* @description Devuelve el calendario de días inhábiles SPEI de un año, con la disposición oficial de la que sale.
|
|
681
|
+
*
|
|
682
|
+
* La respuesta incluye:
|
|
683
|
+
*
|
|
684
|
+
* - `non_business_days`: Los días inhábiles que caen de lunes a viernes, en orden y con formato `YYYY-MM-DD`.
|
|
685
|
+
* - `source`: La disposición de la **Comisión Nacional Bancaria y de Valores (CNBV)** publicada en el **Diario Oficial de la Federación (DOF)**, con su título y su fecha de publicación.
|
|
686
|
+
*
|
|
687
|
+
* Los sábados y los domingos también son inhábiles, siempre, y no se repiten en `non_business_days`.
|
|
688
|
+
*
|
|
689
|
+
* El calendario determina el día de operación de una transferencia. El SPEI opera todos los días, pero el día hábil cambia a las 18:00 (hora del centro de México): lo enviado a partir de esa hora, en sábado, en domingo o en un día inhábil opera el siguiente día hábil. Ese día es el `operationDate` de `banxico_result`, y puede diferir de la fecha de envío.
|
|
690
|
+
*
|
|
691
|
+
* La consulta no consume cuota de validaciones. Un año sin calendario responde un estado HTTP `404` (con `spei_calendar_year_not_covered` en el cuerpo), y `meta.covered_years` lista los años disponibles. El calendario de cada año se añade cuando la CNBV publica su disposición, normalmente en diciembre del año anterior.
|
|
692
|
+
*
|
|
693
|
+
* La respuesta es cacheable: incluye la cabecera `ETag`, que puede enviarse en otra petición como `If-None-Match`; si el calendario no ha cambiado, responde con un estado HTTP `304` (sin cuerpo).
|
|
694
|
+
*
|
|
695
|
+
* La diferencia entre la fecha de envío y la de operación está en {% concept slug="timezone-handling" %}fechas y zona horaria{% /concept %}.
|
|
696
|
+
*/
|
|
697
|
+
get: operations["getSpeiCalendar"];
|
|
698
|
+
put?: never;
|
|
699
|
+
post?: never;
|
|
700
|
+
delete?: never;
|
|
701
|
+
options?: never;
|
|
702
|
+
head?: never;
|
|
703
|
+
patch?: never;
|
|
704
|
+
trace?: never;
|
|
705
|
+
};
|
|
509
706
|
"/beneficiaries/export": {
|
|
510
707
|
parameters: {
|
|
511
708
|
query?: never;
|
|
@@ -515,7 +712,7 @@ export interface paths {
|
|
|
515
712
|
};
|
|
516
713
|
/**
|
|
517
714
|
* Exportar los beneficiarios de la cuenta de usuario
|
|
518
|
-
* @description Descarga las cuentas beneficiarias del usuario autenticado como archivo, usa el mismo filtro `with_archived` que `GET /v1/beneficiaries
|
|
715
|
+
* @description Descarga las cuentas beneficiarias del usuario autenticado como archivo, usa el mismo filtro `with_archived` que `GET /v1/beneficiaries`.
|
|
519
716
|
*
|
|
520
717
|
* El formato de descarga se elige con `?format` (`csv` por defecto, `xlsx` como alternativa). El tope de filas es de 100 000, y `?limit` sirve para pedir menos, nunca más.
|
|
521
718
|
*
|
|
@@ -557,11 +754,11 @@ export interface paths {
|
|
|
557
754
|
* - Tarjeta (16 dígitos): `bank_code` es opcional, se deriva del BIN.
|
|
558
755
|
* - Celular/DiMo (10 dígitos): `bank_code` es **obligatorio** en el cuerpo, ya que el número por sí solo no identifica a la institución bancaria.
|
|
559
756
|
*
|
|
560
|
-
* Si la cuenta a registrar no existe previamente, se registra y responde con un estado HTTP `
|
|
757
|
+
* Si la cuenta a registrar no existe previamente, se registra y responde con un estado HTTP `201`.
|
|
561
758
|
*
|
|
562
759
|
* Si se intenta registrar una cuenta activa, responde con un estado HTTP `422` (con `beneficiary_already_registered` en el cuerpo).
|
|
563
760
|
*
|
|
564
|
-
* Si existe pero está archivada, el alta la **reactiva** y responde con un estado HTTP `200` (con `meta.reactivated=true` en el cuerpo).
|
|
761
|
+
* Si existe pero está archivada, el alta la **reactiva** y responde con un estado HTTP `200` (con `meta.reactivated=true` en el cuerpo). Si la petición no trae `label`, la reactivación conserva el alias que la cuenta ya tenía; si lo trae, lo reemplaza.
|
|
565
762
|
*/
|
|
566
763
|
post: operations["createBeneficiary"];
|
|
567
764
|
delete?: never;
|
|
@@ -583,10 +780,12 @@ export interface paths {
|
|
|
583
780
|
* @description Actualiza un beneficiario ya registrado. El cuerpo admite la envoltura JSON:API o un objeto plano, y lo que se envíe determina el alcance del cambio:
|
|
584
781
|
*
|
|
585
782
|
* - Solo `label`: Se guarda, sin tocar la cuenta.
|
|
586
|
-
* - Un `account_number` nuevo
|
|
587
|
-
* - Solo `bank_code`: se aplica únicamente sobre un beneficiario de tipo celular. En una CLABE o una tarjeta el banco se deriva del número, así que el valor enviado se descarta sin error
|
|
783
|
+
* - Un `account_number` nuevo: vuelven a derivarse `account_type`, `bank_code` y `bank_name`. Si el nuevo número es un celular (phone), el cuerpo debe llevar `bank_code`.
|
|
784
|
+
* - Solo `bank_code`: se aplica únicamente sobre un beneficiario de tipo celular. En una CLABE o una tarjeta el banco se deriva del número, así que el valor enviado se descarta sin error; si era el único campo, responde con `no_valid_fields`.
|
|
588
785
|
*
|
|
589
786
|
* Un cuerpo sin ningún campo editable responde con un estado HTTP `422` (con `no_valid_fields` en el cuerpo).
|
|
787
|
+
*
|
|
788
|
+
* Si el `account_number` nuevo ya está registrado para la misma cuenta de usuario, activo o archivado, responde con un estado HTTP `422` (con `beneficiary_already_registered` en el cuerpo) y el beneficiario no cambia.
|
|
590
789
|
*/
|
|
591
790
|
put: operations["updateBeneficiary"];
|
|
592
791
|
post?: never;
|
|
@@ -635,9 +834,9 @@ export interface paths {
|
|
|
635
834
|
};
|
|
636
835
|
/**
|
|
637
836
|
* Descargar la plantilla de importación de beneficiarios
|
|
638
|
-
* @description Devuelve un **archivo plantilla para la importación de beneficiarios** en el formato solicitado, con encabezados
|
|
837
|
+
* @description Devuelve un **archivo plantilla para la importación de beneficiarios** en el formato solicitado, con los encabezados fijos `alias`, `cuenta` y `banco` y filas de ejemplo para CLABE, tarjeta y celular/DiMo. Sirve de punto de partida para {% concept slug="bulk-imports" %}la importación masiva{% /concept %}.
|
|
639
838
|
*
|
|
640
|
-
*
|
|
839
|
+
* Los encabezados no cambian con el idioma: la cabecera `Accept-Language` sólo elige el idioma de las filas de ejemplo y del nombre de la hoja; de forma predeterminada se entregan en español. La importación acepta después encabezados en ambos idiomas de forma insensible a acentos.
|
|
641
840
|
*/
|
|
642
841
|
get: operations["downloadBeneficiaryImportTemplate"];
|
|
643
842
|
put?: never;
|
|
@@ -659,7 +858,7 @@ export interface paths {
|
|
|
659
858
|
put?: never;
|
|
660
859
|
/**
|
|
661
860
|
* Iniciar importación masiva de beneficiarios
|
|
662
|
-
* @description Sube un archivo (CSV, XLS, XLSX, TXT o PDF) de hasta 20 MB y abre con él un trabajo de importación.
|
|
861
|
+
* @description Sube un archivo (CSV, XLS, XLSX, TXT, JSON o PDF) de hasta 20 MB y abre con él un trabajo de importación.
|
|
663
862
|
* Las hojas XLSX/XLS admiten hasta 10 000 filas y 64 columnas. Las fórmulas XLSX se leen como texto, sin ejecutarlas. Los PDF admiten hasta 50 páginas y limitan a 8 MiB la descompresión de cada flujo.
|
|
664
863
|
*
|
|
665
864
|
* El modo de lectura decide cuánto trabajo hace el archivo y cuánto el servidor:
|
|
@@ -729,7 +928,7 @@ export interface paths {
|
|
|
729
928
|
* Previsualizar las filas extraídas de la importación
|
|
730
929
|
* @description Devuelve las filas extraídas del archivo en un trabajo de importación (paginadas y filtrables por grupo).
|
|
731
930
|
*
|
|
732
|
-
*
|
|
931
|
+
* Responde en cualquier estado del trabajo; antes de `preview_ready` la lista sale vacía.
|
|
733
932
|
*
|
|
734
933
|
* {% callout type="warning" %}
|
|
735
934
|
* En este endpoint los datos de CLABEs, tarjetas o celulares NO son enmascarados. Se presume que el usuario solicitante de la importación ya tiene en su poder dichos datos, por lo que no hay motivos para tratarlos bajo nuestra política de {% concept slug="pii-masking" %}enmascarado de datos{% /concept %}
|
|
@@ -810,8 +1009,8 @@ export interface paths {
|
|
|
810
1009
|
*
|
|
811
1010
|
* Reglas de la confirmación:
|
|
812
1011
|
*
|
|
813
|
-
* - Filas `valid` y `correctable`: Se persisten (con sufijo de alias si hubo colisión de alias).
|
|
814
|
-
* - Filas `fatal` y `duplicate_account`: Se omiten.
|
|
1012
|
+
* - Filas `valid` y `correctable`: Se persisten (con sufijo de alias si hubo colisión de alias). La excepción es un celular sin banco válido (`bank_code_required_for_phone` o `invalid_bank_code`): se corrige eligiendo el banco en la vista previa, y si al confirmar sigue sin banco no se guarda, queda como `fatal` con ese mismo código y cuenta en `skipped_count`.
|
|
1013
|
+
* - Filas `fatal` y `duplicate_account`: Se omiten, salvo una `duplicate_account` cuya cuenta está archivada, que se reactiva.
|
|
815
1014
|
* - Cuentas previamente archivadas con el mismo número: Se reactivan en lugar de duplicarse.
|
|
816
1015
|
*/
|
|
817
1016
|
post: operations["commitBeneficiaryImport"];
|
|
@@ -860,9 +1059,9 @@ export interface paths {
|
|
|
860
1059
|
* Obtener métricas de uso de la API
|
|
861
1060
|
* @description Devuelve las métricas de uso de la API del usuario autenticado:
|
|
862
1061
|
*
|
|
863
|
-
* - Peticiones
|
|
1062
|
+
* - Peticiones con clave de API hoy y en el mes.
|
|
864
1063
|
* - Cuota del plan vigente.
|
|
865
|
-
* - Últimas peticiones
|
|
1064
|
+
* - Últimas 15 peticiones con clave de API.
|
|
866
1065
|
* - Validaciones consumidas por mes.
|
|
867
1066
|
* - Estado actual del servicio Banxico CEP.
|
|
868
1067
|
*/
|
|
@@ -886,7 +1085,7 @@ export interface paths {
|
|
|
886
1085
|
* Obtener el resumen del panel
|
|
887
1086
|
* @description Devuelve los contadores agregados del usuario: el total histórico, el total
|
|
888
1087
|
* del mes UTC en curso, las validaciones con veredicto `valid`, el contador
|
|
889
|
-
* mensual de los estados `
|
|
1088
|
+
* mensual de los estados `queued` y `processing`, el monto promedio y la
|
|
890
1089
|
* tasa de éxito. Incluye también la cantidad de beneficiarios activos.
|
|
891
1090
|
*
|
|
892
1091
|
* `relationships.recent_validations` contiene las validaciones no retiradas
|
|
@@ -974,7 +1173,10 @@ export interface paths {
|
|
|
974
1173
|
* - `degraded`: Problemas parciales — latencia elevada o errores
|
|
975
1174
|
* intermitentes.
|
|
976
1175
|
* - `down`: El servicio es por el momento inaccesible.
|
|
977
|
-
* - `unknown`:
|
|
1176
|
+
* - `unknown`: No hay datos de salud vigentes: aún no se ha ejecutado ningún
|
|
1177
|
+
* chequeo, o el último es más viejo que tres veces `check_interval_seconds`
|
|
1178
|
+
* porque el chequeo automático dejó de correr. En ese caso `last_verified_at`
|
|
1179
|
+
* conserva la fecha de ese último chequeo.
|
|
978
1180
|
*
|
|
979
1181
|
* La respuesta se cachea 60 segundos en el cliente con `Cache-Control`, y ese
|
|
980
1182
|
* plazo se configura en el despliegue. Cualquier usuario autenticado puede
|
|
@@ -1067,7 +1269,8 @@ export interface paths {
|
|
|
1067
1269
|
*
|
|
1068
1270
|
* Cada endpoint puede suscribirse a diferentes eventos, entre ellos:
|
|
1069
1271
|
*
|
|
1070
|
-
* - Eventos `validation.*`:
|
|
1272
|
+
* - Eventos `validation.*`: Avisan de cada veredicto de una validación y de cada paso de sus reintentos automáticos (p. ej: `validation.completed`, `validation.error`, etc).
|
|
1273
|
+
* - Evento `validation.returned`: avisa cuando una validación que ya había salido `valid` pasa después a `returned` porque Banxico reportó la devolución; no se emite al crear la validación, donde el evento es `validation.completed`. Para recibirlo hay que suscribirse a él además de a `validation.completed`.
|
|
1071
1274
|
* - Eventos `billing.*`: No producen entregas hasta que haya algún movimiento en la suscripción del usuario (p. ej: `billing.subscription_canceled`, `billing.payment_succeeded`, cuotas de uso, etc).
|
|
1072
1275
|
*
|
|
1073
1276
|
* Si se alcanza el tope de endpoints registrados, la creación responde con un estado HTTP `422` (con `webhook_limit_reached` en el cuerpo) y con el valor del límite en el campo `meta.limit`.
|
|
@@ -1240,7 +1443,7 @@ export interface paths {
|
|
|
1240
1443
|
* Listar entregas de todos los endpoints webhook
|
|
1241
1444
|
* @description Devuelve una vista consolidada de las entregas hechas a los endpoints webhook del usuario autenticado.
|
|
1242
1445
|
*
|
|
1243
|
-
* Se puede filtrar por endpoint, estado y
|
|
1446
|
+
* Se puede buscar por texto con `q` y filtrar por endpoint, estado, tipo de evento, validación, código HTTP, rango de fechas, número de intento y tiempo de respuesta.
|
|
1244
1447
|
*/
|
|
1245
1448
|
get: operations["listAllDeliveries"];
|
|
1246
1449
|
put?: never;
|
|
@@ -1261,8 +1464,7 @@ export interface paths {
|
|
|
1261
1464
|
/**
|
|
1262
1465
|
* Exportar todas las entregas webhook como CSV o XLSX
|
|
1263
1466
|
* @description Descarga el historial de entregas de **todos** los endpoints de la cuenta de usuario en
|
|
1264
|
-
* un archivo, con los mismos filtros
|
|
1265
|
-
* evento.
|
|
1467
|
+
* un archivo, con los mismos filtros y la misma búsqueda (`q`) que el listado.
|
|
1266
1468
|
*
|
|
1267
1469
|
* {% concept slug="exports-and-formats" %}El formato se elige{% /concept %} con `?format` —`csv` por defecto, `xlsx` como
|
|
1268
1470
|
* alternativa— y el tope es de 100 000 filas, que `?limit` puede bajar.
|
|
@@ -1393,8 +1595,9 @@ export interface paths {
|
|
|
1393
1595
|
};
|
|
1394
1596
|
/**
|
|
1395
1597
|
* Consultar índices de consumo mes a mes
|
|
1396
|
-
* @description Devuelve el consumo mensual de validaciones del usuario autenticado en
|
|
1397
|
-
*
|
|
1598
|
+
* @description Devuelve el consumo mensual de validaciones del usuario autenticado en hasta
|
|
1599
|
+
* `months` meses con consumo, de más reciente a más antiguo. Los meses sin
|
|
1600
|
+
* consumo no aparecen.
|
|
1398
1601
|
*
|
|
1399
1602
|
* {% callout type="warning" %}
|
|
1400
1603
|
* El límite que acompaña a cada fila es el de hoy, no el que regía aquel mes:
|
|
@@ -1419,7 +1622,7 @@ export interface paths {
|
|
|
1419
1622
|
};
|
|
1420
1623
|
/**
|
|
1421
1624
|
* Desglosar consumo por operación
|
|
1422
|
-
* @description Desglosa el consumo del periodo indicado por tipo de operación contabilizada (`validation
|
|
1625
|
+
* @description Desglosa el consumo del periodo indicado por tipo de operación contabilizada (`validation` y `sms_2fa`).
|
|
1423
1626
|
*
|
|
1424
1627
|
* El parámetro `period` acepta `current` para el mes en curso o una cadena `YYYY-MM` para un mes específico.
|
|
1425
1628
|
*/
|
|
@@ -1443,13 +1646,20 @@ export interface paths {
|
|
|
1443
1646
|
* Consultar los límites de tasa (rate-limits)
|
|
1444
1647
|
* @description Devuelve los límites de tasa aplicables al usuario autenticado, por contexto.
|
|
1445
1648
|
*
|
|
1446
|
-
* Los
|
|
1447
|
-
*
|
|
1448
|
-
* por
|
|
1649
|
+
* Los contextos no llevan los mismos límites. `api` limita las peticiones
|
|
1650
|
+
* autenticadas por clave y por minuto, con el valor del plan de la cuenta
|
|
1651
|
+
* (`key_per_minute`), y suma un techo por IP (`ip_ceiling_per_minute`); las
|
|
1652
|
+
* peticiones sin clave se limitan por IP (`ip_per_minute`). `webhooks` fija las
|
|
1653
|
+
* entregas por minuto que la cuenta puede enviar hacia un mismo host destino,
|
|
1654
|
+
* según su plan (`host_per_minute`), y el tope de todos los clientes juntos
|
|
1655
|
+
* sobre ese host (`host_global_per_minute`). `login` limita por IP y por correo
|
|
1656
|
+
* electrónico, cada uno por minuto y por hora.
|
|
1449
1657
|
*
|
|
1450
1658
|
* No devuelve contadores en vivo, sólo la configuración vigente. Estos límites
|
|
1451
1659
|
* son ajenos a la cuota mensual de validaciones, que devuelve
|
|
1452
|
-
* [`GET /v1/usage/summary`](/es/v1/usage/get-usage-summary).
|
|
1660
|
+
* [`GET /v1/usage/summary`](/es/v1/usage/get-usage-summary). El consumo de la
|
|
1661
|
+
* ventana en curso lo informan, en cada respuesta autenticada de la API, las
|
|
1662
|
+
* cabeceras `X-RateLimit-*`.
|
|
1453
1663
|
*
|
|
1454
1664
|
* {% callout type="note" %}
|
|
1455
1665
|
* Al superarse uno de estos límites, la operación afectada responde con estado
|
|
@@ -1920,7 +2130,7 @@ export interface components {
|
|
|
1920
2130
|
api_version?: string;
|
|
1921
2131
|
/**
|
|
1922
2132
|
* @description Identificador único de la petición (hex).
|
|
1923
|
-
* @example
|
|
2133
|
+
* @example a1b2c3d4e5f66f5e4d3c2b1a
|
|
1924
2134
|
*/
|
|
1925
2135
|
request_id?: string;
|
|
1926
2136
|
datetime?: components["schemas"]["DatetimeMeta"];
|
|
@@ -1944,8 +2154,8 @@ export interface components {
|
|
|
1944
2154
|
*/
|
|
1945
2155
|
version?: string;
|
|
1946
2156
|
/**
|
|
1947
|
-
* @description Identificador único de la petición (
|
|
1948
|
-
* @example
|
|
2157
|
+
* @description Identificador único de la petición (24 caracteres hex).
|
|
2158
|
+
* @example a1b2c3d4e5f66f5e4d3c2b1a
|
|
1949
2159
|
*/
|
|
1950
2160
|
request_id?: string;
|
|
1951
2161
|
};
|
|
@@ -1968,7 +2178,7 @@ export interface components {
|
|
|
1968
2178
|
api_version?: string;
|
|
1969
2179
|
/**
|
|
1970
2180
|
* @description Identificador único de la petición (hex).
|
|
1971
|
-
* @example
|
|
2181
|
+
* @example a1b2c3d4e5f66f5e4d3c2b1a
|
|
1972
2182
|
*/
|
|
1973
2183
|
request_id?: string;
|
|
1974
2184
|
datetime?: components["schemas"]["DatetimeMeta"];
|
|
@@ -2016,17 +2226,17 @@ export interface components {
|
|
|
2016
2226
|
*/
|
|
2017
2227
|
name?: string;
|
|
2018
2228
|
/**
|
|
2019
|
-
* @description Rol de la cuenta de usuario en la organización. Decide qué permisos tienen sus sesiones — `owner`: Es la titular; `admin`: La administra; `user`: La usa
|
|
2229
|
+
* @description Rol de la cuenta de usuario en la organización. Decide qué permisos tienen sus sesiones — `owner`: Es la titular; `admin`: La administra; `user`: La usa.
|
|
2020
2230
|
* @example user
|
|
2021
2231
|
* @enum {string}
|
|
2022
2232
|
*/
|
|
2023
|
-
role?: "owner" | "admin" | "user"
|
|
2233
|
+
role?: "owner" | "admin" | "user";
|
|
2024
2234
|
/**
|
|
2025
|
-
* @description Estado de la cuenta de usuario — `active`: Permite operar con normalidad; `suspended`: Cuenta suspendida; `
|
|
2235
|
+
* @description Estado de la cuenta de usuario — `active`: Permite operar con normalidad; `suspended`: Cuenta suspendida; `revoked`: Eliminada por el usuario.
|
|
2026
2236
|
* @example active
|
|
2027
2237
|
* @enum {string}
|
|
2028
2238
|
*/
|
|
2029
|
-
status?: "active" | "suspended" | "
|
|
2239
|
+
status?: "active" | "suspended" | "revoked";
|
|
2030
2240
|
/**
|
|
2031
2241
|
* @description Zona horaria IANA con la que se presentan las fechas al usuario.
|
|
2032
2242
|
* @example America/Mexico_City
|
|
@@ -2054,7 +2264,7 @@ export interface components {
|
|
|
2054
2264
|
api_key?: {
|
|
2055
2265
|
/**
|
|
2056
2266
|
* @description Primeros 8 caracteres de la clave de API.
|
|
2057
|
-
* @example
|
|
2267
|
+
* @example veriko_
|
|
2058
2268
|
*/
|
|
2059
2269
|
prefix?: string;
|
|
2060
2270
|
/**
|
|
@@ -2108,7 +2318,7 @@ export interface components {
|
|
|
2108
2318
|
*/
|
|
2109
2319
|
enabled?: boolean;
|
|
2110
2320
|
/**
|
|
2111
|
-
* @description Canal por el que se entrega el código de autenticación (OTP) — `sms`: Por mensaje de texto; `email`: Por correo electrónico; `null`: La
|
|
2321
|
+
* @description Canal por el que se entrega el código de autenticación (OTP) — `sms`: Por mensaje de texto; `email`: Por correo electrónico; `null`: La cuenta de usuario nunca lo ha configurado. Al desactivar la 2FA se conserva el último canal usado.
|
|
2112
2322
|
* @example sms
|
|
2113
2323
|
* @enum {string|null}
|
|
2114
2324
|
*/
|
|
@@ -2141,7 +2351,7 @@ export interface components {
|
|
|
2141
2351
|
telegram_linked?: boolean;
|
|
2142
2352
|
};
|
|
2143
2353
|
/**
|
|
2144
|
-
* @description `true` cuando
|
|
2354
|
+
* @description `true` cuando no queda pendiente la aceptación de ningún documento: ni los Términos de Servicio ni el Aviso de Privacidad. `false` cuando falta la aceptación de cualquiera de los dos, o cuando el equipo exigió aceptar una versión que la cuenta todavía no ha aceptado. Gatea el modal de consentimiento post-login, que lista lo pendiente en `GET /users/me/legal/pending`.
|
|
2145
2355
|
* @example true
|
|
2146
2356
|
*/
|
|
2147
2357
|
legal_accepted?: boolean;
|
|
@@ -2180,11 +2390,11 @@ export interface components {
|
|
|
2180
2390
|
*/
|
|
2181
2391
|
outcomes?: ("not_found" | "cep_unavailable" | "error")[];
|
|
2182
2392
|
};
|
|
2183
|
-
/** @description Cuerpo de `POST /v1/validate` para una validación manual SPEI; exige `
|
|
2184
|
-
ValidationRequest: {
|
|
2393
|
+
/** @description Cuerpo de `POST /v1/validate` para una validación manual SPEI; exige `clave_rastreo` o `referencia_numerica`, y una sola de las dos formas de indicar la cuenta: `cuenta_beneficiaria` o `cuentas_candidatas`. */
|
|
2394
|
+
ValidationRequest: ({
|
|
2185
2395
|
/**
|
|
2186
2396
|
* Format: date
|
|
2187
|
-
* @description Fecha de la transferencia en formato ISO 8601 (YYYY-MM-DD).
|
|
2397
|
+
* @description Fecha de envío de la transferencia en formato ISO 8601 (YYYY-MM-DD). Con ella Banxico localiza el CEP, y puede diferir del día de operación que el CEP imprime (`banxico_result.operationDate`).
|
|
2188
2398
|
* @example 2025-03-15
|
|
2189
2399
|
*/
|
|
2190
2400
|
fecha: string;
|
|
@@ -2195,12 +2405,12 @@ export interface components {
|
|
|
2195
2405
|
*/
|
|
2196
2406
|
monto: number;
|
|
2197
2407
|
/**
|
|
2198
|
-
* @description Clave de rastreo de la transferencia (entre 1 a 30 caracteres). Acepta letras, números, guiones, diagonales
|
|
2408
|
+
* @description Clave de rastreo de la transferencia (entre 1 a 30 caracteres). Acepta letras, números, espacios y los signos de puntuación que admite Banxico (como guiones, diagonales, puntos, comas, `#`, `@` o `_`), pero no `<`, `>` ni la barra invertida. Se recorta y se le quitan caracteres invisibles de ancho cero antes de validarse, para que la misma clave copiada y pegada compare igual en toda la plataforma. Requerida si `referencia_numerica` no es enviada. Si vienen las dos, la consulta a Banxico se hace sólo por la clave.
|
|
2199
2409
|
* @example MXBA20250315001234
|
|
2200
2410
|
*/
|
|
2201
2411
|
clave_rastreo?: string;
|
|
2202
2412
|
/**
|
|
2203
|
-
* @description Referencia numérica de la transferencia (entre 1 y 7 dígitos). Acepta solo números y espacios. Requerida si `clave_rastreo` no es enviada
|
|
2413
|
+
* @description Referencia numérica de la transferencia (entre 1 y 7 dígitos). Acepta solo números y espacios. Requerida si `clave_rastreo` no es enviada. Si viene `clave_rastreo`, la consulta se hace sólo por la clave, y una referencia mal formada no se rechaza: se ignora y se deja un aviso.
|
|
2204
2414
|
* @example 1234567
|
|
2205
2415
|
*/
|
|
2206
2416
|
referencia_numerica?: string;
|
|
@@ -2215,10 +2425,22 @@ export interface components {
|
|
|
2215
2425
|
*/
|
|
2216
2426
|
receptor?: string;
|
|
2217
2427
|
/**
|
|
2218
|
-
* @description Cuenta bancaria receptora de la transferencia. Es obligatoria
|
|
2428
|
+
* @description Cuenta bancaria receptora de la transferencia. Es obligatoria cuando no se envía `cuentas_candidatas`: si faltan las dos, la respuesta es un estado HTTP `422` (con `preflight_failed` y el error de campo `cuenta_required`); si vienen las dos, un `422` con `cuenta_y_candidatas_excluyentes`. Puede ser CLABE (18 dígitos), tarjeta (16 dígitos) o celular DiMo (10 dígitos), y el tipo se identifica por la longitud de sus dígitos. Los espacios y guiones que separan grupos ("0121 8000 4412 345678") se ignoran automáticamente antes de contar la longitud. Para celular DiMo, si el banco receptor no puede resolverse por el campo `receptor`, por los beneficiarios registrados ni por el directorio de cuentas, la respuesta es un estado HTTP `422` (con `bank_code_unresolvable_for_phone` en el cuerpo).
|
|
2219
2429
|
* @example 012180004412345678
|
|
2220
2430
|
*/
|
|
2221
|
-
cuenta_beneficiaria
|
|
2431
|
+
cuenta_beneficiaria?: string;
|
|
2432
|
+
/**
|
|
2433
|
+
* @description Cuentas entre las que está la receptora de la transferencia, para cuando no se sabe cuál fue. Va en lugar de `cuenta_beneficiaria`: enviar las dos responde un estado HTTP `422` (con `cuenta_y_candidatas_excluyentes` en el cuerpo).
|
|
2434
|
+
*
|
|
2435
|
+
* Admite de 2 al máximo vigente de la plataforma, 3 por defecto y nunca más de 10; el `422` por exceso informa el máximo en `meta.max`. Cada cuenta es una CLABE (18 dígitos), una tarjeta (16) o un celular DiMo (10), con su dígito verificador válido y sin repetirse. Una lista que no cumple responde un `422` con `cuentas_candidatas_invalidas`, y señala en `field_errors` la posición que falló. Los dos errores ocurren antes de consumir cuota.
|
|
2436
|
+
*
|
|
2437
|
+
* Consume una sola unidad de cuota, lleve las cuentas que lleve. La consulta recorre las candidatas en el orden enviado y adopta la primera que coincide con la transferencia. La ganadora se publica completa en `normalized_data.cuenta_beneficiaria`, y `candidate_match` indica su posición. Si ninguna coincide, la respuesta es un estado HTTP `422` con el motivo en `code` (`cuenta_unresolvable_after_probes` cuando no hay un diagnóstico más preciso).
|
|
2438
|
+
* @example [
|
|
2439
|
+
* "012180004412345678",
|
|
2440
|
+
* "002010077777777771"
|
|
2441
|
+
* ]
|
|
2442
|
+
*/
|
|
2443
|
+
cuentas_candidatas?: string[];
|
|
2222
2444
|
/**
|
|
2223
2445
|
* @description Indica si el beneficiario de la transferencia es directamente la institución receptora del pago («Pago a Banco» en el CEP de Banxico) y no uno de sus cuentahabientes. `0` para una transferencia a un cuentahabiente (valor por defecto); `1` para pagos cuyo beneficiario es el banco —pago de tarjeta de crédito, de crédito o de servicios a la propia institución. Opcional: si se omite se asume `0`.
|
|
2224
2446
|
* @default 0
|
|
@@ -2233,16 +2455,13 @@ export interface components {
|
|
|
2233
2455
|
* @example orden-4812
|
|
2234
2456
|
*/
|
|
2235
2457
|
client_ref?: string;
|
|
2236
|
-
} | unknown | unknown;
|
|
2237
|
-
/**
|
|
2238
|
-
|
|
2239
|
-
* @enum {string}
|
|
2240
|
-
*/
|
|
2241
|
-
ValidationErrorCode: "network" | "captcha" | "max_retries_exceeded" | "ttl_expired" | "preflight_failed" | "rate_limit_exhausted" | "dispatch_failed" | "bank_code_unresolvable_for_phone" | "intra_bank_no_cep" | "not_found_identity" | "not_found_account" | "not_found_amount" | "not_found_account_and_amount" | "not_found_account_or_amount";
|
|
2458
|
+
} & (unknown | unknown)) | unknown | unknown;
|
|
2459
|
+
/** @description Código estable del fallo de una validación. La lista no es cerrada: un fallo inesperado trae `internal_error` y otros fallos pueden traer el código de su causa, así que trata un valor desconocido como un fallo genérico. */
|
|
2460
|
+
ValidationErrorCode: string | ("network" | "captcha" | "max_retries_exceeded" | "ttl_expired" | "preflight_failed" | "rate_limit_exhausted" | "dispatch_failed" | "bank_code_unresolvable_for_phone" | "intra_bank_no_cep" | "not_found_identity" | "not_found_account" | "not_found_amount" | "not_found_account_and_amount" | "not_found_account_or_amount" | "internal_error");
|
|
2242
2461
|
/** @description Estado completo del ciclo de reintentos, con configuración, avance y situación actual. */
|
|
2243
2462
|
RetryStateFull: {
|
|
2244
2463
|
/**
|
|
2245
|
-
* @description `true` cuando
|
|
2464
|
+
* @description `true` cuando la validación tiene reintentos configurados, aunque su ciclo ya haya terminado (`terminal_state`).
|
|
2246
2465
|
* @example true
|
|
2247
2466
|
*/
|
|
2248
2467
|
enabled?: boolean;
|
|
@@ -2319,7 +2538,7 @@ export interface components {
|
|
|
2319
2538
|
*/
|
|
2320
2539
|
status?: "queued" | "processing" | "valid" | "not_found" | "cep_unavailable" | "invalid" | "returned" | "failed" | "error";
|
|
2321
2540
|
/**
|
|
2322
|
-
* @description Veredicto reportado por Banxico. Puede ser: `valid`, `not_found`, `cep_unavailable`, `invalid`, `returned` o `error`. Permanece `pending` mientras no exista un veredicto de Banxico. `returned` significa que la operación se liquidó y la institución beneficiaria la devolvió después — el CEP, si existe, se sigue entregando. Solo toma `error` cuando la petición llegó a Banxico y el servicio falló; `error_code` identifica la causa.
|
|
2541
|
+
* @description Veredicto reportado por Banxico. Puede ser: `valid`, `not_found`, `cep_unavailable`, `invalid`, `returned` o `error`. Permanece `pending` mientras no exista un veredicto de Banxico. `returned` significa que la operación se liquidó y la institución beneficiaria la devolvió después — el CEP, si existe, se sigue entregando. Un `valid` no es definitivo: es el veredicto del momento de la consulta, y pasa a `returned` cuando Banxico reporta la devolución en una revisión posterior, que se pide con `POST /v1/validations/{id}/recheck` o que el servicio hace solo durante las primeras 72 horas (se emite el webhook `validation.returned`). Solo toma `error` cuando la petición llegó a Banxico y el servicio falló; `error_code` identifica la causa.
|
|
2323
2542
|
* @example valid
|
|
2324
2543
|
*/
|
|
2325
2544
|
banxico_status?: string | null;
|
|
@@ -2328,7 +2547,7 @@ export interface components {
|
|
|
2328
2547
|
* @example 1320
|
|
2329
2548
|
*/
|
|
2330
2549
|
processing_time_ms?: number | null;
|
|
2331
|
-
/** @description Copia de los campos de la petición original. */
|
|
2550
|
+
/** @description Copia de los campos de la petición original. `fecha` conserva la fecha de envío tal como se envió, aunque Banxico haya encontrado el pago con otra (`banxico_result._fecha`). */
|
|
2332
2551
|
request_data?: {
|
|
2333
2552
|
[key: string]: unknown;
|
|
2334
2553
|
};
|
|
@@ -2363,7 +2582,7 @@ export interface components {
|
|
|
2363
2582
|
processing_started_at?: string | null;
|
|
2364
2583
|
/**
|
|
2365
2584
|
* Format: date-time
|
|
2366
|
-
* @description Fecha y hora, en ISO 8601 UTC, de expiración para validaciones en cola. Tras esta marca, la validación pasa a `
|
|
2585
|
+
* @description Fecha y hora, en ISO 8601 UTC, de expiración para validaciones en cola. Tras esta marca, la validación pasa a `error` con `error_code` `ttl_expired`.
|
|
2367
2586
|
* @example 2026-04-30T10:15:00Z
|
|
2368
2587
|
*/
|
|
2369
2588
|
expires_at?: string | null;
|
|
@@ -2373,10 +2592,25 @@ export interface components {
|
|
|
2373
2592
|
*/
|
|
2374
2593
|
etag_version?: number | null;
|
|
2375
2594
|
/**
|
|
2376
|
-
* @description Referencia relativa del comprobante, imagen o PDF (solo si `validation_type` es del tipo `ocr`).
|
|
2377
|
-
* @example
|
|
2595
|
+
* @description Referencia relativa del comprobante, imagen o PDF (solo si `validation_type` es del tipo `ocr`). No se publica cuando el archivo no se conserva: ver `image_retained`.
|
|
2596
|
+
* @example comprobantes/3fa85f64-5717-4562-b3fc-2c963f66afa6.jpg
|
|
2378
2597
|
*/
|
|
2379
2598
|
image_path?: string | null;
|
|
2599
|
+
/**
|
|
2600
|
+
* @description `true` cuando la plataforma conserva el archivo del comprobante; `false` cuando no, porque la petición envió `retain_image=false` o porque la validación se purgó. Solo aparece en las validaciones de tipo `ocr`.
|
|
2601
|
+
*
|
|
2602
|
+
* Con `false`, `GET /v1/validations/{id}/image` responde un estado HTTP `410` (con `image_not_retained` o `validation_purged` en el cuerpo).
|
|
2603
|
+
* @example true
|
|
2604
|
+
*/
|
|
2605
|
+
image_retained?: boolean;
|
|
2606
|
+
/**
|
|
2607
|
+
* Format: date-time
|
|
2608
|
+
* @description Fecha y hora, en ISO 8601 UTC, en que la validación se purgó con `POST /v1/validations/{id}/purge/execute`. Solo aparece en una validación purgada, que queda como una lápida.
|
|
2609
|
+
*
|
|
2610
|
+
* Una lápida conserva `id`, `validation_type`, `status`, `banxico_status`, las fechas, `processing_time_ms`, `error_code` y el monto en `normalized_data.monto`. No conserva el archivo, el CEP, `request_data`, `ocr_result` ni `banxico_result`, y sus recursos derivados responden un estado HTTP `410` (con `validation_purged` en el cuerpo).
|
|
2611
|
+
* @example 2026-10-02T09:30:00Z
|
|
2612
|
+
*/
|
|
2613
|
+
purged_at?: string;
|
|
2380
2614
|
/**
|
|
2381
2615
|
* @description Campos extraídos del comprobante (solo si `validation_type` es del tipo `ocr`).
|
|
2382
2616
|
*
|
|
@@ -2392,7 +2626,7 @@ export interface components {
|
|
|
2392
2626
|
* @example 0.94
|
|
2393
2627
|
*/
|
|
2394
2628
|
ocr_confidence?: number | null;
|
|
2395
|
-
/** @description Campos normalizados después de la extracción OCR (
|
|
2629
|
+
/** @description Campos normalizados después de la extracción OCR (si `validation_type` es del tipo `ocr`), o la cuenta ganadora en `cuenta_beneficiaria` cuando una validación directa envió `cuentas_candidatas`. Una lápida conserva aquí solo el monto. */
|
|
2396
2630
|
normalized_data?: {
|
|
2397
2631
|
[key: string]: unknown;
|
|
2398
2632
|
} | null;
|
|
@@ -2418,9 +2652,9 @@ export interface components {
|
|
|
2418
2652
|
created_at: string;
|
|
2419
2653
|
};
|
|
2420
2654
|
/**
|
|
2421
|
-
* @description Conflicto entre la cuenta enviada y la que muestra la imagen. Solo aparece en validaciones de tipo `ocr`, cuando se envió `cuenta_beneficiaria` y la imagen muestra otra cuenta completa de la misma longitud, válida y con confianza suficiente.
|
|
2655
|
+
* @description Conflicto entre la cuenta enviada y la que muestra la imagen. Solo aparece en validaciones de tipo `ocr`, cuando se envió `cuenta_beneficiaria` y la imagen muestra otra cuenta completa de la misma longitud, válida y con confianza suficiente, o una cuenta enmascarada cuyos dígitos finales visibles (3 o más) no son el final de la cuenta enviada.
|
|
2422
2656
|
*
|
|
2423
|
-
* Prevalece la cuenta enviada, que es la que se consulta en Banxico: el campo no cambia el veredicto. Si el pago fue a la cuenta de la imagen, lo esperable es un `not_found`. Solo trae los últimos 4 dígitos de cada cuenta, y el conflicto también se añade a `normalization_warnings`.
|
|
2657
|
+
* Prevalece la cuenta enviada, que es la que se consulta en Banxico: el campo no cambia el veredicto. Si el pago fue a la cuenta de la imagen, lo esperable es un `not_found`. Solo trae los últimos 4 dígitos de cada cuenta, y el conflicto también se añade a `normalization_warnings`. Con una cuenta enmascarada, `read_last4` trae los dígitos finales que el propio comprobante muestra (3 o 4), nunca más.
|
|
2424
2658
|
*/
|
|
2425
2659
|
account_conflict?: {
|
|
2426
2660
|
/**
|
|
@@ -2429,11 +2663,28 @@ export interface components {
|
|
|
2429
2663
|
*/
|
|
2430
2664
|
sent_last4: string;
|
|
2431
2665
|
/**
|
|
2432
|
-
* @description Últimos 4 dígitos de la cuenta
|
|
2666
|
+
* @description Últimos 4 dígitos de la cuenta que muestra la imagen (los visibles, 3 o 4, si está enmascarada).
|
|
2433
2667
|
* @example 9012
|
|
2434
2668
|
*/
|
|
2435
2669
|
read_last4: string;
|
|
2436
2670
|
};
|
|
2671
|
+
/**
|
|
2672
|
+
* @description Cuál de las `cuentas_candidatas` enviadas ganó. Solo aparece cuando la petición llevó esa lista y una de las cuentas coincidió con la transferencia.
|
|
2673
|
+
*
|
|
2674
|
+
* La cuenta completa va en `normalized_data.cuenta_beneficiaria`; este objeto indica qué posición de la lista es, para correlacionarla con la entidad propia del integrador sin comparar cuentas. No cambia el veredicto.
|
|
2675
|
+
*/
|
|
2676
|
+
candidate_match?: {
|
|
2677
|
+
/**
|
|
2678
|
+
* @description Posición (desde 0) de la cuenta ganadora en el arreglo `cuentas_candidatas`, tal como se envió.
|
|
2679
|
+
* @example 1
|
|
2680
|
+
*/
|
|
2681
|
+
index: number;
|
|
2682
|
+
/**
|
|
2683
|
+
* @description Últimos 4 dígitos de la cuenta ganadora.
|
|
2684
|
+
* @example 7771
|
|
2685
|
+
*/
|
|
2686
|
+
account_last4: string;
|
|
2687
|
+
};
|
|
2437
2688
|
/** @description Indica si la cuenta beneficiaria viene enmascarada en el comprobante cargado, sea una CLABE, una tarjeta o un celular. Solo se incluye cuando vale `true` y solo si `validation_type` es del tipo `ocr`. */
|
|
2438
2689
|
is_masked?: boolean | null;
|
|
2439
2690
|
/**
|
|
@@ -2445,15 +2696,32 @@ export interface components {
|
|
|
2445
2696
|
* `authenticated` es `true` cuando su sello y su cadena original coinciden con los del CEP oficial;
|
|
2446
2697
|
* con `false`, `differing_fields` lista los campos que difieren y `normalization_warnings` lo avisa.
|
|
2447
2698
|
* El veredicto sigue siendo el de Banxico.
|
|
2699
|
+
*
|
|
2700
|
+
* `_payment_status` es el estado oficial del pago, tal como lo dio Banxico la última vez que se le preguntó:
|
|
2701
|
+
* `code` (`liquidado`, `en_proceso`, `cancelado`, `rechazado`, `en_proceso_devolucion`, `devuelto` o `desconocido`),
|
|
2702
|
+
* `label`, `settled`, `reversed` y `checked_at` (ISO 8601 UTC).
|
|
2703
|
+
* Su ausencia significa que no se pudo saber, nunca que el pago esté liquidado.
|
|
2704
|
+
* Se actualiza en cada revisión posterior, y con `devuelto` o `en_proceso_devolucion` la validación pasa a `returned`.
|
|
2705
|
+
*
|
|
2706
|
+
* `_fecha` aparece cuando Banxico no encontró el pago con la fecha enviada y sí con otra.
|
|
2707
|
+
* `used` es la fecha con la que se encontró, `requested` es la fecha con la que se consultó primero
|
|
2708
|
+
* y `reason` es el motivo por el que se probó `used`.
|
|
2709
|
+
* Valores de `reason`:
|
|
2710
|
+
* `clave_embedded_date`: La clave de rastreo incrusta otra fecha, a un día hábil SPEI o menos de la enviada;
|
|
2711
|
+
* `cutoff_18h`: La clave no incrusta fecha y el comprobante indica una hora cercana al corte de las 18:00,
|
|
2712
|
+
* así que se probó el día siguiente;
|
|
2713
|
+
* `dia_operacion`: La clave incrusta la fecha enviada, porque el comprobante trae la de operación,
|
|
2714
|
+
* y se probó un día anterior hasta el día hábil previo.
|
|
2715
|
+
* El veredicto sigue siendo el de Banxico, y `request_data.fecha` conserva la fecha enviada.
|
|
2448
2716
|
*/
|
|
2449
2717
|
banxico_result?: ({
|
|
2450
2718
|
/**
|
|
2451
|
-
* @description
|
|
2719
|
+
* @description Día hábil SPEI que Banxico asignó a la operación, tal como lo reporta el CEP (`YYYY-MM-DD`), en hora del centro de México. Puede diferir de la fecha de envío: lo enviado a partir de las 18:00, en sábado, en domingo o en un día inhábil opera el siguiente día hábil.
|
|
2452
2720
|
* @example 2025-03-15
|
|
2453
2721
|
*/
|
|
2454
2722
|
operationDate?: string;
|
|
2455
2723
|
/**
|
|
2456
|
-
* @description Hora de la operación tal como la reporta el CEP
|
|
2724
|
+
* @description Hora de la operación tal como la reporta el CEP (`HH:MM:SS`), en hora del centro de México y no en UTC.
|
|
2457
2725
|
* @example 14:22:10
|
|
2458
2726
|
*/
|
|
2459
2727
|
processingTime?: string;
|
|
@@ -2544,13 +2812,13 @@ export interface components {
|
|
|
2544
2812
|
*/
|
|
2545
2813
|
self?: string;
|
|
2546
2814
|
/**
|
|
2547
|
-
* @description URL del CEP en formato XML.
|
|
2548
|
-
* @example /v1/validations/a1b2c3d4-e5f6-
|
|
2815
|
+
* @description URL del CEP en formato XML. Solo aparece cuando `banxico_status` es `valid`, o es `returned` con comprobante, y la validación no se purgó; si no, se omite el objeto `links`.
|
|
2816
|
+
* @example /v1/validations/a1b2c3d4-e5f6-4890-abcd-ef0123456789/cep?format=xml
|
|
2549
2817
|
*/
|
|
2550
2818
|
cep_xml?: string | null;
|
|
2551
2819
|
/**
|
|
2552
|
-
* @description URL del CEP en formato PDF.
|
|
2553
|
-
* @example /v1/validations/a1b2c3d4-e5f6-
|
|
2820
|
+
* @description URL del CEP en formato PDF. Solo aparece cuando `banxico_status` es `valid`, o es `returned` con comprobante, y la validación no se purgó; si no, se omite el objeto `links`.
|
|
2821
|
+
* @example /v1/validations/a1b2c3d4-e5f6-4890-abcd-ef0123456789/cep?format=pdf
|
|
2554
2822
|
*/
|
|
2555
2823
|
cep_pdf?: string | null;
|
|
2556
2824
|
};
|
|
@@ -2615,25 +2883,47 @@ export interface components {
|
|
|
2615
2883
|
playground?: boolean;
|
|
2616
2884
|
};
|
|
2617
2885
|
};
|
|
2618
|
-
/** @description Cuerpo de `POST /v1/validate-ocr` con el comprobante en `image` o `image_url`; exige al menos uno de ambos campos. */
|
|
2886
|
+
/** @description Cuerpo de `POST /v1/validate-ocr` con el comprobante en `image` o `image_url`; exige al menos uno de ambos campos. `cuenta_beneficiaria` y `cuentas_candidatas` no pueden ir juntas. */
|
|
2619
2887
|
OcrValidationRequest: {
|
|
2620
2888
|
/**
|
|
2621
2889
|
* Format: byte
|
|
2622
|
-
* @description Comprobante codificado en base64, en imagen o en PDF. Si también se proporciona `image_url`, solo se considera `
|
|
2890
|
+
* @description Comprobante codificado en base64, en imagen o en PDF. Si también se proporciona `image_url`, solo se considera `image_url`. Formatos aceptados: JPEG, PNG, WebP o PDF de 1 a 3 páginas. Tamaño máximo: `12 MB`. Dimensiones máximas de una imagen: `12000px` por lado. Admite el prefijo `data:image/...;base64,` o `data:application/pdf;base64,`.
|
|
2623
2891
|
* @example iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==
|
|
2624
2892
|
*/
|
|
2625
2893
|
image?: string;
|
|
2626
2894
|
/**
|
|
2627
2895
|
* Format: uri
|
|
2628
|
-
* @description URL pública (HTTPS) del comprobante. Sigue los mismos límites de formato y tamaño que `image`: JPEG, PNG, WebP o PDF de 1 a 3 páginas, con un máximo de `12 MB`.
|
|
2896
|
+
* @description URL pública (HTTPS) del comprobante. Sigue los mismos límites de formato y tamaño que `image`: JPEG, PNG, WebP o PDF de 1 a 3 páginas, con un máximo de `12 MB`. Una URL `http` responde un estado HTTP `422` (con `invalid_url_scheme` en el cuerpo), y una redirección hacia `http` no se sigue.
|
|
2629
2897
|
* @example https://storage.example.com/receipts/comprobante-2025-03.jpg
|
|
2630
2898
|
*/
|
|
2631
2899
|
image_url?: string;
|
|
2632
2900
|
/**
|
|
2633
|
-
* @description Cuenta receptora de la transferencia (útil cuando falta o está incompleta en la imagen). Requerida para celular DiMo; opcional si la imagen muestra la cuenta completa o sus últimos dígitos, que se completan con los beneficiarios guardados (estos no sustituyen a este campo). Acepta CLABE (18 dígitos), tarjeta (16 dígitos) o celular DiMo (10 dígitos).
|
|
2901
|
+
* @description Cuenta receptora de la transferencia (útil cuando falta o está incompleta en la imagen). Requerida para celular DiMo; opcional si la imagen muestra la cuenta completa o sus últimos dígitos, que se completan con los beneficiarios guardados (estos no sustituyen a este campo). Acepta CLABE (18 dígitos), tarjeta (16 dígitos) o celular DiMo (10 dígitos). No puede enviarse junto con `cuentas_candidatas`: enviar las dos responde un estado HTTP `422` (con `cuenta_y_candidatas_excluyentes` en el cuerpo).
|
|
2634
2902
|
* @example 012180004412345678
|
|
2635
2903
|
*/
|
|
2636
2904
|
cuenta_beneficiaria?: string;
|
|
2905
|
+
/**
|
|
2906
|
+
* @description Cuentas entre las que está la receptora de la transferencia, para cuando la imagen no la muestra y no se sabe cuál fue. Va en lugar de `cuenta_beneficiaria`: enviar las dos responde un estado HTTP `422` (con `cuenta_y_candidatas_excluyentes` en el cuerpo). Tiene prioridad sobre la cuenta que se lea en la imagen.
|
|
2907
|
+
*
|
|
2908
|
+
* Admite de 2 al máximo vigente de la plataforma, 3 por defecto y nunca más de 10; el `422` por exceso informa el máximo en `meta.max`. Cada cuenta es una CLABE (18 dígitos), una tarjeta (16) o un celular DiMo (10), con su dígito verificador válido y sin repetirse. Una lista que no cumple responde un `422` con `cuentas_candidatas_invalidas`, y señala en `field_errors` la posición que falló. Los dos errores ocurren antes de consumir cuota.
|
|
2909
|
+
*
|
|
2910
|
+
* Consume una sola unidad de cuota, lleve las cuentas que lleve, también con `?async=1`. La consulta recorre las candidatas en el orden enviado y adopta la primera que coincide con la transferencia. La ganadora se publica completa en `normalized_data.cuenta_beneficiaria`, y `candidate_match` indica su posición. Si ninguna coincide, la respuesta es un estado HTTP `422` con el motivo en `code` (`cuenta_unresolvable_after_probes` cuando no hay un diagnóstico más preciso).
|
|
2911
|
+
* @example [
|
|
2912
|
+
* "012180004412345678",
|
|
2913
|
+
* "002010077777777771"
|
|
2914
|
+
* ]
|
|
2915
|
+
*/
|
|
2916
|
+
cuentas_candidatas?: string[];
|
|
2917
|
+
/**
|
|
2918
|
+
* @description **Código SPEI** del banco emisor (4 o 5 dígitos, p. ej. `40012`), para corregir el que se leyó del comprobante. Sustituye al leído antes de consultar Banxico. Un valor que no son 4 o 5 dígitos (un nombre, por ejemplo) se ignora y se conserva el leído.
|
|
2919
|
+
* @example 40012
|
|
2920
|
+
*/
|
|
2921
|
+
banco_emisor?: string;
|
|
2922
|
+
/**
|
|
2923
|
+
* @description **Código SPEI** del banco receptor (4 o 5 dígitos, p. ej. `40002`), para corregir el que se leyó del comprobante. Sustituye al leído antes de consultar Banxico. Un valor que no son 4 o 5 dígitos (un nombre, por ejemplo) se ignora y se conserva el leído.
|
|
2924
|
+
* @example 40002
|
|
2925
|
+
*/
|
|
2926
|
+
banco_receptor?: string;
|
|
2637
2927
|
/** @description Política de reintentos automáticos para esta validación. Si se omite, se aplica la política general del usuario, configurada en `PUT /v1/users/me/retry-policy`. **Los reintentos no consumen cuota de validaciones**. */
|
|
2638
2928
|
retry_policy?: components["schemas"]["RetryPolicy"];
|
|
2639
2929
|
/**
|
|
@@ -2641,11 +2931,21 @@ export interface components {
|
|
|
2641
2931
|
* @example orden-4812
|
|
2642
2932
|
*/
|
|
2643
2933
|
client_ref?: string;
|
|
2934
|
+
/**
|
|
2935
|
+
* @description `true` cuando la plataforma conserva el archivo del comprobante después de validarlo, que es lo habitual. Con `false`, el archivo se borra en cuanto la validación llega a un estado terminal del que ya no se necesita; el veredicto y los datos extraídos se conservan.
|
|
2936
|
+
*
|
|
2937
|
+
* Con `false`, la validación publica `image_retained=false` y `GET /v1/validations/{id}/image` responde un estado HTTP `410` (con `image_not_retained` en el cuerpo). Vale igual con `?async=1`.
|
|
2938
|
+
*
|
|
2939
|
+
* El archivo existe mientras la validación se procesa. Si entró como un CEP en PDF y tiene reintentos automáticos activos, el borrado espera a que ese ciclo cierre, porque cada reintento vuelve a comparar el sello del PDF. Un valor que no es booleano responde un estado HTTP `422` (con `invalid_retain_image` en el cuerpo), antes de consumir cuota.
|
|
2940
|
+
* @default true
|
|
2941
|
+
* @example false
|
|
2942
|
+
*/
|
|
2943
|
+
retain_image: boolean;
|
|
2644
2944
|
} | unknown | unknown;
|
|
2645
2945
|
/** @description Estado resumido del ciclo de reintentos, con la configuración representada como `null`. */
|
|
2646
2946
|
RetryStateCompact: {
|
|
2647
2947
|
/**
|
|
2648
|
-
* @description `true` cuando
|
|
2948
|
+
* @description `true` cuando la validación tiene reintentos configurados, aunque su ciclo ya haya terminado (`terminal_state`).
|
|
2649
2949
|
* @example true
|
|
2650
2950
|
*/
|
|
2651
2951
|
enabled?: boolean;
|
|
@@ -2692,7 +2992,7 @@ export interface components {
|
|
|
2692
2992
|
id: string;
|
|
2693
2993
|
/** @description Datos mostrados en el historial de validaciones. */
|
|
2694
2994
|
attributes: {
|
|
2695
|
-
/** @description Nombre del banco de la contraparte. Prioriza `receptor_name` o `emisor_name` guardado; si falta, intenta resolver el código de receptor o emisor. Si tampoco puede resolverlo, devuelve
|
|
2995
|
+
/** @description Nombre del banco de la contraparte. Prioriza `receptor_name` o `emisor_name` guardado; si falta, intenta resolver el código de receptor o emisor. Si tampoco puede resolverlo, devuelve el valor guardado cuando no es una clave numérica, o `Banco no identificado` (en inglés, `Unidentified bank`). */
|
|
2696
2996
|
bank_name?: string;
|
|
2697
2997
|
/** @description Clave Banxico canónica (3-5 dígitos) del banco de la contraparte, resuelta por la autoridad del dominio. `null` cuando el banco no pudo resolverse. Es aditiva respecto de `bank_name`: sirve para resolver recursos/avatares por clave, nunca por el nombre visible. */
|
|
2698
2998
|
bank_code?: string | null;
|
|
@@ -2726,6 +3026,8 @@ export interface components {
|
|
|
2726
3026
|
created_at?: components["schemas"]["TimestampUTC"];
|
|
2727
3027
|
/** @description Fecha de retiro del historial, en ISO 8601 UTC. */
|
|
2728
3028
|
deleted_at?: components["schemas"]["TimestampUTC"] | null;
|
|
3029
|
+
/** @description Fecha y hora, en ISO 8601 UTC, en que la validación se purgó. Solo aparece en una validación purgada, que queda como una lápida con su veredicto, sus fechas y su monto. */
|
|
3030
|
+
purged_at?: components["schemas"]["TimestampUTC"];
|
|
2729
3031
|
retry_state?: components["schemas"]["RetryStateCompact"];
|
|
2730
3032
|
/**
|
|
2731
3033
|
* @description Referencia propia enviada al validar (`client_ref`), devuelta tal cual. Solo aparece cuando la petición la incluyó.
|
|
@@ -2915,6 +3217,211 @@ export interface components {
|
|
|
2915
3217
|
CancelValidationRetriesAttributes: {
|
|
2916
3218
|
retry_state?: components["schemas"]["RetryStateFull"];
|
|
2917
3219
|
};
|
|
3220
|
+
/** @description Resultado de la revisión que acompaña, dentro de `meta`, la respuesta de `POST /v1/validations/{id}/recheck`. */
|
|
3221
|
+
ValidationRecheckMeta: {
|
|
3222
|
+
/**
|
|
3223
|
+
* Format: date-time
|
|
3224
|
+
* @description Fecha y hora, en ISO 8601 UTC, en que se consultó el estado del pago a Banxico. `null` cuando no se consultó nada porque la validación ya estaba en `returned`.
|
|
3225
|
+
* @example 2026-10-01T18:42:07Z
|
|
3226
|
+
*/
|
|
3227
|
+
checked_at: string | null;
|
|
3228
|
+
/**
|
|
3229
|
+
* @description `true` cuando esta consulta pasó la validación de `valid` a `returned`. En ese caso también se emitió el webhook `validation.returned`.
|
|
3230
|
+
* @example false
|
|
3231
|
+
*/
|
|
3232
|
+
changed: boolean;
|
|
3233
|
+
/**
|
|
3234
|
+
* @description Veredicto de Banxico antes de esta consulta — `valid`: La validación seguía confirmada; `returned`: La validación ya estaba devuelta y no se consultó nada.
|
|
3235
|
+
* @example valid
|
|
3236
|
+
* @enum {string}
|
|
3237
|
+
*/
|
|
3238
|
+
previous_status: "valid" | "returned";
|
|
3239
|
+
};
|
|
3240
|
+
/** @description Respuesta de `POST /v1/validations/{id}/purge/prepare`: lo que borraría el borrado definitivo, lo que conservaría y el token que lo confirma. Todavía no ha cambiado nada. */
|
|
3241
|
+
ValidationPurgePrepareResponse: {
|
|
3242
|
+
/** @description Recurso JSON:API de la preparación. Su `id` es el de la validación. */
|
|
3243
|
+
data: components["schemas"]["JsonApiResourceBase"] & {
|
|
3244
|
+
/**
|
|
3245
|
+
* @description Tipo del recurso, fijo para esta operación. Forma parte de su identidad en la envoltura JSON:API. Siempre `validation_purge`.
|
|
3246
|
+
* @example validation_purge
|
|
3247
|
+
* @enum {string}
|
|
3248
|
+
*/
|
|
3249
|
+
type: "validation_purge";
|
|
3250
|
+
/**
|
|
3251
|
+
* Format: uuid
|
|
3252
|
+
* @description Identificador de la validación que se borraría.
|
|
3253
|
+
* @example 3fa85f64-5717-4562-b3fc-2c963f66afa6
|
|
3254
|
+
*/
|
|
3255
|
+
id: string;
|
|
3256
|
+
/** @description Resumen del borrado y token de confirmación. */
|
|
3257
|
+
attributes: {
|
|
3258
|
+
/**
|
|
3259
|
+
* @description Token de un solo uso, atado a la cuenta y a esta validación, que `POST /v1/validations/{id}/purge/execute` exige para borrar. Caduca en `expires_in` segundos.
|
|
3260
|
+
* @example eyJhZG1pbl9pZCI6Ii4uLiJ9.q1w2e3r4t5y6u7i8o9p0
|
|
3261
|
+
*/
|
|
3262
|
+
confirmation_token: string;
|
|
3263
|
+
/**
|
|
3264
|
+
* @description Segundos de vigencia del token.
|
|
3265
|
+
* @example 120
|
|
3266
|
+
*/
|
|
3267
|
+
expires_in: number;
|
|
3268
|
+
/**
|
|
3269
|
+
* @description `true` siempre: el borrado no se puede deshacer. Un respaldo de infraestructura no lo revierte para el cliente.
|
|
3270
|
+
* @example true
|
|
3271
|
+
*/
|
|
3272
|
+
irreversible: boolean;
|
|
3273
|
+
/** @description Lo que borraría el borrado definitivo. */
|
|
3274
|
+
will_delete: {
|
|
3275
|
+
/**
|
|
3276
|
+
* @description `true` cuando hay un archivo del comprobante (imagen o PDF) que se borraría.
|
|
3277
|
+
* @example true
|
|
3278
|
+
*/
|
|
3279
|
+
image: boolean;
|
|
3280
|
+
/**
|
|
3281
|
+
* @description `true` cuando hay un CEP (el XML o el PDF) que se borraría.
|
|
3282
|
+
* @example true
|
|
3283
|
+
*/
|
|
3284
|
+
cep: boolean;
|
|
3285
|
+
/**
|
|
3286
|
+
* @description Campos de la validación con contenido que se vaciarían. De `normalized_data` se conserva únicamente el monto.
|
|
3287
|
+
* @example [
|
|
3288
|
+
* "request_data",
|
|
3289
|
+
* "ocr_result",
|
|
3290
|
+
* "normalized_data",
|
|
3291
|
+
* "banxico_result"
|
|
3292
|
+
* ]
|
|
3293
|
+
*/
|
|
3294
|
+
stored_data: ("request_data" | "ocr_result" | "normalized_data" | "normalization_warnings" | "banxico_result")[];
|
|
3295
|
+
/**
|
|
3296
|
+
* @description Cantidad de intentos de reintento que se borrarían.
|
|
3297
|
+
* @example 2
|
|
3298
|
+
*/
|
|
3299
|
+
retry_attempts: number;
|
|
3300
|
+
/**
|
|
3301
|
+
* @description Cantidad de sondeos de cuenta candidata que se borrarían.
|
|
3302
|
+
* @example 0
|
|
3303
|
+
*/
|
|
3304
|
+
probe_attempts: number;
|
|
3305
|
+
/**
|
|
3306
|
+
* @description Cantidad de entregas de webhook de esta validación a las que se les quitaría el cuerpo enviado y la respuesta del receptor. El registro de cada entrega se conserva.
|
|
3307
|
+
* @example 1
|
|
3308
|
+
*/
|
|
3309
|
+
webhook_deliveries: number;
|
|
3310
|
+
/**
|
|
3311
|
+
* @description Cantidad de entregas de notificación de esta validación cuyo contenido se vaciaría. Las notificaciones de la bandeja de la cuenta se borrarían.
|
|
3312
|
+
* @example 1
|
|
3313
|
+
*/
|
|
3314
|
+
notifications: number;
|
|
3315
|
+
/**
|
|
3316
|
+
* @description Cantidad de respuestas guardadas de `Idempotency-Key` que se borrarían.
|
|
3317
|
+
* @example 1
|
|
3318
|
+
*/
|
|
3319
|
+
idempotency_responses: number;
|
|
3320
|
+
/**
|
|
3321
|
+
* @description `true` siempre: los cuerpos de las filas de auditoría que nombran la validación se quitarían, y el contexto libre de sus eventos de seguridad se reduciría a ids y códigos.
|
|
3322
|
+
* @example true
|
|
3323
|
+
*/
|
|
3324
|
+
audit_traces: boolean;
|
|
3325
|
+
};
|
|
3326
|
+
/**
|
|
3327
|
+
* @description Campos que conserva la lápida en que queda la validación: bastan para que la cuota, las estadísticas, finanzas y el historial sigan cuadrando.
|
|
3328
|
+
* @example [
|
|
3329
|
+
* "id",
|
|
3330
|
+
* "validation_type",
|
|
3331
|
+
* "status",
|
|
3332
|
+
* "banxico_status",
|
|
3333
|
+
* "amount",
|
|
3334
|
+
* "created_at",
|
|
3335
|
+
* "purged_at"
|
|
3336
|
+
* ]
|
|
3337
|
+
*/
|
|
3338
|
+
will_keep: string[];
|
|
3339
|
+
/**
|
|
3340
|
+
* @description `true` cuando la validación tiene un ciclo de reintentos abierto, que el borrado cancela.
|
|
3341
|
+
* @example false
|
|
3342
|
+
*/
|
|
3343
|
+
cancels_pending_retries: boolean;
|
|
3344
|
+
/**
|
|
3345
|
+
* @description `false` siempre: el borrado no devuelve cuota ni cambia lo cobrado.
|
|
3346
|
+
* @example false
|
|
3347
|
+
*/
|
|
3348
|
+
refunds_quota: boolean;
|
|
3349
|
+
/**
|
|
3350
|
+
* @description Identificadores de otras validaciones de la misma cuenta con el mismo comprobante (hasta 20). No se tocan: cada una guarda su propia copia de lo extraído y se borra por separado.
|
|
3351
|
+
* @example []
|
|
3352
|
+
*/
|
|
3353
|
+
same_image_validation_ids: string[];
|
|
3354
|
+
};
|
|
3355
|
+
};
|
|
3356
|
+
};
|
|
3357
|
+
/** @description Cuerpo de `POST /v1/validations/{id}/purge/execute`: el token del paso de preparación. */
|
|
3358
|
+
ValidationPurgeExecuteRequest: {
|
|
3359
|
+
/**
|
|
3360
|
+
* @description Token que devolvió `POST /v1/validations/{id}/purge/prepare` para esta misma validación y esta misma cuenta. Es de un solo uso y caduca en el plazo que indicó `expires_in`.
|
|
3361
|
+
* @example eyJhZG1pbl9pZCI6Ii4uLiJ9.q1w2e3r4t5y6u7i8o9p0
|
|
3362
|
+
*/
|
|
3363
|
+
confirmation_token: string;
|
|
3364
|
+
};
|
|
3365
|
+
/** @description Respuesta de `POST /v1/validations/{id}/purge/execute`: la validación quedó purgada y esto es lo que se borró. */
|
|
3366
|
+
ValidationPurgeExecuteResponse: {
|
|
3367
|
+
/** @description Recurso JSON:API del borrado. Su `id` es el de la validación. */
|
|
3368
|
+
data: components["schemas"]["JsonApiResourceBase"] & {
|
|
3369
|
+
/**
|
|
3370
|
+
* @description Tipo del recurso, fijo para esta operación. Forma parte de su identidad en la envoltura JSON:API. Siempre `validation_purge`.
|
|
3371
|
+
* @example validation_purge
|
|
3372
|
+
* @enum {string}
|
|
3373
|
+
*/
|
|
3374
|
+
type: "validation_purge";
|
|
3375
|
+
/**
|
|
3376
|
+
* Format: uuid
|
|
3377
|
+
* @description Identificador de la validación purgada.
|
|
3378
|
+
* @example 3fa85f64-5717-4562-b3fc-2c963f66afa6
|
|
3379
|
+
*/
|
|
3380
|
+
id: string;
|
|
3381
|
+
/** @description Resultado del borrado. */
|
|
3382
|
+
attributes: {
|
|
3383
|
+
/**
|
|
3384
|
+
* Format: date-time
|
|
3385
|
+
* @description Fecha y hora, en ISO 8601 UTC, en que la validación quedó purgada.
|
|
3386
|
+
* @example 2026-10-02T09:30:00Z
|
|
3387
|
+
*/
|
|
3388
|
+
purged_at: string;
|
|
3389
|
+
/**
|
|
3390
|
+
* @description Estado del borrado de los archivos — `complete`: Los archivos ya no existen; `pending`: Algún archivo no se pudo borrar en este momento y el barrido diario lo termina. El contenido de la base de datos ya está borrado en los dos casos y el archivo no se sirve.
|
|
3391
|
+
* @example complete
|
|
3392
|
+
* @enum {string}
|
|
3393
|
+
*/
|
|
3394
|
+
file_removal: "complete" | "pending";
|
|
3395
|
+
/** @description Lo que se borró. Los contadores cuentan filas tocadas; los booleanos dicen si había algo que borrar. */
|
|
3396
|
+
deleted: {
|
|
3397
|
+
/** @description `true` cuando había un archivo del comprobante. */
|
|
3398
|
+
image?: boolean;
|
|
3399
|
+
/** @description `true` cuando había un PDF del CEP. */
|
|
3400
|
+
cep_pdf?: boolean;
|
|
3401
|
+
/** @description `true` cuando el borrado cerró un ciclo de reintentos que seguía abierto. */
|
|
3402
|
+
retry_cycle_cancelled?: boolean;
|
|
3403
|
+
/** @description Intentos de reintento borrados. */
|
|
3404
|
+
retry_attempts?: number;
|
|
3405
|
+
/** @description Sondeos de cuenta candidata borrados. */
|
|
3406
|
+
probe_attempts?: number;
|
|
3407
|
+
/** @description Entregas de webhook a las que se les quitó el cuerpo enviado y la respuesta del receptor. */
|
|
3408
|
+
webhook_deliveries?: number;
|
|
3409
|
+
/** @description Entregas de notificación cuyo contenido se vació. */
|
|
3410
|
+
notification_deliveries?: number;
|
|
3411
|
+
/** @description Notificaciones de la bandeja que se borraron. */
|
|
3412
|
+
notifications?: number;
|
|
3413
|
+
/** @description Respuestas guardadas de `Idempotency-Key` que se borraron. */
|
|
3414
|
+
idempotency_responses?: number;
|
|
3415
|
+
/** @description Filas de importación masiva cuyo contenido se vació. */
|
|
3416
|
+
import_rows?: number;
|
|
3417
|
+
/** @description Filas de auditoría a las que se les quitaron los cuerpos. Falta cuando ese barrido no se pudo completar. */
|
|
3418
|
+
audit_log_rows?: number;
|
|
3419
|
+
/** @description Eventos de seguridad cuyo contexto se redactó. Falta cuando ese barrido no se pudo completar. */
|
|
3420
|
+
security_events_rows?: number;
|
|
3421
|
+
};
|
|
3422
|
+
};
|
|
3423
|
+
};
|
|
3424
|
+
};
|
|
2918
3425
|
/** @description Banco participante del catálogo SPEI, en formato JSON:API. `id` y `attributes.code` son siempre iguales (`id` se conserva como identificador estable del recurso aunque `code` lo duplique). */
|
|
2919
3426
|
BankResource: components["schemas"]["JsonApiResourceBase"] & {
|
|
2920
3427
|
/**
|
|
@@ -2976,7 +3483,7 @@ export interface components {
|
|
|
2976
3483
|
*/
|
|
2977
3484
|
bin: string;
|
|
2978
3485
|
/**
|
|
2979
|
-
* @description Nombre
|
|
3486
|
+
* @description Nombre del banco registrado para ese BIN.
|
|
2980
3487
|
* @example BBVA MEXICO
|
|
2981
3488
|
*/
|
|
2982
3489
|
bank_name: string;
|
|
@@ -3011,25 +3518,103 @@ export interface components {
|
|
|
3011
3518
|
BinLookupResponse: components["schemas"]["SuccessEnvelope"] & {
|
|
3012
3519
|
data: components["schemas"]["BinResource"];
|
|
3013
3520
|
};
|
|
3014
|
-
/** @description
|
|
3015
|
-
|
|
3016
|
-
/** @description Tope de beneficiarios activos. `-1` significa sin tope. */
|
|
3017
|
-
max?: number;
|
|
3018
|
-
/** @description Cantidad de beneficiarios activos guardados, independientemente del filtro de archivados. */
|
|
3019
|
-
current?: number;
|
|
3020
|
-
/** @description Cantidad de lugares necesarios para crear o reactivar cuentas del trabajo de importación. */
|
|
3021
|
-
required?: number;
|
|
3022
|
-
/** @description `true` cuando el trabajo de importación necesita lugares nuevos y supera el cupo disponible. */
|
|
3023
|
-
exceeded?: boolean;
|
|
3024
|
-
};
|
|
3025
|
-
/** @description Cuenta beneficiaria registrada como recurso JSON:API. Puede ser una CLABE, un número de tarjeta o un número de celular DiMo. El tipo de cuenta se autodetecta por longitud al momento de inserción. */
|
|
3026
|
-
Beneficiary: components["schemas"]["JsonApiResourceBase"] & {
|
|
3521
|
+
/** @description Calendario de días inhábiles SPEI de un año, en formato JSON:API. `id` y `attributes.year` son siempre iguales: el año del calendario. */
|
|
3522
|
+
SpeiCalendarResource: components["schemas"]["JsonApiResourceBase"] & {
|
|
3027
3523
|
/**
|
|
3028
|
-
* @description Tipo de recurso JSON:API. Siempre `
|
|
3029
|
-
* @example
|
|
3524
|
+
* @description Tipo de recurso JSON:API. Siempre `spei_calendar`.
|
|
3525
|
+
* @example spei_calendar
|
|
3030
3526
|
* @enum {string}
|
|
3031
3527
|
*/
|
|
3032
|
-
type: "
|
|
3528
|
+
type: "spei_calendar";
|
|
3529
|
+
/**
|
|
3530
|
+
* @description Año del calendario (cuatro dígitos).
|
|
3531
|
+
* @example 2026
|
|
3532
|
+
*/
|
|
3533
|
+
id: string;
|
|
3534
|
+
/** @description Datos del calendario del año. */
|
|
3535
|
+
attributes: {
|
|
3536
|
+
/**
|
|
3537
|
+
* @description Año del calendario (cuatro dígitos). Mismo valor que `id`.
|
|
3538
|
+
* @example 2026
|
|
3539
|
+
*/
|
|
3540
|
+
year: number;
|
|
3541
|
+
/**
|
|
3542
|
+
* @description Días inhábiles que caen de lunes a viernes (`YYYY-MM-DD`), de menor a mayor. Los sábados y los domingos también son inhábiles y no se repiten aquí.
|
|
3543
|
+
* @example [
|
|
3544
|
+
* "2026-01-01",
|
|
3545
|
+
* "2026-02-02",
|
|
3546
|
+
* "2026-03-16",
|
|
3547
|
+
* "2026-04-02",
|
|
3548
|
+
* "2026-04-03",
|
|
3549
|
+
* "2026-05-01",
|
|
3550
|
+
* "2026-09-16",
|
|
3551
|
+
* "2026-11-02",
|
|
3552
|
+
* "2026-11-16",
|
|
3553
|
+
* "2026-12-25"
|
|
3554
|
+
* ]
|
|
3555
|
+
*/
|
|
3556
|
+
non_business_days: string[];
|
|
3557
|
+
/** @description Disposición oficial de la que sale el calendario. */
|
|
3558
|
+
source: {
|
|
3559
|
+
/**
|
|
3560
|
+
* @description Siglas de la autoridad que emite la disposición, por ejemplo `CNBV`.
|
|
3561
|
+
* @example CNBV
|
|
3562
|
+
*/
|
|
3563
|
+
issuer: string;
|
|
3564
|
+
/**
|
|
3565
|
+
* @description Siglas del medio oficial en el que se publicó la disposición, por ejemplo `DOF`.
|
|
3566
|
+
* @example DOF
|
|
3567
|
+
*/
|
|
3568
|
+
published_in: string;
|
|
3569
|
+
/**
|
|
3570
|
+
* Format: date
|
|
3571
|
+
* @description Fecha de publicación de la disposición (`YYYY-MM-DD`).
|
|
3572
|
+
* @example 2025-12-10
|
|
3573
|
+
*/
|
|
3574
|
+
published_on: string;
|
|
3575
|
+
/**
|
|
3576
|
+
* @description Título oficial de la disposición, en español.
|
|
3577
|
+
* @example Disposiciones de carácter general que señalan los días del año 2026 en que las entidades financieras sujetas a la supervisión de la Comisión Nacional Bancaria y de Valores deberán cerrar sus puertas y suspender operaciones
|
|
3578
|
+
*/
|
|
3579
|
+
title: string;
|
|
3580
|
+
};
|
|
3581
|
+
};
|
|
3582
|
+
};
|
|
3583
|
+
/** @description Respuesta de `GET /v1/public/spei-calendar/{year}`. Un único recurso con los días inhábiles SPEI del año y su fuente, y en `meta.covered_years` los años que tienen calendario. Un año sin calendario responde `404`, no este cuerpo. */
|
|
3584
|
+
SpeiCalendarResponse: components["schemas"]["SuccessEnvelope"] & {
|
|
3585
|
+
data: components["schemas"]["SpeiCalendarResource"];
|
|
3586
|
+
/** @description Metadatos de la respuesta. */
|
|
3587
|
+
meta?: {
|
|
3588
|
+
/**
|
|
3589
|
+
* @description Años con calendario publicado, de menor a mayor.
|
|
3590
|
+
* @example [
|
|
3591
|
+
* 2024,
|
|
3592
|
+
* 2025,
|
|
3593
|
+
* 2026
|
|
3594
|
+
* ]
|
|
3595
|
+
*/
|
|
3596
|
+
covered_years?: number[];
|
|
3597
|
+
};
|
|
3598
|
+
};
|
|
3599
|
+
/** @description Cupo de beneficiarios activos del plan y ocupación actual de la cuenta autenticada. */
|
|
3600
|
+
BeneficiaryCapacity: {
|
|
3601
|
+
/** @description Tope de beneficiarios activos. `-1` significa sin tope. */
|
|
3602
|
+
max?: number;
|
|
3603
|
+
/** @description Cantidad de beneficiarios activos guardados, independientemente del filtro de archivados. */
|
|
3604
|
+
current?: number;
|
|
3605
|
+
/** @description Cantidad de lugares necesarios para crear o reactivar cuentas del trabajo de importación. */
|
|
3606
|
+
required?: number;
|
|
3607
|
+
/** @description `true` cuando el trabajo de importación necesita lugares nuevos y supera el cupo disponible. */
|
|
3608
|
+
exceeded?: boolean;
|
|
3609
|
+
};
|
|
3610
|
+
/** @description Cuenta beneficiaria registrada como recurso JSON:API. Puede ser una CLABE, un número de tarjeta o un número de celular DiMo. El tipo de cuenta se autodetecta por longitud al momento de inserción. */
|
|
3611
|
+
Beneficiary: components["schemas"]["JsonApiResourceBase"] & {
|
|
3612
|
+
/**
|
|
3613
|
+
* @description Tipo de recurso JSON:API. Siempre `beneficiary`.
|
|
3614
|
+
* @example beneficiary
|
|
3615
|
+
* @enum {string}
|
|
3616
|
+
*/
|
|
3617
|
+
type: "beneficiary";
|
|
3033
3618
|
/**
|
|
3034
3619
|
* @description Identificador numérico del beneficiario en el sistema.
|
|
3035
3620
|
* @example 42
|
|
@@ -3049,12 +3634,12 @@ export interface components {
|
|
|
3049
3634
|
*/
|
|
3050
3635
|
account_type: "clabe" | "card" | "phone";
|
|
3051
3636
|
/**
|
|
3052
|
-
* @description Código SPEI (5 dígitos) del banco resuelto.
|
|
3637
|
+
* @description Código SPEI (5 dígitos) del banco resuelto. Es la cadena vacía (`""`) cuando la cuenta no tiene un banco conocido: una tarjeta cuyo BIN no está en el directorio. En ese caso `bank_name` trae un texto de relleno en el idioma de la petición.
|
|
3053
3638
|
* @example 40012
|
|
3054
3639
|
*/
|
|
3055
3640
|
bank_code: string;
|
|
3056
3641
|
/**
|
|
3057
|
-
* @description Nombre oficial del banco, resuelto a partir de su `bank_code`.
|
|
3642
|
+
* @description Nombre oficial del banco, resuelto a partir de su `bank_code`. Con un `bank_code` vacío es un texto de relleno («BIN no reconocido (411111)»), que se traduce al idioma de la petición.
|
|
3058
3643
|
* @example BBVA MEXICO
|
|
3059
3644
|
*/
|
|
3060
3645
|
bank_name: string;
|
|
@@ -3152,7 +3737,7 @@ export interface components {
|
|
|
3152
3737
|
*/
|
|
3153
3738
|
account_type: "clabe" | "card" | "phone";
|
|
3154
3739
|
/**
|
|
3155
|
-
* @description Código SPEI (5 dígitos) del banco resuelto.
|
|
3740
|
+
* @description Código SPEI (5 dígitos) del banco resuelto. Es la cadena vacía (`""`) para una tarjeta cuyo BIN no está en el directorio.
|
|
3156
3741
|
* @example 40012
|
|
3157
3742
|
*/
|
|
3158
3743
|
bank_code: string;
|
|
@@ -3176,12 +3761,13 @@ export interface components {
|
|
|
3176
3761
|
CreateBeneficiaryImportRequest: {
|
|
3177
3762
|
/**
|
|
3178
3763
|
* Format: binary
|
|
3179
|
-
* @description Archivo a importar. Formatos aceptados: CSV, XLS, XLSX, TXT o PDF. Tamaño máximo: 20 MB.
|
|
3764
|
+
* @description Archivo a importar. Formatos aceptados: CSV, XLS, XLSX, TXT, JSON o PDF. Tamaño máximo: 20 MB.
|
|
3180
3765
|
* @example beneficiarios-marzo.csv
|
|
3181
3766
|
*/
|
|
3182
3767
|
file: string;
|
|
3183
3768
|
/**
|
|
3184
3769
|
* @description Modo de lectura del archivo — `template`: Respeta los encabezados canónicos; `free`: Formato libre, el sistema deduce la estructura.
|
|
3770
|
+
* @default template
|
|
3185
3771
|
* @example template
|
|
3186
3772
|
* @enum {string}
|
|
3187
3773
|
*/
|
|
@@ -3237,11 +3823,11 @@ export interface components {
|
|
|
3237
3823
|
*/
|
|
3238
3824
|
status?: "pending" | "parsing" | "preview_ready" | "committing" | "completed" | "failed" | "cancelled";
|
|
3239
3825
|
/**
|
|
3240
|
-
* @description Formato del archivo subido. Aceptados: `csv`, `xls`, `xlsx`, `txt` o `pdf`.
|
|
3826
|
+
* @description Formato del archivo subido. Aceptados: `csv`, `xls`, `xlsx`, `txt`, `json` o `pdf`.
|
|
3241
3827
|
* @example csv
|
|
3242
3828
|
* @enum {string}
|
|
3243
3829
|
*/
|
|
3244
|
-
file_format?: "csv" | "xls" | "xlsx" | "txt" | "pdf";
|
|
3830
|
+
file_format?: "csv" | "xls" | "xlsx" | "txt" | "json" | "pdf";
|
|
3245
3831
|
/**
|
|
3246
3832
|
* @description Modo de lectura del archivo — `template`: Respeta los encabezados canónicos; `free`: Formato libre, el sistema deduce la estructura.
|
|
3247
3833
|
* @example template
|
|
@@ -3289,7 +3875,7 @@ export interface components {
|
|
|
3289
3875
|
*/
|
|
3290
3876
|
llm_invoked?: boolean;
|
|
3291
3877
|
/**
|
|
3292
|
-
* @description Código estable del fallo del trabajo. `null` cuando no terminó en `failed`. Por ejemplo, `file_corrupt` o `
|
|
3878
|
+
* @description Código estable del fallo del trabajo. `null` cuando no terminó en `failed`. Por ejemplo, `file_corrupt` o `empty_file`.
|
|
3293
3879
|
* @example null
|
|
3294
3880
|
*/
|
|
3295
3881
|
error_code?: string | null;
|
|
@@ -3395,7 +3981,7 @@ export interface components {
|
|
|
3395
3981
|
[key: string]: unknown;
|
|
3396
3982
|
};
|
|
3397
3983
|
/**
|
|
3398
|
-
* @description Fragmento del archivo original para diagnóstico.
|
|
3984
|
+
* @description Fragmento del archivo original para diagnóstico. Las series de 13 a 19 dígitos que no son una CLABE (18 dígitos) aparecen enmascaradas (`••••` y los últimos cuatro), igual que un número de celular de 10 dígitos cuando lo precede una etiqueta como «cuenta» o «celular», para evitar exposición de números de tarjeta en los cuerpos de depuración.
|
|
3399
3985
|
* @example {}
|
|
3400
3986
|
*/
|
|
3401
3987
|
raw_preview?: {
|
|
@@ -3532,17 +4118,17 @@ export interface components {
|
|
|
3532
4118
|
/** @description Estadísticas de uso de la API, cuota de validaciones y estado de Banxico para la cuenta. */
|
|
3533
4119
|
ApiUsage: {
|
|
3534
4120
|
/**
|
|
3535
|
-
* @description Cantidad de peticiones
|
|
4121
|
+
* @description Cantidad de peticiones del usuario con clave de API en el día calendario actual (UTC).
|
|
3536
4122
|
* @example 42
|
|
3537
4123
|
*/
|
|
3538
4124
|
requests_today?: number;
|
|
3539
4125
|
/**
|
|
3540
|
-
* @description Cantidad de peticiones
|
|
4126
|
+
* @description Cantidad de peticiones del usuario con clave de API en el mes calendario actual (UTC).
|
|
3541
4127
|
* @example 580
|
|
3542
4128
|
*/
|
|
3543
4129
|
requests_month?: number;
|
|
3544
4130
|
quota?: components["schemas"]["PlanQuotaState"];
|
|
3545
|
-
/** @description Últimas peticiones
|
|
4131
|
+
/** @description Últimas 15 peticiones del usuario con clave de API, de la más reciente a la más antigua. */
|
|
3546
4132
|
recent_requests?: {
|
|
3547
4133
|
/**
|
|
3548
4134
|
* @description Verbo HTTP de la petición. Uno de `GET`, `POST`, `PUT`, `PATCH` o `DELETE`.
|
|
@@ -3613,7 +4199,7 @@ export interface components {
|
|
|
3613
4199
|
*/
|
|
3614
4200
|
monthly_validations?: number;
|
|
3615
4201
|
/**
|
|
3616
|
-
* @description Cantidad de validaciones no retiradas del mes UTC en curso cuyo estado almacenado es `
|
|
4202
|
+
* @description Cantidad de validaciones no retiradas del mes UTC en curso cuyo estado almacenado es `queued` o `processing`.
|
|
3617
4203
|
* @example 3
|
|
3618
4204
|
*/
|
|
3619
4205
|
pending_month?: number;
|
|
@@ -3629,7 +4215,7 @@ export interface components {
|
|
|
3629
4215
|
avg_ticket?: number;
|
|
3630
4216
|
/**
|
|
3631
4217
|
* @description Tasa de éxito, expresada de `0` a `100`: `valid_validations` entre `total_validations`, redondeada a un decimal. La población histórica es la misma e incluye las validaciones retiradas y las del banco de pruebas (Playground); devuelve `0` cuando el total es `0`.
|
|
3632
|
-
* @example
|
|
4218
|
+
* @example 90.3
|
|
3633
4219
|
*/
|
|
3634
4220
|
success_rate_percent?: number;
|
|
3635
4221
|
/**
|
|
@@ -3658,11 +4244,16 @@ export interface components {
|
|
|
3658
4244
|
/**
|
|
3659
4245
|
* Format: uuid
|
|
3660
4246
|
* @description Identificador único de la validación (UUID v4).
|
|
3661
|
-
* @example a1b2c3d4-e5f6-
|
|
4247
|
+
* @example a1b2c3d4-e5f6-4890-abcd-ef0123456789
|
|
3662
4248
|
*/
|
|
3663
4249
|
id?: string;
|
|
3664
4250
|
/** @description Datos resumidos de la validación reciente mostrados en el panel. */
|
|
3665
4251
|
attributes?: {
|
|
4252
|
+
/**
|
|
4253
|
+
* @description Clave Banxico canónica del banco, si se puede resolver.
|
|
4254
|
+
* @example 40012
|
|
4255
|
+
*/
|
|
4256
|
+
bank_code?: string | null;
|
|
3666
4257
|
/**
|
|
3667
4258
|
* @description Nombre del banco de la contraparte. Prioriza `receptor_name` o `emisor_name` guardado; si falta, intenta resolver el código de receptor o emisor. Si tampoco puede resolverlo, devuelve ese código o `Banco no identificado`.
|
|
3668
4259
|
* @example BBVA MEXICO
|
|
@@ -3736,6 +4327,33 @@ export interface components {
|
|
|
3736
4327
|
/** @description Veredictos que admiten reintentos automáticos. */
|
|
3737
4328
|
eligible_outcomes?: string[];
|
|
3738
4329
|
};
|
|
4330
|
+
/** @description Política de reintentos guardada de la cuenta: activación, límite, intervalo y resultados elegibles. Desactivada o sin configurar, trae `enabled=false`, `max_retries=0`, `interval_seconds=0` y `outcomes` vacío. */
|
|
4331
|
+
SavedRetryPolicy: {
|
|
4332
|
+
/**
|
|
4333
|
+
* @description `true` cuando el ciclo de reintentos está activo. Si es `false`, los demás campos pueden ser ignorados.
|
|
4334
|
+
* @example true
|
|
4335
|
+
*/
|
|
4336
|
+
enabled?: boolean;
|
|
4337
|
+
/**
|
|
4338
|
+
* @description Número máximo de reintentos automáticos. Una vez alcanzado, el ciclo pasa al estado terminal `exhausted`.
|
|
4339
|
+
* @example 3
|
|
4340
|
+
*/
|
|
4341
|
+
max_retries?: number;
|
|
4342
|
+
/**
|
|
4343
|
+
* @description Segundos de espera entre cada reintento. Valores válidos: 300–86400 (5 min a 24h).
|
|
4344
|
+
* @example 600
|
|
4345
|
+
*/
|
|
4346
|
+
interval_seconds?: number;
|
|
4347
|
+
/**
|
|
4348
|
+
* @description Resultados que originan un reintento. De forma predeterminada son `not_found`, `cep_unavailable` y `error`; la combinación `["not_found", "cep_unavailable"]` excluye `error`.
|
|
4349
|
+
* @example [
|
|
4350
|
+
* "not_found",
|
|
4351
|
+
* "cep_unavailable",
|
|
4352
|
+
* "error"
|
|
4353
|
+
* ]
|
|
4354
|
+
*/
|
|
4355
|
+
outcomes?: ("not_found" | "cep_unavailable" | "error")[];
|
|
4356
|
+
};
|
|
3739
4357
|
UserRetryPolicyResponse: components["schemas"]["SuccessEnvelope"] & {
|
|
3740
4358
|
/** @description Metadatos de la respuesta y límites efectivos de reintentos. */
|
|
3741
4359
|
meta?: {
|
|
@@ -3745,7 +4363,7 @@ export interface components {
|
|
|
3745
4363
|
data?: {
|
|
3746
4364
|
/** @enum {string} */
|
|
3747
4365
|
type?: "retry_policy";
|
|
3748
|
-
attributes?: components["schemas"]["
|
|
4366
|
+
attributes?: components["schemas"]["SavedRetryPolicy"];
|
|
3749
4367
|
};
|
|
3750
4368
|
};
|
|
3751
4369
|
/** @description Cuerpo de la petición para actualizar la política de reintentos por defecto del usuario (aplica a futuras validaciones). */
|
|
@@ -3755,7 +4373,7 @@ export interface components {
|
|
|
3755
4373
|
/** @description Estado público del servicio de verificación de Banxico, tal como lo devuelve `GET /v1/status/banxico`. Muestra el estado operativo actual y una explicación legible. */
|
|
3756
4374
|
BanxicoPublicStatus: {
|
|
3757
4375
|
/**
|
|
3758
|
-
* @description Estado agregado del servicio de verificación de Banxico — `operational`: Todas las pruebas pasan y la latencia es normal; `degraded`: Problemas parciales (latencia elevada o errores intermitentes); `down`: Servicio inaccesible; `unknown`:
|
|
4376
|
+
* @description Estado agregado del servicio de verificación de Banxico — `operational`: Todas las pruebas pasan y la latencia es normal; `degraded`: Problemas parciales (latencia elevada o errores intermitentes); `down`: Servicio inaccesible; `unknown`: no hay datos de salud vigentes, porque aún no se ha ejecutado ningún chequeo o porque el último tiene más de tres veces `check_interval_seconds` de antigüedad (el chequeo automático dejó de correr).
|
|
3759
4377
|
* @example operational
|
|
3760
4378
|
* @enum {string}
|
|
3761
4379
|
*/
|
|
@@ -3771,7 +4389,7 @@ export interface components {
|
|
|
3771
4389
|
*/
|
|
3772
4390
|
message: string;
|
|
3773
4391
|
/**
|
|
3774
|
-
* @description Timestamp del último chequeo de salud ejecutado. `null` cuando aún no se ha ejecutado ningún chequeo.
|
|
4392
|
+
* @description Timestamp del último chequeo de salud ejecutado. `null` cuando aún no se ha ejecutado ningún chequeo. Cuando `status` es `unknown` por un chequeo demasiado viejo, conserva la fecha de ese chequeo: dice desde cuándo no hay dato.
|
|
3775
4393
|
* @example 2026-04-11T15:30:00Z
|
|
3776
4394
|
*/
|
|
3777
4395
|
last_verified_at: components["schemas"]["TimestampUTC"] | null;
|
|
@@ -3882,7 +4500,7 @@ export interface components {
|
|
|
3882
4500
|
*/
|
|
3883
4501
|
url: string;
|
|
3884
4502
|
/** @description Eventos a los que se suscribe el endpoint webhook. Entre 1 y 10. */
|
|
3885
|
-
events: ("validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming")[];
|
|
4503
|
+
events: ("validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "validation.returned" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming")[];
|
|
3886
4504
|
/**
|
|
3887
4505
|
* @description Etiqueta libre para distinguir el endpoint webhook de los demás.
|
|
3888
4506
|
* @example Alta de pagos en el ERP
|
|
@@ -3919,12 +4537,12 @@ export interface components {
|
|
|
3919
4537
|
CreateWebhookRequest: {
|
|
3920
4538
|
/**
|
|
3921
4539
|
* Format: uri
|
|
3922
|
-
* @description URL receptora del webhook.
|
|
4540
|
+
* @description URL receptora del webhook. Se rechaza si resuelve a una dirección privada o si pasa de 2048 caracteres y, en producción, también si no usa HTTPS.
|
|
3923
4541
|
* @example https://example.com/webhooks/entregas
|
|
3924
4542
|
*/
|
|
3925
4543
|
url: string;
|
|
3926
4544
|
/** @description Eventos a los que se suscribe el endpoint webhook. Entre 1 y 10. */
|
|
3927
|
-
events: ("validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming")[];
|
|
4545
|
+
events: ("validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "validation.returned" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming")[];
|
|
3928
4546
|
/**
|
|
3929
4547
|
* @description Etiqueta libre para distinguir el endpoint webhook de los demás. `null` la omite; más de 255 caracteres responde `422 webhook_description_too_long`.
|
|
3930
4548
|
* @example Alta de pagos en el ERP
|
|
@@ -3935,12 +4553,12 @@ export interface components {
|
|
|
3935
4553
|
UpdateWebhookRequest: {
|
|
3936
4554
|
/**
|
|
3937
4555
|
* Format: uri
|
|
3938
|
-
* @description Nueva URL receptora del webhook.
|
|
4556
|
+
* @description Nueva URL receptora del webhook. Se rechaza si no resuelve a una dirección pública o si supera 2048 caracteres y, en producción, también si no usa HTTPS.
|
|
3939
4557
|
* @example https://example.com/webhooks/entregas
|
|
3940
4558
|
*/
|
|
3941
4559
|
url?: string;
|
|
3942
4560
|
/** @description Nuevos eventos a los que se suscribe el endpoint webhook. Sustituyen a la lista anterior. Entre 1 y 10. */
|
|
3943
|
-
events?: ("validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming")[];
|
|
4561
|
+
events?: ("validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "validation.returned" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming")[];
|
|
3944
4562
|
/**
|
|
3945
4563
|
* @description Nueva etiqueta libre para distinguir el endpoint webhook de los demás. `null` la elimina; más de 255 caracteres responde `422 webhook_description_too_long`.
|
|
3946
4564
|
* @example Alta de pagos en el ERP
|
|
@@ -4007,7 +4625,7 @@ export interface components {
|
|
|
4007
4625
|
* @example validation.completed
|
|
4008
4626
|
* @enum {string}
|
|
4009
4627
|
*/
|
|
4010
|
-
event_type: "validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming" | "test";
|
|
4628
|
+
event_type: "validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "validation.returned" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming" | "test";
|
|
4011
4629
|
/**
|
|
4012
4630
|
* Format: uuid
|
|
4013
4631
|
* @description Identificador único de la validación (UUID v4) asociada cuando el evento es `validation.*`. `null` cuando el evento es otro.
|
|
@@ -4272,13 +4890,13 @@ export interface components {
|
|
|
4272
4890
|
*/
|
|
4273
4891
|
remaining: number;
|
|
4274
4892
|
/**
|
|
4275
|
-
* @description Porcentaje del límite consumido en el ciclo actual, redondeado a 2 decimales.
|
|
4893
|
+
* @description Porcentaje del límite consumido en el ciclo actual, redondeado a 2 decimales. Puede pasar de 100 si hay excedente.
|
|
4276
4894
|
* @example 70.5
|
|
4277
4895
|
*/
|
|
4278
4896
|
used_percent: number;
|
|
4279
4897
|
/**
|
|
4280
4898
|
* @description Nivel de alerta según el consumo: `ok` (<70 %), `warn` (70–89 %), `danger` (≥90 % o cuota agotada).
|
|
4281
|
-
* @example
|
|
4899
|
+
* @example warn
|
|
4282
4900
|
* @enum {string}
|
|
4283
4901
|
*/
|
|
4284
4902
|
tone: "ok" | "warn" | "danger";
|
|
@@ -4391,10 +5009,30 @@ export interface components {
|
|
|
4391
5009
|
type?: "usage_limits";
|
|
4392
5010
|
/** @description Datos de los límites: los límites por contexto y sus notas. */
|
|
4393
5011
|
attributes?: {
|
|
4394
|
-
/** @description Límites de tasa por contexto. Cada entrada trae sólo los que ese contexto aplica: `api` lleva `ip_per_minute`; `login`, los cuatro. */
|
|
5012
|
+
/** @description Límites de tasa por contexto. Cada entrada trae sólo los que ese contexto aplica: `api` lleva `key_per_minute`, `ip_ceiling_per_minute` e `ip_per_minute`; `webhooks`, `host_per_minute` y `host_global_per_minute`; `login`, los cuatro de IP y correo electrónico. `key_per_minute` y `host_per_minute` los fija el plan de la cuenta. */
|
|
4395
5013
|
rate_limits?: {
|
|
4396
5014
|
[key: string]: {
|
|
4397
|
-
/**
|
|
5015
|
+
/**
|
|
5016
|
+
* @description Peticiones por minuto de una clave de la cuenta en la API, según su plan. Rige a las peticiones autenticadas.
|
|
5017
|
+
* @example 240
|
|
5018
|
+
*/
|
|
5019
|
+
key_per_minute?: number;
|
|
5020
|
+
/**
|
|
5021
|
+
* @description Techo de peticiones por minuto por dirección IP para las peticiones autenticadas, todas las claves de un mismo origen juntas.
|
|
5022
|
+
* @example 1200
|
|
5023
|
+
*/
|
|
5024
|
+
ip_ceiling_per_minute?: number;
|
|
5025
|
+
/**
|
|
5026
|
+
* @description Entregas de webhook por minuto que la cuenta puede enviar hacia un mismo host destino, según su plan.
|
|
5027
|
+
* @example 60
|
|
5028
|
+
*/
|
|
5029
|
+
host_per_minute?: number;
|
|
5030
|
+
/**
|
|
5031
|
+
* @description Tope de entregas de webhook por minuto hacia un mismo host destino, todos los clientes juntos.
|
|
5032
|
+
* @example 600
|
|
5033
|
+
*/
|
|
5034
|
+
host_global_per_minute?: number;
|
|
5035
|
+
/** @description Cantidad máxima de peticiones por dirección IP por minuto. En `api` sólo rige a las peticiones anónimas, sin clave. */
|
|
4398
5036
|
ip_per_minute?: number;
|
|
4399
5037
|
/** @description Cantidad máxima de peticiones por dirección IP por hora. */
|
|
4400
5038
|
ip_per_hour?: number;
|
|
@@ -4432,12 +5070,12 @@ export interface components {
|
|
|
4432
5070
|
/** @description Lista de celdas del mapa; cada entrada es una combinación de `day_of_week` y `hour_of_day` con su conteo. */
|
|
4433
5071
|
buckets?: {
|
|
4434
5072
|
/**
|
|
4435
|
-
* @description Día de la semana (0 = domingo … 6 = sábado).
|
|
5073
|
+
* @description Día de la semana en UTC (0 = domingo … 6 = sábado).
|
|
4436
5074
|
* @example 0
|
|
4437
5075
|
*/
|
|
4438
5076
|
day_of_week?: number;
|
|
4439
5077
|
/**
|
|
4440
|
-
* @description Hora del día (0–23),
|
|
5078
|
+
* @description Hora del día (0–23), en UTC.
|
|
4441
5079
|
* @example 0
|
|
4442
5080
|
*/
|
|
4443
5081
|
hour_of_day?: number;
|
|
@@ -4632,22 +5270,20 @@ export interface components {
|
|
|
4632
5270
|
*/
|
|
4633
5271
|
month?: string;
|
|
4634
5272
|
/**
|
|
4635
|
-
*
|
|
4636
|
-
* @
|
|
4637
|
-
* @example 2026-04-01T06:00:00Z
|
|
5273
|
+
* @description Inicio del mes en UTC, con formato `YYYY-MM-DD HH:MM:SS`.
|
|
5274
|
+
* @example 2026-04-01 06:00:00
|
|
4638
5275
|
*/
|
|
4639
5276
|
from_utc?: string;
|
|
4640
5277
|
/**
|
|
4641
|
-
*
|
|
4642
|
-
* @
|
|
4643
|
-
* @example 2026-05-01T06:00:00Z
|
|
5278
|
+
* @description Fin del mes en UTC (exclusivo), con formato `YYYY-MM-DD HH:MM:SS`.
|
|
5279
|
+
* @example 2026-05-01 06:00:00
|
|
4644
5280
|
*/
|
|
4645
5281
|
to_utc?: string;
|
|
4646
5282
|
};
|
|
4647
5283
|
/** @description Conteos de validaciones por veredicto, más retiros mediante borrado lógico del periodo (informativo). */
|
|
4648
5284
|
counts?: {
|
|
4649
5285
|
/**
|
|
4650
|
-
* @description Cantidad de validaciones
|
|
5286
|
+
* @description Cantidad de validaciones del periodo, incluidas las que tienen estado `pending`.
|
|
4651
5287
|
* @example 287
|
|
4652
5288
|
*/
|
|
4653
5289
|
total?: number;
|
|
@@ -4736,7 +5372,7 @@ export interface components {
|
|
|
4736
5372
|
verified_share_pct?: number;
|
|
4737
5373
|
};
|
|
4738
5374
|
/**
|
|
4739
|
-
* @description Tasa de éxito: porcentaje de validaciones con resultado `valid` sobre
|
|
5375
|
+
* @description Tasa de éxito: porcentaje de validaciones con resultado `valid` sobre `counts.total`, expresado de 0 a 100.
|
|
4740
5376
|
* @example 79.4
|
|
4741
5377
|
*/
|
|
4742
5378
|
success_rate?: number;
|
|
@@ -4891,9 +5527,20 @@ export interface components {
|
|
|
4891
5527
|
* @description Nombres de las columnas para formato CSV (en el mismo orden que las filas en `rows`).
|
|
4892
5528
|
* @example [
|
|
4893
5529
|
* "Fecha",
|
|
4894
|
-
* "
|
|
5530
|
+
* "Folio plataforma",
|
|
5531
|
+
* "Tipo",
|
|
4895
5532
|
* "Clave de rastreo",
|
|
4896
|
-
* "
|
|
5533
|
+
* "Fecha operación",
|
|
5534
|
+
* "Monto",
|
|
5535
|
+
* "Banco emisor",
|
|
5536
|
+
* "CLABE emisora",
|
|
5537
|
+
* "Banco receptor",
|
|
5538
|
+
* "CLABE receptora",
|
|
5539
|
+
* "Beneficiario",
|
|
5540
|
+
* "Veredicto Banxico",
|
|
5541
|
+
* "CEP disponible",
|
|
5542
|
+
* "Folio CEP",
|
|
5543
|
+
* "Tiempo (ms)"
|
|
4897
5544
|
* ]
|
|
4898
5545
|
*/
|
|
4899
5546
|
headers?: string[];
|
|
@@ -4901,10 +5548,21 @@ export interface components {
|
|
|
4901
5548
|
* @description Primeras 20 filas (máximo) de datos del reporte.
|
|
4902
5549
|
* @example [
|
|
4903
5550
|
* [
|
|
5551
|
+
* "2026-04-15 10:32:00",
|
|
5552
|
+
* "c3d4e5f6-a7b8-9012-cdef-123456789012",
|
|
5553
|
+
* "direct",
|
|
5554
|
+
* "MXBA20260415001234",
|
|
4904
5555
|
* "2026-04-15",
|
|
4905
5556
|
* "15000.50",
|
|
4906
|
-
* "
|
|
4907
|
-
* "
|
|
5557
|
+
* "BBVA MEXICO",
|
|
5558
|
+
* "012180001234567891",
|
|
5559
|
+
* "BANORTE",
|
|
5560
|
+
* "072180009876543210",
|
|
5561
|
+
* "Comercializadora Ejemplo SA de CV",
|
|
5562
|
+
* "valid",
|
|
5563
|
+
* "Sí",
|
|
5564
|
+
* "",
|
|
5565
|
+
* "412"
|
|
4908
5566
|
* ]
|
|
4909
5567
|
* ]
|
|
4910
5568
|
*/
|
|
@@ -4924,7 +5582,7 @@ export interface components {
|
|
|
4924
5582
|
plan_slug?: string;
|
|
4925
5583
|
/**
|
|
4926
5584
|
* @description Nombre del plan que muestran las interfaces.
|
|
4927
|
-
* @example
|
|
5585
|
+
* @example Personal
|
|
4928
5586
|
*/
|
|
4929
5587
|
plan_name?: string;
|
|
4930
5588
|
/**
|
|
@@ -5051,17 +5709,59 @@ export interface components {
|
|
|
5051
5709
|
BillingSubscriptionQuotaMeta: {
|
|
5052
5710
|
/**
|
|
5053
5711
|
* @description Identificador único y legible del plan. Coincide con `data.attributes.plan_slug`.
|
|
5054
|
-
* @example
|
|
5712
|
+
* @example personal
|
|
5713
|
+
*/
|
|
5714
|
+
plan_slug?: string;
|
|
5715
|
+
/**
|
|
5716
|
+
* @description Nombre del plan que muestran las interfaces.
|
|
5717
|
+
* @example Personal
|
|
5718
|
+
*/
|
|
5719
|
+
plan_name?: string;
|
|
5720
|
+
/**
|
|
5721
|
+
* @description Modelo de facturación del plan — `free`: Sin cobro; `tiered`: Cuota fija; `metered`: Cobro por consumo; `hybrid`: Cuota fija más consumo.
|
|
5722
|
+
* @example hybrid
|
|
5723
|
+
* @enum {string}
|
|
5724
|
+
*/
|
|
5725
|
+
billing_model?: "free" | "tiered" | "metered" | "hybrid";
|
|
5726
|
+
/**
|
|
5727
|
+
* @description Origen de la suscripción — `stripe`: Pago mediante Stripe; `admin_granted`: Concesión administrativa; `system_default`: Plan asignado por el sistema.
|
|
5728
|
+
* @example stripe
|
|
5729
|
+
* @enum {string}
|
|
5055
5730
|
*/
|
|
5056
|
-
|
|
5731
|
+
source?: "stripe" | "admin_granted" | "system_default";
|
|
5732
|
+
/**
|
|
5733
|
+
* @description `true` cuando el usuario aceptó cobro por excedente en un plan `hybrid`. En ese caso, `effective_limit` salta de `included_validations` a `monthly_validation_limit`.
|
|
5734
|
+
* @example false
|
|
5735
|
+
*/
|
|
5736
|
+
overage_enabled?: boolean;
|
|
5737
|
+
/**
|
|
5738
|
+
* @description `true` cuando el plan es `hybrid` y el cobro por excedente todavía no está activo: el usuario puede activarlo.
|
|
5739
|
+
* @example false
|
|
5740
|
+
*/
|
|
5741
|
+
overage_available?: boolean;
|
|
5742
|
+
/**
|
|
5743
|
+
* @description Límite del ciclo fijado por un administrador para esta suscripción. Cuando existe, manda sobre el del plan. `null` sin ajuste.
|
|
5744
|
+
* @example null
|
|
5745
|
+
*/
|
|
5746
|
+
monthly_limit_override?: number | null;
|
|
5747
|
+
/**
|
|
5748
|
+
* @description Validaciones incluidas en la cuota base antes del cobro por excedentes. `null` cuando el plan no tiene cuota base.
|
|
5749
|
+
* @example 500
|
|
5750
|
+
*/
|
|
5751
|
+
included_validations?: number | null;
|
|
5752
|
+
/**
|
|
5753
|
+
* @description Tope de validaciones por ciclo de la suscripción. `0` no permite validaciones. En planes `hybrid`, es el tope duro cuando `overage_enabled` es `true`; cuando es `false`, `effective_limit` usa `included_validations`. En los demás modelos, es el límite efectivo salvo que exista un ajuste administrativo.
|
|
5754
|
+
* @example 10000
|
|
5755
|
+
*/
|
|
5756
|
+
monthly_validation_limit?: number;
|
|
5057
5757
|
/**
|
|
5058
5758
|
* @description Validaciones consumidas en el ciclo actual.
|
|
5059
|
-
* @example
|
|
5759
|
+
* @example 220
|
|
5060
5760
|
*/
|
|
5061
5761
|
used?: number;
|
|
5062
5762
|
/**
|
|
5063
|
-
* @description Límite efectivo de validaciones para el ciclo actual. Tiene el mismo valor que `data.attributes.effective_limit
|
|
5064
|
-
* @example
|
|
5763
|
+
* @description Límite efectivo de validaciones para el ciclo actual. Tiene el mismo valor que `data.attributes.effective_limit`, salvo con `quota_kind=trial`: entonces es la asignación de prueba.
|
|
5764
|
+
* @example 300
|
|
5065
5765
|
*/
|
|
5066
5766
|
limit?: number;
|
|
5067
5767
|
/**
|
|
@@ -5119,7 +5819,31 @@ export interface components {
|
|
|
5119
5819
|
* ],
|
|
5120
5820
|
* "meta": {
|
|
5121
5821
|
* "version": "1.51.0",
|
|
5122
|
-
* "request_id": "
|
|
5822
|
+
* "request_id": "1a2b3c4d5e6ff6e5d4c3b2a1"
|
|
5823
|
+
* }
|
|
5824
|
+
* }
|
|
5825
|
+
*/
|
|
5826
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
5827
|
+
};
|
|
5828
|
+
};
|
|
5829
|
+
/** @description El cuerpo de la petición llegó vacío cuando la operación necesita datos (`body_empty`). */
|
|
5830
|
+
BodyEmpty: {
|
|
5831
|
+
headers: {
|
|
5832
|
+
[name: string]: unknown;
|
|
5833
|
+
};
|
|
5834
|
+
content: {
|
|
5835
|
+
/**
|
|
5836
|
+
* @example {
|
|
5837
|
+
* "errors": [
|
|
5838
|
+
* {
|
|
5839
|
+
* "status": "400",
|
|
5840
|
+
* "code": "body_empty",
|
|
5841
|
+
* "detail": "El cuerpo de la petición está vacío."
|
|
5842
|
+
* }
|
|
5843
|
+
* ],
|
|
5844
|
+
* "meta": {
|
|
5845
|
+
* "version": "1.51.0",
|
|
5846
|
+
* "request_id": "2b3c4d5e6f7aa7f6e5d4c3b2"
|
|
5123
5847
|
* }
|
|
5124
5848
|
* }
|
|
5125
5849
|
*/
|
|
@@ -5143,7 +5867,7 @@ export interface components {
|
|
|
5143
5867
|
* ],
|
|
5144
5868
|
* "meta": {
|
|
5145
5869
|
* "version": "1.51.0",
|
|
5146
|
-
* "request_id": "
|
|
5870
|
+
* "request_id": "c4d5e6f7a8b99b8a7f6e5d4c"
|
|
5147
5871
|
* }
|
|
5148
5872
|
* }
|
|
5149
5873
|
*/
|
|
@@ -5155,11 +5879,11 @@ export interface components {
|
|
|
5155
5879
|
headers: {
|
|
5156
5880
|
/** @description Segundos a esperar antes de reintentar. Coincide con la ventana de rate-limit del endpoint (típicamente 60s para listas, 1-5s para operaciones idempotentes en vuelo). */
|
|
5157
5881
|
"Retry-After"?: number;
|
|
5158
|
-
/** @description Límite de solicitudes configurado para este bucket
|
|
5882
|
+
/** @description Límite de solicitudes configurado para este bucket. Se emite en cada 429 y, en la API autenticada, también en las respuestas correctas, donde es el tope por clave del plan de la cuenta. */
|
|
5159
5883
|
"X-RateLimit-Limit"?: number;
|
|
5160
|
-
/** @description Solicitudes restantes en la ventana actual
|
|
5884
|
+
/** @description Solicitudes restantes en la ventana actual. Siempre 0 en el momento del 429; en una respuesta correcta de la API autenticada es lo que queda del tope por clave. */
|
|
5161
5885
|
"X-RateLimit-Remaining"?: number;
|
|
5162
|
-
/** @description Unix epoch absoluto (segundos) en que se reinicia la ventana.
|
|
5886
|
+
/** @description Unix epoch absoluto (segundos) en que se reinicia la ventana. Se emite en cada 429, junto con Retry-After, y en las respuestas correctas de la API autenticada. Puede existir sobreescritura por endpoint (p. ej. `rate_limited_login`). */
|
|
5163
5887
|
"X-RateLimit-Reset"?: number;
|
|
5164
5888
|
[name: string]: unknown;
|
|
5165
5889
|
};
|
|
@@ -5175,7 +5899,7 @@ export interface components {
|
|
|
5175
5899
|
* ],
|
|
5176
5900
|
* "meta": {
|
|
5177
5901
|
* "version": "1.51.0",
|
|
5178
|
-
* "request_id": "
|
|
5902
|
+
* "request_id": "f7a8b9c0d1e22e1d0c9b8a7f",
|
|
5179
5903
|
* "retry_after": 45
|
|
5180
5904
|
* }
|
|
5181
5905
|
* }
|
|
@@ -5221,7 +5945,7 @@ export interface components {
|
|
|
5221
5945
|
* ],
|
|
5222
5946
|
* "meta": {
|
|
5223
5947
|
* "version": "1.51.0",
|
|
5224
|
-
* "request_id": "
|
|
5948
|
+
* "request_id": "3c4d5e6f7a8bb8a7f6e5d4c3"
|
|
5225
5949
|
* }
|
|
5226
5950
|
* }
|
|
5227
5951
|
*/
|
|
@@ -5247,7 +5971,7 @@ export interface components {
|
|
|
5247
5971
|
* ],
|
|
5248
5972
|
* "meta": {
|
|
5249
5973
|
* "version": "1.51.0",
|
|
5250
|
-
* "request_id": "
|
|
5974
|
+
* "request_id": "2b3c4d5e6f7aa7f6e5d4c3b2"
|
|
5251
5975
|
* }
|
|
5252
5976
|
* }
|
|
5253
5977
|
*/
|
|
@@ -5274,13 +5998,37 @@ export interface components {
|
|
|
5274
5998
|
* "errors": [
|
|
5275
5999
|
* {
|
|
5276
6000
|
* "status": "403",
|
|
5277
|
-
* "code": "
|
|
6001
|
+
* "code": "permission_denied",
|
|
5278
6002
|
* "detail": "No tienes permiso para acceder a este recurso."
|
|
5279
6003
|
* }
|
|
5280
6004
|
* ],
|
|
5281
6005
|
* "meta": {
|
|
5282
6006
|
* "version": "1.51.0",
|
|
5283
|
-
* "request_id": "
|
|
6007
|
+
* "request_id": "d5e6f7a8b9c00c9b8a7f6e5d"
|
|
6008
|
+
* }
|
|
6009
|
+
* }
|
|
6010
|
+
*/
|
|
6011
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
6012
|
+
};
|
|
6013
|
+
};
|
|
6014
|
+
/** @description La validación se purgó y este recurso ya no existe (`validation_purged`). */
|
|
6015
|
+
ValidationPurged: {
|
|
6016
|
+
headers: {
|
|
6017
|
+
[name: string]: unknown;
|
|
6018
|
+
};
|
|
6019
|
+
content: {
|
|
6020
|
+
/**
|
|
6021
|
+
* @example {
|
|
6022
|
+
* "errors": [
|
|
6023
|
+
* {
|
|
6024
|
+
* "status": "410",
|
|
6025
|
+
* "code": "validation_purged",
|
|
6026
|
+
* "detail": "La validación se purgó y este recurso ya no existe."
|
|
6027
|
+
* }
|
|
6028
|
+
* ],
|
|
6029
|
+
* "meta": {
|
|
6030
|
+
* "version": "1.61.0",
|
|
6031
|
+
* "request_id": "1a2b3c4d5e6ff6e5d4c3b2a1"
|
|
5284
6032
|
* }
|
|
5285
6033
|
* }
|
|
5286
6034
|
*/
|
|
@@ -5316,7 +6064,7 @@ export interface components {
|
|
|
5316
6064
|
* ],
|
|
5317
6065
|
* "meta": {
|
|
5318
6066
|
* "version": "1.51.0",
|
|
5319
|
-
* "request_id": "
|
|
6067
|
+
* "request_id": "e6f7a8b9c0d11d0c9b8a7f6e"
|
|
5320
6068
|
* }
|
|
5321
6069
|
* }
|
|
5322
6070
|
*/
|
|
@@ -5340,7 +6088,7 @@ export interface components {
|
|
|
5340
6088
|
* ],
|
|
5341
6089
|
* "meta": {
|
|
5342
6090
|
* "version": "1.51.0",
|
|
5343
|
-
* "request_id": "
|
|
6091
|
+
* "request_id": "d5e6f7a8b9c11c9b8a7f6e5d"
|
|
5344
6092
|
* }
|
|
5345
6093
|
* }
|
|
5346
6094
|
*/
|
|
@@ -5355,7 +6103,7 @@ export interface components {
|
|
|
5355
6103
|
AsyncQueryParam: "0" | "1" | "true" | "false" | "yes";
|
|
5356
6104
|
/** @description Identificador (UUID) de la validación */
|
|
5357
6105
|
ValidationId: string;
|
|
5358
|
-
/** @description **ETag** recibido en
|
|
6106
|
+
/** @description **ETag** recibido en una respuesta anterior, tal cual (débil `W/"…"` en una validación, fuerte en los catálogos públicos). Si el recurso no ha cambiado, el server responde `304 Not Modified` (sin cuerpo) y evita mandar los datos de nuevo. */
|
|
5359
6107
|
IfNoneMatchHeader: string;
|
|
5360
6108
|
};
|
|
5361
6109
|
requestBodies: never;
|
|
@@ -5430,7 +6178,7 @@ export interface operations {
|
|
|
5430
6178
|
401: components["responses"]["Unauthorized"];
|
|
5431
6179
|
409: components["responses"]["IdempotencyKeyInProgress"];
|
|
5432
6180
|
413: components["responses"]["PayloadTooLarge"];
|
|
5433
|
-
/** @description Falló la validación de la petición. Códigos típicos: `clave_or_ref_required`, `required` (fecha/monto), `invalid_date`, `invalid_amount`, `invalid_account_format`, `invalid_account_length`, `invalid_clabe_checksum`, `invalid_card_luhn`, `invalid_bank_code` (`emisor`/`receptor` no reconocidos), `intra_bank_no_cep` (emisor y receptor son el mismo banco), `invalid_field_type` (un campo que debe ser texto llegó como arreglo u objeto — p. ej. `emisor`, `receptor` o `referencia_numerica`), `invalid_receptor_participante`, `retry_policy_invalid`, `retry_pending_cap_exceeded
|
|
6181
|
+
/** @description Falló la validación de la petición. Códigos típicos: `clave_or_ref_required`, `required` (fecha/monto), `invalid_date`, `invalid_amount`, `invalid_account_format`, `invalid_account_length`, `invalid_clabe_checksum`, `invalid_card_luhn`, `invalid_bank_code` (`emisor`/`receptor` no reconocidos), `intra_bank_no_cep` (emisor y receptor son el mismo banco), `invalid_field_type` (un campo que debe ser texto llegó como arreglo u objeto — p. ej. `emisor`, `receptor` o `referencia_numerica`), `invalid_receptor_participante`, `retry_policy_invalid`, `retry_pending_cap_exceeded`, `cuenta_y_candidatas_excluyentes` (`cuenta_beneficiaria` y `cuentas_candidatas` juntas), `cuentas_candidatas_invalidas` (la lista no tiene de 2 al máximo vigente de cuentas válidas y distintas) y `cuenta_unresolvable_after_probes` (ninguna candidata coincidió con la transferencia). También se emite cuando se reutiliza `Idempotency-Key` con un cuerpo distinto (`idempotency_key_reused`). Cuando los datos se contradicen entre sí, la petición se rechaza antes de consultar a Banxico con `preflight_failed` y el detalle por campo en `errors` (`clabe_receptor_mismatch` y `tarjeta_receptor_mismatch`: la cuenta pertenece a otro banco que el `receptor`; `cuenta_invalid_luhn`; `clave_fecha_incoherente`; `clave_longitud_invalida`). También se rechaza con `preflight_failed` cuando falta `cuenta_beneficiaria` (`cuenta_required`). Ningún rechazo `preflight_failed` de esta ruta consume cuota, sea por datos que se contradicen, por un campo mal formado o por una cuenta ausente. */
|
|
5434
6182
|
422: {
|
|
5435
6183
|
headers: {
|
|
5436
6184
|
[name: string]: unknown;
|
|
@@ -5488,7 +6236,7 @@ export interface operations {
|
|
|
5488
6236
|
401: components["responses"]["Unauthorized"];
|
|
5489
6237
|
409: components["responses"]["IdempotencyKeyInProgress"];
|
|
5490
6238
|
413: components["responses"]["PayloadTooLarge"];
|
|
5491
|
-
/** @description La imagen o los datos de la petición no son válidos. Códigos posibles: `image_or_image_url_required`, `invalid_image`, `invalid_image_format`, `image_too_large`, `invalid_url`, `invalid_url_scheme`, `url_ssrf_blocked`, `invalid_clabe_checksum`. También puede devolver: `image_too_small`, `image_mime_mismatch`, `image_dimensions_too_large`, `image_decompression_bomb`, `image_polyglot_detected`, `image_url_unreachable`, `image_url_too_large`, `image_url_too_many_redirects`. Con un PDF: `pdf_invalid_structure`, `pdf_encrypted`, `pdf_active_content`, `pdf_hidden_content`, `pdf_modified_after_issue`, `pdf_too_many_pages`, `pdf_unsupported_image`, `pdf_text_layer_too_large` y `pdf_multiple_receipts`. En modo asíncrono, un fallo genérico de la imagen se reporta como `image_invalid`. Reutilizar `Idempotency-Key` con un cuerpo distinto produce `idempotency_key_reused`. */
|
|
6239
|
+
/** @description La imagen o los datos de la petición no son válidos. Códigos posibles: `image_or_image_url_required`, `invalid_image`, `invalid_image_format`, `image_too_large`, `invalid_url`, `invalid_url_scheme`, `url_ssrf_blocked`, `invalid_clabe_checksum`. También puede devolver: `image_too_small`, `image_mime_mismatch`, `image_dimensions_too_large`, `image_decompression_bomb`, `image_polyglot_detected`, `image_url_unreachable`, `image_url_too_large`, `image_url_too_many_redirects`. Con un PDF: `pdf_invalid_structure`, `pdf_encrypted`, `pdf_active_content`, `pdf_hidden_content`, `pdf_modified_after_issue`, `pdf_too_many_pages`, `pdf_unsupported_image`, `pdf_text_layer_too_large` y `pdf_multiple_receipts`. Con `retain_image` que no es booleano: `invalid_retain_image`. Con `cuentas_candidatas`: `cuenta_y_candidatas_excluyentes`, `cuentas_candidatas_invalidas` y, si ninguna candidata coincide, `cuenta_unresolvable_after_probes`. En modo asíncrono, un fallo genérico de la imagen se reporta como `image_invalid`. Reutilizar `Idempotency-Key` con un cuerpo distinto produce `idempotency_key_reused`. */
|
|
5492
6240
|
422: {
|
|
5493
6241
|
headers: {
|
|
5494
6242
|
[name: string]: unknown;
|
|
@@ -5572,6 +6320,11 @@ export interface operations {
|
|
|
5572
6320
|
* @example 012
|
|
5573
6321
|
*/
|
|
5574
6322
|
bank?: string;
|
|
6323
|
+
/**
|
|
6324
|
+
* @description Filtro — Varias claves SPEI separadas por coma (hasta 50); devuelve las validaciones cuyo banco emisor o receptor sea cualquiera de ellas. Si un elemento no tiene de 1 a 5 dígitos, responde con estado HTTP `422` e `invalid_filter`. Se combina con `bank`: si mandas los dos, se cumplen ambos.
|
|
6325
|
+
* @example 40012,40014,40072
|
|
6326
|
+
*/
|
|
6327
|
+
banks?: string;
|
|
5575
6328
|
/**
|
|
5576
6329
|
* @description Filtro — Importe mínimo inclusivo, como número. El servidor también tolera enviarlo como texto con separador de miles o símbolo de moneda ("1,000.50", "$500") y lo normaliza con el mismo algoritmo que el resto de la plataforma, pero el contrato es un número: un cliente tipado debe mandarlo así. Un valor no vacío que no se reconozca como número devuelve un estado HTTP `422` con `invalid_filter`, en vez de ignorarse en silencio. Se aplica de forma independiente de `amount_max`.
|
|
5577
6330
|
* @example 1000.5
|
|
@@ -5677,6 +6430,11 @@ export interface operations {
|
|
|
5677
6430
|
* @example 012
|
|
5678
6431
|
*/
|
|
5679
6432
|
bank?: string;
|
|
6433
|
+
/**
|
|
6434
|
+
* @description Filtro — Varias claves SPEI separadas por coma (hasta 50); devuelve las validaciones cuyo banco emisor o receptor sea cualquiera de ellas. Si un elemento no tiene de 1 a 5 dígitos, responde con estado HTTP `422` e `invalid_filter`. Se combina con `bank`: si mandas los dos, se cumplen ambos.
|
|
6435
|
+
* @example 40012,40014,40072
|
|
6436
|
+
*/
|
|
6437
|
+
banks?: string;
|
|
5680
6438
|
/**
|
|
5681
6439
|
* @description Filtro — Importe mínimo inclusivo de las validaciones contadas.
|
|
5682
6440
|
* @example 1000.5
|
|
@@ -5790,6 +6548,11 @@ export interface operations {
|
|
|
5790
6548
|
* @example 012
|
|
5791
6549
|
*/
|
|
5792
6550
|
bank?: string;
|
|
6551
|
+
/**
|
|
6552
|
+
* @description Filtro — Varias claves SPEI separadas por coma (hasta 50); devuelve las validaciones cuyo banco emisor o receptor sea cualquiera de ellas. Si un elemento no tiene de 1 a 5 dígitos, responde con estado HTTP `422` e `invalid_filter`. Se combina con `bank`: si mandas los dos, se cumplen ambos.
|
|
6553
|
+
* @example 40012,40014,40072
|
|
6554
|
+
*/
|
|
6555
|
+
banks?: string;
|
|
5793
6556
|
/**
|
|
5794
6557
|
* @description Filtro — Importe mínimo inclusivo. Se aplica de forma independiente de `amount_max`.
|
|
5795
6558
|
* @example 1000.5
|
|
@@ -5840,7 +6603,7 @@ export interface operations {
|
|
|
5840
6603
|
parameters: {
|
|
5841
6604
|
query?: never;
|
|
5842
6605
|
header?: {
|
|
5843
|
-
/** @description **ETag** recibido en
|
|
6606
|
+
/** @description **ETag** recibido en una respuesta anterior, tal cual (débil `W/"…"` en una validación, fuerte en los catálogos públicos). Si el recurso no ha cambiado, el server responde `304 Not Modified` (sin cuerpo) y evita mandar los datos de nuevo. */
|
|
5844
6607
|
"If-None-Match"?: components["parameters"]["IfNoneMatchHeader"];
|
|
5845
6608
|
};
|
|
5846
6609
|
path: {
|
|
@@ -5971,7 +6734,7 @@ export interface operations {
|
|
|
5971
6734
|
};
|
|
5972
6735
|
401: components["responses"]["Unauthorized"];
|
|
5973
6736
|
403: components["responses"]["Forbidden"];
|
|
5974
|
-
/** @description Validación no encontrada (`not_found`) o el CEP no está disponible para esta validación (`cep_not_available`). Este último código se devuelve cuando `banxico_status` no es `valid` o falta el archivo solicitado. */
|
|
6737
|
+
/** @description Validación no encontrada (`not_found`) o el CEP no está disponible para esta validación (`cep_not_available`). Este último código se devuelve cuando `banxico_status` no es `valid` ni `returned` o falta el archivo solicitado. */
|
|
5975
6738
|
404: {
|
|
5976
6739
|
headers: {
|
|
5977
6740
|
[name: string]: unknown;
|
|
@@ -5980,6 +6743,7 @@ export interface operations {
|
|
|
5980
6743
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
5981
6744
|
};
|
|
5982
6745
|
};
|
|
6746
|
+
410: components["responses"]["ValidationPurged"];
|
|
5983
6747
|
/** @description UUID inválido en la ruta (`invalid_uuid`). */
|
|
5984
6748
|
422: {
|
|
5985
6749
|
headers: {
|
|
@@ -6046,6 +6810,7 @@ export interface operations {
|
|
|
6046
6810
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
6047
6811
|
};
|
|
6048
6812
|
};
|
|
6813
|
+
410: components["responses"]["ValidationPurged"];
|
|
6049
6814
|
/** @description UUID inválido en la ruta (`invalid_uuid`). */
|
|
6050
6815
|
422: {
|
|
6051
6816
|
headers: {
|
|
@@ -6112,6 +6877,15 @@ export interface operations {
|
|
|
6112
6877
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
6113
6878
|
};
|
|
6114
6879
|
};
|
|
6880
|
+
/** @description La imagen no existe por decisión del cliente: la validación se creó con `retain_image=false` (`image_not_retained`) o se purgó (`validation_purged`). */
|
|
6881
|
+
410: {
|
|
6882
|
+
headers: {
|
|
6883
|
+
[name: string]: unknown;
|
|
6884
|
+
};
|
|
6885
|
+
content: {
|
|
6886
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
6887
|
+
};
|
|
6888
|
+
};
|
|
6115
6889
|
/** @description UUID inválido en la ruta (`invalid_uuid`). */
|
|
6116
6890
|
422: {
|
|
6117
6891
|
headers: {
|
|
@@ -6157,6 +6931,7 @@ export interface operations {
|
|
|
6157
6931
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
6158
6932
|
};
|
|
6159
6933
|
};
|
|
6934
|
+
410: components["responses"]["ValidationPurged"];
|
|
6160
6935
|
/** @description UUID inválido en la ruta (`invalid_uuid`). */
|
|
6161
6936
|
422: {
|
|
6162
6937
|
headers: {
|
|
@@ -6227,6 +7002,7 @@ export interface operations {
|
|
|
6227
7002
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
6228
7003
|
};
|
|
6229
7004
|
};
|
|
7005
|
+
410: components["responses"]["ValidationPurged"];
|
|
6230
7006
|
413: components["responses"]["PayloadTooLarge"];
|
|
6231
7007
|
/** @description Política inválida o precondición no cumplida. `retry_policy_invalid`, la forma, el rango o el resultado no se admiten; `retry_not_supported_for_bulk`, la validación nació de una importación; `retry_not_applicable`, su estado queda fuera de los tres que admiten reintento (`not_found`, `cep_unavailable`, `error`) o cambió mientras tanto; `retry_already_resolved`, el ciclo ya cerró; `retry_age_exceeded`, la validación es más vieja que `max_age_seconds`; `retry_pending_cap_exceeded`, se alcanzó el tope de pendientes de la cuenta de usuario o el de despachados en 24 horas; `reactivation_cap_exceeded`, se alcanzó el tope de reactivaciones de esa validación. */
|
|
6232
7008
|
422: {
|
|
@@ -6285,6 +7061,7 @@ export interface operations {
|
|
|
6285
7061
|
"application/json": components["schemas"]["ErrorResponse"];
|
|
6286
7062
|
};
|
|
6287
7063
|
};
|
|
7064
|
+
410: components["responses"]["ValidationPurged"];
|
|
6288
7065
|
/** @description No hay ciclo de reintentos activo que cancelar (código `retry_not_active`). UUID inválido (`invalid_uuid`). */
|
|
6289
7066
|
422: {
|
|
6290
7067
|
headers: {
|
|
@@ -6296,11 +7073,203 @@ export interface operations {
|
|
|
6296
7073
|
};
|
|
6297
7074
|
};
|
|
6298
7075
|
};
|
|
7076
|
+
recheckValidation: {
|
|
7077
|
+
parameters: {
|
|
7078
|
+
query?: never;
|
|
7079
|
+
header?: never;
|
|
7080
|
+
path: {
|
|
7081
|
+
/** @description Identificador (UUID) de la validación */
|
|
7082
|
+
id: components["parameters"]["ValidationId"];
|
|
7083
|
+
};
|
|
7084
|
+
cookie?: never;
|
|
7085
|
+
};
|
|
7086
|
+
requestBody?: never;
|
|
7087
|
+
responses: {
|
|
7088
|
+
/** @description Estado de pago consultado. Devuelve la validación y, en `meta.recheck`, cuándo se consultó, si cambió a `returned` y qué veredicto tenía antes. */
|
|
7089
|
+
200: {
|
|
7090
|
+
headers: {
|
|
7091
|
+
/** @description ETag débil de la validación después de la consulta. Sigue el formato `W/"{etag_version}-{status}"` y sube en cada consulta, aunque el veredicto no cambie. */
|
|
7092
|
+
ETag?: string;
|
|
7093
|
+
[name: string]: unknown;
|
|
7094
|
+
};
|
|
7095
|
+
content: {
|
|
7096
|
+
"application/json": components["schemas"]["SuccessEnvelope"] & {
|
|
7097
|
+
data?: components["schemas"]["Validation"];
|
|
7098
|
+
meta?: {
|
|
7099
|
+
recheck?: components["schemas"]["ValidationRecheckMeta"];
|
|
7100
|
+
};
|
|
7101
|
+
};
|
|
7102
|
+
};
|
|
7103
|
+
};
|
|
7104
|
+
401: components["responses"]["Unauthorized"];
|
|
7105
|
+
403: components["responses"]["Forbidden"];
|
|
7106
|
+
/** @description Validación no encontrada, retirada o ajena a la cuenta de usuario (`not_found`). */
|
|
7107
|
+
404: {
|
|
7108
|
+
headers: {
|
|
7109
|
+
[name: string]: unknown;
|
|
7110
|
+
};
|
|
7111
|
+
content: {
|
|
7112
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7113
|
+
};
|
|
7114
|
+
};
|
|
7115
|
+
410: components["responses"]["ValidationPurged"];
|
|
7116
|
+
/** @description La validación no se puede consultar: su estado no es `valid` ni `returned` (código `recheck_not_eligible`, con el estado en `meta.status`) o tiene más horas que la ventana (código `recheck_window_expired`, con la ventana en `meta.window_hours`). UUID inválido (`invalid_uuid`). */
|
|
7117
|
+
422: {
|
|
7118
|
+
headers: {
|
|
7119
|
+
[name: string]: unknown;
|
|
7120
|
+
};
|
|
7121
|
+
content: {
|
|
7122
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7123
|
+
};
|
|
7124
|
+
};
|
|
7125
|
+
/** @description La validación se consultó hace menos de 10 minutos (código `recheck_rate_limited`). `Retry-After` y `meta.retry_after` dan los segundos que faltan. También responde así el límite de peticiones de la clave de API (`rate_limit_exceeded`). */
|
|
7126
|
+
429: {
|
|
7127
|
+
headers: {
|
|
7128
|
+
/** @description Segundos que faltan para poder consultar esta validación de nuevo. */
|
|
7129
|
+
"Retry-After"?: number;
|
|
7130
|
+
[name: string]: unknown;
|
|
7131
|
+
};
|
|
7132
|
+
content: {
|
|
7133
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7134
|
+
};
|
|
7135
|
+
};
|
|
7136
|
+
/** @description Banxico no entregó un estado legible, o la consulta de estado está apagada (código `recheck_unavailable`). La validación no cambia y conserva su intervalo. `Retry-After` y `meta.retry_after` sugieren esperar 60 segundos. */
|
|
7137
|
+
503: {
|
|
7138
|
+
headers: {
|
|
7139
|
+
/** @description Segundos que se sugiere esperar antes de reintentar. */
|
|
7140
|
+
"Retry-After"?: number;
|
|
7141
|
+
[name: string]: unknown;
|
|
7142
|
+
};
|
|
7143
|
+
content: {
|
|
7144
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7145
|
+
};
|
|
7146
|
+
};
|
|
7147
|
+
};
|
|
7148
|
+
};
|
|
7149
|
+
prepareValidationPurge: {
|
|
7150
|
+
parameters: {
|
|
7151
|
+
query?: never;
|
|
7152
|
+
header?: never;
|
|
7153
|
+
path: {
|
|
7154
|
+
/** @description Identificador (UUID) de la validación */
|
|
7155
|
+
id: components["parameters"]["ValidationId"];
|
|
7156
|
+
};
|
|
7157
|
+
cookie?: never;
|
|
7158
|
+
};
|
|
7159
|
+
requestBody?: never;
|
|
7160
|
+
responses: {
|
|
7161
|
+
/** @description Resumen de lo que se borraría y token de confirmación. La validación no cambió. */
|
|
7162
|
+
200: {
|
|
7163
|
+
headers: {
|
|
7164
|
+
[name: string]: unknown;
|
|
7165
|
+
};
|
|
7166
|
+
content: {
|
|
7167
|
+
"application/json": components["schemas"]["SuccessEnvelope"] & components["schemas"]["ValidationPurgePrepareResponse"];
|
|
7168
|
+
};
|
|
7169
|
+
};
|
|
7170
|
+
401: components["responses"]["Unauthorized"];
|
|
7171
|
+
403: components["responses"]["Forbidden"];
|
|
7172
|
+
/** @description Validación no encontrada, o ajena a la cuenta de usuario (`not_found`). */
|
|
7173
|
+
404: {
|
|
7174
|
+
headers: {
|
|
7175
|
+
[name: string]: unknown;
|
|
7176
|
+
};
|
|
7177
|
+
content: {
|
|
7178
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7179
|
+
};
|
|
7180
|
+
};
|
|
7181
|
+
/** @description La validación sigue en curso (`queued` o `processing`) y todavía no se puede purgar (`purge_validation_in_progress`, con el estado en `meta.status`). */
|
|
7182
|
+
409: {
|
|
7183
|
+
headers: {
|
|
7184
|
+
[name: string]: unknown;
|
|
7185
|
+
};
|
|
7186
|
+
content: {
|
|
7187
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7188
|
+
};
|
|
7189
|
+
};
|
|
7190
|
+
410: components["responses"]["ValidationPurged"];
|
|
7191
|
+
/** @description UUID inválido en la ruta (`invalid_uuid`). */
|
|
7192
|
+
422: {
|
|
7193
|
+
headers: {
|
|
7194
|
+
[name: string]: unknown;
|
|
7195
|
+
};
|
|
7196
|
+
content: {
|
|
7197
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7198
|
+
};
|
|
7199
|
+
};
|
|
7200
|
+
429: components["responses"]["RateLimited"];
|
|
7201
|
+
};
|
|
7202
|
+
};
|
|
7203
|
+
executeValidationPurge: {
|
|
7204
|
+
parameters: {
|
|
7205
|
+
query?: never;
|
|
7206
|
+
header?: never;
|
|
7207
|
+
path: {
|
|
7208
|
+
/** @description Identificador (UUID) de la validación */
|
|
7209
|
+
id: components["parameters"]["ValidationId"];
|
|
7210
|
+
};
|
|
7211
|
+
cookie?: never;
|
|
7212
|
+
};
|
|
7213
|
+
requestBody: {
|
|
7214
|
+
content: {
|
|
7215
|
+
/**
|
|
7216
|
+
* @example {
|
|
7217
|
+
* "confirmation_token": "eyJhZG1pbl9pZCI6Ii4uLiJ9.q1w2e3r4t5y6u7i8o9p0"
|
|
7218
|
+
* }
|
|
7219
|
+
*/
|
|
7220
|
+
"application/json": components["schemas"]["ValidationPurgeExecuteRequest"];
|
|
7221
|
+
};
|
|
7222
|
+
};
|
|
7223
|
+
responses: {
|
|
7224
|
+
/** @description Validación purgada. Devuelve cuándo se purgó, el estado del borrado de los archivos y lo que se borró. */
|
|
7225
|
+
200: {
|
|
7226
|
+
headers: {
|
|
7227
|
+
[name: string]: unknown;
|
|
7228
|
+
};
|
|
7229
|
+
content: {
|
|
7230
|
+
"application/json": components["schemas"]["SuccessEnvelope"] & components["schemas"]["ValidationPurgeExecuteResponse"];
|
|
7231
|
+
};
|
|
7232
|
+
};
|
|
7233
|
+
400: components["responses"]["BodyEmpty"];
|
|
7234
|
+
401: components["responses"]["Unauthorized"];
|
|
7235
|
+
403: components["responses"]["Forbidden"];
|
|
7236
|
+
/** @description Validación no encontrada, o ajena a la cuenta de usuario (`not_found`). */
|
|
7237
|
+
404: {
|
|
7238
|
+
headers: {
|
|
7239
|
+
[name: string]: unknown;
|
|
7240
|
+
};
|
|
7241
|
+
content: {
|
|
7242
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7243
|
+
};
|
|
7244
|
+
};
|
|
7245
|
+
/** @description El token ya se usó (`confirmation_token_already_used`), o la validación sigue en curso y todavía no se puede purgar (`purge_validation_in_progress`, con el estado en `meta.status`). */
|
|
7246
|
+
409: {
|
|
7247
|
+
headers: {
|
|
7248
|
+
[name: string]: unknown;
|
|
7249
|
+
};
|
|
7250
|
+
content: {
|
|
7251
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7252
|
+
};
|
|
7253
|
+
};
|
|
7254
|
+
410: components["responses"]["ValidationPurged"];
|
|
7255
|
+
413: components["responses"]["PayloadTooLarge"];
|
|
7256
|
+
/** @description El token no sirve. Códigos posibles: `confirmation_token_missing`, `confirmation_token_malformed`, `confirmation_token_signature_invalid`, `confirmation_token_expired`, `confirmation_token_operation_mismatch` y `purge_token_mismatch` (el token es de otra validación o de otra cuenta). UUID inválido en la ruta (`invalid_uuid`). */
|
|
7257
|
+
422: {
|
|
7258
|
+
headers: {
|
|
7259
|
+
[name: string]: unknown;
|
|
7260
|
+
};
|
|
7261
|
+
content: {
|
|
7262
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7263
|
+
};
|
|
7264
|
+
};
|
|
7265
|
+
429: components["responses"]["RateLimited"];
|
|
7266
|
+
};
|
|
7267
|
+
};
|
|
6299
7268
|
listBanks: {
|
|
6300
7269
|
parameters: {
|
|
6301
7270
|
query?: never;
|
|
6302
7271
|
header?: {
|
|
6303
|
-
/** @description **ETag** recibido en
|
|
7272
|
+
/** @description **ETag** recibido en una respuesta anterior, tal cual (débil `W/"…"` en una validación, fuerte en los catálogos públicos). Si el recurso no ha cambiado, el server responde `304 Not Modified` (sin cuerpo) y evita mandar los datos de nuevo. */
|
|
6304
7273
|
"If-None-Match"?: components["parameters"]["IfNoneMatchHeader"];
|
|
6305
7274
|
};
|
|
6306
7275
|
path?: never;
|
|
@@ -6363,6 +7332,109 @@ export interface operations {
|
|
|
6363
7332
|
429: components["responses"]["RateLimited"];
|
|
6364
7333
|
};
|
|
6365
7334
|
};
|
|
7335
|
+
getSpeiCalendar: {
|
|
7336
|
+
parameters: {
|
|
7337
|
+
query?: never;
|
|
7338
|
+
header?: {
|
|
7339
|
+
/** @description **ETag** recibido en una respuesta anterior, tal cual (débil `W/"…"` en una validación, fuerte en los catálogos públicos). Si el recurso no ha cambiado, el server responde `304 Not Modified` (sin cuerpo) y evita mandar los datos de nuevo. */
|
|
7340
|
+
"If-None-Match"?: components["parameters"]["IfNoneMatchHeader"];
|
|
7341
|
+
};
|
|
7342
|
+
path: {
|
|
7343
|
+
/**
|
|
7344
|
+
* @description Año del calendario, de cuatro dígitos.
|
|
7345
|
+
* @example 2026
|
|
7346
|
+
*/
|
|
7347
|
+
year: number;
|
|
7348
|
+
};
|
|
7349
|
+
cookie?: never;
|
|
7350
|
+
};
|
|
7351
|
+
requestBody?: never;
|
|
7352
|
+
responses: {
|
|
7353
|
+
/** @description Calendario de días inhábiles SPEI del año, con su fuente. */
|
|
7354
|
+
200: {
|
|
7355
|
+
headers: {
|
|
7356
|
+
/** @description Firma del calendario actual. Pasar como `If-None-Match` en peticiones posteriores. */
|
|
7357
|
+
ETag?: string;
|
|
7358
|
+
/** @description TTL de caché en el cliente (1 h). */
|
|
7359
|
+
"Cache-Control"?: string;
|
|
7360
|
+
[name: string]: unknown;
|
|
7361
|
+
};
|
|
7362
|
+
content: {
|
|
7363
|
+
"application/json": components["schemas"]["SpeiCalendarResponse"];
|
|
7364
|
+
};
|
|
7365
|
+
};
|
|
7366
|
+
/** @description No modificado: el calendario no ha cambiado según el ETag enviado. */
|
|
7367
|
+
304: {
|
|
7368
|
+
headers: {
|
|
7369
|
+
/** @description ETag actual del calendario. */
|
|
7370
|
+
ETag?: string;
|
|
7371
|
+
/** @description TTL de caché en el cliente (1 h). */
|
|
7372
|
+
"Cache-Control"?: string;
|
|
7373
|
+
[name: string]: unknown;
|
|
7374
|
+
};
|
|
7375
|
+
content?: never;
|
|
7376
|
+
};
|
|
7377
|
+
/** @description El año no tiene calendario (código `spei_calendar_year_not_covered`). `meta.covered_years` lista los años disponibles. */
|
|
7378
|
+
404: {
|
|
7379
|
+
headers: {
|
|
7380
|
+
[name: string]: unknown;
|
|
7381
|
+
};
|
|
7382
|
+
content: {
|
|
7383
|
+
/**
|
|
7384
|
+
* @example {
|
|
7385
|
+
* "errors": [
|
|
7386
|
+
* {
|
|
7387
|
+
* "status": "404",
|
|
7388
|
+
* "code": "spei_calendar_year_not_covered",
|
|
7389
|
+
* "detail": "No tenemos el calendario de 2030. Los años disponibles van de 2024 a 2026."
|
|
7390
|
+
* }
|
|
7391
|
+
* ],
|
|
7392
|
+
* "meta": {
|
|
7393
|
+
* "version": "1.63.0",
|
|
7394
|
+
* "request_id": "c1d2e3f4a5b66b5a4f3e2d1c",
|
|
7395
|
+
* "covered_years": [
|
|
7396
|
+
* 2024,
|
|
7397
|
+
* 2025,
|
|
7398
|
+
* 2026
|
|
7399
|
+
* ]
|
|
7400
|
+
* }
|
|
7401
|
+
* }
|
|
7402
|
+
*/
|
|
7403
|
+
"application/json": components["schemas"]["ErrorResponse"] & {
|
|
7404
|
+
meta?: {
|
|
7405
|
+
/** @description Años con calendario publicado, de menor a mayor. */
|
|
7406
|
+
covered_years?: number[];
|
|
7407
|
+
};
|
|
7408
|
+
};
|
|
7409
|
+
};
|
|
7410
|
+
};
|
|
7411
|
+
/** @description El año no tiene cuatro dígitos (código `spei_calendar_year_invalid`). */
|
|
7412
|
+
422: {
|
|
7413
|
+
headers: {
|
|
7414
|
+
[name: string]: unknown;
|
|
7415
|
+
};
|
|
7416
|
+
content: {
|
|
7417
|
+
/**
|
|
7418
|
+
* @example {
|
|
7419
|
+
* "errors": [
|
|
7420
|
+
* {
|
|
7421
|
+
* "status": "422",
|
|
7422
|
+
* "code": "spei_calendar_year_invalid",
|
|
7423
|
+
* "detail": "El año debe tener cuatro dígitos, por ejemplo 2026."
|
|
7424
|
+
* }
|
|
7425
|
+
* ],
|
|
7426
|
+
* "meta": {
|
|
7427
|
+
* "version": "1.63.0",
|
|
7428
|
+
* "request_id": "d2e3f4a5b6c77c6b5a4f3e2d"
|
|
7429
|
+
* }
|
|
7430
|
+
* }
|
|
7431
|
+
*/
|
|
7432
|
+
"application/json": components["schemas"]["ErrorResponse"];
|
|
7433
|
+
};
|
|
7434
|
+
};
|
|
7435
|
+
429: components["responses"]["RateLimited"];
|
|
7436
|
+
};
|
|
7437
|
+
};
|
|
6366
7438
|
exportBeneficiaries: {
|
|
6367
7439
|
parameters: {
|
|
6368
7440
|
query?: {
|
|
@@ -6461,7 +7533,6 @@ export interface operations {
|
|
|
6461
7533
|
* "attributes": {
|
|
6462
7534
|
* "account_number": "012180004412345678",
|
|
6463
7535
|
* "account_type": "clabe",
|
|
6464
|
-
* "clabe": "012180004412345678",
|
|
6465
7536
|
* "bank_code": "40012",
|
|
6466
7537
|
* "bank_name": "BBVA MEXICO",
|
|
6467
7538
|
* "label": "Proveedor ABC",
|
|
@@ -6501,7 +7572,7 @@ export interface operations {
|
|
|
6501
7572
|
401: components["responses"]["Unauthorized"];
|
|
6502
7573
|
403: components["responses"]["Forbidden"];
|
|
6503
7574
|
413: components["responses"]["PayloadTooLarge"];
|
|
6504
|
-
/** @description La cuenta no pasó la validación, o el alta chocó con un tope. Los códigos posibles son `account_number_required`, `account_number_invalid_type`, `label_invalid_type`, `invalid_account_length`, `clabe_prefix_not_recognized`, `bank_code_required_for_phone`, `beneficiary_already_registered` y `plan_cap_exceeded`. `account_number_invalid_type` y `label_invalid_type` aparecen cuando el campo llega con un tipo distinto de cadena de texto. Todo error de campo trae `source.pointer`. */
|
|
7575
|
+
/** @description La cuenta no pasó la validación, o el alta chocó con un tope. Los códigos posibles son `account_number_required`, `account_number_invalid_type`, `label_invalid_type`, `invalid_account_format`, `invalid_account_length`, `invalid_clabe_checksum`, `invalid_card_luhn`, `clabe_prefix_not_recognized`, `bank_code_required_for_phone`, `invalid_bank_code`, `max_length_exceeded`, `beneficiary_already_registered` y `plan_cap_exceeded`. `account_number_invalid_type` y `label_invalid_type` aparecen cuando el campo llega con un tipo distinto de cadena de texto. Todo error de campo trae `source.pointer`. */
|
|
6505
7576
|
422: {
|
|
6506
7577
|
headers: {
|
|
6507
7578
|
[name: string]: unknown;
|
|
@@ -6545,7 +7616,6 @@ export interface operations {
|
|
|
6545
7616
|
* "attributes": {
|
|
6546
7617
|
* "account_number": "5512345678",
|
|
6547
7618
|
* "account_type": "phone",
|
|
6548
|
-
* "clabe": "5512345678",
|
|
6549
7619
|
* "bank_code": "40021",
|
|
6550
7620
|
* "bank_name": "HSBC",
|
|
6551
7621
|
* "label": "Cuenta DiMo HSBC",
|
|
@@ -6576,7 +7646,7 @@ export interface operations {
|
|
|
6576
7646
|
403: components["responses"]["Forbidden"];
|
|
6577
7647
|
404: components["responses"]["NotFound"];
|
|
6578
7648
|
413: components["responses"]["PayloadTooLarge"];
|
|
6579
|
-
/** @description El cuerpo no pasó la validación. Los códigos posibles son `no_valid_fields`, `invalid_account_length`, `clabe_prefix_not_recognized`, `bank_code_required_for_phone`, `account_number_invalid_type` y `label_invalid_type`. Las dos últimas aparecen cuando `account_number` o `label` llegan con un tipo distinto de cadena de texto (por ejemplo, un número o un arreglo). Todo error de campo trae `source.pointer`. */
|
|
7649
|
+
/** @description El cuerpo no pasó la validación. Los códigos posibles son `no_valid_fields`, `invalid_account_format`, `invalid_account_length`, `invalid_clabe_checksum`, `invalid_card_luhn`, `clabe_prefix_not_recognized`, `bank_code_required_for_phone`, `invalid_bank_code`, `max_length_exceeded`, `beneficiary_already_registered`, `account_number_invalid_type` y `label_invalid_type`. Las dos últimas aparecen cuando `account_number` o `label` llegan con un tipo distinto de cadena de texto (por ejemplo, un número o un arreglo). Todo error de campo trae `source.pointer`. */
|
|
6580
7650
|
422: {
|
|
6581
7651
|
headers: {
|
|
6582
7652
|
[name: string]: unknown;
|
|
@@ -6667,7 +7737,7 @@ export interface operations {
|
|
|
6667
7737
|
* "meta": {
|
|
6668
7738
|
* "version": "1.47.0",
|
|
6669
7739
|
* "api_version": "v1",
|
|
6670
|
-
* "request_id": "
|
|
7740
|
+
* "request_id": "b2c3d4e5f6a77a6f5e4d3c2b"
|
|
6671
7741
|
* }
|
|
6672
7742
|
* }
|
|
6673
7743
|
*/
|
|
@@ -6724,7 +7794,7 @@ export interface operations {
|
|
|
6724
7794
|
* "meta": {
|
|
6725
7795
|
* "version": "1.47.0",
|
|
6726
7796
|
* "api_version": "v1",
|
|
6727
|
-
* "request_id": "
|
|
7797
|
+
* "request_id": "c5d6e7f8a9b00b9a8f7e6d5c"
|
|
6728
7798
|
* }
|
|
6729
7799
|
* }
|
|
6730
7800
|
*/
|
|
@@ -6764,7 +7834,7 @@ export interface operations {
|
|
|
6764
7834
|
* "meta": {
|
|
6765
7835
|
* "version": "1.47.0",
|
|
6766
7836
|
* "api_version": "v1",
|
|
6767
|
-
* "request_id": "
|
|
7837
|
+
* "request_id": "e1f2a3b4c5d66d5c4b3a2f1e"
|
|
6768
7838
|
* }
|
|
6769
7839
|
* }
|
|
6770
7840
|
*/
|
|
@@ -6773,7 +7843,7 @@ export interface operations {
|
|
|
6773
7843
|
};
|
|
6774
7844
|
401: components["responses"]["Unauthorized"];
|
|
6775
7845
|
403: components["responses"]["Forbidden"];
|
|
6776
|
-
/** @description Falló la validación o la pre-condición. Códigos posibles: `file_required`, `file_too_large`, `unsupported_format`
|
|
7846
|
+
/** @description Falló la validación o la pre-condición. Códigos posibles: `file_required`, `upload_error`, `file_too_large`, `invalid_parse_mode`, `unsupported_format`, `import_already_in_flight` y `persist_failed`. */
|
|
6777
7847
|
422: {
|
|
6778
7848
|
headers: {
|
|
6779
7849
|
[name: string]: unknown;
|
|
@@ -6791,7 +7861,7 @@ export interface operations {
|
|
|
6791
7861
|
* "meta": {
|
|
6792
7862
|
* "version": "1.47.0",
|
|
6793
7863
|
* "api_version": "v1",
|
|
6794
|
-
* "request_id": "
|
|
7864
|
+
* "request_id": "f2a3b4c5d6e77e6d5c4b3a2f"
|
|
6795
7865
|
* }
|
|
6796
7866
|
* }
|
|
6797
7867
|
*/
|
|
@@ -6871,7 +7941,7 @@ export interface operations {
|
|
|
6871
7941
|
* "meta": {
|
|
6872
7942
|
* "version": "1.47.0",
|
|
6873
7943
|
* "api_version": "v1",
|
|
6874
|
-
* "request_id": "
|
|
7944
|
+
* "request_id": "f8a9b0c1d2e33e2d1c0b9a8f"
|
|
6875
7945
|
* }
|
|
6876
7946
|
* }
|
|
6877
7947
|
*/
|
|
@@ -7011,10 +8081,10 @@ export interface operations {
|
|
|
7011
8081
|
* "parsed_account_type": "phone",
|
|
7012
8082
|
* "parsed_bank_code": "40012",
|
|
7013
8083
|
* "parsed_bank_name": "BBVA MEXICO",
|
|
7014
|
-
* "parsed_label":
|
|
8084
|
+
* "parsed_label": "Cuenta",
|
|
7015
8085
|
* "error_codes": [],
|
|
7016
8086
|
* "corrections_applied": {
|
|
7017
|
-
* "alias_auto_assigned": "
|
|
8087
|
+
* "alias_auto_assigned": "Cuenta"
|
|
7018
8088
|
* },
|
|
7019
8089
|
* "user_overrides": {
|
|
7020
8090
|
* "parsed_account_type": "phone",
|
|
@@ -7031,7 +8101,7 @@ export interface operations {
|
|
|
7031
8101
|
* "meta": {
|
|
7032
8102
|
* "version": "1.47.0",
|
|
7033
8103
|
* "api_version": "v1",
|
|
7034
|
-
* "request_id": "
|
|
8104
|
+
* "request_id": "c1d2e3f4a5b66b5a4f3e2d1c"
|
|
7035
8105
|
* }
|
|
7036
8106
|
* }
|
|
7037
8107
|
*/
|
|
@@ -7095,7 +8165,7 @@ export interface operations {
|
|
|
7095
8165
|
* "meta": {
|
|
7096
8166
|
* "version": "1.47.0",
|
|
7097
8167
|
* "api_version": "v1",
|
|
7098
|
-
* "request_id": "
|
|
8168
|
+
* "request_id": "f4a5b6c7d8e99e8d7c6b5a4f"
|
|
7099
8169
|
* }
|
|
7100
8170
|
* }
|
|
7101
8171
|
*/
|
|
@@ -7123,7 +8193,7 @@ export interface operations {
|
|
|
7123
8193
|
* "meta": {
|
|
7124
8194
|
* "version": "1.47.0",
|
|
7125
8195
|
* "api_version": "v1",
|
|
7126
|
-
* "request_id": "
|
|
8196
|
+
* "request_id": "a5b6c7d8e9f00f9e8d7c6b5a"
|
|
7127
8197
|
* }
|
|
7128
8198
|
* }
|
|
7129
8199
|
*/
|
|
@@ -7750,21 +8820,65 @@ export interface operations {
|
|
|
7750
8820
|
*/
|
|
7751
8821
|
per_page?: number;
|
|
7752
8822
|
/**
|
|
7753
|
-
* @description Filtro — Identificador único del endpoint webhook (UUID v4).
|
|
7754
|
-
* @example
|
|
8823
|
+
* @description Filtro — Identificador único del endpoint webhook (UUID v4). Hasta 20, separados por comas.
|
|
8824
|
+
* @example [
|
|
8825
|
+
* "7c9e6679-7425-40de-944b-e07fc1f90ae7"
|
|
8826
|
+
* ]
|
|
7755
8827
|
*/
|
|
7756
|
-
endpoint_id?: string;
|
|
8828
|
+
endpoint_id?: string[];
|
|
7757
8829
|
/**
|
|
7758
|
-
* @description Filtro — Estado de la entrega. `success` llegó. `failed` es el resultado del último intento; Messenger puede programar otro si el fallo es recuperable. `retrying` se pospuso por el límite de salida y Messenger la reintentará. `pending` todavía no se ha intentado.
|
|
7759
|
-
* @example
|
|
8830
|
+
* @description Filtro — Estado de la entrega. `success` llegó. `failed` es el resultado del último intento; Messenger puede programar otro si el fallo es recuperable. `retrying` se pospuso por el límite de salida y Messenger la reintentará. `pending` todavía no se ha intentado. Varios estados, separados por comas.
|
|
8831
|
+
* @example [
|
|
8832
|
+
* "failed"
|
|
8833
|
+
* ]
|
|
7760
8834
|
*/
|
|
7761
|
-
status?: "success" | "failed" | "retrying" | "pending";
|
|
8835
|
+
status?: ("success" | "failed" | "retrying" | "pending")[];
|
|
7762
8836
|
/**
|
|
7763
|
-
* @description Filtro — Tipo de evento que originó la entrega. **De validaciones**: `validation.completed` cuando
|
|
7764
|
-
* **De la suscripción:** `billing.payment_succeeded` y `billing.payment_failed` por cada cobro, `billing.invoice_upcoming` antes de la siguiente factura, `billing.trial_will_end` antes de que acabe la prueba gratuita, y `billing.subscription_canceled` al cancelar la suscripción. Las entregas sintéticas (envío de prueba) se marcan como `test`.
|
|
7765
|
-
* @example
|
|
8837
|
+
* @description Filtro — Tipo de evento que originó la entrega. **De validaciones**: `validation.completed` cuando hay veredicto de Banxico, sea cual sea (también inválida o no encontrada, y aunque se abran reintentos), `validation.failed` cuando la entrada se rechaza y `validation.error` ante cualquier otro fallo. **De los reintentos automáticos:** `validation.retry.scheduled` al programar un reintento automático, `validation.retry.resolved` cuando un reintento automático encuentra el CEP, y `validation.retry.exhausted` cuando los reintentos se agotan sin encontrar el CEP. **De la revisión posterior de un `valid`:** `validation.returned` cuando una validación que había salido `valid` pasa a `returned` porque Banxico reportó la devolución.\
|
|
8838
|
+
* **De la suscripción:** `billing.payment_succeeded` y `billing.payment_failed` por cada cobro, `billing.invoice_upcoming` antes de la siguiente factura, `billing.trial_will_end` antes de que acabe la prueba gratuita, y `billing.subscription_canceled` al cancelar la suscripción. Las entregas sintéticas (envío de prueba) se marcan como `test`. Varios tipos, separados por comas.
|
|
8839
|
+
* @example [
|
|
8840
|
+
* "validation.completed"
|
|
8841
|
+
* ]
|
|
8842
|
+
*/
|
|
8843
|
+
event_type?: ("validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "validation.returned" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming" | "test")[];
|
|
8844
|
+
/**
|
|
8845
|
+
* @description Filtro — Busca en el identificador de la entrega, el identificador, la URL y la descripción del endpoint, el tipo de evento, el identificador de la validación y el código HTTP de la respuesta. No distingue mayúsculas; `%` y `_` se buscan tal cual. Más de 100 caracteres se recortan.
|
|
8846
|
+
* @example webhook.example.com
|
|
8847
|
+
*/
|
|
8848
|
+
q?: string;
|
|
8849
|
+
/**
|
|
8850
|
+
* @description Filtro — Sólo las entregas de esta validación (UUID v4).
|
|
8851
|
+
* @example 3fa85f64-5717-4562-b3fc-2c963f66afa6
|
|
7766
8852
|
*/
|
|
7767
|
-
|
|
8853
|
+
validation_id?: string;
|
|
8854
|
+
/**
|
|
8855
|
+
* @description Filtro — Código HTTP con que respondió el receptor, separados por comas. Vale un código exacto (`404`), una familia (`2xx`, `4xx`, `5xx`) o `none` para las que no tuvieron respuesta (tiempo agotado, conexión rechazada o todavía sin intentar). Varios valores suman resultados.
|
|
8856
|
+
* @example [
|
|
8857
|
+
* "5xx",
|
|
8858
|
+
* "none"
|
|
8859
|
+
* ]
|
|
8860
|
+
*/
|
|
8861
|
+
response_status?: string[];
|
|
8862
|
+
/**
|
|
8863
|
+
* @description Filtro — Entregas creadas desde este momento, incluido. Acepta fecha (`2026-10-01`, medianoche UTC) o fecha y hora ISO 8601 con zona.
|
|
8864
|
+
* @example 2026-10-01T00:00:00Z
|
|
8865
|
+
*/
|
|
8866
|
+
from?: string;
|
|
8867
|
+
/**
|
|
8868
|
+
* @description Filtro — Entregas creadas hasta este momento, incluido. Una fecha sola llega al final de ese día en UTC.
|
|
8869
|
+
* @example 2026-10-15T23:59:59Z
|
|
8870
|
+
*/
|
|
8871
|
+
to?: string;
|
|
8872
|
+
/**
|
|
8873
|
+
* @description Filtro — Sólo las entregas cuyo número de intento es al menos este. Con `2` quedan las que se reintentaron.
|
|
8874
|
+
* @example 2
|
|
8875
|
+
*/
|
|
8876
|
+
min_attempt?: number;
|
|
8877
|
+
/**
|
|
8878
|
+
* @description Filtro — Sólo las entregas cuyo receptor tardó al menos estos milisegundos en responder.
|
|
8879
|
+
* @example 3000
|
|
8880
|
+
*/
|
|
8881
|
+
min_response_time_ms?: number;
|
|
7768
8882
|
};
|
|
7769
8883
|
header?: never;
|
|
7770
8884
|
path?: never;
|
|
@@ -7804,22 +8918,66 @@ export interface operations {
|
|
|
7804
8918
|
parameters: {
|
|
7805
8919
|
query?: {
|
|
7806
8920
|
/**
|
|
7807
|
-
* @description Filtro — Identificador único del endpoint webhook (UUID v4).
|
|
7808
|
-
* @example
|
|
8921
|
+
* @description Filtro — Identificador único del endpoint webhook (UUID v4). Hasta 20, separados por comas.
|
|
8922
|
+
* @example [
|
|
8923
|
+
* "7c9e6679-7425-40de-944b-e07fc1f90ae7"
|
|
8924
|
+
* ]
|
|
7809
8925
|
*/
|
|
7810
|
-
endpoint_id?: string;
|
|
8926
|
+
endpoint_id?: string[];
|
|
7811
8927
|
/**
|
|
7812
8928
|
* @description \
|
|
7813
|
-
* Filtro — Estado de la entrega. `success` llegó. `failed` es el resultado del último intento; Messenger puede programar otro si el fallo es recuperable. `retrying` se pospuso por el límite de salida y Messenger la reintentará. `pending` todavía no se ha intentado.
|
|
7814
|
-
* @example
|
|
8929
|
+
* Filtro — Estado de la entrega. `success` llegó. `failed` es el resultado del último intento; Messenger puede programar otro si el fallo es recuperable. `retrying` se pospuso por el límite de salida y Messenger la reintentará. `pending` todavía no se ha intentado. Varios estados, separados por comas.
|
|
8930
|
+
* @example [
|
|
8931
|
+
* "failed"
|
|
8932
|
+
* ]
|
|
7815
8933
|
*/
|
|
7816
|
-
status?: "success" | "failed" | "retrying" | "pending";
|
|
8934
|
+
status?: ("success" | "failed" | "retrying" | "pending")[];
|
|
7817
8935
|
/**
|
|
7818
|
-
* @description Filtro — Tipo de evento que originó la entrega. **De validaciones**: `validation.completed` cuando
|
|
7819
|
-
* **De la suscripción:** `billing.payment_succeeded` y `billing.payment_failed` por cada cobro, `billing.invoice_upcoming` antes de la siguiente factura, `billing.trial_will_end` antes de que acabe la prueba gratuita, y `billing.subscription_canceled` al cancelar la suscripción. Las entregas sintéticas (envío de prueba) se marcan como `test`.
|
|
7820
|
-
* @example
|
|
8936
|
+
* @description Filtro — Tipo de evento que originó la entrega. **De validaciones**: `validation.completed` cuando hay veredicto de Banxico, sea cual sea (también inválida o no encontrada, y aunque se abran reintentos), `validation.failed` cuando la entrada se rechaza y `validation.error` ante cualquier otro fallo. **De los reintentos automáticos:** `validation.retry.scheduled` al programar un reintento automático, `validation.retry.resolved` cuando un reintento automático encuentra el CEP, y `validation.retry.exhausted` cuando los reintentos se agotan sin encontrar el CEP. **De la revisión posterior de un `valid`:** `validation.returned` cuando una validación que había salido `valid` pasa a `returned` porque Banxico reportó la devolución.\
|
|
8937
|
+
* **De la suscripción:** `billing.payment_succeeded` y `billing.payment_failed` por cada cobro, `billing.invoice_upcoming` antes de la siguiente factura, `billing.trial_will_end` antes de que acabe la prueba gratuita, y `billing.subscription_canceled` al cancelar la suscripción. Las entregas sintéticas (envío de prueba) se marcan como `test`. Varios tipos, separados por comas.
|
|
8938
|
+
* @example [
|
|
8939
|
+
* "validation.completed"
|
|
8940
|
+
* ]
|
|
8941
|
+
*/
|
|
8942
|
+
event_type?: ("validation.completed" | "validation.failed" | "validation.error" | "validation.retry.scheduled" | "validation.retry.resolved" | "validation.retry.exhausted" | "validation.returned" | "billing.payment_succeeded" | "billing.payment_failed" | "billing.trial_will_end" | "billing.subscription_canceled" | "billing.invoice_upcoming" | "test")[];
|
|
8943
|
+
/**
|
|
8944
|
+
* @description Filtro — Busca en el identificador de la entrega, el identificador, la URL y la descripción del endpoint, el tipo de evento, el identificador de la validación y el código HTTP de la respuesta. No distingue mayúsculas; `%` y `_` se buscan tal cual. Más de 100 caracteres se recortan.
|
|
8945
|
+
* @example webhook.example.com
|
|
8946
|
+
*/
|
|
8947
|
+
q?: string;
|
|
8948
|
+
/**
|
|
8949
|
+
* @description Filtro — Sólo las entregas de esta validación (UUID v4).
|
|
8950
|
+
* @example 3fa85f64-5717-4562-b3fc-2c963f66afa6
|
|
8951
|
+
*/
|
|
8952
|
+
validation_id?: string;
|
|
8953
|
+
/**
|
|
8954
|
+
* @description Filtro — Código HTTP con que respondió el receptor, separados por comas. Vale un código exacto (`404`), una familia (`2xx`, `4xx`, `5xx`) o `none` para las que no tuvieron respuesta (tiempo agotado, conexión rechazada o todavía sin intentar). Varios valores suman resultados.
|
|
8955
|
+
* @example [
|
|
8956
|
+
* "5xx",
|
|
8957
|
+
* "none"
|
|
8958
|
+
* ]
|
|
8959
|
+
*/
|
|
8960
|
+
response_status?: string[];
|
|
8961
|
+
/**
|
|
8962
|
+
* @description Filtro — Entregas creadas desde este momento, incluido. Acepta fecha (`2026-10-01`, medianoche UTC) o fecha y hora ISO 8601 con zona.
|
|
8963
|
+
* @example 2026-10-01T00:00:00Z
|
|
8964
|
+
*/
|
|
8965
|
+
from?: string;
|
|
8966
|
+
/**
|
|
8967
|
+
* @description Filtro — Entregas creadas hasta este momento, incluido. Una fecha sola llega al final de ese día en UTC.
|
|
8968
|
+
* @example 2026-10-15T23:59:59Z
|
|
8969
|
+
*/
|
|
8970
|
+
to?: string;
|
|
8971
|
+
/**
|
|
8972
|
+
* @description Filtro — Sólo las entregas cuyo número de intento es al menos este. Con `2` quedan las que se reintentaron.
|
|
8973
|
+
* @example 2
|
|
8974
|
+
*/
|
|
8975
|
+
min_attempt?: number;
|
|
8976
|
+
/**
|
|
8977
|
+
* @description Filtro — Sólo las entregas cuyo receptor tardó al menos estos milisegundos en responder.
|
|
8978
|
+
* @example 3000
|
|
7821
8979
|
*/
|
|
7822
|
-
|
|
8980
|
+
min_response_time_ms?: number;
|
|
7823
8981
|
/**
|
|
7824
8982
|
* @description Formato del archivo a descargar. Valores aceptados: `csv` y `xlsx`. Cualquier otro valor se sirve como `csv`.
|
|
7825
8983
|
* @example csv
|