@veriko-mx/sdk 0.4.12 → 0.4.14

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 CHANGED
@@ -7,6 +7,33 @@ versiones según [SemVer](https://semver.org/lang/es/).
7
7
 
8
8
  Sin cambios todavía.
9
9
 
10
+ ## [0.4.14] — 2026-10-15
11
+
12
+ ### Añadido
13
+
14
+ - `beneficiaries.create()` devuelve `CreatedBeneficiary`, con `reactivated`: `true` cuando el alta reactivó una
15
+ cuenta archivada con el mismo número (la API responde `200` con `meta.reactivated`) y `false` en un alta
16
+ nueva.
17
+
18
+ ## [0.4.13] — 2026-10-15
19
+
20
+ ### Añadido
21
+
22
+ - `catalog.speiCalendar()` (`GET /v1/public/spei-calendar/{year}`): el calendario de días inhábiles
23
+ SPEI de un año. Devuelve `SpeiCalendar`, con `non_business_days` y `source` en `attributes` y los
24
+ años con calendario en `coveredYears`. Admite `ifNoneMatch`, y su `ETag` queda en `etag`. No
25
+ consume cuota. Un año sin calendario se lanza como `NotFoundError` con
26
+ `spei_calendar_year_not_covered`.
27
+ - `validations.validateOcr()` y `validations.enqueueOcr()` aceptan `bancoEmisor` y `bancoReceptor`:
28
+ la clave SPEI de 4 o 5 dígitos sustituye al banco leído del comprobante antes de consultar a
29
+ Banxico.
30
+ - `validations.list()`, `validations.stats()` y `validations.export()` aceptan `banks`, hasta 50
31
+ claves SPEI en lista o separadas por comas; filtra por banco emisor o receptor.
32
+ - `webhooks.deliveries()`, `webhooks.iterDeliveries()` y `webhooks.exportDeliveries()` aceptan
33
+ `responseStatus`, `validationId`, `q`, `from`, `to`, `minAttempt` y `minResponseTimeMs`.
34
+ `status`, `eventType` y `responseStatus` admiten una lista, y el endpoint una lista de hasta 20.
35
+ Nuevo tipo `DeliveryFilters`.
36
+
10
37
  ## [0.4.12] — 2026-10-02
11
38
 
12
39
  ### Añadido
package/README.md CHANGED
@@ -52,13 +52,13 @@ validación pasa a `returned`.
52
52
 
53
53
  ## Las familias de operaciones
54
54
 
55
- El cliente agrupa las 69 operaciones M2M de la API en once familias:
55
+ El cliente agrupa las 70 operaciones M2M de la API en once familias:
56
56
 
57
57
  | familia | qué cubre |
58
58
  | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
59
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
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, banco emisor de una tarjeta y estado del servicio de Banxico |
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
62
  | `client.beneficiaries` | Cuentas beneficiarias guardadas y la importación masiva, como ciclo completo |
63
63
  | `client.usage` | Cuota de validaciones, límites de tasa y registro de actividad de la API |
64
64
  | `client.account` | Perfil y política de reintentos predeterminada de la cuenta |
@@ -147,6 +147,10 @@ o PDF de 1 a 3 páginas, de hasta 12 MB.
147
147
 
148
148
  `cuentasCandidatas` reemplaza a `cuentaBeneficiaria` cuando la imagen no muestra la cuenta.
149
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
+
150
154
  El comprobante de una validación por OCR se descarga con `client.validations.image(id)`.
151
155
 
152
156
  ### Sin esperar al veredicto
@@ -268,9 +272,10 @@ for await (const item of client.validations.iter({ from: '2025-03-01', to: '2025
268
272
  `totalPages` y `hasNext`.
269
273
 
270
274
  Los filtros (`status`, `type`, `from`, `to`, `search`, `playground`, `withDeleted`, `batchId`,
271
- `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
272
276
  lista, y `withDeleted: true` devuelve sólo las validaciones retiradas, mientras que `false` devuelve
273
- 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.
274
279
 
275
280
  Un listado trae menos campos que `get()`: no incluye los datos enviados, el resultado de Banxico ni
276
281
  los enlaces al comprobante.
@@ -371,13 +376,29 @@ tres seguidos. Cuando eso pasa, el estado queda en `auto_disabled` y se reactiva
371
376
 
372
377
  El historial de intentos está en `client.webhooks.deliveries()`, con o sin identificador de
373
378
  endpoint, y se recorre con `iterDeliveries()`. `exportDeliveries()` lo descarga en CSV o en XLSX.
374
- Los filtros `status` y `eventType` sólo existen en el listado global: con un endpoint y un filtro,
375
- 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`.
376
396
 
377
397
  ## Catálogo y estado de Banxico
378
398
 
379
399
  ```ts
380
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
381
402
  const card = await client.catalog.binLookup('455632'); // banco emisor de una tarjeta
382
403
  const status = await client.catalog.banxicoStatus();
383
404
 
@@ -387,6 +408,12 @@ console.log(status.attributes.status); // 'operational'
387
408
  `banxicoStatus()` sirve para distinguir un `cep_unavailable` propio de la transferencia de una caída
388
409
  del servicio, y `banxicoTimeseries()` devuelve la serie de latencia o de veredictos por ventana.
389
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
+
390
417
  ## Beneficiarios
391
418
 
392
419
  `client.beneficiaries` guarda las cuentas a las que se paga: CLABE, tarjeta o celular DiMo. El tipo
@@ -402,6 +429,10 @@ const found = await client.beneficiaries.lookup('012180004412345678'); // la cue
402
429
  console.log(found.attributes.bank_name);
403
430
  ```
404
431
 
432
+ Registrar una cuenta archivada la reactiva: la API responde `200` en vez de `201` y `beneficiary.reactivated`
433
+ es `true`. Sin `label`, la cuenta conserva su alias. Registrar una cuenta que ya está activa se lanza como
434
+ `InvalidRequestError` con `beneficiary_already_registered`.
435
+
405
436
  La lista completa se recorre con `client.beneficiaries.list()`, que no pagina, y `delete()` archiva una cuenta sin
406
437
  borrarla: `list({ withArchived: true })` devuelve sólo las archivadas. `export()` la descarga en CSV o en
407
438
  XLSX.
@@ -447,9 +478,9 @@ cuota. `breakdown()`, `heatmap()` y `apiUsage()` desglosan el consumo, y
447
478
 
448
479
  ## Lecturas condicionales
449
480
 
450
- `client.validations.get()` y `client.catalog.banks()` admiten `ifNoneMatch`. La respuesta trae el
451
- `ETag` en `etag`, y cuando nada cambió la API responde `304`, que el SDK lanza como `ApiError` con
452
- `status` 304.
481
+ `client.validations.get()`, `client.catalog.banks()` y `client.catalog.speiCalendar()` admiten
482
+ `ifNoneMatch`. La respuesta trae el `ETag` en `etag`, y cuando nada cambió la API responde `304`,
483
+ que el SDK lanza como `ApiError` con `status` 304.
453
484
 
454
485
  ```ts
455
486
  import { ApiError } from '@veriko-mx/sdk';
@@ -712,7 +743,7 @@ completos, por si hace falta una operación que el SDK todavía no envuelve.
712
743
 
713
744
  ## Superficie M2M
714
745
 
715
- El SDK cubre exactamente las 69 operaciones del spec público: `security: []` para las públicas y
746
+ El SDK cubre exactamente las 70 operaciones del spec público: `security: []` para las públicas y
716
747
  `ApiKeyAuth` para las autenticadas.
717
748
 
718
749
  Entre ellas están el perfil y su política de reintentos, el resumen del panel, los dos endpoints
@@ -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.12";
10
+ export declare const VERSION = "0.4.14";
11
11
  export interface VerikoOptions {
12
12
  /** La clave de API. Por omisión, `VERIKO_API_KEY`. */
13
13
  apiKey?: string;
@@ -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';
12
+ exports.VERSION = '0.4.14';
13
13
  /**
14
14
  * Cliente de la API de Veriko.
15
15
  *