apacuana-sdk-core 0.1.0 → 0.3.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.
- package/README.md +175 -55
- package/coverage/clover.xml +249 -101
- package/coverage/coverage-final.json +9 -6
- package/coverage/lcov-report/index.html +45 -30
- package/coverage/lcov-report/src/api/certs.js.html +117 -81
- package/coverage/lcov-report/src/api/index.html +40 -25
- package/coverage/lcov-report/src/api/revocations.js.html +1 -1
- package/coverage/lcov-report/src/api/signatures.js.html +546 -72
- package/coverage/lcov-report/src/api/users.js.html +25 -61
- package/coverage/lcov-report/src/config/index.html +21 -21
- package/coverage/lcov-report/src/config/index.js.html +65 -32
- package/coverage/lcov-report/src/errors/index.html +5 -5
- package/coverage/lcov-report/src/errors/index.js.html +13 -10
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.js.html +13 -4
- package/coverage/lcov-report/src/utils/constant.js.html +4 -4
- package/coverage/lcov-report/src/utils/helpers.js.html +290 -116
- package/coverage/lcov-report/src/utils/httpClient.js.html +646 -0
- package/coverage/lcov-report/src/utils/index.html +30 -15
- package/coverage/lcov.info +515 -181
- package/dist/index.js +323 -189
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +323 -189
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/api/certs.js +49 -37
- package/src/api/signatures.js +213 -49
- package/src/api/users.js +17 -29
- package/src/errors/index.js +1 -0
- package/src/index.js +4 -1
- package/src/utils/helpers.js +156 -98
- package/tests/api/certs.test.js +111 -5
- package/tests/api/signatures.test.js +152 -4
- package/tests/api/users.test.js +11 -10
- package/src/auth/index.js +0 -24
package/README.md
CHANGED
|
@@ -97,43 +97,69 @@ Obtiene la información del cliente utilizando los datos de configuración.
|
|
|
97
97
|
**Retorna:**
|
|
98
98
|
|
|
99
99
|
- Promise que se resuelve con un objeto que contiene:
|
|
100
|
-
- `token` (String): ID de sesión para autenticación
|
|
101
|
-
- `userData` (Object): Datos del usuario
|
|
100
|
+
- `token` (String): ID de sesión para autenticación.
|
|
101
|
+
- `userData` (Object): Datos del usuario.
|
|
102
|
+
- `success` (Boolean): Indicador de éxito de la operación.
|
|
102
103
|
|
|
103
104
|
**Ejemplo:**
|
|
104
105
|
|
|
105
106
|
```javascript
|
|
106
107
|
try {
|
|
107
|
-
const { token, userData } = await apacuana.getCustomer();
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
const { token, userData, success } = await apacuana.getCustomer();
|
|
109
|
+
if (success) {
|
|
110
|
+
console.log("Token de sesión:", token);
|
|
111
|
+
console.log("Datos del usuario:", userData);
|
|
112
|
+
}
|
|
110
113
|
} catch (error) {
|
|
111
114
|
console.error("Error al obtener información del cliente:", error);
|
|
112
115
|
}
|
|
113
116
|
```
|
|
114
117
|
|
|
115
|
-
### generateCert()
|
|
118
|
+
### generateCert(csr)
|
|
116
119
|
|
|
117
|
-
Genera un certificado digital basado en el tipo de integración configurado.
|
|
120
|
+
Genera un certificado digital basado en el tipo de integración configurado. Para la integración `ONBOARDING`, esta función valida la Solicitud de Firma de Certificado (CSR) y la envía a la API de Apacuana para su registro.
|
|
118
121
|
|
|
119
|
-
**Parámetros:**
|
|
122
|
+
**Parámetros:**
|
|
123
|
+
|
|
124
|
+
- `csr` (String): Una cadena de texto en formato Base64 que representa la Solicitud de Firma de Certificado.
|
|
125
|
+
|
|
126
|
+
**Validaciones:**
|
|
127
|
+
|
|
128
|
+
- **csr**:
|
|
129
|
+
- Es un parámetro requerido.
|
|
130
|
+
- Debe ser una cadena de texto (`string`).
|
|
131
|
+
- No puede ser una cadena vacía.
|
|
132
|
+
- Debe estar codificada en formato Base64 válido.
|
|
133
|
+
|
|
134
|
+
Si alguna de estas validaciones falla, la función lanzará una `ApacuanaAPIError` con el código `INVALID_PARAMETER` o `INVALID_PARAMETER_FORMAT`.
|
|
120
135
|
|
|
121
136
|
**Retorna:**
|
|
122
137
|
|
|
123
|
-
- Promise que se resuelve con
|
|
138
|
+
- `Promise` que se resuelve con un objeto que contiene:
|
|
139
|
+
- `cert` (String): El certificado generado.
|
|
140
|
+
- `success` (Boolean): Indicador de éxito de la operación.
|
|
124
141
|
|
|
125
142
|
**Ejemplo:**
|
|
126
143
|
|
|
127
144
|
```javascript
|
|
145
|
+
// Asumiendo que 'myBase64Csr' es una variable que contiene tu CSR en formato Base64
|
|
146
|
+
const myBase64Csr = "MIIC...==";
|
|
147
|
+
|
|
128
148
|
try {
|
|
129
|
-
const
|
|
130
|
-
|
|
149
|
+
const { cert, success } = await apacuana.generateCert(myBase64Csr);
|
|
150
|
+
if (success) {
|
|
151
|
+
console.log("Certificado generado exitosamente:", cert);
|
|
152
|
+
}
|
|
131
153
|
} catch (error) {
|
|
132
|
-
|
|
154
|
+
if (error.name === "ApacuanaAPIError") {
|
|
155
|
+
console.error(`Error de API (${error.code}):`, error.message);
|
|
156
|
+
} else {
|
|
157
|
+
console.error("Ocurrió un error inesperado:", error);
|
|
158
|
+
}
|
|
133
159
|
}
|
|
134
160
|
```
|
|
135
161
|
|
|
136
|
-
### getCertStatus()
|
|
162
|
+
### getCertStatus(isCertificateInDevice)
|
|
137
163
|
|
|
138
164
|
Obtiene el estado actual del certificado del usuario.
|
|
139
165
|
|
|
@@ -141,19 +167,59 @@ Obtiene el estado actual del certificado del usuario.
|
|
|
141
167
|
|
|
142
168
|
**Retorna:**
|
|
143
169
|
|
|
144
|
-
-
|
|
170
|
+
- Un objeto que contiene:
|
|
171
|
+
- `status` (String): El estado del certificado (ver sección de Estados de Certificado).
|
|
172
|
+
- `success` (Boolean): Indicador de éxito de la operación.
|
|
145
173
|
|
|
146
174
|
**Ejemplo:**
|
|
147
175
|
|
|
148
176
|
```javascript
|
|
149
177
|
try {
|
|
150
|
-
const status =
|
|
151
|
-
|
|
178
|
+
const { status, success } = apacuana.getCertStatus(true);
|
|
179
|
+
if (success) {
|
|
180
|
+
console.log("Estado del certificado:", status);
|
|
181
|
+
}
|
|
152
182
|
} catch (error) {
|
|
153
183
|
console.error("Error al obtener estado del certificado:", error);
|
|
154
184
|
}
|
|
155
185
|
```
|
|
156
186
|
|
|
187
|
+
### signDocument(signData)
|
|
188
|
+
|
|
189
|
+
Esta función está actualmente deshabilitada y lanzará un error si se invoca.
|
|
190
|
+
|
|
191
|
+
**Parámetros:**
|
|
192
|
+
|
|
193
|
+
- `signData` (Object): Datos para la firma.
|
|
194
|
+
|
|
195
|
+
**Retorna:**
|
|
196
|
+
|
|
197
|
+
- `Promise<void>`
|
|
198
|
+
|
|
199
|
+
**Posibles `ApacuanaAPIError`:**
|
|
200
|
+
|
|
201
|
+
- `NOT_IMPLEMENTED`: La función no está implementada para el tipo de integración.
|
|
202
|
+
|
|
203
|
+
### getDigest(signData)
|
|
204
|
+
|
|
205
|
+
Obtiene el digest de un documento que se va a firmar.
|
|
206
|
+
|
|
207
|
+
- **Parámetros:**
|
|
208
|
+
|
|
209
|
+
- `signData` (Object): Objeto que contiene los datos para la firma.
|
|
210
|
+
- `cert` (String): Certificado en formato PEM.
|
|
211
|
+
- `signatureId` (String): Identificador único de la firma.
|
|
212
|
+
|
|
213
|
+
- **Retorna:** `Promise<object>` - Un objeto que contiene:
|
|
214
|
+
|
|
215
|
+
- `digest` (String): El digest del documento a firmar.
|
|
216
|
+
- `success` (Boolean): Indicador de éxito de la operación.
|
|
217
|
+
|
|
218
|
+
- **Posibles `ApacuanaAPIError`:**
|
|
219
|
+
- `INVALID_PARAMETER`: Si `cert` o `signatureId` no son válidos.
|
|
220
|
+
- `API_RESPONSE_ERROR`: Si la API no devuelve un digest.
|
|
221
|
+
- `NOT_IMPLEMENTED`: Si se llama con un `integrationType` no soportado.
|
|
222
|
+
|
|
157
223
|
### requestRevocation(reasonCode)
|
|
158
224
|
|
|
159
225
|
Solicita la revocación de un certificado.
|
|
@@ -177,67 +243,121 @@ try {
|
|
|
177
243
|
}
|
|
178
244
|
```
|
|
179
245
|
|
|
180
|
-
|
|
246
|
+
#### `getDocs(data)`
|
|
247
|
+
|
|
248
|
+
Obtiene una lista de documentos paginada. El comportamiento de esta función varía según el `integrationType` configurado.
|
|
249
|
+
|
|
250
|
+
- **Parámetros:**
|
|
251
|
+
|
|
252
|
+
- `data` (object): Objeto que contiene los parámetros para la consulta.
|
|
253
|
+
- `page` (number): Número de página para la paginación.
|
|
254
|
+
- `size` (number): Cantidad de resultados por página.
|
|
255
|
+
- `status` (number, opcional): Filtra los documentos por su estado. Los valores permitidos son:
|
|
256
|
+
- `-1`: Rechazado
|
|
257
|
+
- `0`: Pendiente
|
|
258
|
+
- `1`: Firmado
|
|
259
|
+
- `2`: En proceso
|
|
260
|
+
|
|
261
|
+
- **Retorna:** `Promise<object>` - Un objeto que contiene:
|
|
262
|
+
|
|
263
|
+
- `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.
|
|
265
|
+
- `success` (Boolean): Indicador de éxito de la operación.
|
|
266
|
+
|
|
267
|
+
- **Comportamiento por `integrationType`:**
|
|
268
|
+
|
|
269
|
+
- **`ONBOARDING`**: Obtiene los documentos asociados al `customerId` configurado.
|
|
270
|
+
- **`ONPREMISE`**: No soportado. Lanza un `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
|
|
271
|
+
|
|
272
|
+
- **Ejemplo (`ONBOARDING`):**
|
|
273
|
+
|
|
274
|
+
```javascript
|
|
275
|
+
try {
|
|
276
|
+
const documents = await apacuana.getDocs({ page: 1, size: 10, status: 1 });
|
|
277
|
+
console.log("Documentos:", documents);
|
|
278
|
+
} catch (error) {
|
|
279
|
+
console.error("Error al obtener documentos:", error.message);
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
- **Posibles `ApacuanaAPIError`:**
|
|
284
|
+
- `INVALID_PARAMETER`: Si `page`, `size` o `status` no son válidos.
|
|
285
|
+
- `CONFIGURATION_ERROR`: Si el `customerId` no está configurado en la inicialización.
|
|
286
|
+
- `NOT_IMPLEMENTED`: Si se llama con `integrationType` igual a `ONPREMISE`.
|
|
287
|
+
|
|
288
|
+
### addSigner(signerData)
|
|
181
289
|
|
|
182
|
-
|
|
290
|
+
Agrega un firmante a un documento. El comportamiento de esta función y la estructura del objeto `signerData` varían según el `integrationType` configurado (`ONBOARDING` u `ONPREMISE`).
|
|
183
291
|
|
|
184
292
|
**Parámetros:**
|
|
185
293
|
|
|
186
|
-
- `
|
|
187
|
-
- `signatureData` (Object): Datos de la firma
|
|
294
|
+
- `signerData` (Object): Un objeto que contiene la información del firmante. Su estructura es específica para cada tipo de integración.
|
|
188
295
|
|
|
189
|
-
|
|
296
|
+
---
|
|
190
297
|
|
|
191
|
-
|
|
298
|
+
#### Flujo de Integración: ONBOARDING
|
|
192
299
|
|
|
193
|
-
|
|
300
|
+
Para el tipo de integración `ONBOARDING`, la función espera un objeto `signerData` con la siguiente estructura y realiza validaciones estrictas sobre cada campo.
|
|
194
301
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
console.error("Error al firmar documento:", error);
|
|
302
|
+
**Estructura de `signerData` para ONBOARDING:**
|
|
303
|
+
|
|
304
|
+
```json
|
|
305
|
+
{
|
|
306
|
+
"name": "Nombre del Documento",
|
|
307
|
+
"reference": "Referencia Externa",
|
|
308
|
+
"typedoc": "V",
|
|
309
|
+
"doc": "26122862",
|
|
310
|
+
"signature": [
|
|
311
|
+
{
|
|
312
|
+
"page": 1,
|
|
313
|
+
"x": 0.5,
|
|
314
|
+
"y": 0.85
|
|
315
|
+
}
|
|
316
|
+
]
|
|
211
317
|
}
|
|
212
318
|
```
|
|
213
319
|
|
|
214
|
-
|
|
320
|
+
**Validaciones (ONBOARDING):**
|
|
215
321
|
|
|
216
|
-
|
|
322
|
+
- **signerData**: Debe ser un objeto no vacío.
|
|
323
|
+
- **name**: Requerido, `string`.
|
|
324
|
+
- **reference**: Requerido, `string`. (referencia del documento en el gestor documental)
|
|
325
|
+
- **typedoc**: Requerido, debe ser `V`, `P` o `E`.
|
|
326
|
+
- **doc**: Requerido, `string`.
|
|
327
|
+
- **signature**: Requerido, `array` no vacío.
|
|
328
|
+
- Cada objeto en el `array` debe tener:
|
|
329
|
+
- `page`: Requerido, `número` entero positivo.
|
|
330
|
+
- `x`: Requerido, `número` entre 0 y 1.
|
|
331
|
+
- `y`: Requerido, `número` entre 0 y 1.
|
|
217
332
|
|
|
218
|
-
|
|
333
|
+
Si alguna validación falla, se lanzará una `ApacuanaAPIError` con el código `INVALID_PARAMETER` o `INVALID_PARAMETER_FORMAT`.
|
|
219
334
|
|
|
220
|
-
|
|
335
|
+
---
|
|
221
336
|
|
|
222
337
|
**Retorna:**
|
|
223
338
|
|
|
224
|
-
- Promise que se resuelve con
|
|
339
|
+
- `Promise` que se resuelve con un objeto que contiene el ID del firmante (`signerId`) y el estado (`status`) si la operación es exitosa.
|
|
225
340
|
|
|
226
|
-
**Ejemplo:**
|
|
341
|
+
**Ejemplo (ONBOARDING):**
|
|
227
342
|
|
|
228
343
|
```javascript
|
|
344
|
+
const signerInfo = {
|
|
345
|
+
name: "Contrato de Servicios",
|
|
346
|
+
reference: "CS-2024-001",
|
|
347
|
+
typedoc: "V",
|
|
348
|
+
doc: "12345678",
|
|
349
|
+
signature: [{ page: 5, x: 0.25, y: 0.75 }],
|
|
350
|
+
};
|
|
351
|
+
|
|
229
352
|
try {
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
email: "signer@example.com",
|
|
233
|
-
name: "John Doe",
|
|
234
|
-
role: "Approver",
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
const response = await apacuana.addSigner(signerData);
|
|
238
|
-
console.log("Firmante añadido:", response);
|
|
353
|
+
const response = await apacuana.addSigner(signerInfo);
|
|
354
|
+
console.log("Firmante agregado exitosamente:", response);
|
|
239
355
|
} catch (error) {
|
|
240
|
-
|
|
356
|
+
if (error.name === "ApacuanaAPIError") {
|
|
357
|
+
console.error(`Error de API (${error.code}):`, error.message);
|
|
358
|
+
} else {
|
|
359
|
+
console.error("Ocurrió un error inesperado:", error);
|
|
360
|
+
}
|
|
241
361
|
}
|
|
242
362
|
```
|
|
243
363
|
|