@veriko-mx/sdk 0.4.9 → 0.4.11
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 +34 -0
- package/README.md +76 -11
- package/dist/cjs/client.d.ts +5 -3
- package/dist/cjs/client.d.ts.map +1 -1
- package/dist/cjs/client.js +5 -3
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/generated/openapi.d.ts +89 -10
- package/dist/cjs/generated/openapi.d.ts.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 +6 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/resources.d.ts +10 -1
- package/dist/cjs/resources.d.ts.map +1 -1
- package/dist/cjs/resources.js +19 -4
- package/dist/cjs/resources.js.map +1 -1
- package/dist/cjs/types.d.ts +14 -4
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/webhooks.d.ts +41 -1
- package/dist/cjs/webhooks.d.ts.map +1 -1
- package/dist/cjs/webhooks.js +94 -6
- package/dist/cjs/webhooks.js.map +1 -1
- package/dist/esm/client.d.ts +5 -3
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +5 -3
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/generated/openapi.d.ts +89 -10
- package/dist/esm/generated/openapi.d.ts.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 +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/resources.d.ts +10 -1
- package/dist/esm/resources.d.ts.map +1 -1
- package/dist/esm/resources.js +19 -4
- package/dist/esm/resources.js.map +1 -1
- package/dist/esm/types.d.ts +14 -4
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/webhooks.d.ts +41 -1
- package/dist/esm/webhooks.d.ts.map +1 -1
- package/dist/esm/webhooks.js +91 -5
- package/dist/esm/webhooks.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,40 @@ versiones según [SemVer](https://semver.org/lang/es/).
|
|
|
7
7
|
|
|
8
8
|
Sin cambios todavía.
|
|
9
9
|
|
|
10
|
+
## [0.4.11] — 2026-10-01
|
|
11
|
+
|
|
12
|
+
### Añadido
|
|
13
|
+
|
|
14
|
+
- `clientRef` en `validateTransfer()`, `validations.validate()`, `validations.validateOcr()`,
|
|
15
|
+
`validations.enqueue()` y `validations.enqueueOcr()`: una referencia propia de 1 a 64 caracteres
|
|
16
|
+
que vuelve en `attributes.client_ref`.
|
|
17
|
+
- El filtro `clientRef`, de coincidencia exacta, en `validations.list()`, `validations.iter()`,
|
|
18
|
+
`validations.stats()` y `validations.export()`.
|
|
19
|
+
- Los tipos de `Validation` añaden `client_ref`, `duplicate_of` y `account_conflict`.
|
|
20
|
+
- `verifyWebhookTimestamped()` comprueba la cabecera `X-Webhook-Signature-Timestamped`
|
|
21
|
+
(`t=<segundos>,v1=<hex>`): compara en tiempo constante el HMAC-SHA256 de `<t>.<cuerpo>` con cada
|
|
22
|
+
`v1` y rechaza la entrega cuando `t` se aleja del reloj más de `toleranceSeconds`, 300 por
|
|
23
|
+
omisión. `timestampedSignatureFromHeaders()` encuentra la cabecera en cualquiera de sus grafías.
|
|
24
|
+
`verifyWebhook()` no cambia.
|
|
25
|
+
- `parseWebhook()` entrega el `client_ref` en `evento.data.attributes` cuando el webhook de
|
|
26
|
+
validación lo trae.
|
|
27
|
+
|
|
28
|
+
### Cambiado
|
|
29
|
+
|
|
30
|
+
- `cuentaBeneficiaria` es obligatoria en `validateTransfer()`, `validations.validate()` y
|
|
31
|
+
`validations.enqueue()`. Sin ella, el SDK lanza `InvalidRequestError` con `cuenta_required` y no
|
|
32
|
+
llama a la API.
|
|
33
|
+
|
|
34
|
+
## [0.4.10] — 2026-09-29
|
|
35
|
+
|
|
36
|
+
### Cambiado
|
|
37
|
+
|
|
38
|
+
- Las descripciones de los tipos documentan los códigos por campo con que el `422` de la
|
|
39
|
+
validación rechaza una petición cuyos datos se contradicen, antes de consultar a Banxico:
|
|
40
|
+
`clabe_receptor_mismatch`, `tarjeta_receptor_mismatch` y `clave_longitud_invalida`. Llegan en
|
|
41
|
+
`errors[].code` de `InvalidRequestError`. Ningún rechazo `preflight_failed` de esa ruta consume
|
|
42
|
+
cuota, sea por datos que se contradicen o por un campo mal formado.
|
|
43
|
+
|
|
10
44
|
## [0.4.9] — 2026-09-28
|
|
11
45
|
|
|
12
46
|
### Añadido
|
package/README.md
CHANGED
|
@@ -99,9 +99,10 @@ const client = new Veriko({ apiKey: 'veriko_tu_clave_aqui' });
|
|
|
99
99
|
|
|
100
100
|
## Validar una transferencia
|
|
101
101
|
|
|
102
|
-
La operación exige la fecha de envío, el importe y **la clave de rastreo
|
|
103
|
-
numérica**. Enviar las dos precisa la búsqueda. El banco emisor
|
|
104
|
-
|
|
102
|
+
La operación exige la fecha de envío, el importe, la cuenta beneficiaria y **la clave de rastreo
|
|
103
|
+
o la referencia numérica**. Enviar las dos precisa la búsqueda. El banco emisor y el receptor son
|
|
104
|
+
opcionales y mejoran la identificación. La API rechaza con `422` (`preflight_failed`) una petición
|
|
105
|
+
sin `cuenta_beneficiaria`: no la busca entre los beneficiarios guardados.
|
|
105
106
|
|
|
106
107
|
```ts
|
|
107
108
|
import { Veriko } from '@veriko-mx/sdk';
|
|
@@ -170,6 +171,38 @@ El tiempo de espera se fija con `timeoutMs` (cinco minutos por omisión) y la pa
|
|
|
170
171
|
|
|
171
172
|
La alternativa a sondear es suscribirse al webhook `validation.completed`.
|
|
172
173
|
|
|
174
|
+
### Referencia propia
|
|
175
|
+
|
|
176
|
+
`clientRef` es una referencia propia de 1 a 64 caracteres, sin saltos de línea ni emoji. Sirve para
|
|
177
|
+
relacionar la validación con un pedido propio. No debe contener datos personales.
|
|
178
|
+
|
|
179
|
+
```ts
|
|
180
|
+
const validation = await client.validateTransfer({
|
|
181
|
+
fecha: '2025-03-15',
|
|
182
|
+
monto: 15000.5,
|
|
183
|
+
claveRastreo: 'MXBA20250315001234',
|
|
184
|
+
cuentaBeneficiaria: '012180004412345678',
|
|
185
|
+
clientRef: 'orden-4812',
|
|
186
|
+
});
|
|
187
|
+
console.log(validation.attributes.client_ref); // orden-4812
|
|
188
|
+
|
|
189
|
+
const page = await client.validations.list({ clientRef: 'orden-4812' });
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
`validateOcr()`, `enqueue()` y `enqueueOcr()` también la aceptan. Vuelve en
|
|
193
|
+
`attributes.client_ref`, en los listados y en los webhooks de validación, y `list()`, `stats()` y
|
|
194
|
+
`export()` la usan como filtro de coincidencia exacta. En un webhook, `parseWebhook()` la entrega en
|
|
195
|
+
`evento.data.attributes.client_ref`. La API rechaza con `422` (`invalid_client_ref`) una referencia
|
|
196
|
+
que no cumple las reglas.
|
|
197
|
+
|
|
198
|
+
### Duplicado y conflicto de cuenta
|
|
199
|
+
|
|
200
|
+
`attributes.duplicate_of` trae el `id` y el `created_at` de una validación previa `valid`, de la
|
|
201
|
+
misma cuenta y con la misma clave de rastreo. `attributes.account_conflict` trae los últimos 4
|
|
202
|
+
dígitos de la cuenta enviada (`sent_last4`) y de la que muestra la imagen (`read_last4`) en una
|
|
203
|
+
validación por OCR. Ninguno cambia el veredicto, y los dos están ausentes cuando la API no los
|
|
204
|
+
informa.
|
|
205
|
+
|
|
173
206
|
### Listar y recorrer el historial
|
|
174
207
|
|
|
175
208
|
```ts
|
|
@@ -186,7 +219,7 @@ for await (const item of client.validations.iter({ from: '2025-03-01', to: '2025
|
|
|
186
219
|
`totalPages` y `hasNext`.
|
|
187
220
|
|
|
188
221
|
Los filtros (`status`, `type`, `from`, `to`, `search`, `playground`, `withDeleted`, `batchId`,
|
|
189
|
-
`bank`, `amountMin`, `amountMax` y `retryState`) van en `camelCase`. `status` acepta un estado o una
|
|
222
|
+
`bank`, `amountMin`, `amountMax`, `clientRef` y `retryState`) van en `camelCase`. `status` acepta un estado o una
|
|
190
223
|
lista, y `withDeleted: true` devuelve sólo las validaciones retiradas, mientras que `false` devuelve
|
|
191
224
|
sólo las activas.
|
|
192
225
|
|
|
@@ -378,17 +411,49 @@ del beneficiario (enmascarada a los últimos 4 dígitos), tal como los confirmó
|
|
|
378
411
|
contra el pedido antes de liberar la mercancía: la imagen de un comprobante puede mostrar un monto
|
|
379
412
|
distinto al que Banxico confirmó.
|
|
380
413
|
|
|
381
|
-
### Las
|
|
414
|
+
### Las cinco cabeceras de una entrega
|
|
382
415
|
|
|
383
|
-
| cabecera
|
|
384
|
-
|
|
|
385
|
-
| `X-Webhook-Signature`
|
|
386
|
-
| `X-
|
|
387
|
-
| `X-Veriko-
|
|
388
|
-
| `X-Veriko-
|
|
416
|
+
| cabecera | contenido |
|
|
417
|
+
| --------------------------------- | ------------------------------------------------------------------------ |
|
|
418
|
+
| `X-Webhook-Signature` | `sha256=` seguido del HMAC en hexadecimal |
|
|
419
|
+
| `X-Webhook-Signature-Timestamped` | `t=<segundos>,v1=<hex>`: firma de `<t>.<cuerpo>` con la hora del intento |
|
|
420
|
+
| `X-Veriko-Event` | Tipo de evento, por ejemplo `validation.completed` |
|
|
421
|
+
| `X-Veriko-Delivery-Id` | Identificador de la entrega, estable entre reintentos |
|
|
422
|
+
| `X-Veriko-Timestamp` | Momento del envío, ISO 8601 con sufijo `Z` |
|
|
389
423
|
|
|
390
424
|
El `Delivery-Id` es el valor que permite descartar entregas repetidas.
|
|
391
425
|
|
|
426
|
+
### Firma con marca de tiempo
|
|
427
|
+
|
|
428
|
+
`X-Webhook-Signature-Timestamped` firma la hora del intento junto con el cuerpo, de modo que el
|
|
429
|
+
receptor puede descartar una entrega vieja que alguien vuelva a enviar. `X-Webhook-Signature` no
|
|
430
|
+
cambia.
|
|
431
|
+
|
|
432
|
+
```ts
|
|
433
|
+
import { verifyWebhookTimestamped } from '@veriko-mx/sdk';
|
|
434
|
+
|
|
435
|
+
if (
|
|
436
|
+
!verifyWebhookTimestamped(
|
|
437
|
+
request.body, // el cuerpo crudo
|
|
438
|
+
request.get('X-Webhook-Signature-Timestamped'),
|
|
439
|
+
SECRET,
|
|
440
|
+
)
|
|
441
|
+
) {
|
|
442
|
+
return response.sendStatus(400);
|
|
443
|
+
}
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
`verifyWebhookTimestamped(payload, header, secret, { toleranceSeconds, now })` devuelve `true` o
|
|
447
|
+
`false`. Calcula el HMAC-SHA256 de `<t>.<cuerpo>`, lo compara en tiempo constante con cada `v1` de
|
|
448
|
+
la cabecera y rechaza la entrega si `t` se aleja del reloj del receptor más de `toleranceSeconds`,
|
|
449
|
+
300 por omisión. `now` fija la hora actual con un `Date`, para las pruebas.
|
|
450
|
+
`timestampedSignatureFromHeaders(headers)` encuentra la cabecera en cualquiera de sus grafías.
|
|
451
|
+
|
|
452
|
+
La ventana se aplica a `t`, la hora del intento, y no al campo `timestamp` del cuerpo, que es la hora
|
|
453
|
+
del evento. Un reintento llega hasta unas 8,6 horas después del evento, pero lleva una `t` recién
|
|
454
|
+
generada. Medir la ventana contra el `timestamp` del cuerpo rechazaría reintentos legítimos. La
|
|
455
|
+
ventana no sustituye a la deduplicación: guarda el `Delivery-Id` al menos 24 horas.
|
|
456
|
+
|
|
392
457
|
## Reintentos
|
|
393
458
|
|
|
394
459
|
Hay dos mecanismos distintos con el mismo nombre.
|
package/dist/cjs/client.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare const DEFAULT_TIMEOUT_MS = 30000;
|
|
|
7
7
|
export declare const API_KEY_ENV_VAR = "VERIKO_API_KEY";
|
|
8
8
|
export declare const BASE_URL_ENV_VAR = "VERIKO_BASE_URL";
|
|
9
9
|
/** La versión que viaja en el `User-Agent`. `test/client.test.ts` la compara con `package.json`. */
|
|
10
|
-
export declare const VERSION = "0.4.
|
|
10
|
+
export declare const VERSION = "0.4.11";
|
|
11
11
|
export interface VerikoOptions {
|
|
12
12
|
/** La clave de API. Por omisión, `VERIKO_API_KEY`. */
|
|
13
13
|
apiKey?: string;
|
|
@@ -95,8 +95,10 @@ export declare class Veriko {
|
|
|
95
95
|
* Devuelve el veredicto en `attributes.status`: `valid`, `not_found`,
|
|
96
96
|
* `cep_unavailable`, `returned` o `error`.
|
|
97
97
|
*
|
|
98
|
-
* La operación exige `claveRastreo` o
|
|
99
|
-
* precisa la búsqueda. La fecha
|
|
98
|
+
* La operación exige `cuentaBeneficiaria`, y `claveRastreo` o
|
|
99
|
+
* `referenciaNumerica`. Enviar las dos últimas precisa la búsqueda. La fecha
|
|
100
|
+
* es la de envío, en `YYYY-MM-DD`. `clientRef` es una referencia propia que
|
|
101
|
+
* vuelve en la validación y en los webhooks.
|
|
100
102
|
*
|
|
101
103
|
* Un `not_found` inmediato no equivale a una transferencia inexistente: un
|
|
102
104
|
* CEP tarda en publicarse. `retryPolicy` deja a la API consultando de nuevo y
|
package/dist/cjs/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAiB,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EACL,OAAO,EACP,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,KAAK,EACL,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAElD,oGAAoG;AACpG,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAiB,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EACL,OAAO,EACP,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,KAAK,EACL,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAChD,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAElD,oGAAoG;AACpG,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,kDAAkD;IAClD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,OAAO,GAAE,aAAkB;IA+BvC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrE;;;;;;;OAOG;IACH,aAAa,CACX,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC;IAI9B;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,SAAS,CAAA;KAAO,GAAG,OAAO,CAAC,WAAW,CAAC;CAGzF"}
|
package/dist/cjs/client.js
CHANGED
|
@@ -9,7 +9,7 @@ exports.DEFAULT_TIMEOUT_MS = 30_000;
|
|
|
9
9
|
exports.API_KEY_ENV_VAR = 'VERIKO_API_KEY';
|
|
10
10
|
exports.BASE_URL_ENV_VAR = 'VERIKO_BASE_URL';
|
|
11
11
|
/** La versión que viaja en el `User-Agent`. `test/client.test.ts` la compara con `package.json`. */
|
|
12
|
-
exports.VERSION = '0.4.
|
|
12
|
+
exports.VERSION = '0.4.11';
|
|
13
13
|
/**
|
|
14
14
|
* Cliente de la API de Veriko.
|
|
15
15
|
*
|
|
@@ -107,8 +107,10 @@ class Veriko {
|
|
|
107
107
|
* Devuelve el veredicto en `attributes.status`: `valid`, `not_found`,
|
|
108
108
|
* `cep_unavailable`, `returned` o `error`.
|
|
109
109
|
*
|
|
110
|
-
* La operación exige `claveRastreo` o
|
|
111
|
-
* precisa la búsqueda. La fecha
|
|
110
|
+
* La operación exige `cuentaBeneficiaria`, y `claveRastreo` o
|
|
111
|
+
* `referenciaNumerica`. Enviar las dos últimas precisa la búsqueda. La fecha
|
|
112
|
+
* es la de envío, en `YYYY-MM-DD`. `clientRef` es una referencia propia que
|
|
113
|
+
* vuelve en la validación y en los webhooks.
|
|
112
114
|
*
|
|
113
115
|
* Un `not_found` inmediato no equivale a una transferencia inexistente: un
|
|
114
116
|
* CEP tarda en publicarse. `retryPolicy` deja a la API consultando de nuevo y
|
package/dist/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";AAAA,mEAAmE;;;AAEnE,uCAAuE;AACvE,iDAYwB;AAUX,QAAA,gBAAgB,GAAG,0BAA0B,CAAC;AAC9C,QAAA,kBAAkB,GAAG,MAAM,CAAC;AAC5B,QAAA,eAAe,GAAG,gBAAgB,CAAC;AACnC,QAAA,gBAAgB,GAAG,iBAAiB,CAAC;AAElD,oGAAoG;AACvF,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,8 @@ export interface paths {
|
|
|
67
67
|
* - Banco receptor.
|
|
68
68
|
* - Cuenta beneficiaria.
|
|
69
69
|
*
|
|
70
|
+
* La cuenta beneficiaria (`cuenta_beneficiaria`) es obligatoria en esta operación. Si falta, 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.
|
|
71
|
+
*
|
|
70
72
|
* El veredicto final (estado terminal) de una validación puede ser alguno de estos:
|
|
71
73
|
*
|
|
72
74
|
* - `valid`: El CEP de la transacción fue encontrado y validado.
|
|
@@ -133,7 +135,7 @@ export interface paths {
|
|
|
133
135
|
*
|
|
134
136
|
* {% callout type="info" %}
|
|
135
137
|
* 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.\
|
|
136
|
-
*
|
|
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.
|
|
137
139
|
*
|
|
138
140
|
* {% /callout %}
|
|
139
141
|
*
|
|
@@ -194,7 +196,7 @@ export interface paths {
|
|
|
194
196
|
*
|
|
195
197
|
* - `status`: Acepta un estado, o varios separados por comas.
|
|
196
198
|
* - `with_deleted`: Distingue entre los registros activos y los retirados.
|
|
197
|
-
* - **Los demás** acotan por: modalidad, fecha, contenido, banco, importe, origen y ciclo de reintentos.
|
|
199
|
+
* - **Los demás** acotan por: modalidad, fecha, contenido, banco, importe, origen, referencia propia (`client_ref`) y ciclo de reintentos.
|
|
198
200
|
*
|
|
199
201
|
* La forma de la respuesta está descrita en {% concept slug="pagination" %}la paginación{% /concept %}.
|
|
200
202
|
*
|
|
@@ -1080,6 +1082,7 @@ export interface paths {
|
|
|
1080
1082
|
* **Firma secreta:**\
|
|
1081
1083
|
* El `secret` de firma se devuelve **únicamente en esta respuesta** y no puede recuperarse después. Un secreto perdido se sustituye con `POST /v1/webhooks/{id}/regenerate-secret`, que devuelve el nuevo e invalida el anterior de inmediato — el endpoint no hay que volver a registrarlo.\
|
|
1082
1084
|
* Ese secreto verifica cada entrega: el HMAC-SHA256 del cuerpo recibido debe coincidir con la cabecera `X-Webhook-Signature: sha256=<hex>`.\
|
|
1085
|
+
* Cada entrega lleva además `X-Webhook-Signature-Timestamped: t=<segundos>,v1=<hex>`, donde `v1` es el HMAC-SHA256 de `<t>.<cuerpo>`. Esa firma incluye la hora del intento, y la ventana de tolerancia recomendada es de 5 minutos contra `t`, no contra el `timestamp` del cuerpo: los reintentos llegan hasta unas 8,6 horas después del evento.\
|
|
1083
1086
|
* \
|
|
1084
1087
|
* La firma, y más detalles se describen en {% concept slug="webhooks-architecture" %}la arquitectura de webhooks{% /concept %}.
|
|
1085
1088
|
*
|
|
@@ -2177,7 +2180,7 @@ export interface components {
|
|
|
2177
2180
|
*/
|
|
2178
2181
|
outcomes?: ("not_found" | "cep_unavailable" | "error")[];
|
|
2179
2182
|
};
|
|
2180
|
-
/** @description Cuerpo de `POST /v1/validate` para una validación manual SPEI; exige `clave_rastreo` o `referencia_numerica`. */
|
|
2183
|
+
/** @description Cuerpo de `POST /v1/validate` para una validación manual SPEI; exige `cuenta_beneficiaria` y `clave_rastreo` o `referencia_numerica`. */
|
|
2181
2184
|
ValidationRequest: {
|
|
2182
2185
|
/**
|
|
2183
2186
|
* Format: date
|
|
@@ -2212,10 +2215,10 @@ export interface components {
|
|
|
2212
2215
|
*/
|
|
2213
2216
|
receptor?: string;
|
|
2214
2217
|
/**
|
|
2215
|
-
* @description Cuenta bancaria receptora de la transferencia. 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).
|
|
2218
|
+
* @description Cuenta bancaria receptora de la transferencia. Es obligatoria: si falta, la respuesta es un estado HTTP `422` (con `preflight_failed` y el error de campo `cuenta_required`). 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).
|
|
2216
2219
|
* @example 012180004412345678
|
|
2217
2220
|
*/
|
|
2218
|
-
cuenta_beneficiaria
|
|
2221
|
+
cuenta_beneficiaria: string;
|
|
2219
2222
|
/**
|
|
2220
2223
|
* @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`.
|
|
2221
2224
|
* @default 0
|
|
@@ -2225,6 +2228,11 @@ export interface components {
|
|
|
2225
2228
|
receptor_participante: 0 | 1;
|
|
2226
2229
|
/** @description Política de **reintentos automáticos** para esta validación. Si se omite, se aplica la política general configurada para el usuario. Los reintentos NO consumen cuota de validaciones. */
|
|
2227
2230
|
retry_policy?: components["schemas"]["RetryPolicy"];
|
|
2231
|
+
/**
|
|
2232
|
+
* @description Referencia propia que se devuelve tal cual en la validación, en los webhooks de validación y como filtro exacto de `GET /v1/validations`. Texto de 1 a 64 caracteres, sin saltos de línea ni emoji; se recorta antes de guardarse. Un valor que no cumple se rechaza con un estado HTTP `422` (con `invalid_client_ref` en el cuerpo). No debe contener datos personales.
|
|
2233
|
+
* @example orden-4812
|
|
2234
|
+
*/
|
|
2235
|
+
client_ref?: string;
|
|
2228
2236
|
} | unknown | unknown;
|
|
2229
2237
|
/**
|
|
2230
2238
|
* @description Código estable del fallo de una validación.
|
|
@@ -2324,6 +2332,11 @@ export interface components {
|
|
|
2324
2332
|
request_data?: {
|
|
2325
2333
|
[key: string]: unknown;
|
|
2326
2334
|
};
|
|
2335
|
+
/**
|
|
2336
|
+
* @description Referencia propia que se envió en la petición (`client_ref`), devuelta tal cual. Solo aparece cuando la petición la incluyó. Sirve para relacionar la validación con un pedido propio, y `GET /v1/validations` la acepta como filtro exacto. No debe contener datos personales.
|
|
2337
|
+
* @example orden-4812
|
|
2338
|
+
*/
|
|
2339
|
+
client_ref?: string;
|
|
2327
2340
|
/**
|
|
2328
2341
|
* Format: date-time
|
|
2329
2342
|
* @description Fecha y hora, en ISO 8601 UTC, de creación de la validación.
|
|
@@ -2385,7 +2398,43 @@ export interface components {
|
|
|
2385
2398
|
} | null;
|
|
2386
2399
|
/** @description Advertencias de normalización presentes. Permiten explicar un resultado `not_found` inesperado. */
|
|
2387
2400
|
normalization_warnings?: string[] | null;
|
|
2388
|
-
/**
|
|
2401
|
+
/**
|
|
2402
|
+
* @description Validación previa que ya había confirmado esta misma transferencia en la misma cuenta. Solo aparece cuando existe una validación `valid`, no retirada, con la misma clave de rastreo; nunca apunta a una validación de otra cuenta.
|
|
2403
|
+
*
|
|
2404
|
+
* Es la forma estructurada del aviso que también se añade a `normalization_warnings`. No cambia el veredicto: la validación se consulta y se cobra igual.
|
|
2405
|
+
*/
|
|
2406
|
+
duplicate_of?: {
|
|
2407
|
+
/**
|
|
2408
|
+
* Format: uuid
|
|
2409
|
+
* @description Identificador de la validación previa.
|
|
2410
|
+
* @example 3fa85f64-5717-4562-b3fc-2c963f66afa6
|
|
2411
|
+
*/
|
|
2412
|
+
id: string;
|
|
2413
|
+
/**
|
|
2414
|
+
* Format: date-time
|
|
2415
|
+
* @description Fecha y hora, en ISO 8601 UTC, de creación de la validación previa.
|
|
2416
|
+
* @example 2026-10-01T15:04:05Z
|
|
2417
|
+
*/
|
|
2418
|
+
created_at: string;
|
|
2419
|
+
};
|
|
2420
|
+
/**
|
|
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.
|
|
2422
|
+
*
|
|
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`.
|
|
2424
|
+
*/
|
|
2425
|
+
account_conflict?: {
|
|
2426
|
+
/**
|
|
2427
|
+
* @description Últimos 4 dígitos de la cuenta enviada en `cuenta_beneficiaria`.
|
|
2428
|
+
* @example 5678
|
|
2429
|
+
*/
|
|
2430
|
+
sent_last4: string;
|
|
2431
|
+
/**
|
|
2432
|
+
* @description Últimos 4 dígitos de la cuenta completa que muestra la imagen.
|
|
2433
|
+
* @example 9012
|
|
2434
|
+
*/
|
|
2435
|
+
read_last4: string;
|
|
2436
|
+
};
|
|
2437
|
+
/** @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`. */
|
|
2389
2438
|
is_masked?: boolean | null;
|
|
2390
2439
|
/**
|
|
2391
2440
|
* @description Datos devueltos por Banxico. Las propiedades tipadas abajo son las 20 que declara el esquema oficial del complemento SPEI.
|
|
@@ -2545,6 +2594,11 @@ export interface components {
|
|
|
2545
2594
|
expires_at?: components["schemas"]["TimestampUTC"];
|
|
2546
2595
|
/** @description Estado del ciclo de reintentos automáticos al momento del encolamiento. Siempre presente; si no se configuró `retry_policy` en el body ni en la política del usuario, `enabled=false` y los campos de política son `null`. */
|
|
2547
2596
|
retry_state?: components["schemas"]["RetryStateFull"];
|
|
2597
|
+
/**
|
|
2598
|
+
* @description Referencia propia enviada en la petición (`client_ref`), devuelta tal cual. Solo aparece cuando la petición la incluyó.
|
|
2599
|
+
* @example orden-4812
|
|
2600
|
+
*/
|
|
2601
|
+
client_ref?: string;
|
|
2548
2602
|
};
|
|
2549
2603
|
};
|
|
2550
2604
|
/** @description Metadatos de control del flujo de polling. */
|
|
@@ -2576,12 +2630,17 @@ export interface components {
|
|
|
2576
2630
|
*/
|
|
2577
2631
|
image_url?: string;
|
|
2578
2632
|
/**
|
|
2579
|
-
* @description Cuenta receptora de la transferencia (útil cuando falta o está incompleta en la imagen). Requerida para celular DiMo; opcional si la cuenta
|
|
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).
|
|
2580
2634
|
* @example 012180004412345678
|
|
2581
2635
|
*/
|
|
2582
2636
|
cuenta_beneficiaria?: string;
|
|
2583
2637
|
/** @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**. */
|
|
2584
2638
|
retry_policy?: components["schemas"]["RetryPolicy"];
|
|
2639
|
+
/**
|
|
2640
|
+
* @description Referencia propia que se devuelve tal cual en la validación, en los webhooks de validación y como filtro exacto de `GET /v1/validations`. Texto de 1 a 64 caracteres, sin saltos de línea ni emoji; se recorta antes de guardarse. Un valor que no cumple se rechaza con un estado HTTP `422` (con `invalid_client_ref` en el cuerpo). No debe contener datos personales.
|
|
2641
|
+
* @example orden-4812
|
|
2642
|
+
*/
|
|
2643
|
+
client_ref?: string;
|
|
2585
2644
|
} | unknown | unknown;
|
|
2586
2645
|
/** @description Estado resumido del ciclo de reintentos, con la configuración representada como `null`. */
|
|
2587
2646
|
RetryStateCompact: {
|
|
@@ -2668,6 +2727,11 @@ export interface components {
|
|
|
2668
2727
|
/** @description Fecha de retiro del historial, en ISO 8601 UTC. */
|
|
2669
2728
|
deleted_at?: components["schemas"]["TimestampUTC"] | null;
|
|
2670
2729
|
retry_state?: components["schemas"]["RetryStateCompact"];
|
|
2730
|
+
/**
|
|
2731
|
+
* @description Referencia propia enviada al validar (`client_ref`), devuelta tal cual. Solo aparece cuando la petición la incluyó.
|
|
2732
|
+
* @example orden-4812
|
|
2733
|
+
*/
|
|
2734
|
+
client_ref?: string;
|
|
2671
2735
|
};
|
|
2672
2736
|
} & WithRequired<components["schemas"]["JsonApiResourceBase"], "type" | "id">;
|
|
2673
2737
|
/** @description Recurso JSON:API con contadores por `banxico_status`, estado del ciclo de vida y modalidad de validación. */
|
|
@@ -3838,7 +3902,7 @@ export interface components {
|
|
|
3838
3902
|
/** @description Fecha y hora de la última entrega exitosa, en ISO 8601 UTC. `null` cuando el endpoint aún no completó ninguna entrega. */
|
|
3839
3903
|
last_delivery_at: components["schemas"]["TimestampUTC"] | null;
|
|
3840
3904
|
/**
|
|
3841
|
-
* @description Clave compartida para verificar firmas. **Solo presente** en la respuesta de creación y de rotación del endpoint; se omite en cualquier otra respuesta. Se usa para validar
|
|
3905
|
+
* @description Clave compartida para verificar firmas. **Solo presente** en la respuesta de creación y de rotación del endpoint; se omite en cualquier otra respuesta. Se usa para validar las cabeceras `X-Webhook-Signature` y `X-Webhook-Signature-Timestamped` de cada entrega.
|
|
3842
3906
|
* @example a0b1c2d3e4f5061728394a5b6c7d8e9f00112233445566778899aabbccddeeff
|
|
3843
3907
|
*/
|
|
3844
3908
|
secret?: string;
|
|
@@ -5348,7 +5412,7 @@ export interface operations {
|
|
|
5348
5412
|
};
|
|
5349
5413
|
};
|
|
5350
5414
|
responses: {
|
|
5351
|
-
/** @description Veredicto final de la validación. El campo `status` puede ser: `valid`, `not_found`, `cep_unavailable`, `returned` o `error`. Cuando `
|
|
5415
|
+
/** @description Veredicto final de la validación. El campo `status` puede ser: `valid`, `not_found`, `cep_unavailable`, `returned` o `error`. Cuando la respuesta trae `links.cep_pdf` y `links.cep_xml`, el certificado CEP está disponible en `GET /v1/validations/{id}/cep`. */
|
|
5352
5416
|
200: {
|
|
5353
5417
|
headers: {
|
|
5354
5418
|
/** @description Presente solo cuando la petición incluyó la cabecera `Idempotency-Key`. `false` para respuestas frescas; `true` cuando la respuesta es reutilizada desde el caché de idempotencia, con una vigencia de 24 horas por combinación de cuenta, endpoint y clave. */
|
|
@@ -5366,7 +5430,7 @@ export interface operations {
|
|
|
5366
5430
|
401: components["responses"]["Unauthorized"];
|
|
5367
5431
|
409: components["responses"]["IdempotencyKeyInProgress"];
|
|
5368
5432
|
413: components["responses"]["PayloadTooLarge"];
|
|
5369
|
-
/** @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`. También se emite cuando se reutiliza `Idempotency-Key` con un cuerpo distinto (`idempotency_key_reused`). */
|
|
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`. 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. */
|
|
5370
5434
|
422: {
|
|
5371
5435
|
headers: {
|
|
5372
5436
|
[name: string]: unknown;
|
|
@@ -5483,6 +5547,11 @@ export interface operations {
|
|
|
5483
5547
|
* @example scotiabank
|
|
5484
5548
|
*/
|
|
5485
5549
|
search?: string;
|
|
5550
|
+
/**
|
|
5551
|
+
* @description Coincidencia exacta con la `client_ref` enviada al validar. Distingue mayúsculas, acentos y espacios internos. Un valor vacío o que no cumple las reglas de `client_ref` devuelve un estado HTTP `422` (con `invalid_filter` en el cuerpo).
|
|
5552
|
+
* @example orden-4812
|
|
5553
|
+
*/
|
|
5554
|
+
client_ref?: string;
|
|
5486
5555
|
/**
|
|
5487
5556
|
* @description Filtro — Muestra solo las validaciones del banco de pruebas (Playground). Si se envía, el único valor admitido es `1`; cualquier otro devuelve un estado HTTP `422`.
|
|
5488
5557
|
* @example 1
|
|
@@ -5583,6 +5652,11 @@ export interface operations {
|
|
|
5583
5652
|
* @example MXBA
|
|
5584
5653
|
*/
|
|
5585
5654
|
search?: string;
|
|
5655
|
+
/**
|
|
5656
|
+
* @description Coincidencia exacta con la `client_ref` enviada al validar. Distingue mayúsculas, acentos y espacios internos. Un valor vacío o que no cumple las reglas de `client_ref` devuelve un estado HTTP `422` (con `invalid_filter` en el cuerpo).
|
|
5657
|
+
* @example orden-4812
|
|
5658
|
+
*/
|
|
5659
|
+
client_ref?: string;
|
|
5586
5660
|
/**
|
|
5587
5661
|
* @description Filtro — Muestra solo las validaciones del banco de pruebas (Playground). Si se envía, el único valor admitido es `1`; cualquier otro devuelve un estado HTTP `422`.
|
|
5588
5662
|
* @example 1
|
|
@@ -5686,6 +5760,11 @@ export interface operations {
|
|
|
5686
5760
|
* @example MXBA20250315001234
|
|
5687
5761
|
*/
|
|
5688
5762
|
search?: string;
|
|
5763
|
+
/**
|
|
5764
|
+
* @description Coincidencia exacta con la `client_ref` enviada al validar. Distingue mayúsculas, acentos y espacios internos. Un valor vacío o que no cumple las reglas de `client_ref` devuelve un estado HTTP `422` (con `invalid_filter` en el cuerpo).
|
|
5765
|
+
* @example orden-4812
|
|
5766
|
+
*/
|
|
5767
|
+
client_ref?: string;
|
|
5689
5768
|
/**
|
|
5690
5769
|
* @description Filtro — Muestra solo las validaciones del banco de pruebas (Playground). Si se envía, el único valor admitido es `1`; cualquier otro devuelve un estado HTTP `422`.
|
|
5691
5770
|
* @example 1
|