@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
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,52 @@ versiones según [SemVer](https://semver.org/lang/es/).
|
|
|
7
7
|
|
|
8
8
|
Sin cambios todavía.
|
|
9
9
|
|
|
10
|
+
## [0.4.13] — 2026-10-15
|
|
11
|
+
|
|
12
|
+
### Añadido
|
|
13
|
+
|
|
14
|
+
- `catalog.speiCalendar()` (`GET /v1/public/spei-calendar/{year}`): el calendario de días inhábiles
|
|
15
|
+
SPEI de un año. Devuelve `SpeiCalendar`, con `non_business_days` y `source` en `attributes` y los
|
|
16
|
+
años con calendario en `coveredYears`. Admite `ifNoneMatch`, y su `ETag` queda en `etag`. No
|
|
17
|
+
consume cuota. Un año sin calendario se lanza como `NotFoundError` con
|
|
18
|
+
`spei_calendar_year_not_covered`.
|
|
19
|
+
- `validations.validateOcr()` y `validations.enqueueOcr()` aceptan `bancoEmisor` y `bancoReceptor`:
|
|
20
|
+
la clave SPEI de 4 o 5 dígitos sustituye al banco leído del comprobante antes de consultar a
|
|
21
|
+
Banxico.
|
|
22
|
+
- `validations.list()`, `validations.stats()` y `validations.export()` aceptan `banks`, hasta 50
|
|
23
|
+
claves SPEI en lista o separadas por comas; filtra por banco emisor o receptor.
|
|
24
|
+
- `webhooks.deliveries()`, `webhooks.iterDeliveries()` y `webhooks.exportDeliveries()` aceptan
|
|
25
|
+
`responseStatus`, `validationId`, `q`, `from`, `to`, `minAttempt` y `minResponseTimeMs`.
|
|
26
|
+
`status`, `eventType` y `responseStatus` admiten una lista, y el endpoint una lista de hasta 20.
|
|
27
|
+
Nuevo tipo `DeliveryFilters`.
|
|
28
|
+
|
|
29
|
+
## [0.4.12] — 2026-10-02
|
|
30
|
+
|
|
31
|
+
### Añadido
|
|
32
|
+
|
|
33
|
+
- `validations.recheck()` (`POST /v1/validations/{id}/recheck`): vuelve a consultar a Banxico el
|
|
34
|
+
estado de pago de una validación `valid` creada hace 72 horas como máximo, sin consumir cuota.
|
|
35
|
+
Devuelve `RecheckResult` con la validación y con `checkedAt`, `changed` y `previousStatus`. Si
|
|
36
|
+
Banxico reporta la devolución, la validación pasa a `returned`. No se reintenta sola.
|
|
37
|
+
- `validations.preparePurge()` y `validations.executePurge()`: el borrado definitivo de una
|
|
38
|
+
validación, en dos pasos. Devuelven `PurgePreparation` y `PurgeResult`. `executePurge()` no se
|
|
39
|
+
reintenta sola. Los tipos de `Validation` añaden `purged_at`.
|
|
40
|
+
- `cuentasCandidatas` en `validateTransfer()`, `validations.validate()`, `validations.validateOcr()`,
|
|
41
|
+
`validations.enqueue()` y `validations.enqueueOcr()`: de 2 a 3 cuentas en una sola validación y con
|
|
42
|
+
una sola unidad de cuota. Los tipos de `Validation` añaden `candidate_match`, con la posición y los
|
|
43
|
+
últimos 4 dígitos de la cuenta que coincidió.
|
|
44
|
+
- `retainImage` en `validations.validateOcr()` y `validations.enqueueOcr()`, y `image_retained` en los
|
|
45
|
+
tipos de `Validation`: con `retainImage: false` la plataforma no conserva el archivo del
|
|
46
|
+
comprobante.
|
|
47
|
+
- El evento `validation.returned` en `WEBHOOK_EVENTS`, que avisa cuando una validación `valid` pasa
|
|
48
|
+
después a `returned`, y `payment_status` (`PaymentStatus`) en `evento.data.attributes`.
|
|
49
|
+
|
|
50
|
+
### Cambiado
|
|
51
|
+
|
|
52
|
+
- `cuentaBeneficiaria` deja de ser obligatoria cuando se envía `cuentasCandidatas`. Sin ninguna de
|
|
53
|
+
las dos, el SDK lanza `InvalidRequestError` con `cuenta_required`, y con las dos, con
|
|
54
|
+
`cuenta_y_candidatas_excluyentes`. En los dos casos no llama a la API.
|
|
55
|
+
|
|
10
56
|
## [0.4.11] — 2026-10-01
|
|
11
57
|
|
|
12
58
|
### Añadido
|
package/README.md
CHANGED
|
@@ -46,25 +46,27 @@ La API consulta el CEP y devuelve un veredicto en el campo `status`:
|
|
|
46
46
|
| `invalid` | Los datos enviados no forman una consulta válida |
|
|
47
47
|
| `error` | Fallo durante el procesamiento; el motivo viaja en `error_code` |
|
|
48
48
|
|
|
49
|
-
Con veredicto `valid`, el comprobante queda disponible en XML y en PDF.
|
|
49
|
+
Con veredicto `valid`, el comprobante queda disponible en XML y en PDF. Un `valid` es el veredicto
|
|
50
|
+
del momento de la consulta: Banxico puede reportar la devolución hasta 72 horas después, y la
|
|
51
|
+
validación pasa a `returned`.
|
|
50
52
|
|
|
51
53
|
## Las familias de operaciones
|
|
52
54
|
|
|
53
|
-
El cliente agrupa las
|
|
54
|
-
|
|
55
|
-
| familia | qué cubre
|
|
56
|
-
| ---------------------- |
|
|
57
|
-
| `client.validations` | Validar por campos o por imagen, consultar, listar, exportar, la política de reintentos y la descarga del comprobante |
|
|
58
|
-
| `client.webhooks` | Registrar endpoints, rotar su secreto, enviar un evento de prueba y leer el historial de entregas
|
|
59
|
-
| `client.catalog` | Catálogo de bancos SPEI, banco emisor de una tarjeta y estado del servicio de Banxico |
|
|
60
|
-
| `client.beneficiaries` | Cuentas beneficiarias guardadas y la importación masiva, como ciclo completo
|
|
61
|
-
| `client.usage` | Cuota de validaciones, límites de tasa y registro de actividad de la API
|
|
62
|
-
| `client.account` | Perfil y política de reintentos predeterminada de la cuenta
|
|
63
|
-
| `client.dashboard` | Resumen del panel
|
|
64
|
-
| `client.plans` | Catálogo y comparación de planes públicos, sin clave de API
|
|
65
|
-
| `client.insights` | Resumen, tendencias, bancos y beneficiarios principales
|
|
66
|
-
| `client.finance` | Resumen, estado de cuenta, vistas previas y descargas financieras
|
|
67
|
-
| `client.billing` | Suscripción activa
|
|
55
|
+
El cliente agrupa las 70 operaciones M2M de la API en once familias:
|
|
56
|
+
|
|
57
|
+
| familia | qué cubre |
|
|
58
|
+
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
59
|
+
| `client.validations` | Validar por campos o por imagen, consultar, listar, exportar, revisar el estado de pago, borrar, la política de reintentos y la descarga del comprobante |
|
|
60
|
+
| `client.webhooks` | Registrar endpoints, rotar su secreto, enviar un evento de prueba y leer el historial de entregas |
|
|
61
|
+
| `client.catalog` | Catálogo de bancos SPEI, calendario de días inhábiles SPEI, banco emisor de una tarjeta y estado del servicio de Banxico |
|
|
62
|
+
| `client.beneficiaries` | Cuentas beneficiarias guardadas y la importación masiva, como ciclo completo |
|
|
63
|
+
| `client.usage` | Cuota de validaciones, límites de tasa y registro de actividad de la API |
|
|
64
|
+
| `client.account` | Perfil y política de reintentos predeterminada de la cuenta |
|
|
65
|
+
| `client.dashboard` | Resumen del panel |
|
|
66
|
+
| `client.plans` | Catálogo y comparación de planes públicos, sin clave de API |
|
|
67
|
+
| `client.insights` | Resumen, tendencias, bancos y beneficiarios principales |
|
|
68
|
+
| `client.finance` | Resumen, estado de cuenta, vistas previas y descargas financieras |
|
|
69
|
+
| `client.billing` | Suscripción activa |
|
|
68
70
|
|
|
69
71
|
Las tres operaciones de uso más frecuente están también en la raíz del cliente, como atajo:
|
|
70
72
|
`validateTransfer()`, `getValidation()` y `getCep()`.
|
|
@@ -102,7 +104,8 @@ const client = new Veriko({ apiKey: 'veriko_tu_clave_aqui' });
|
|
|
102
104
|
La operación exige la fecha de envío, el importe, la cuenta beneficiaria y **la clave de rastreo
|
|
103
105
|
o la referencia numérica**. Enviar las dos precisa la búsqueda. El banco emisor y el receptor son
|
|
104
106
|
opcionales y mejoran la identificación. La API rechaza con `422` (`preflight_failed`) una petición
|
|
105
|
-
sin
|
|
107
|
+
sin cuenta: no la busca entre los beneficiarios guardados. Cuando no se sabe cuál fue la cuenta,
|
|
108
|
+
`cuentasCandidatas` sustituye a `cuentaBeneficiaria`.
|
|
106
109
|
|
|
107
110
|
```ts
|
|
108
111
|
import { Veriko } from '@veriko-mx/sdk';
|
|
@@ -142,6 +145,12 @@ El SDK lee el archivo y lo codifica en base64. `imageUrl` recibe un comprobante
|
|
|
142
145
|
HTTPS, y si se envían `image` e `imageUrl`, la API sólo considera `image`. Formatos: JPEG, PNG, WebP
|
|
143
146
|
o PDF de 1 a 3 páginas, de hasta 12 MB.
|
|
144
147
|
|
|
148
|
+
`cuentasCandidatas` reemplaza a `cuentaBeneficiaria` cuando la imagen no muestra la cuenta.
|
|
149
|
+
|
|
150
|
+
`bancoEmisor` y `bancoReceptor` corrigen el banco que se leyó del comprobante. Llevan la clave SPEI
|
|
151
|
+
de 4 o 5 dígitos (`'40012'`), que sustituye a la leída antes de consultar a Banxico; un valor con
|
|
152
|
+
otro formato, como un nombre, se ignora y se conserva el leído.
|
|
153
|
+
|
|
145
154
|
El comprobante de una validación por OCR se descarga con `client.validations.image(id)`.
|
|
146
155
|
|
|
147
156
|
### Sin esperar al veredicto
|
|
@@ -203,6 +212,50 @@ dígitos de la cuenta enviada (`sent_last4`) y de la que muestra la imagen (`rea
|
|
|
203
212
|
validación por OCR. Ninguno cambia el veredicto, y los dos están ausentes cuando la API no los
|
|
204
213
|
informa.
|
|
205
214
|
|
|
215
|
+
### Varias cuentas candidatas
|
|
216
|
+
|
|
217
|
+
`cuentasCandidatas` lleva de 2 a 3 cuentas en una sola validación, con una sola unidad de cuota.
|
|
218
|
+
|
|
219
|
+
```ts
|
|
220
|
+
const validation = await client.validateTransfer({
|
|
221
|
+
fecha: '2025-03-15',
|
|
222
|
+
monto: 15000.5,
|
|
223
|
+
claveRastreo: 'MXBA20250315001234',
|
|
224
|
+
cuentasCandidatas: ['012180004412345678', '002010077777777771'],
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
console.log(validation.attributes.candidate_match?.index); // posición en la lista enviada, desde 0
|
|
228
|
+
console.log(validation.attributes.candidate_match?.account_last4); // 7771
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
`validateOcr()`, `enqueue()` y `enqueueOcr()` también la aceptan. La API consulta las cuentas en el
|
|
232
|
+
orden enviado y adopta la primera que coincide con la transferencia. `attributes.candidate_match`
|
|
233
|
+
trae su posición y sus últimos 4 dígitos, y la cuenta completa queda en
|
|
234
|
+
`attributes.normalized_data.cuenta_beneficiaria`. El veredicto no cambia.
|
|
235
|
+
|
|
236
|
+
Se envía una de las dos formas, no las dos: el tipo de los argumentos lo impide, y con
|
|
237
|
+
`cuentaBeneficiaria` y `cuentasCandidatas` juntas, o sin ninguna, el SDK lanza
|
|
238
|
+
`InvalidRequestError` (`cuenta_y_candidatas_excluyentes` o `cuenta_required`) y no llama a la API.
|
|
239
|
+
Una lista que no cumple se rechaza con `422` (`cuentas_candidatas_invalidas`).
|
|
240
|
+
|
|
241
|
+
### Conservar el comprobante
|
|
242
|
+
|
|
243
|
+
La plataforma conserva el archivo de una validación por imagen, y `client.validations.image(id)` lo
|
|
244
|
+
descarga. Con `retainImage: false` lo borra en cuanto la validación llega a un estado terminal del
|
|
245
|
+
que ya no lo necesita. El veredicto y los datos extraídos se conservan.
|
|
246
|
+
|
|
247
|
+
```ts
|
|
248
|
+
const validation = await client.validations.validateOcr({
|
|
249
|
+
image: 'comprobante.png',
|
|
250
|
+
retainImage: false,
|
|
251
|
+
});
|
|
252
|
+
console.log(validation.attributes.image_retained); // false
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
`enqueueOcr()` también acepta `retainImage`. `image()` responde `410` con `image_not_retained`
|
|
256
|
+
cuando el archivo no se conserva, y la API rechaza con `422` (`invalid_retain_image`) un valor que
|
|
257
|
+
no es booleano.
|
|
258
|
+
|
|
206
259
|
### Listar y recorrer el historial
|
|
207
260
|
|
|
208
261
|
```ts
|
|
@@ -219,9 +272,10 @@ for await (const item of client.validations.iter({ from: '2025-03-01', to: '2025
|
|
|
219
272
|
`totalPages` y `hasNext`.
|
|
220
273
|
|
|
221
274
|
Los filtros (`status`, `type`, `from`, `to`, `search`, `playground`, `withDeleted`, `batchId`,
|
|
222
|
-
`bank`, `amountMin`, `amountMax`, `clientRef` y `retryState`) van en `camelCase`. `status` acepta un estado o una
|
|
275
|
+
`bank`, `banks`, `amountMin`, `amountMax`, `clientRef` y `retryState`) van en `camelCase`. `status` acepta un estado o una
|
|
223
276
|
lista, y `withDeleted: true` devuelve sólo las validaciones retiradas, mientras que `false` devuelve
|
|
224
|
-
sólo las activas.
|
|
277
|
+
sólo las activas. `banks` filtra por varios bancos a la vez: hasta 50 claves SPEI, en lista o
|
|
278
|
+
separadas por comas, y devuelve las validaciones cuyo banco emisor o receptor sea cualquiera de ellos.
|
|
225
279
|
|
|
226
280
|
Un listado trae menos campos que `get()`: no incluye los datos enviados, el resultado de Banxico ni
|
|
227
281
|
los enlaces al comprobante.
|
|
@@ -248,6 +302,59 @@ con `cep_not_available` y el SDK lanza `NotFoundError`.
|
|
|
248
302
|
Las descargas y las exportaciones devuelven el archivo y no un enlace: `content`, `contentType` y
|
|
249
303
|
el `filename` que propone la API en `Content-Disposition`.
|
|
250
304
|
|
|
305
|
+
## Revisar el pago después
|
|
306
|
+
|
|
307
|
+
`client.validations.recheck(id)` vuelve a consultar a Banxico el estado de pago de una validación
|
|
308
|
+
`valid` creada hace 72 horas como máximo, sin consumir cuota.
|
|
309
|
+
|
|
310
|
+
```ts
|
|
311
|
+
const result = await client.validations.recheck(validation.id);
|
|
312
|
+
|
|
313
|
+
console.log(result.changed); // true si pasó de valid a returned
|
|
314
|
+
console.log(result.previousStatus); // 'valid'
|
|
315
|
+
console.log(result.validation.attributes.status); // 'returned'
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Si Banxico reporta `devuelto` o `en_proceso_devolucion`, la validación pasa a `returned`, conserva su
|
|
319
|
+
CEP y la API emite el webhook `validation.returned`. El estado del pago queda en
|
|
320
|
+
`attributes.banxico_result._payment_status`. Una validación que ya estaba en `returned` responde su
|
|
321
|
+
estado actual sin consultar a Banxico, y `checkedAt` vale `null`.
|
|
322
|
+
|
|
323
|
+
Cada validación admite una consulta cada 10 minutos: antes, el SDK lanza `RateLimitError` con
|
|
324
|
+
`recheck_rate_limited`, y `retryAfter` trae los segundos que faltan. Una validación en otro estado,
|
|
325
|
+
o con más de 72 horas, lanza `InvalidRequestError` con `recheck_not_eligible` o
|
|
326
|
+
`recheck_window_expired`. Si Banxico no entrega un estado legible, lanza `ServerError` con
|
|
327
|
+
`recheck_unavailable`: la validación conserva su intervalo y se puede reintentar de inmediato.
|
|
328
|
+
|
|
329
|
+
## Borrar una validación
|
|
330
|
+
|
|
331
|
+
`client.validations.delete(id)` retira una validación del historial, pero el registro, el CEP, los
|
|
332
|
+
datos extraídos y el archivo del comprobante siguen existiendo. El borrado definitivo los elimina en
|
|
333
|
+
dos pasos: el primero describe lo que se borraría y emite un token de un solo uso, y el segundo lo
|
|
334
|
+
confirma.
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
const preparation = await client.validations.preparePurge(validation.id);
|
|
338
|
+
|
|
339
|
+
console.log(preparation.attributes.will_delete); // lo que se borraría
|
|
340
|
+
console.log(preparation.attributes.expires_in); // segundos de vigencia del token
|
|
341
|
+
|
|
342
|
+
const result = await client.validations.executePurge(validation.id, {
|
|
343
|
+
confirmationToken: preparation.attributes.confirmation_token,
|
|
344
|
+
});
|
|
345
|
+
console.log(result.attributes.purged_at, result.attributes.file_removal);
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**El borrado es irreversible y no devuelve cuota.** La validación queda como una lápida: conserva el
|
|
349
|
+
veredicto, las fechas y el monto, y trae `attributes.purged_at`. Después, el CEP, el comprobante, los
|
|
350
|
+
reintentos y `recheck()` responden `410` con `validation_purged`. `file_removal` vale `pending`
|
|
351
|
+
cuando algún archivo no se pudo borrar en ese momento y el barrido diario lo termina.
|
|
352
|
+
|
|
353
|
+
Una validación en curso lanza `ConflictError` con `purge_validation_in_progress`. Un token vencido,
|
|
354
|
+
mal formado o de otra validación lanza `InvalidRequestError`, y uno ya usado, `ConflictError` con
|
|
355
|
+
`confirmation_token_already_used`. Si la respuesta de `executePurge()` no llega,
|
|
356
|
+
`client.getValidation(id)` dice si el borrado se completó.
|
|
357
|
+
|
|
251
358
|
## Registrar un webhook
|
|
252
359
|
|
|
253
360
|
```ts
|
|
@@ -269,13 +376,29 @@ tres seguidos. Cuando eso pasa, el estado queda en `auto_disabled` y se reactiva
|
|
|
269
376
|
|
|
270
377
|
El historial de intentos está en `client.webhooks.deliveries()`, con o sin identificador de
|
|
271
378
|
endpoint, y se recorre con `iterDeliveries()`. `exportDeliveries()` lo descarga en CSV o en XLSX.
|
|
272
|
-
Los filtros
|
|
273
|
-
el SDK consulta ese listado con `endpoint_id`.
|
|
379
|
+
Los filtros sólo existen en el listado global: con un endpoint y un filtro, o con una lista de hasta
|
|
380
|
+
20 endpoints, el SDK consulta ese listado con `endpoint_id`.
|
|
381
|
+
|
|
382
|
+
```ts
|
|
383
|
+
const failed = await client.webhooks.deliveries({
|
|
384
|
+
status: ['failed', 'retrying'],
|
|
385
|
+
responseStatus: ['5xx', 'none'],
|
|
386
|
+
from: '2026-10-01',
|
|
387
|
+
minAttempt: 2,
|
|
388
|
+
});
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
`status`, `eventType` y `responseStatus` aceptan un valor o una lista. `responseStatus` admite un
|
|
392
|
+
código exacto (`404`), una familia (`'5xx'`) o `'none'` para las entregas sin respuesta. `from` y
|
|
393
|
+
`to` acotan la fecha de creación, `validationId` deja las de una validación, `minResponseTimeMs` las
|
|
394
|
+
respuestas lentas y `q` busca en el identificador, el endpoint, el evento, la validación y el código
|
|
395
|
+
HTTP. `exportDeliveries()` acepta los mismos filtros y `limit`.
|
|
274
396
|
|
|
275
397
|
## Catálogo y estado de Banxico
|
|
276
398
|
|
|
277
399
|
```ts
|
|
278
400
|
const banks = await client.catalog.banks(); // instituciones SPEI con su código
|
|
401
|
+
const calendar = await client.catalog.speiCalendar(2026); // días inhábiles SPEI del año
|
|
279
402
|
const card = await client.catalog.binLookup('455632'); // banco emisor de una tarjeta
|
|
280
403
|
const status = await client.catalog.banxicoStatus();
|
|
281
404
|
|
|
@@ -285,6 +408,12 @@ console.log(status.attributes.status); // 'operational'
|
|
|
285
408
|
`banxicoStatus()` sirve para distinguir un `cep_unavailable` propio de la transferencia de una caída
|
|
286
409
|
del servicio, y `banxicoTimeseries()` devuelve la serie de latencia o de veredictos por ventana.
|
|
287
410
|
|
|
411
|
+
`speiCalendar()` devuelve `SpeiCalendar`: `attributes.non_business_days` trae los días inhábiles de
|
|
412
|
+
lunes a viernes (`YYYY-MM-DD`), `attributes.source` la disposición de la CNBV publicada en el DOF y
|
|
413
|
+
`coveredYears` los años con calendario. Los sábados y los domingos son inhábiles siempre y no se
|
|
414
|
+
repiten en la lista. La consulta no consume cuota. Un año sin calendario se lanza como
|
|
415
|
+
`NotFoundError` con `spei_calendar_year_not_covered`.
|
|
416
|
+
|
|
288
417
|
## Beneficiarios
|
|
289
418
|
|
|
290
419
|
`client.beneficiaries` guarda las cuentas a las que se paga: CLABE, tarjeta o celular DiMo. El tipo
|
|
@@ -345,9 +474,9 @@ cuota. `breakdown()`, `heatmap()` y `apiUsage()` desglosan el consumo, y
|
|
|
345
474
|
|
|
346
475
|
## Lecturas condicionales
|
|
347
476
|
|
|
348
|
-
`client.validations.get()` y `client.catalog.
|
|
349
|
-
`ETag` en `etag`, y cuando nada cambió la API responde `304`,
|
|
350
|
-
`status` 304.
|
|
477
|
+
`client.validations.get()`, `client.catalog.banks()` y `client.catalog.speiCalendar()` admiten
|
|
478
|
+
`ifNoneMatch`. La respuesta trae el `ETag` en `etag`, y cuando nada cambió la API responde `304`,
|
|
479
|
+
que el SDK lanza como `ApiError` con `status` 304.
|
|
351
480
|
|
|
352
481
|
```ts
|
|
353
482
|
import { ApiError } from '@veriko-mx/sdk';
|
|
@@ -403,6 +532,32 @@ para decidir el código de respuesta aparte. La comparación es en tiempo consta
|
|
|
403
532
|
|
|
404
533
|
El receptor completo está en [`examples/express-webhook.mjs`](examples/express-webhook.mjs).
|
|
405
534
|
|
|
535
|
+
### Una devolución posterior
|
|
536
|
+
|
|
537
|
+
`validation.returned` avisa cuando una validación que había salido `valid` pasa después a
|
|
538
|
+
`returned`. El endpoint recibe sólo los eventos a los que se suscribió, así que hay que añadirlo
|
|
539
|
+
además de `validation.completed`:
|
|
540
|
+
|
|
541
|
+
```ts
|
|
542
|
+
const endpoint = await client.webhooks.create({
|
|
543
|
+
url: 'https://miapp.example.com/hooks/pagos',
|
|
544
|
+
events: ['validation.completed', 'validation.returned'],
|
|
545
|
+
});
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
El cuerpo es el de `validation.completed` más `attributes.payment_status`, que `parseWebhook()`
|
|
549
|
+
entrega en `evento.data.attributes.payment_status`:
|
|
550
|
+
|
|
551
|
+
```ts
|
|
552
|
+
if (evento.event === 'validation.returned') {
|
|
553
|
+
console.log(evento.data?.attributes.payment_status?.code); // devuelto o en_proceso_devolucion
|
|
554
|
+
}
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
`checked_at` es el instante de la consulta. En el resto de los eventos `payment_status` está
|
|
558
|
+
ausente. El evento no se emite al crear la validación: una operación que llega ya devuelta se
|
|
559
|
+
entrega con `validation.completed` y `status=returned`.
|
|
560
|
+
|
|
406
561
|
### Lo que Banxico confirmó
|
|
407
562
|
|
|
408
563
|
Cuando `banxico_status` es `valid`, o `returned` con CEP descargado, `evento.data.attributes`
|
|
@@ -460,7 +615,9 @@ Hay dos mecanismos distintos con el mismo nombre.
|
|
|
460
615
|
|
|
461
616
|
**Los del cliente** repiten una petición que falló por causas pasajeras. El SDK reintenta los
|
|
462
617
|
`5xx`, el `408` y el `429`, y respeta el `Retry-After` de la respuesta cuando lo trae. El resto de
|
|
463
|
-
los `4xx` no se reintenta, porque la petición hay que corregirla antes de repetirla.
|
|
618
|
+
los `4xx` no se reintenta, porque la petición hay que corregirla antes de repetirla. `recheck()` y
|
|
619
|
+
`executePurge()` no se reintentan solas: la primera tiene su propio tope de una consulta cada 10
|
|
620
|
+
minutos, y el borrado es irreversible.
|
|
464
621
|
|
|
465
622
|
```ts
|
|
466
623
|
const client = new Veriko({ maxRetries: 3 }); // 0 los desactiva; por omisión son 2
|
|
@@ -538,18 +695,19 @@ try {
|
|
|
538
695
|
}
|
|
539
696
|
```
|
|
540
697
|
|
|
541
|
-
| excepción | estado
|
|
542
|
-
| ---------------------------- |
|
|
543
|
-
| `AuthenticationError` | `401`
|
|
544
|
-
| `ForbiddenError` | `403`
|
|
545
|
-
| `NotFoundError` | `404`
|
|
546
|
-
| `ConflictError` | `409`
|
|
547
|
-
| `InvalidRequestError` | `400`, `413`, `422`
|
|
548
|
-
| `RateLimitError` | `429`
|
|
549
|
-
| `ServerError` | `5xx`
|
|
550
|
-
| `
|
|
551
|
-
| `
|
|
552
|
-
| `
|
|
698
|
+
| excepción | estado |
|
|
699
|
+
| ---------------------------- | -------------------------------------------------- |
|
|
700
|
+
| `AuthenticationError` | `401` |
|
|
701
|
+
| `ForbiddenError` | `403` |
|
|
702
|
+
| `NotFoundError` | `404` |
|
|
703
|
+
| `ConflictError` | `409` |
|
|
704
|
+
| `InvalidRequestError` | `400`, `413`, `422` |
|
|
705
|
+
| `RateLimitError` | `429` |
|
|
706
|
+
| `ServerError` | `5xx` |
|
|
707
|
+
| `ApiError` | Cualquier otro estado de la API, por ejemplo `410` |
|
|
708
|
+
| `ConnectionError` | Sin respuesta, con los reintentos agotados |
|
|
709
|
+
| `TimeoutError` | `waitFor()` o `importWait()` agotaron su tiempo |
|
|
710
|
+
| `SignatureVerificationError` | La firma de un webhook no cuadra |
|
|
553
711
|
|
|
554
712
|
Cada error de la API trae `requestId`, que identifica la petición en los registros del sistema.
|
|
555
713
|
|
|
@@ -581,7 +739,7 @@ completos, por si hace falta una operación que el SDK todavía no envuelve.
|
|
|
581
739
|
|
|
582
740
|
## Superficie M2M
|
|
583
741
|
|
|
584
|
-
El SDK cubre exactamente las
|
|
742
|
+
El SDK cubre exactamente las 70 operaciones del spec público: `security: []` para las públicas y
|
|
585
743
|
`ApiKeyAuth` para las autenticadas.
|
|
586
744
|
|
|
587
745
|
Entre ellas están el perfil y su política de reintentos, el resumen del panel, los dos endpoints
|
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.13";
|
|
11
11
|
export interface VerikoOptions {
|
|
12
12
|
/** La clave de API. Por omisión, `VERIKO_API_KEY`. */
|
|
13
13
|
apiKey?: string;
|
|
@@ -95,7 +95,8 @@ 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 `cuentaBeneficiaria`,
|
|
98
|
+
* La operación exige `cuentaBeneficiaria`, o `cuentasCandidatas` cuando no se
|
|
99
|
+
* sabe cuál fue la cuenta (una de las dos, no las dos), y `claveRastreo` o
|
|
99
100
|
* `referenciaNumerica`. Enviar las dos últimas precisa la búsqueda. La fecha
|
|
100
101
|
* es la de envío, en `YYYY-MM-DD`. `clientRef` es una referencia propia que
|
|
101
102
|
* vuelve en la validación y en los webhooks.
|
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,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
|
|
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;;;;;;;;;;;;;;;;;;OAkBG;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.13';
|
|
13
13
|
/**
|
|
14
14
|
* Cliente de la API de Veriko.
|
|
15
15
|
*
|
|
@@ -107,7 +107,8 @@ 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 `cuentaBeneficiaria`,
|
|
110
|
+
* La operación exige `cuentaBeneficiaria`, o `cuentasCandidatas` cuando no se
|
|
111
|
+
* sabe cuál fue la cuenta (una de las dos, no las dos), y `claveRastreo` o
|
|
111
112
|
* `referenciaNumerica`. Enviar las dos últimas precisa la búsqueda. La fecha
|
|
112
113
|
* es la de envío, en `YYYY-MM-DD`. `clientRef` es una referencia propia que
|
|
113
114
|
* vuelve en la validación y en los webhooks.
|
package/dist/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|