apacuana-sdk-core 0.5.0 → 0.6.2
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/README.md +128 -55
- package/babel.config.cjs +11 -0
- package/coverage/clover.xml +179 -170
- package/coverage/coverage-final.json +8 -8
- package/coverage/lcov-report/api/index.html +131 -0
- package/coverage/lcov-report/api/signatures.js.html +1093 -0
- package/coverage/lcov-report/api/users.js.html +292 -0
- package/coverage/lcov-report/config/index.html +116 -0
- package/coverage/lcov-report/config/index.js.html +208 -0
- package/coverage/lcov-report/errors/index.html +116 -0
- package/coverage/lcov-report/errors/index.js.html +148 -0
- package/coverage/lcov-report/index.html +26 -26
- package/coverage/lcov-report/src/api/certs.js.html +65 -35
- package/coverage/lcov-report/src/api/index.html +27 -27
- package/coverage/lcov-report/src/api/revocations.js.html +21 -3
- package/coverage/lcov-report/src/api/signatures.js.html +123 -18
- package/coverage/lcov-report/src/api/users.js.html +24 -3
- package/coverage/lcov-report/src/config/index.html +1 -1
- package/coverage/lcov-report/src/config/index.js.html +1 -1
- package/coverage/lcov-report/src/errors/index.html +1 -1
- package/coverage/lcov-report/src/errors/index.js.html +8 -8
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.js.html +9 -3
- package/coverage/lcov-report/src/utils/constant.js.html +3 -3
- package/coverage/lcov-report/src/utils/helpers.js.html +134 -32
- package/coverage/lcov-report/src/utils/httpClient.js.html +6 -72
- package/coverage/lcov-report/src/utils/index.html +20 -20
- package/coverage/lcov-report/utils/constant.js.html +145 -0
- package/coverage/lcov-report/utils/httpClient.js.html +646 -0
- package/coverage/lcov-report/utils/index.html +131 -0
- package/coverage/lcov.info +335 -298
- package/dist/api/certs.d.ts +17 -3
- package/dist/api/revocations.d.ts +17 -2
- package/dist/api/signatures.d.ts +18 -1
- package/dist/api/users.d.ts +22 -6
- package/dist/index.d.ts +4 -0
- package/dist/index.js +616 -242
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +616 -242
- package/dist/index.mjs.map +1 -1
- package/dist/utils/helpers.d.ts +3 -1
- package/jest.config.cjs +6 -1
- package/package.json +12 -7
- package/rollup.config.js +1 -1
- package/src/api/certs.js +21 -11
- package/src/api/revocations.js +7 -1
- package/src/api/signatures.js +43 -8
- package/src/api/users.js +8 -1
- package/src/index.js +3 -1
- package/src/utils/constant.js +2 -2
- package/src/utils/helpers.js +56 -22
- package/src/utils/httpClient.js +0 -22
- package/tests/api/certs.test.js +30 -48
- package/tsconfig.json +2 -1
- package/.babelrc +0 -3
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ Inicializa el SDK con la configuración proporcionada.
|
|
|
51
51
|
|
|
52
52
|
**Retorna:**
|
|
53
53
|
|
|
54
|
-
- Promise que se resuelve cuando la inicialización es exitosa
|
|
54
|
+
- `Promise<boolean>` que se resuelve a `true` cuando la inicialización es exitosa.
|
|
55
55
|
|
|
56
56
|
**Ejemplo:**
|
|
57
57
|
|
|
@@ -79,7 +79,7 @@ Obtiene la configuración actual del SDK.
|
|
|
79
79
|
|
|
80
80
|
**Retorna:**
|
|
81
81
|
|
|
82
|
-
- Object
|
|
82
|
+
- `Object`: Configuración actual del SDK
|
|
83
83
|
|
|
84
84
|
**Ejemplo:**
|
|
85
85
|
|
|
@@ -92,11 +92,11 @@ console.log("Configuración actual:", config);
|
|
|
92
92
|
|
|
93
93
|
Obtiene la información del cliente utilizando los datos de configuración.
|
|
94
94
|
|
|
95
|
-
**Parámetros:** Ninguno (utiliza verificationId y customerId de la configuración)
|
|
95
|
+
**Parámetros:** Ninguno (utiliza `verificationId` y `customerId` de la configuración)
|
|
96
96
|
|
|
97
97
|
**Retorna:**
|
|
98
98
|
|
|
99
|
-
- Promise que se resuelve con un objeto que contiene:
|
|
99
|
+
- `Promise<GetCustomerResponse>` que se resuelve con un objeto que contiene:
|
|
100
100
|
- `token` (String): ID de sesión para autenticación.
|
|
101
101
|
- `userData` (Object): Datos del usuario.
|
|
102
102
|
- `success` (Boolean): Indicador de éxito de la operación.
|
|
@@ -135,7 +135,7 @@ Si alguna de estas validaciones falla, la función lanzará una `ApacuanaAPIErro
|
|
|
135
135
|
|
|
136
136
|
**Retorna:**
|
|
137
137
|
|
|
138
|
-
- `Promise
|
|
138
|
+
- `Promise<GenerateCertResponse>` que se resuelve con un objeto que contiene:
|
|
139
139
|
- `cert` (String): El certificado generado.
|
|
140
140
|
- `success` (Boolean): Indicador de éxito de la operación.
|
|
141
141
|
|
|
@@ -163,11 +163,13 @@ try {
|
|
|
163
163
|
|
|
164
164
|
Obtiene el estado actual del certificado del usuario.
|
|
165
165
|
|
|
166
|
-
**Parámetros:**
|
|
166
|
+
**Parámetros:**
|
|
167
|
+
|
|
168
|
+
- `isCertificateInDevice` (Boolean, opcional): Indica si el certificado ya se encuentra en el dispositivo. Por defecto es `false`.
|
|
167
169
|
|
|
168
170
|
**Retorna:**
|
|
169
171
|
|
|
170
|
-
- Un objeto que contiene:
|
|
172
|
+
- `GetCertStatusResponse`: Un objeto que contiene:
|
|
171
173
|
- `status` (String): El estado del certificado (ver sección de Estados de Certificado).
|
|
172
174
|
- `success` (Boolean): Indicador de éxito de la operación.
|
|
173
175
|
|
|
@@ -186,39 +188,67 @@ try {
|
|
|
186
188
|
|
|
187
189
|
### signDocument(signData)
|
|
188
190
|
|
|
189
|
-
Esta función
|
|
191
|
+
Firma un documento utilizando un certificado digital y un digest previamente firmado. Esta función es compatible únicamente con el flujo de integración `ONBOARDING`.
|
|
190
192
|
|
|
191
193
|
**Parámetros:**
|
|
192
194
|
|
|
193
|
-
- `signData` (
|
|
195
|
+
- `signData` (`SignDocumentData`): Un objeto que contiene los datos necesarios para la firma.
|
|
196
|
+
- `signature` (Object): Objeto con información de la firma.
|
|
197
|
+
- `id` (String): ID de la firma.
|
|
198
|
+
- `positions` (Array<Object>): Posiciones de la firma en el documento.
|
|
199
|
+
- `cert` (String): El certificado del firmante en formato base64.
|
|
200
|
+
- `signedDigest` (String): El digest del documento, ya firmado.
|
|
194
201
|
|
|
195
202
|
**Retorna:**
|
|
196
203
|
|
|
197
|
-
- `Promise<
|
|
204
|
+
- `Promise<object>`: Una promesa que se resuelve con la respuesta de la API tras completar la firma.
|
|
198
205
|
|
|
199
206
|
**Posibles `ApacuanaAPIError`:**
|
|
200
207
|
|
|
201
|
-
- `NOT_IMPLEMENTED`:
|
|
208
|
+
- `NOT_IMPLEMENTED`: Si se invoca con un `integrationType` diferente a `ONBOARDING`.
|
|
209
|
+
- `INVALID_PARAMETER`: Si los datos en `signData` son incorrectos o están incompletos.
|
|
210
|
+
|
|
211
|
+
**Ejemplo:**
|
|
212
|
+
|
|
213
|
+
```javascript
|
|
214
|
+
const signData = {
|
|
215
|
+
signature: {
|
|
216
|
+
id: "unique-signature-id",
|
|
217
|
+
positions: [{ page: 1, x: 0.5, y: 0.8 }],
|
|
218
|
+
},
|
|
219
|
+
cert: "base64-encoded-certificate",
|
|
220
|
+
signedDigest: "signed-digest-of-the-document",
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
try {
|
|
224
|
+
const response = await apacuana.signDocument(signData);
|
|
225
|
+
console.log("Documento firmado exitosamente:", response);
|
|
226
|
+
} catch (error) {
|
|
227
|
+
console.error("Error al firmar el documento:", error.message);
|
|
228
|
+
}
|
|
229
|
+
```
|
|
202
230
|
|
|
203
231
|
### getDigest(signData)
|
|
204
232
|
|
|
205
|
-
Obtiene el digest de un documento que se va a firmar.
|
|
233
|
+
Obtiene el `digest` de un documento que se va a firmar. Este `digest` es un resumen criptográfico del documento que luego debe ser firmado por el cliente.
|
|
206
234
|
|
|
207
|
-
|
|
235
|
+
**Parámetros:**
|
|
208
236
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
237
|
+
- `signData` (`GetDigestData`): Objeto que contiene los datos para la firma.
|
|
238
|
+
- `cert` (String): Certificado del firmante en formato PEM (codificado en base64).
|
|
239
|
+
- `signatureId` (String): Identificador único del proceso de firma.
|
|
212
240
|
|
|
213
|
-
|
|
241
|
+
**Retorna:**
|
|
214
242
|
|
|
243
|
+
- `Promise<GetDigestResponse>`: Un objeto que contiene:
|
|
215
244
|
- `digest` (String): El digest del documento a firmar.
|
|
216
245
|
- `success` (Boolean): Indicador de éxito de la operación.
|
|
217
246
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
247
|
+
**Posibles `ApacuanaAPIError`:**
|
|
248
|
+
|
|
249
|
+
- `INVALID_PARAMETER`: Si `cert` o `signatureId` no son válidos.
|
|
250
|
+
- `API_RESPONSE_ERROR`: Si la API no devuelve un digest.
|
|
251
|
+
- `NOT_IMPLEMENTED`: Si se llama con un `integrationType` no soportado (`ONPREMISE`).
|
|
222
252
|
|
|
223
253
|
### requestRevocation(reasonCode)
|
|
224
254
|
|
|
@@ -226,11 +256,13 @@ Solicita la revocación de un certificado.
|
|
|
226
256
|
|
|
227
257
|
**Parámetros:**
|
|
228
258
|
|
|
229
|
-
- `reasonCode` (String): Código que indica la razón de la revocación
|
|
259
|
+
- `reasonCode` (String): Código que indica la razón de la revocación (ej. "COMPROMISED").
|
|
230
260
|
|
|
231
261
|
**Retorna:**
|
|
232
262
|
|
|
233
|
-
- Promise que se resuelve con
|
|
263
|
+
- `Promise<RequestRevocationResponse>` que se resuelve con un objeto que contiene:
|
|
264
|
+
- `revocationStatus` (String): El estado de la solicitud (ej. "pending").
|
|
265
|
+
- `requestId` (String | Number): El ID de la solicitud de revocación.
|
|
234
266
|
|
|
235
267
|
**Ejemplo:**
|
|
236
268
|
|
|
@@ -243,47 +275,49 @@ try {
|
|
|
243
275
|
}
|
|
244
276
|
```
|
|
245
277
|
|
|
246
|
-
|
|
278
|
+
### getDocs(data)
|
|
247
279
|
|
|
248
280
|
Obtiene una lista de documentos paginada. El comportamiento de esta función varía según el `integrationType` configurado.
|
|
249
281
|
|
|
250
|
-
|
|
282
|
+
**Parámetros:**
|
|
251
283
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
284
|
+
- `data` (`GetDocsParams`): Objeto que contiene los parámetros para la consulta.
|
|
285
|
+
- `page` (Number): Número de página para la paginación.
|
|
286
|
+
- `size` (Number): Cantidad de resultados por página.
|
|
287
|
+
- `status` (Number, opcional): Filtra los documentos por su estado. Los valores permitidos son:
|
|
288
|
+
- `-1`: Rechazado
|
|
289
|
+
- `0`: Pendiente
|
|
290
|
+
- `1`: Firmado
|
|
291
|
+
- `2`: En proceso
|
|
260
292
|
|
|
261
|
-
|
|
293
|
+
**Retorna:**
|
|
262
294
|
|
|
295
|
+
- `Promise<GetDocsResponse>`: Un objeto que contiene:
|
|
263
296
|
- `totalRecords` (Number): El número total de documentos que coinciden con la consulta.
|
|
264
|
-
- `records` (Array): Un array de objetos, donde cada objeto es un documento.
|
|
297
|
+
- `records` (Array<Object>): Un array de objetos, donde cada objeto es un documento.
|
|
265
298
|
- `success` (Boolean): Indicador de éxito de la operación.
|
|
266
299
|
|
|
267
|
-
|
|
300
|
+
**Comportamiento por `integrationType`:**
|
|
268
301
|
|
|
269
|
-
|
|
270
|
-
|
|
302
|
+
- **`ONBOARDING`**: Obtiene los documentos asociados al `customerId` configurado.
|
|
303
|
+
- **`ONPREMISE`**: No soportado. Lanza un `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
|
|
271
304
|
|
|
272
|
-
|
|
305
|
+
**Ejemplo (`ONBOARDING`):**
|
|
273
306
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
307
|
+
```javascript
|
|
308
|
+
try {
|
|
309
|
+
const documents = await apacuana.getDocs({ page: 1, size: 10, status: 1 });
|
|
310
|
+
console.log("Documentos:", documents);
|
|
311
|
+
} catch (error) {
|
|
312
|
+
console.error("Error al obtener documentos:", error.message);
|
|
313
|
+
}
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**Posibles `ApacuanaAPIError`:**
|
|
282
317
|
|
|
283
|
-
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
- `NOT_IMPLEMENTED`: Si se llama con `integrationType` igual a `ONPREMISE`.
|
|
318
|
+
- `INVALID_PARAMETER`: Si `page`, `size` o `status` no son válidos.
|
|
319
|
+
- `CONFIGURATION_ERROR`: Si el `customerId` no está configurado en la inicialización.
|
|
320
|
+
- `NOT_IMPLEMENTED`: Si se llama con `integrationType` igual a `ONPREMISE`.
|
|
287
321
|
|
|
288
322
|
### addSigner(signerData)
|
|
289
323
|
|
|
@@ -336,7 +370,9 @@ Si alguna validación falla, se lanzará una `ApacuanaAPIError` con el código `
|
|
|
336
370
|
|
|
337
371
|
**Retorna:**
|
|
338
372
|
|
|
339
|
-
- `Promise
|
|
373
|
+
- `Promise<AddSignerResponse>` que se resuelve con un objeto que contiene:
|
|
374
|
+
- `signer` (String): Un identificador del firmante, construido a partir de `typedoc` y `doc`.
|
|
375
|
+
- `success` (Boolean): Indicador de éxito de la operación.
|
|
340
376
|
|
|
341
377
|
**Ejemplo (ONBOARDING):**
|
|
342
378
|
|
|
@@ -375,9 +411,8 @@ El SDK utiliza los siguientes estados para los certificados:
|
|
|
375
411
|
|
|
376
412
|
El SDK soporta los siguientes tipos de integración:
|
|
377
413
|
|
|
378
|
-
- `ONBOARDING`: Proceso de registro inicial y generación de certificado
|
|
379
|
-
- `
|
|
380
|
-
- `SIGNATURE`: Proceso de firma de documentos
|
|
414
|
+
- `ONBOARDING`: Proceso de registro inicial y generación de certificado.
|
|
415
|
+
- `ONPREMISE`: Integración donde el cliente gestiona su propia infraestructura. Algunas funcionalidades no están soportadas en este modo.
|
|
381
416
|
|
|
382
417
|
## Manejo de Errores
|
|
383
418
|
|
|
@@ -409,3 +444,41 @@ El SDK implementa las siguientes medidas de seguridad:
|
|
|
409
444
|
## Licencia
|
|
410
445
|
|
|
411
446
|
Este SDK está licenciado bajo términos propietarios. Consulte el acuerdo de licencia para más detalles.
|
|
447
|
+
|
|
448
|
+
#### `generateCert(encryptedCSR)`
|
|
449
|
+
|
|
450
|
+
Genera un nuevo certificado para un usuario ya existente.
|
|
451
|
+
|
|
452
|
+
- **Parámetros:**
|
|
453
|
+
- `encryptedCSR` (Object): Un objeto que contiene la Solicitud de Firma de Certificado (CSR) encriptada. Este objeto debe tener la siguiente estructura:
|
|
454
|
+
```json
|
|
455
|
+
{
|
|
456
|
+
"csr": "string"
|
|
457
|
+
}
|
|
458
|
+
```
|
|
459
|
+
Donde el valor de `csr` es la cadena de texto resultante de la encriptación.
|
|
460
|
+
|
|
461
|
+
- **Retorna:** `Promise<Object>`
|
|
462
|
+
- `Promise<GenerateCertResponse>` que se resuelve con un objeto que contiene:
|
|
463
|
+
- `cert` (String): El certificado generado.
|
|
464
|
+
- `success` (Boolean): Indicador de éxito de la operación.
|
|
465
|
+
|
|
466
|
+
**Ejemplo:**
|
|
467
|
+
|
|
468
|
+
```javascript
|
|
469
|
+
// Asumiendo que 'myBase64Csr' es una variable que contiene tu CSR en formato Base64
|
|
470
|
+
const myBase64Csr = "MIIC...==";
|
|
471
|
+
|
|
472
|
+
try {
|
|
473
|
+
const { cert, success } = await apacuana.generateCert(myBase64Csr);
|
|
474
|
+
if (success) {
|
|
475
|
+
console.log("Certificado generado exitosamente:", cert);
|
|
476
|
+
}
|
|
477
|
+
} catch (error) {
|
|
478
|
+
if (error.name === "ApacuanaAPIError") {
|
|
479
|
+
console.error(`Error de API (${error.code}):`, error.message);
|
|
480
|
+
} else {
|
|
481
|
+
console.error("Ocurrió un error inesperado:", error);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
```
|
package/babel.config.cjs
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
presets: [
|
|
3
|
+
'@babel/preset-env',
|
|
4
|
+
'@babel/preset-flow'
|
|
5
|
+
],
|
|
6
|
+
plugins: [
|
|
7
|
+
['@babel/plugin-transform-class-properties', { loose: true }],
|
|
8
|
+
['@babel/plugin-transform-private-methods', { loose: true }],
|
|
9
|
+
['@babel/plugin-transform-private-property-in-object', { loose: true }]
|
|
10
|
+
]
|
|
11
|
+
};
|