@veriko-mx/sdk 0.4.3

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.
Files changed (86) hide show
  1. package/CHANGELOG.md +186 -0
  2. package/LICENSE +21 -0
  3. package/README.md +566 -0
  4. package/dist/cjs/client.d.ts +128 -0
  5. package/dist/cjs/client.d.ts.map +1 -0
  6. package/dist/cjs/client.js +145 -0
  7. package/dist/cjs/client.js.map +1 -0
  8. package/dist/cjs/errors.d.ts +110 -0
  9. package/dist/cjs/errors.d.ts.map +1 -0
  10. package/dist/cjs/errors.js +133 -0
  11. package/dist/cjs/errors.js.map +1 -0
  12. package/dist/cjs/generated/openapi.d.ts +8404 -0
  13. package/dist/cjs/generated/openapi.d.ts.map +1 -0
  14. package/dist/cjs/generated/openapi.js +7 -0
  15. package/dist/cjs/generated/openapi.js.map +1 -0
  16. package/dist/cjs/http.d.ts +75 -0
  17. package/dist/cjs/http.d.ts.map +1 -0
  18. package/dist/cjs/http.js +237 -0
  19. package/dist/cjs/http.js.map +1 -0
  20. package/dist/cjs/index.d.ts +35 -0
  21. package/dist/cjs/index.d.ts.map +1 -0
  22. package/dist/cjs/index.js +91 -0
  23. package/dist/cjs/index.js.map +1 -0
  24. package/dist/cjs/internal.d.ts +40 -0
  25. package/dist/cjs/internal.d.ts.map +1 -0
  26. package/dist/cjs/internal.js +92 -0
  27. package/dist/cjs/internal.js.map +1 -0
  28. package/dist/cjs/package.json +3 -0
  29. package/dist/cjs/pagination.d.ts +41 -0
  30. package/dist/cjs/pagination.d.ts.map +1 -0
  31. package/dist/cjs/pagination.js +66 -0
  32. package/dist/cjs/pagination.js.map +1 -0
  33. package/dist/cjs/resources.d.ts +522 -0
  34. package/dist/cjs/resources.d.ts.map +1 -0
  35. package/dist/cjs/resources.js +1361 -0
  36. package/dist/cjs/resources.js.map +1 -0
  37. package/dist/cjs/types.d.ts +559 -0
  38. package/dist/cjs/types.d.ts.map +1 -0
  39. package/dist/cjs/types.js +117 -0
  40. package/dist/cjs/types.js.map +1 -0
  41. package/dist/cjs/webhooks.d.ts +54 -0
  42. package/dist/cjs/webhooks.d.ts.map +1 -0
  43. package/dist/cjs/webhooks.js +116 -0
  44. package/dist/cjs/webhooks.js.map +1 -0
  45. package/dist/esm/client.d.ts +128 -0
  46. package/dist/esm/client.d.ts.map +1 -0
  47. package/dist/esm/client.js +141 -0
  48. package/dist/esm/client.js.map +1 -0
  49. package/dist/esm/errors.d.ts +110 -0
  50. package/dist/esm/errors.d.ts.map +1 -0
  51. package/dist/esm/errors.js +117 -0
  52. package/dist/esm/errors.js.map +1 -0
  53. package/dist/esm/generated/openapi.d.ts +8404 -0
  54. package/dist/esm/generated/openapi.d.ts.map +1 -0
  55. package/dist/esm/generated/openapi.js +6 -0
  56. package/dist/esm/generated/openapi.js.map +1 -0
  57. package/dist/esm/http.d.ts +75 -0
  58. package/dist/esm/http.d.ts.map +1 -0
  59. package/dist/esm/http.js +229 -0
  60. package/dist/esm/http.js.map +1 -0
  61. package/dist/esm/index.d.ts +35 -0
  62. package/dist/esm/index.d.ts.map +1 -0
  63. package/dist/esm/index.js +33 -0
  64. package/dist/esm/index.js.map +1 -0
  65. package/dist/esm/internal.d.ts +40 -0
  66. package/dist/esm/internal.d.ts.map +1 -0
  67. package/dist/esm/internal.js +82 -0
  68. package/dist/esm/internal.js.map +1 -0
  69. package/dist/esm/package.json +3 -0
  70. package/dist/esm/pagination.d.ts +41 -0
  71. package/dist/esm/pagination.d.ts.map +1 -0
  72. package/dist/esm/pagination.js +62 -0
  73. package/dist/esm/pagination.js.map +1 -0
  74. package/dist/esm/resources.d.ts +522 -0
  75. package/dist/esm/resources.d.ts.map +1 -0
  76. package/dist/esm/resources.js +1346 -0
  77. package/dist/esm/resources.js.map +1 -0
  78. package/dist/esm/types.d.ts +559 -0
  79. package/dist/esm/types.d.ts.map +1 -0
  80. package/dist/esm/types.js +109 -0
  81. package/dist/esm/types.js.map +1 -0
  82. package/dist/esm/webhooks.d.ts +54 -0
  83. package/dist/esm/webhooks.d.ts.map +1 -0
  84. package/dist/esm/webhooks.js +109 -0
  85. package/dist/esm/webhooks.js.map +1 -0
  86. package/package.json +78 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,186 @@
1
+ # Registro de cambios
2
+
3
+ Formato de [Keep a Changelog](https://keepachangelog.com/es-ES/1.1.0/);
4
+ versiones según [SemVer](https://semver.org/lang/es/).
5
+
6
+ ## [No publicado]
7
+
8
+ Sin cambios todavía.
9
+
10
+ ## [0.4.3] — 2026-09-20
11
+
12
+ Sin cambios de superficie: `0.4.3` existe para arrancar la publicación.
13
+
14
+ npm no permite configurar un Trusted Publisher hasta que el paquete existe, y el
15
+ paquete no existe porque `0.3.1` se retiró. El workflow gana un camino de
16
+ arranque: si está el secreto `NPM_TOKEN` publica con él; si no está, borra la
17
+ línea de credencial y publica por OIDC, que es la vía definitiva. Retirar el
18
+ secreto devuelve el workflow al OIDC sin tocar el archivo.
19
+
20
+ `0.4.0`, `0.4.1` y `0.4.2` siguen libres en npm —nunca llegaron al registro, así
21
+ que no hay nada que reutilizar—, pero sus tags ya apuntan a commits sin el camino
22
+ de arranque y no se mueven. La única versión quemada es `0.3.1`, que sí estuvo
23
+ viva y se retiró.
24
+
25
+ ## [0.4.2] — 2026-09-19
26
+
27
+ Conserva la superficie de `0.4.1`. **No llegó a npm**: el workflow falló con
28
+ `404` en el `PUT`, porque la identidad que publica no tenía escritura sobre el
29
+ scope. La entrada original decía que era «la primera versión disponible
30
+ públicamente en npm»; se corrigió el 2026-09-20, porque nunca lo fue.
31
+
32
+ ## [0.4.1] — 2026-09-19
33
+
34
+ Intento de publicación pública. Conserva la superficie de `0.4.0` y corrige la
35
+ ruta del tarball que impidió que aquel workflow alcanzara el registro. **Tampoco
36
+ llegó a npm**, por el mismo `404` que `0.4.2`; la entrada decía que se había
37
+ despublicado, y no fue así — corregido el 2026-09-20. La única versión que llegó
38
+ a estar viva fue `0.3.1`.
39
+
40
+ ## [0.4.0] — 2026-09-19
41
+
42
+ ### Añadido
43
+
44
+ - Las 18 operaciones M2M que faltaban: perfil y política de reintentos de cuenta,
45
+ resumen del panel, planes públicos, insights, finanzas y suscripción. Los planes
46
+ públicos se solicitan sin cabecera `Authorization`.
47
+ - El candado de superficie compara las 66 operaciones completas del spec público,
48
+ ejercita rutas contra grabaciones sanitizadas en un servidor HTTP local y prueba
49
+ mutaciones de alta, baja y `known_gaps`.
50
+
51
+ ### Cambiado
52
+
53
+ - `validateAccount()` deja de formar parte del SDK: su operación ya no es M2M
54
+ pública. En `0.x` esta retirada es incompatible.
55
+ - Los reportes mensuales, por contraparte, por banco y contables usan `csv` por
56
+ omisión, igual que el contrato público. `preview` se solicita explícitamente.
57
+ - La publicación no se considera exitosa hasta que npm devuelve la versión sin
58
+ credenciales. Esto evita repetir el falso positivo de `0.3.1`, que quedó con
59
+ acceso restringido aunque el workflow terminara en verde.
60
+
61
+ ## [0.3.1] — 2026-09-19
62
+
63
+ Primer intento de publicación en npm como `@veriko-mx/sdk`. No cambia la
64
+ superficie del SDK respecto de `0.3.0`; el paquete quedó con acceso restringido
65
+ y no llegó a estar disponible públicamente.
66
+
67
+ Los cambios del producto se documentan en el
68
+ [changelog de la API](https://docs.veriko.mx/es/changelog).
69
+
70
+ ## [0.3.0] — 2026-09-18
71
+
72
+ La superficie pasa de 27 operaciones a 49: se suman las familias `beneficiaries` y
73
+ `usage`. Con ellas, el SDK cubre todas las operaciones de máquina a máquina de sus
74
+ cinco familias.
75
+
76
+ ### Añadido
77
+
78
+ - `client.beneficiaries`: registrar, listar, cambiar y archivar cuentas beneficiarias;
79
+ resolución de una cuenta en la lista propia (`lookup`); exportación en CSV y XLSX; y la
80
+ importación masiva como ciclo (`importTemplate`, `importStart`, `importStatus`,
81
+ `importPreview`, `iterImportPreview`, `importEditRow`, `importRemoveRow`,
82
+ `importCommit`, `importCancel` e `importWait`).
83
+ - `client.usage`: cuota del plan (`summary`), historial mensual (`history`), desglose por
84
+ operación (`breakdown`), límites de tasa (`limits`), mapa de calor (`heatmap`),
85
+ métricas de la API (`apiUsage`) y su exportación (`export`).
86
+ - Los tipos de las respuestas y de los argumentos de las dos familias, tomados del spec.
87
+ - `isImportSettled()` e `isImportTerminal()`: la condición que espera `importWait()`
88
+ (`preview_ready` o un estado final).
89
+ - Subida de archivos `multipart/form-data` en el transporte, sin dependencias de runtime, y
90
+ parámetros de consulta repetidos para el filtro `buckets` de la vista previa.
91
+ - `test/operations.test.ts` cubre las 49 operaciones, con sus cuerpos multipart.
92
+
93
+ ### Cambiado
94
+
95
+ - `TimeoutError` expone `resourceId`, el recurso que se esperaba, porque ahora lo lanzan
96
+ `waitFor()` y `importWait()`. `validationId` sigue disponible como alias.
97
+
98
+ ## [0.2.0] — 2026-09-18
99
+
100
+ La superficie pasa de 3 operaciones a 27: las familias `validations`, `webhooks`
101
+ y `catalog`.
102
+
103
+ ### Añadido
104
+
105
+ - `client.validations`: validación por imagen (`validateOcr`), modo asíncrono
106
+ (`enqueue`, `enqueueOcr`) con sondeo por `ETag` (`waitFor`), listado con
107
+ paginación (`list`, `iter`), estadísticas, exportación en CSV y XLSX, imagen
108
+ del comprobante, intentos de reintento, cambio de la política de reintentos,
109
+ cancelación, retirada del historial y envío del comprobante a Telegram.
110
+ - `client.webhooks`: registrar, listar, cambiar y retirar endpoints; evento de
111
+ prueba; rotación del secreto; historial de entregas con paginación
112
+ (`deliveries`, `iterDeliveries`) y su exportación.
113
+ - `client.catalog`: catálogo de bancos SPEI, banco emisor de una tarjeta y
114
+ estado del servicio de Banxico con su serie temporal.
115
+ - `Page<T>` y los iteradores `iter()` e `iterDeliveries()`, que son
116
+ `AsyncIterable` y piden la página siguiente sólo cuando la anterior se agota.
117
+ - `isSettled()`: distingue un veredicto firme de uno terminal que todavía puede
118
+ cambiar porque hay reintentos en marcha. Es lo que espera `waitFor()`.
119
+ - `TimeoutError`, que `waitFor()` lanza al agotar su tiempo.
120
+ - Los tipos de las respuestas y de los argumentos de las tres familias, tomados
121
+ del spec, y `operations` reexportado junto a `components` y `paths`.
122
+ - `OcrValidationRequest`, escrito a mano por el mismo `anyOf` que afecta a
123
+ `ValidationRequest`, con su candado en `test/spec.test.ts`.
124
+ - `test/operations.test.ts`: contrasta cada operación con el spec (método, ruta,
125
+ parámetros, cabeceras y campos del cuerpo), exige que sea de máquina a máquina
126
+ (que acepte la clave de API o sea pública) y comprueba que las familias del
127
+ spec no traigan operaciones así sin método.
128
+ - El ejemplo `examples/async-and-webhooks.mjs`.
129
+
130
+ ### Cambiado
131
+
132
+ - `validateTransfer()`, `getValidation()` y `getCep()` siguen en la raíz del
133
+ cliente y se comportan igual: ahora delegan en la familia correspondiente.
134
+ - `getValidation()` admite `ifNoneMatch`, y la validación que devuelve trae el
135
+ `etag` de la respuesta.
136
+ - `CepDocument` extiende `DownloadedFile`, el tipo de cualquier archivo que
137
+ devuelve la API.
138
+ - Una respuesta correcta que no es JSON, o que no trae `data`, se lanza como
139
+ `ApiError`. Antes era un `SyntaxError` o un `ConfigurationError`.
140
+ - `VERSION` se compara con `package.json` en las pruebas.
141
+
142
+ ### Pendiente para versiones siguientes
143
+
144
+ - Beneficiarios, con su importación masiva.
145
+ - Métricas de consumo.
146
+
147
+ ## [0.1.0] — 2026-09-18
148
+
149
+ Primera versión del SDK oficial de JavaScript y TypeScript.
150
+
151
+ ### Añadido
152
+
153
+ - `Veriko.validateTransfer()`: valida una transferencia SPEI contra el CEP de
154
+ Banxico (`POST /v1/validate`), con la política de reintentos de la API
155
+ (`retryPolicy`) y la cabecera `Idempotency-Key`.
156
+ - `Veriko.getValidation()`: lee una validación por su identificador, con el
157
+ estado del ciclo de reintentos.
158
+ - `Veriko.getCep()`: descarga el comprobante oficial en XML o en PDF.
159
+ - `verifyWebhook()` y `parseWebhook()`: verificación HMAC-SHA256 de la firma de
160
+ una entrega, con comparación en tiempo constante.
161
+ - Reintentos automáticos de los `5xx`, el `408` y el `429`, con espera
162
+ exponencial y respeto del `Retry-After` de la respuesta.
163
+ - Jerarquía de errores por estado HTTP, con el `code` de la API, el arreglo
164
+ completo de `errors` y el `requestId`.
165
+ - Tipos generados del spec público de OpenAPI (`spec/openapi.yaml`, copia de
166
+ `docs.veriko.mx/openapi.yaml`), versionados en `src/generated/openapi.ts`, y
167
+ reexportados como `components` y `paths`.
168
+ - Distribución dual ESM y CommonJS, sin dependencias de runtime. Node 18 o
169
+ superior.
170
+ - Ejemplos para Node (`examples/validate.mjs`) y para un webhook en Express
171
+ (`examples/express-webhook.mjs`).
172
+
173
+ ### Pendiente para versiones siguientes
174
+
175
+ - Modo asíncrono (`?async=1`) y sondeo con `ETag`.
176
+ - Validación por OCR de una imagen de comprobante.
177
+ - Beneficiarios, importación masiva y finanzas.
178
+
179
+ [No publicado]: https://github.com/veriko-mx-labs/veriko-js/compare/v0.4.2...HEAD
180
+ [0.4.2]: https://github.com/veriko-mx-labs/veriko-js/releases/tag/v0.4.2
181
+ [0.4.1]: https://github.com/veriko-mx-labs/veriko-js/releases/tag/v0.4.1
182
+ [0.4.0]: https://github.com/veriko-mx-labs/veriko-js/releases/tag/v0.4.0
183
+ [0.3.1]: https://github.com/veriko-mx-labs/veriko-js/releases/tag/v0.3.1
184
+ [0.3.0]: https://github.com/veriko-mx-labs/veriko-js/releases/tag/v0.3.0
185
+ [0.2.0]: https://github.com/veriko-mx-labs/veriko-js/releases/tag/v0.2.0
186
+ [0.1.0]: https://github.com/veriko-mx-labs/veriko-js/releases/tag/v0.1.0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Veriko
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.