@veriko-mx/sdk 0.4.12 → 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 CHANGED
@@ -7,6 +7,25 @@ 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
+
10
29
  ## [0.4.12] — 2026-10-02
11
30
 
12
31
  ### 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
@@ -447,9 +474,9 @@ cuota. `breakdown()`, `heatmap()` y `apiUsage()` desglosan el consumo, y
447
474
 
448
475
  ## Lecturas condicionales
449
476
 
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.
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.
453
480
 
454
481
  ```ts
455
482
  import { ApiError } from '@veriko-mx/sdk';
@@ -712,7 +739,7 @@ completos, por si hace falta una operación que el SDK todavía no envuelve.
712
739
 
713
740
  ## Superficie M2M
714
741
 
715
- El SDK cubre exactamente las 69 operaciones del spec público: `security: []` para las públicas y
742
+ El SDK cubre exactamente las 70 operaciones del spec público: `security: []` para las públicas y
716
743
  `ApiKeyAuth` para las autenticadas.
717
744
 
718
745
  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.13";
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.13';
13
13
  /**
14
14
  * Cliente de la API de Veriko.
15
15
  *