apacuana-sdk-core 0.11.0 → 0.13.0

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 (49) hide show
  1. package/README.md +131 -164
  2. package/coverage/clover.xml +338 -302
  3. package/coverage/coverage-final.json +9 -9
  4. package/coverage/lcov-report/index.html +31 -31
  5. package/coverage/lcov-report/src/api/certs.js.html +1 -1
  6. package/coverage/lcov-report/src/api/faceLiveness.js.html +34 -7
  7. package/coverage/lcov-report/src/api/index.html +13 -13
  8. package/coverage/lcov-report/src/api/revocations.js.html +50 -5
  9. package/coverage/lcov-report/src/api/signatures.js.html +17 -56
  10. package/coverage/lcov-report/src/api/users.js.html +20 -5
  11. package/coverage/lcov-report/src/config/index.html +1 -1
  12. package/coverage/lcov-report/src/config/index.js.html +1 -1
  13. package/coverage/lcov-report/src/errors/index.html +1 -1
  14. package/coverage/lcov-report/src/errors/index.js.html +8 -8
  15. package/coverage/lcov-report/src/index.html +13 -13
  16. package/coverage/lcov-report/src/index.js.html +59 -14
  17. package/coverage/lcov-report/src/success/index.html +1 -1
  18. package/coverage/lcov-report/src/success/index.js.html +5 -5
  19. package/coverage/lcov-report/src/utils/constant.js.html +1 -1
  20. package/coverage/lcov-report/src/utils/helpers.js.html +277 -16
  21. package/coverage/lcov-report/src/utils/httpClient.js.html +32 -17
  22. package/coverage/lcov-report/src/utils/index.html +22 -22
  23. package/coverage/lcov.info +641 -561
  24. package/dist/api/revocations.d.ts +6 -3
  25. package/dist/api/users.d.ts +16 -6
  26. package/dist/index.d.ts +0 -2
  27. package/dist/index.js +149 -147
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +149 -147
  30. package/dist/index.mjs.map +1 -1
  31. package/dist/types/faceLiveness.d.ts +6 -5
  32. package/dist/types/revocations.d.ts +26 -15
  33. package/dist/types/signatures.d.ts +73 -63
  34. package/dist/utils/helpers.d.ts +4 -2
  35. package/package.json +1 -1
  36. package/src/api/faceLiveness.js +13 -4
  37. package/src/api/revocations.js +18 -3
  38. package/src/api/signatures.js +8 -21
  39. package/src/api/users.js +8 -3
  40. package/src/index.js +22 -7
  41. package/src/types/faceLiveness.js +11 -2
  42. package/src/types/revocations.js +29 -9
  43. package/src/types/signatures.js +47 -28
  44. package/src/utils/helpers.js +95 -8
  45. package/src/utils/httpClient.js +15 -10
  46. package/tests/api/faceLiveness.test.js +28 -30
  47. package/tests/api/revocations.test.js +4 -4
  48. package/tests/api/signatures.test.js +73 -16
  49. package/tests/index.test.js +16 -8
package/README.md CHANGED
@@ -1,49 +1,22 @@
1
1
  # Apacuana SDK Core
2
2
 
3
3
  ## Descripción
4
-
5
- Apacuana SDK Core es una biblioteca de JavaScript que proporciona una interfaz para interactuar con los servicios de Apacuana, permitiendo la generación de certificados digitales, firma de documentos, y otras operaciones relacionadas con la identidad digital.
4
+ `Apacuana SDK Core` es una biblioteca de JavaScript que proporciona una interfaz para interactuar con los servicios de Apacuana, permitiendo la generación de certificados digitales, firma de documentos, y otras operaciones relacionadas con la identidad digital.
6
5
 
7
6
  ## Tabla de Contenidos
8
-
9
7
  - [Instalación](#instalación)
10
8
  - [Inicialización](#inicialización)
11
9
  - [Conceptos Clave](#conceptos-clave)
12
- - [Tipos de Integración](#tipos-de-integración)
13
10
  - [Interfaz Pública](#interfaz-pública)
14
- - [`init(config)`](#initconfig)
15
- - [`close()`](#close)
16
- - [`getConfig()`](#getconfig)
17
- - [`getCustomer()`](#getcustomer)
18
- - [`generateCert(encryptedCSR)`](#generatecertencryptedcsr)
19
- - [`getCertStatus(isCertificateInDevice)`](#getcertstatusiscertificateindevice)
20
- - [`getCertTypes()`](#getcerttypes)
21
- - [`getRequerimentsByTypeUser(params)`](#getrequerimentsbytypeuserparams)
22
- - [`requestCertificate(params)`](#requestcertificateparams)
23
- - [`addSigner(signerData)`](#addsignersignerdata)
24
- - [`getDocs(data)`](#getdocsdata)
25
- - [`getDigest(signData)`](#getdigestsigndata)
26
- - [`signDocument(signData)`](#signdocumentsigndata)
27
- - [`uploadSignatureVariant(data)`](#uploadsignaturevariantdata)
28
- - [`getSignatureVariant()`](#getsignaturevariant)
29
- - [`deleteSignatureVariant()`](#deletesignaturevariant)
30
- - [`createFaceLivenessSession()`](#createfacelivenesssession)
31
- - [`requestRevocation(params)`](#requestrevocationparams)
32
- - [`getRevocationReasons()`](#getrevocationreasons)
33
11
  - [Manejo de Errores](#manejo-de-errores)
34
- - [`ApacuanaSuccess`](#apacuanasuccess)
35
- - [`ApacuanaAPIError`](#apacuanaapierror)
36
- - [Listado de Códigos de Error](#listado-de-códigos-de-error)
37
12
  - [Licencia](#licencia)
38
13
 
39
14
  ## Instalación
40
-
41
15
  ```bash
42
16
  npm install apacuana-sdk-core
43
17
  ```
44
18
 
45
19
  ## Inicialización
46
-
47
20
  Antes de utilizar el SDK, debes inicializarlo con tu configuración.
48
21
 
49
22
  ```javascript
@@ -55,7 +28,7 @@ const config = {
55
28
  apiKey: "tu-api-key",
56
29
  verificationId: "tu-verification-id",
57
30
  customerId: "tu-customer-id",
58
- integrationType: "ONBOARDING", // o "ONPREMISE"
31
+ integrationType: "ONBOARDING", // o "onpremise"
59
32
  };
60
33
 
61
34
  try {
@@ -67,54 +40,45 @@ try {
67
40
  ```
68
41
 
69
42
  ## Conceptos Clave
70
-
71
43
  ### Tipos de Integración
72
-
73
44
  El SDK soporta dos tipos de integración (`integrationType`) que determinan cómo se interactúa con la plataforma de Apacuana:
74
45
 
75
46
  - **`ONBOARDING`**: En este modo, Apacuana gestiona la mayor parte del proceso, como el registro de usuarios y la generación de certificados. Es el modo recomendado y soportado para la mayoría de las integraciones.
76
- - **`ONPREMISE`**: Este modo de integración no está soportado actualmente y se reserva para uso futuro. La mayoría de las operaciones del SDK lanzarán un error `NOT_IMPLEMENTED` si se utiliza este tipo.
47
+
48
+ - **`onpremise`**: Este modo de integración no está soportado actualmente y se reserva para uso futuro. La mayoría de las operaciones del SDK lanzarán un error `NOT_IMPLEMENTED` si se utiliza este tipo.
77
49
 
78
50
  La elección del `integrationType` en la `init` es fundamental, ya que afecta a la disponibilidad y el comportamiento de muchos de los métodos del SDK.
79
51
 
80
52
  ## Interfaz Pública
81
-
82
53
  Todas las funciones asíncronas devuelven una instancia de `ApacuanaSuccess` si tienen éxito, o lanzan una `ApacuanaAPIError` si fallan.
83
54
 
84
55
  ### `init(config)`
85
-
86
56
  Inicializa el SDK.
87
57
 
88
- - **`config`**: Objeto de configuración.
58
+ - `config`: Objeto de configuración.
89
59
 
90
60
  ### `close()`
91
-
92
61
  Cierra la sesión del SDK y limpia la configuración.
93
62
 
94
63
  **Ejemplo:**
95
-
96
64
  ```javascript
97
65
  apacuana.close();
98
66
  console.log("Sesión del SDK cerrada.");
99
67
  ```
100
68
 
101
69
  ### `getConfig()`
102
-
103
70
  Devuelve la configuración actual.
104
71
 
105
72
  **Ejemplo:**
106
-
107
73
  ```javascript
108
74
  const currentConfig = apacuana.getConfig();
109
75
  console.log("Configuración actual:", currentConfig);
110
76
  ```
111
77
 
112
78
  ### `getCustomer()`
113
-
114
- Obtiene los datos del cliente.
79
+ Obtiene los datos del cliente. Este método es el punto de entrada para iniciar una sesión y obtener el token y la información del usuario.
115
80
 
116
81
  **Ejemplo:**
117
-
118
82
  ```javascript
119
83
  try {
120
84
  const response = await apacuana.getCustomer();
@@ -125,13 +89,12 @@ try {
125
89
  ```
126
90
 
127
91
  ### `generateCert(encryptedCSR)`
128
-
129
92
  Genera un nuevo certificado digital.
130
93
 
131
- - **`encryptedCSR`**: Objeto con la CSR encriptada.
94
+ - `encryptedCSR`: Objeto con la CSR encriptada.
95
+ - `csr` (String): El Certificate Signing Request encriptado.
132
96
 
133
97
  **Ejemplo:**
134
-
135
98
  ```javascript
136
99
  try {
137
100
  const csr = { csr: "MIIC...==" }; // CSR en formato Base64
@@ -143,13 +106,11 @@ try {
143
106
  ```
144
107
 
145
108
  ### `getCertStatus(isCertificateInDevice)`
146
-
147
109
  Obtiene el estado del certificado del usuario.
148
110
 
149
- - **`isCertificateInDevice`**: Booleano que indica si el certificado está en el dispositivo.
111
+ - `isCertificateInDevice` (Boolean): Indica si el certificado ya está almacenado localmente.
150
112
 
151
113
  **Ejemplo:**
152
-
153
114
  ```javascript
154
115
  try {
155
116
  const response = await apacuana.getCertStatus(false);
@@ -160,11 +121,9 @@ try {
160
121
  ```
161
122
 
162
123
  ### `getCertTypes()`
163
-
164
124
  Obtiene los tipos de certificados disponibles.
165
125
 
166
126
  **Ejemplo:**
167
-
168
127
  ```javascript
169
128
  try {
170
129
  const response = await apacuana.getCertTypes();
@@ -175,13 +134,12 @@ try {
175
134
  ```
176
135
 
177
136
  ### `getRequerimentsByTypeUser(params)`
137
+ Obtiene los requisitos para un tipo de certificado y usuario.
178
138
 
179
- Obtiene los requisitos para un tipo de usuario.
180
-
181
- - **`params`**: Objeto con la propiedad `type` (numérico).
139
+ - `params`: Objeto con los parámetros de la consulta.
140
+ - `type` (Number): El tipo de certificado.
182
141
 
183
142
  **Ejemplo:**
184
-
185
143
  ```javascript
186
144
  try {
187
145
  const response = await apacuana.getRequerimentsByTypeUser({ type: 1 });
@@ -191,56 +149,77 @@ try {
191
149
  }
192
150
  ```
193
151
 
194
- ### `requestCertificate(params)`
195
-
196
- Solicita un certificado.
197
-
198
- - **`params`**: Objeto con las propiedades `type` (numérico) y `documents` (array).
199
-
200
- **Ejemplo:**
201
-
202
- ```javascript
203
- try {
204
- const params = { type: 1, documents: ["doc1.pdf", "doc2.pdf"] };
205
- const response = await apacuana.requestCertificate(params);
206
- console.log("Solicitud de certificado enviada:", response.data);
207
- } catch (error) {
208
- console.error("Error al solicitar el certificado:", error.message);
209
- }
210
- ```
211
-
212
152
  ### `addSigner(signerData)`
213
153
 
214
- Añade un firmante a un documento.
215
-
216
- - **`signerData`**: Objeto con los datos del firmante.
217
-
218
- **Ejemplo:**
219
-
220
- ```javascript
221
- try {
222
- const signer = {
223
- name: "Contrato",
224
- reference: "REF-001",
225
- typedoc: "V",
226
- doc: "12345678",
227
- signature: [{ page: 1, x: 0.5, y: 0.5 }],
228
- };
229
- const response = await apacuana.addSigner(signer);
230
- console.log("Firmante añadido:", response.data);
231
- } catch (error) {
232
- console.error("Error al añadir firmante:", error.message);
233
- }
234
- ```
154
+ Añade un firmante a un documento. El comportamiento de esta función y sus campos obligatorios dependen del `integrationType` configurado durante la inicialización.
155
+
156
+ - **Para `integrationType: 'ONBOARDING'`**:
157
+ Esta integración requiere que el documento se envíe como un archivo (`File` object). La validación de los datos se realiza a través de un helper que exige los siguientes campos:
158
+
159
+ - **`signerData`**: Objeto con los datos del firmante y el documento.
160
+ - `name` (String, **obligatorio**): Nombre del documento.
161
+ - `document` (File, **obligatorio**): El archivo del documento a firmar (ej. un PDF). No se puede usar junto con `reference`.
162
+ - `reference` (String, **obligatorio**): Referencia única para un documento ya existente en la plataforma. No se puede usar junto con `document`.
163
+ - `typedoc` (String, **obligatorio**): Tipo de documento de identidad del firmante. Valores permitidos: `"V"`, `"P"`, `"E"`.
164
+ - `doc` (String, **obligatorio**): Número de documento de identidad del firmante.
165
+ - `signature` (Array, **obligatorio**): Un array de objetos que definen la posición de la firma. Debe contener al menos un objeto con:
166
+ - `page` (Number, **obligatorio**): Página donde se estampará la firma (entero positivo).
167
+ - `x` (Number, **obligatorio**): Coordenada X (de 0 a 1).
168
+ - `y` (Number, **obligatorio**): Coordenada Y (de 0 a 1).
169
+
170
+ **Ejemplo (`ONBOARDING`):**
171
+ ```javascript
172
+ try {
173
+ // documentFile debe ser una instancia de File
174
+ const documentFile = new File(["contenido"], "contrato.pdf", { type: "application/pdf" });
175
+
176
+ const signer = {
177
+ name: "Contrato",
178
+ document: documentFile,
179
+ typedoc: "V",
180
+ doc: "12345678",
181
+ signature: [{ page: 1, x: 0.5, y: 0.5 }],
182
+ };
183
+ const response = await apacuana.addSigner(signer);
184
+ console.log("Firmante añadido:", response.data);
185
+ } catch (error) {
186
+ console.error("Error al añadir firmante:", error.message);
187
+ }
188
+ ```
189
+
190
+ - **Para `integrationType: 'onpremise'`**:
191
+ En esta integración, el `signerData` se envía como un objeto JSON. El documento no se envía como un archivo. La validación es más flexible en el lado del cliente.
192
+
193
+ - **`signerData`**: Objeto con los datos del firmante.
194
+ - `name` (String): Nombre del documento.
195
+ - `reference` (String): Referencia única para el documento.
196
+ - `typedoc` (String): Tipo de documento de identidad del firmante.
197
+ - `doc` (String): Número de documento de identidad del firmante.
198
+ - `signature` (Array): Posición de la firma.
199
+
200
+ **Ejemplo (`onpremise`):**
201
+ ```javascript
202
+ try {
203
+ const signer = {
204
+ name: "Contrato",
205
+ reference: "REF-001",
206
+ typedoc: "V",
207
+ doc: "12345678",
208
+ signature: [{ page: 1, x: 0.5, y: 0.5 }],
209
+ };
210
+ const response = await apacuana.addSigner(signer);
211
+ console.log("Firmante añadido:", response.data);
212
+ } catch (error) {
213
+ console.error("Error al añadir firmante:", error.message);
214
+ }
215
+ ```
235
216
 
236
217
  ### `getDocs(data)`
237
-
238
218
  Obtiene una lista paginada de documentos.
239
219
 
240
- - **`data`**: Objeto con parámetros de paginación (`page`, `size`) y filtro (`status`).
220
+ - `data`: Objeto con parámetros de paginación (`page`, `size`) y filtro (`status`).
241
221
 
242
222
  **Ejemplo:**
243
-
244
223
  ```javascript
245
224
  try {
246
225
  const params = { page: 1, size: 10, status: 0 };
@@ -252,16 +231,19 @@ try {
252
231
  ```
253
232
 
254
233
  ### `getDigest(signData)`
234
+ Obtiene el digest de un documento para ser firmado. Un helper valida que se incluyan los siguientes campos obligatorios:
255
235
 
256
- Obtiene el digest de un documento para ser firmado.
257
-
258
- - **`signData`**: Objeto con `cert` y `signatureId`.
236
+ - **`signData`**: Objeto con los siguientes datos:
237
+ - `cert` (String, **obligatorio**): El certificado en formato Base64.
238
+ - `signatureId` (String, **obligatorio**): El ID de la firma que se está procesando.
259
239
 
260
240
  **Ejemplo:**
261
-
262
241
  ```javascript
263
242
  try {
264
- const params = { cert: "MIIC...==", signatureId: "sig-123" };
243
+ const params = {
244
+ cert: "MIIC...==", // Certificado en Base64
245
+ signatureId: "sig-123",
246
+ };
265
247
  const response = await apacuana.getDigest(params);
266
248
  console.log("Digest del documento:", response.data);
267
249
  } catch (error) {
@@ -270,17 +252,24 @@ try {
270
252
  ```
271
253
 
272
254
  ### `signDocument(signData)`
255
+ Firma un documento utilizando el digest firmado. Un helper valida que se incluyan los siguientes campos obligatorios:
273
256
 
274
- Firma un documento.
275
-
276
- - **`signData`**: Objeto con `signature`, `cert` y `signedDigest`.
257
+ - **`signData`**: Objeto con los siguientes datos:
258
+ - `signature` (Object, **obligatorio**): Objeto que contiene el ID de la firma y las posiciones.
259
+ - `id` (String, **obligatorio**): El ID de la firma.
260
+ - `positions` (Array, **obligatorio**): Un array de objetos para ajustar la posición de la firma.
261
+ - `cert` (String, **obligatorio**): El certificado en formato Base64.
262
+ - `signedDigest` (String, **obligatorio**): El digest del documento ya firmado.
263
+ - `document` (File, opcional): El archivo del documento, si es necesario para la integración.
277
264
 
278
265
  **Ejemplo:**
279
-
280
266
  ```javascript
281
267
  try {
282
268
  const params = {
283
- signature: { id: "sig-123" },
269
+ signature: {
270
+ id: "sig-123",
271
+ positions: [{ page: 1, x: 0.5, y: 0.5, status: 1 }]
272
+ },
284
273
  cert: "MIIC...==",
285
274
  signedDigest: "abc...",
286
275
  };
@@ -292,13 +281,11 @@ try {
292
281
  ```
293
282
 
294
283
  ### `uploadSignatureVariant(data)`
295
-
296
284
  Sube una imagen de firma.
297
285
 
298
- - **`data`**: Objeto con la propiedad `file` (instancia de `File`, tipo `image/png`).
286
+ - `data`: Objeto con la propiedad `file` (instancia de `File`, tipo `image/png`).
299
287
 
300
288
  **Ejemplo:**
301
-
302
289
  ```javascript
303
290
  // Este código se ejecutaría en un entorno de navegador
304
291
  const imageFile = new File(["..."], "firma.png", { type: "image/png" });
@@ -311,11 +298,9 @@ try {
311
298
  ```
312
299
 
313
300
  ### `getSignatureVariant()`
314
-
315
301
  Obtiene la imagen de la firma del usuario.
316
302
 
317
303
  **Ejemplo:**
318
-
319
304
  ```javascript
320
305
  try {
321
306
  const response = await apacuana.getSignatureVariant();
@@ -327,11 +312,9 @@ try {
327
312
  ```
328
313
 
329
314
  ### `deleteSignatureVariant()`
330
-
331
315
  Elimina la imagen de la firma del usuario.
332
316
 
333
317
  **Ejemplo:**
334
-
335
318
  ```javascript
336
319
  try {
337
320
  const response = await apacuana.deleteSignatureVariant();
@@ -342,11 +325,9 @@ try {
342
325
  ```
343
326
 
344
327
  ### `createFaceLivenessSession()`
345
-
346
328
  Crea una sesión de prueba de vida.
347
329
 
348
330
  **Ejemplo:**
349
-
350
331
  ```javascript
351
332
  try {
352
333
  const response = await apacuana.createFaceLivenessSession();
@@ -356,14 +337,27 @@ try {
356
337
  }
357
338
  ```
358
339
 
359
- ### `requestRevocation(params)`
340
+ ### `validateFaceLiveness({ sessionId })`
341
+ Valida el resultado de una sesión de prueba de vida.
342
+
343
+ - `sessionId` (String, **obligatorio**): El ID de la sesión de prueba de vida que se va a validar.
344
+
345
+ **Ejemplo:**
346
+ ```javascript
347
+ try {
348
+ const response = await apacuana.validateFaceLiveness({ sessionId: "your-session-id" });
349
+ console.log("Resultado de la validación:", response.data);
350
+ } catch (error) {
351
+ console.error("Error al validar la sesión de prueba de vida:", error.message);
352
+ }
353
+ ```
360
354
 
355
+ ### `requestRevocation(params)`
361
356
  Solicita la revocación de un certificado.
362
357
 
363
- - **`params`**: Objeto con la propiedad `reasonCode` (numérico).
358
+ - `params`: Objeto con la propiedad `reasonCode` (numérico).
364
359
 
365
360
  **Ejemplo:**
366
-
367
361
  ```javascript
368
362
  try {
369
363
  const response = await apacuana.requestRevocation({ reasonCode: 1 });
@@ -374,11 +368,9 @@ try {
374
368
  ```
375
369
 
376
370
  ### `getRevocationReasons()`
377
-
378
371
  Obtiene la lista de razones para la revocación.
379
372
 
380
373
  **Ejemplo:**
381
-
382
374
  ```javascript
383
375
  try {
384
376
  const response = await apacuana.getRevocationReasons();
@@ -389,51 +381,30 @@ try {
389
381
  ```
390
382
 
391
383
  ## Manejo de Errores
392
-
393
- El SDK utiliza dos clases personalizadas para gestionar los resultados de las operaciones asíncronas: `ApacuanaSuccess` para éxitos y `ApacuanaAPIError` para fallos.
384
+ El SDK utiliza dos clases personalizadas para gestionar los resultados: `ApacuanaSuccess` para éxitos y `ApacuanaAPIError` para fallos.
394
385
 
395
386
  ### `ApacuanaSuccess`
396
-
397
- Cuando una operación se completa correctamente, la promesa se resuelve con una instancia de `ApacuanaSuccess`. Esta clase encapsula la respuesta de la API y proporciona una estructura consistente para los datos devueltos.
387
+ Cuando una operación se completa correctamente, la promesa se resuelve con una instancia de `ApacuanaSuccess`.
398
388
 
399
389
  **Propiedades:**
400
-
401
390
  - `success` (Boolean): Siempre `true`.
402
391
  - `statusCode` (Number): El código de estado HTTP de la respuesta (ej. `200`).
403
392
  - `data` (Object): El cuerpo de la respuesta de la API.
404
393
 
405
- **Ejemplo de uso:**
406
-
407
- ```javascript
408
- try {
409
- // getCertTypes devuelve una instancia de ApacuanaSuccess
410
- const response = await apacuana.getCertTypes();
411
-
412
- console.log("La operación fue exitosa:", response.success); // true
413
- console.log("Tipos de certificados:", response.data);
414
- } catch (error) {
415
- // Manejo de errores (ver abajo)
416
- console.error(error);
417
- }
418
- ```
419
-
420
394
  ### `ApacuanaAPIError`
421
-
422
- Cuando la API devuelve un error o ocurre un problema durante la solicitud, la promesa es rechazada con una instancia de `ApacuanaAPIError`. Esta clase extiende el `Error` nativo de JavaScript y añade información contextual sobre el fallo.
395
+ Cuando la API devuelve un error, la promesa es rechazada con una instancia de `ApacuanaAPIError`.
423
396
 
424
397
  **Propiedades:**
425
-
426
398
  - `success` (Boolean): Siempre `false`.
427
399
  - `statusCode` (Number): El código de estado HTTP del error (ej. `400`, `404`, `500`).
428
- - `errorCode` (String): Un código de error específico de Apacuana (ej. `INVALID_PARAMS`, `NOT_IMPLEMENTED`).
400
+ - `errorCode` (String): Un código de error específico de Apacuana (ej. `INVALID_PARAMS`).
429
401
  - `message` (String): Una descripción legible del error.
430
402
 
431
403
  **Ejemplo de manejo de errores:**
432
-
433
404
  ```javascript
434
405
  try {
435
- // Forzamos un error pasando parámetros inválidos
436
- await apacuana.requestCertificate({ type: 999, documents: [] });
406
+ // Forzamos un error
407
+ await apacuana.addSigner({ doc: null });
437
408
  } catch (error) {
438
409
  if (error.name === "ApacuanaAPIError") {
439
410
  console.error("Ocurrió un error de la API de Apacuana:");
@@ -441,7 +412,6 @@ try {
441
412
  console.error("- Código de estado HTTP:", error.statusCode);
442
413
  console.error("- Código de error interno:", error.errorCode);
443
414
  } else {
444
- // Captura de otros errores inesperados (ej. problemas de red)
445
415
  console.error("Ocurrió un error inesperado:", error);
446
416
  }
447
417
  }
@@ -449,22 +419,19 @@ try {
449
419
 
450
420
  ### Listado de Códigos de Error
451
421
 
452
- A continuación se muestra una lista de los `errorCode` más comunes que puede devolver el SDK:
453
-
454
- | `errorCode` | Descripción |
455
- | :----------------------------- | :---------------------------------------------------------------------- |
456
- | `CONFIGURATION_ERROR` | Error en la configuración del SDK (ej. falta `apiKey`). |
457
- | `INVALID_API_RESPONSE` | La respuesta de la API no tiene el formato esperado. |
458
- | `INVALID_PARAMETER` | Uno o más parámetros de la función son inválidos. |
459
- | `INVALID_PARAMETER_FORMAT` | El formato de un parámetro es incorrecto. |
460
- | `LOGICAL_API_ERROR` | Error lógico devuelto por la API. |
461
- | `NETWORK_ERROR` | Error de red, CORS o timeout. |
462
- | `NOT_IMPLEMENTED` | La funcionalidad no está implementada para el `integrationType` actual. |
463
- | `UNSUPPORTED_HTTP_METHOD` | Se utilizó un método HTTP no soportado. |
464
- | `UNSUPPORTED_INTEGRATION_TYPE` | El `integrationType` no es válido. |
465
- | `UNKNOWN_REQUEST_ERROR` | Error desconocido durante la petición. |
466
- | `API_RESPONSE_ERROR` | La respuesta de la API contiene un error. |
422
+ | `errorCode` | Descripción |
423
+ | :--- | :--- |
424
+ | `CONFIGURATION_ERROR` | Error en la configuración del SDK (ej. falta `apiKey`). |
425
+ | `INVALID_API_RESPONSE` | La respuesta de la API no tiene el formato esperado. |
426
+ | `INVALID_PARAMETER` | Uno o más parámetros de la función son inválidos. |
427
+ | `INVALID_PARAMETER_FORMAT` | El formato de un parámetro es incorrecto. |
428
+ | `LOGICAL_API_ERROR` | Error lógico devuelto por la API. |
429
+ | `NETWORK_ERROR` | Error de red, CORS o timeout. |
430
+ | `NOT_IMPLEMENTED` | La funcionalidad no está implementada para el `integrationType` actual. |
431
+ | `UNSUPPORTED_HTTP_METHOD` | Se utilizó un método HTTP no soportado. |
432
+ | `UNSUPPORTED_INTEGRATION_TYPE` | El `integrationType` no es válido. |
433
+ | `UNKNOWN_REQUEST_ERROR` | Error desconocido durante la petición. |
434
+ | `API_RESPONSE_ERROR` | La respuesta de la API contiene un error. |
467
435
 
468
436
  ## Licencia
469
-
470
437
  Este SDK está distribuido bajo una licencia propietaria. Para más detalles, contacte con el equipo de Apacuana.