apacuana-sdk-core 0.10.0 → 0.12.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 +305 -286
- package/coverage/clover.xml +345 -248
- package/coverage/coverage-final.json +9 -7
- package/coverage/lcov-report/index.html +41 -26
- package/coverage/lcov-report/src/api/certs.js.html +162 -87
- package/coverage/lcov-report/src/api/faceLiveness.js.html +523 -0
- package/coverage/lcov-report/src/api/index.html +43 -28
- package/coverage/lcov-report/src/api/revocations.js.html +132 -90
- package/coverage/lcov-report/src/api/signatures.js.html +25 -253
- package/coverage/lcov-report/src/api/users.js.html +23 -14
- 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 +13 -13
- package/coverage/lcov-report/src/index.js.html +96 -12
- package/coverage/lcov-report/src/success/index.html +116 -0
- package/coverage/lcov-report/src/success/index.js.html +106 -0
- package/coverage/lcov-report/src/utils/constant.js.html +4 -4
- package/coverage/lcov-report/src/utils/helpers.js.html +1 -1
- package/coverage/lcov-report/src/utils/httpClient.js.html +1 -1
- package/coverage/lcov-report/src/utils/index.html +1 -1
- package/coverage/lcov.info +597 -414
- package/dist/api/certs.d.ts +9 -70
- package/dist/api/faceLiveness.d.ts +6 -0
- package/dist/api/revocations.d.ts +6 -42
- package/dist/api/signatures.d.ts +11 -153
- package/dist/api/users.d.ts +16 -6
- package/dist/index.d.ts +6 -0
- package/dist/index.js +513 -259
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +513 -259
- package/dist/index.mjs.map +1 -1
- package/dist/success/index.d.ts +7 -0
- package/dist/types/certs.d.ts +97 -0
- package/dist/types/faceLiveness.d.ts +11 -0
- package/dist/types/revocations.d.ts +51 -0
- package/dist/types/signatures.d.ts +147 -0
- package/dist/types/users.d.ts +260 -0
- package/package.json +1 -1
- package/src/api/certs.js +74 -49
- package/src/api/faceLiveness.js +146 -0
- package/src/api/revocations.js +76 -62
- package/src/api/signatures.js +21 -97
- package/src/api/users.js +12 -9
- package/src/index.js +33 -5
- package/src/success/index.js +8 -0
- package/src/types/certs.js +56 -0
- package/src/types/faceLiveness.js +16 -0
- package/src/types/revocations.js +45 -0
- package/src/types/signatures.js +91 -0
- package/src/types/users.js +73 -0
- package/tests/api/certs.test.js +99 -6
- package/tests/api/faceLiveness.test.js +170 -0
- package/tests/api/revocations.test.js +35 -35
- package/tests/api/signatures.test.js +11 -5
- package/tests/api/users.test.js +3 -2
- package/tests/index.test.js +16 -8
package/README.md
CHANGED
|
@@ -2,7 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
## Descripción
|
|
4
4
|
|
|
5
|
-
Apacuana SDK Core es una biblioteca JavaScript que proporciona una interfaz para interactuar con los servicios de Apacuana, permitiendo la generación de certificados digitales,
|
|
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.
|
|
6
|
+
|
|
7
|
+
## Tabla de Contenidos
|
|
8
|
+
|
|
9
|
+
- [Instalación](#instalación)
|
|
10
|
+
- [Inicialización](#inicialización)
|
|
11
|
+
- [Conceptos Clave](#conceptos-clave)
|
|
12
|
+
- [Tipos de Integración](#tipos-de-integración)
|
|
13
|
+
- [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
|
+
- [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
|
+
- [Licencia](#licencia)
|
|
6
38
|
|
|
7
39
|
## Instalación
|
|
8
40
|
|
|
@@ -10,442 +42,429 @@ Apacuana SDK Core es una biblioteca JavaScript que proporciona una interfaz para
|
|
|
10
42
|
npm install apacuana-sdk-core
|
|
11
43
|
```
|
|
12
44
|
|
|
13
|
-
##
|
|
45
|
+
## Inicialización
|
|
14
46
|
|
|
15
|
-
|
|
16
|
-
- Acceso a las credenciales de API de Apacuana (apiKey y secretKey)
|
|
47
|
+
Antes de utilizar el SDK, debes inicializarlo con tu configuración.
|
|
17
48
|
|
|
18
|
-
|
|
49
|
+
```javascript
|
|
50
|
+
import apacuana from "apacuana-sdk-core";
|
|
19
51
|
|
|
20
|
-
|
|
52
|
+
const config = {
|
|
53
|
+
apiUrl: "https://api.url",
|
|
54
|
+
secretKey: "tu-secret-key",
|
|
55
|
+
apiKey: "tu-api-key",
|
|
56
|
+
verificationId: "tu-verification-id",
|
|
57
|
+
customerId: "tu-customer-id",
|
|
58
|
+
integrationType: "ONBOARDING", // o "ONPREMISE"
|
|
59
|
+
};
|
|
21
60
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
secretKey: "YOUR_SECRET_KEY",
|
|
29
|
-
apiKey: "YOUR_API_KEY",
|
|
30
|
-
verificationId: "VERIFICATION_ID",
|
|
31
|
-
customerId: "CUSTOMER_ID",
|
|
32
|
-
integrationType: "ONBOARDING",
|
|
33
|
-
});
|
|
61
|
+
try {
|
|
62
|
+
await apacuana.init(config);
|
|
63
|
+
console.log("SDK inicializado correctamente.");
|
|
64
|
+
} catch (error) {
|
|
65
|
+
console.error("Error al inicializar el SDK:", error);
|
|
66
|
+
}
|
|
34
67
|
```
|
|
35
68
|
|
|
36
|
-
##
|
|
69
|
+
## Conceptos Clave
|
|
70
|
+
|
|
71
|
+
### Tipos de Integración
|
|
37
72
|
|
|
38
|
-
|
|
73
|
+
El SDK soporta dos tipos de integración (`integrationType`) que determinan cómo se interactúa con la plataforma de Apacuana:
|
|
39
74
|
|
|
40
|
-
|
|
75
|
+
- **`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.
|
|
41
77
|
|
|
42
|
-
|
|
78
|
+
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.
|
|
43
79
|
|
|
44
|
-
|
|
45
|
-
- `apiUrl` (String): URL base de la API de Apacuana
|
|
46
|
-
- `secretKey` (String): Clave secreta para autenticación
|
|
47
|
-
- `apiKey` (String): Clave de API para autenticación
|
|
48
|
-
- `verificationId` (String): ID de verificación
|
|
49
|
-
- `customerId` (String): ID del cliente
|
|
50
|
-
- `integrationType` (String): Tipo de integración (ver sección de Tipos de Integración)
|
|
80
|
+
## Interfaz Pública
|
|
51
81
|
|
|
52
|
-
|
|
82
|
+
Todas las funciones asíncronas devuelven una instancia de `ApacuanaSuccess` si tienen éxito, o lanzan una `ApacuanaAPIError` si fallan.
|
|
53
83
|
|
|
54
|
-
|
|
84
|
+
### `init(config)`
|
|
55
85
|
|
|
56
|
-
|
|
86
|
+
Inicializa el SDK.
|
|
57
87
|
|
|
58
|
-
|
|
88
|
+
- **`config`**: Objeto de configuración.
|
|
59
89
|
|
|
60
|
-
|
|
90
|
+
### `close()`
|
|
61
91
|
|
|
62
|
-
|
|
92
|
+
Cierra la sesión del SDK y limpia la configuración.
|
|
63
93
|
|
|
64
94
|
**Ejemplo:**
|
|
65
95
|
|
|
66
96
|
```javascript
|
|
67
97
|
apacuana.close();
|
|
68
|
-
console.log("
|
|
98
|
+
console.log("Sesión del SDK cerrada.");
|
|
69
99
|
```
|
|
70
100
|
|
|
71
|
-
### getConfig()
|
|
72
|
-
|
|
73
|
-
Obtiene la configuración actual del SDK.
|
|
74
|
-
|
|
75
|
-
**Parámetros:** Ninguno
|
|
101
|
+
### `getConfig()`
|
|
76
102
|
|
|
77
|
-
|
|
103
|
+
Devuelve la configuración actual.
|
|
78
104
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
### getCustomer()
|
|
82
|
-
|
|
83
|
-
Obtiene la información del cliente utilizando los datos de configuración.
|
|
84
|
-
|
|
85
|
-
**Parámetros:** Ninguno
|
|
86
|
-
|
|
87
|
-
**Retorna:**
|
|
88
|
-
|
|
89
|
-
- `Promise<GetCustomerResponse>` que se resuelve con un objeto que contiene:
|
|
90
|
-
- `token` (String): ID de sesión para autenticación.
|
|
91
|
-
- `userData` (Object): Datos del usuario.
|
|
92
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
105
|
+
**Ejemplo:**
|
|
93
106
|
|
|
94
|
-
|
|
107
|
+
```javascript
|
|
108
|
+
const currentConfig = apacuana.getConfig();
|
|
109
|
+
console.log("Configuración actual:", currentConfig);
|
|
110
|
+
```
|
|
95
111
|
|
|
96
|
-
|
|
112
|
+
### `getCustomer()`
|
|
97
113
|
|
|
98
|
-
|
|
114
|
+
Obtiene los datos del cliente.
|
|
99
115
|
|
|
100
|
-
|
|
101
|
-
- `csr` (String): La CSR en formato Base64.
|
|
116
|
+
**Ejemplo:**
|
|
102
117
|
|
|
103
|
-
|
|
118
|
+
```javascript
|
|
119
|
+
try {
|
|
120
|
+
const response = await apacuana.getCustomer();
|
|
121
|
+
console.log("Datos del cliente:", response.data);
|
|
122
|
+
} catch (error) {
|
|
123
|
+
console.error("Error al obtener el cliente:", error.message);
|
|
124
|
+
}
|
|
125
|
+
```
|
|
104
126
|
|
|
105
|
-
|
|
106
|
-
- **`ONPREMISE`**: No soportado. Lanza una `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
|
|
127
|
+
### `generateCert(encryptedCSR)`
|
|
107
128
|
|
|
108
|
-
|
|
129
|
+
Genera un nuevo certificado digital.
|
|
109
130
|
|
|
110
|
-
-
|
|
111
|
-
- `cert` (String): El certificado generado.
|
|
112
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
131
|
+
- **`encryptedCSR`**: Objeto con la CSR encriptada.
|
|
113
132
|
|
|
114
133
|
**Ejemplo:**
|
|
115
134
|
|
|
116
135
|
```javascript
|
|
117
|
-
const myCsrObject = { csr: "MIIC...==" };
|
|
118
|
-
|
|
119
136
|
try {
|
|
120
|
-
const {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
137
|
+
const csr = { csr: "MIIC...==" }; // CSR en formato Base64
|
|
138
|
+
const response = await apacuana.generateCert(csr);
|
|
139
|
+
console.log("Certificado generado:", response.data);
|
|
124
140
|
} catch (error) {
|
|
125
141
|
console.error("Error al generar el certificado:", error.message);
|
|
126
142
|
}
|
|
127
143
|
```
|
|
128
144
|
|
|
129
|
-
### getCertStatus(isCertificateInDevice)
|
|
145
|
+
### `getCertStatus(isCertificateInDevice)`
|
|
130
146
|
|
|
131
|
-
Obtiene el estado
|
|
147
|
+
Obtiene el estado del certificado del usuario.
|
|
132
148
|
|
|
133
|
-
|
|
149
|
+
- **`isCertificateInDevice`**: Booleano que indica si el certificado está en el dispositivo.
|
|
134
150
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
**Retorna:**
|
|
151
|
+
**Ejemplo:**
|
|
138
152
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
153
|
+
```javascript
|
|
154
|
+
try {
|
|
155
|
+
const response = await apacuana.getCertStatus(false);
|
|
156
|
+
console.log("Estado del certificado:", response.data);
|
|
157
|
+
} catch (error) {
|
|
158
|
+
console.error("Error al obtener el estado del certificado:", error.message);
|
|
159
|
+
}
|
|
160
|
+
```
|
|
142
161
|
|
|
143
|
-
### getCertTypes()
|
|
162
|
+
### `getCertTypes()`
|
|
144
163
|
|
|
145
164
|
Obtiene los tipos de certificados disponibles.
|
|
146
165
|
|
|
147
|
-
**Parámetros:** Ninguno
|
|
148
|
-
|
|
149
|
-
**Retorna:**
|
|
150
|
-
|
|
151
|
-
- `Promise<GetCertTypesResponse>`: Un objeto que contiene:
|
|
152
|
-
- `types` (Array<Object>): Una lista de los tipos de certificados disponibles.
|
|
153
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
154
|
-
|
|
155
|
-
**Comportamiento por `integrationType`:**
|
|
156
|
-
|
|
157
|
-
- **`ONBOARDING`**: Realiza una petición `GET` para obtener los tipos de certificados.
|
|
158
|
-
- **`ONPREMISE`**: No soportado. Lanza una `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
|
|
159
|
-
|
|
160
166
|
**Ejemplo:**
|
|
161
167
|
|
|
162
168
|
```javascript
|
|
163
169
|
try {
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
console.log("Tipos de certificados:", types);
|
|
167
|
-
}
|
|
170
|
+
const response = await apacuana.getCertTypes();
|
|
171
|
+
console.log("Tipos de certificados:", response.data);
|
|
168
172
|
} catch (error) {
|
|
169
|
-
console.error("Error al obtener los tipos de
|
|
173
|
+
console.error("Error al obtener los tipos de certificado:", error.message);
|
|
170
174
|
}
|
|
171
175
|
```
|
|
172
176
|
|
|
173
|
-
### getRequerimentsByTypeUser(params)
|
|
174
|
-
|
|
175
|
-
Obtiene los requisitos para un tipo de usuario determinado.
|
|
176
|
-
|
|
177
|
-
**Parámetros:**
|
|
178
|
-
|
|
179
|
-
- `params` (Object): Objeto de parámetros.
|
|
180
|
-
- `type` (Number): El tipo de usuario para el que se obtienen los requisitos.
|
|
177
|
+
### `getRequerimentsByTypeUser(params)`
|
|
181
178
|
|
|
182
|
-
|
|
179
|
+
Obtiene los requisitos para un tipo de usuario.
|
|
183
180
|
|
|
184
|
-
-
|
|
185
|
-
- `requirements` (Array<Object>): Una lista de los requisitos.
|
|
186
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
187
|
-
|
|
188
|
-
**Comportamiento por `integrationType`:**
|
|
189
|
-
|
|
190
|
-
- **`ONBOARDING`**: Realiza una petición `GET` para obtener los requisitos.
|
|
191
|
-
- **`ONPREMISE`**: No soportado. Lanza una `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
|
|
181
|
+
- **`params`**: Objeto con la propiedad `type` (numérico).
|
|
192
182
|
|
|
193
183
|
**Ejemplo:**
|
|
194
184
|
|
|
195
185
|
```javascript
|
|
196
186
|
try {
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
});
|
|
200
|
-
if (success) {
|
|
201
|
-
console.log("Requisitos:", requirements);
|
|
202
|
-
}
|
|
187
|
+
const response = await apacuana.getRequerimentsByTypeUser({ type: 1 });
|
|
188
|
+
console.log("Requisitos:", response.data);
|
|
203
189
|
} catch (error) {
|
|
204
190
|
console.error("Error al obtener los requisitos:", error.message);
|
|
205
191
|
}
|
|
206
192
|
```
|
|
207
193
|
|
|
208
|
-
###
|
|
209
|
-
|
|
210
|
-
Agrega un firmante a un documento. El comportamiento y la estructura del objeto `signerData` varían según el `integrationType`.
|
|
194
|
+
### `requestCertificate(params)`
|
|
211
195
|
|
|
212
|
-
|
|
196
|
+
Solicita un certificado.
|
|
213
197
|
|
|
214
|
-
- `
|
|
198
|
+
- **`params`**: Objeto con las propiedades `type` (numérico) y `documents` (array).
|
|
215
199
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
#### Flujo de Integración: ONBOARDING
|
|
219
|
-
|
|
220
|
-
Para el tipo de integración `ONBOARDING`, la función espera un objeto `signerData` con una estructura específica y realiza validaciones estrictas sobre cada campo.
|
|
221
|
-
|
|
222
|
-
**Estructura de `signerData` para ONBOARDING:**
|
|
200
|
+
**Ejemplo:**
|
|
223
201
|
|
|
224
|
-
```
|
|
225
|
-
{
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
"
|
|
229
|
-
|
|
230
|
-
"
|
|
231
|
-
{
|
|
232
|
-
"page": 1,
|
|
233
|
-
"x": 0.5,
|
|
234
|
-
"y": 0.85
|
|
235
|
-
}
|
|
236
|
-
]
|
|
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);
|
|
237
209
|
}
|
|
238
210
|
```
|
|
239
211
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
- **`name`** (`string`, requerido): Nombre del documento.
|
|
243
|
-
- **`reference`** (`string`, requerido): Referencia externa del documento en el gestor documental.
|
|
244
|
-
- **`typedoc`** (`string`, requerido): Tipo de documento de identidad. Valores permitidos: `V`, `P`, `E`.
|
|
245
|
-
- **`doc`** (`string`, requerido): Número del documento de identidad.
|
|
246
|
-
- **`signature`** (`Array<SignaturePosition>`, requerido): Un array de objetos que definen la posición de la firma.
|
|
247
|
-
- **`page`** (`number`, requerido): Número de página (entero positivo).
|
|
248
|
-
- **`x`** (`number`, requerido): Coordenada X (entre 0 y 1).
|
|
249
|
-
- **`y`** (`number`, requerido): Coordenada Y (entre 0 y 1).
|
|
212
|
+
### `addSigner(signerData)`
|
|
250
213
|
|
|
251
|
-
|
|
214
|
+
Añade un firmante a un documento.
|
|
252
215
|
|
|
253
|
-
|
|
216
|
+
- **`signerData`**: Objeto con los datos del firmante.
|
|
254
217
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
**Retorna:**
|
|
260
|
-
|
|
261
|
-
- `Promise<AddSignerResponse>` que se resuelve con un objeto que contiene:
|
|
262
|
-
- `signer` (String): Un identificador del firmante, construido a partir de `typedoc` y `doc`.
|
|
263
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
218
|
+
**Ejemplo:**
|
|
264
219
|
|
|
265
|
-
|
|
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
|
+
```
|
|
266
235
|
|
|
267
|
-
|
|
236
|
+
### `getDocs(data)`
|
|
268
237
|
|
|
269
|
-
|
|
238
|
+
Obtiene una lista paginada de documentos.
|
|
270
239
|
|
|
271
|
-
-
|
|
272
|
-
- `cert` (String): Certificado del firmante en formato PEM (codificado en base64).
|
|
273
|
-
- `signatureId` (String): Identificador único del proceso de firma.
|
|
240
|
+
- **`data`**: Objeto con parámetros de paginación (`page`, `size`) y filtro (`status`).
|
|
274
241
|
|
|
275
|
-
**
|
|
242
|
+
**Ejemplo:**
|
|
276
243
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
244
|
+
```javascript
|
|
245
|
+
try {
|
|
246
|
+
const params = { page: 1, size: 10, status: 0 };
|
|
247
|
+
const response = await apacuana.getDocs(params);
|
|
248
|
+
console.log("Documentos:", response.data);
|
|
249
|
+
} catch (error) {
|
|
250
|
+
console.error("Error al obtener los documentos:", error.message);
|
|
251
|
+
}
|
|
252
|
+
```
|
|
280
253
|
|
|
281
|
-
###
|
|
254
|
+
### `getDigest(signData)`
|
|
282
255
|
|
|
283
|
-
|
|
256
|
+
Obtiene el digest de un documento para ser firmado.
|
|
284
257
|
|
|
285
|
-
|
|
258
|
+
- **`signData`**: Objeto con `cert` y `signatureId`.
|
|
286
259
|
|
|
287
|
-
|
|
288
|
-
- `signature` (Object): Objeto con información de la firma.
|
|
289
|
-
- `id` (String): ID de la firma.
|
|
290
|
-
- `positions` (Array<Object>): Posiciones de la firma en el documento.
|
|
291
|
-
- `cert` (String): El certificado del firmante en formato base64.
|
|
292
|
-
- `signedDigest` (String): El digest del documento, ya firmado.
|
|
260
|
+
**Ejemplo:**
|
|
293
261
|
|
|
294
|
-
|
|
262
|
+
```javascript
|
|
263
|
+
try {
|
|
264
|
+
const params = { cert: "MIIC...==", signatureId: "sig-123" };
|
|
265
|
+
const response = await apacuana.getDigest(params);
|
|
266
|
+
console.log("Digest del documento:", response.data);
|
|
267
|
+
} catch (error) {
|
|
268
|
+
console.error("Error al obtener el digest:", error.message);
|
|
269
|
+
}
|
|
270
|
+
```
|
|
295
271
|
|
|
296
|
-
|
|
272
|
+
### `signDocument(signData)`
|
|
297
273
|
|
|
298
|
-
|
|
274
|
+
Firma un documento.
|
|
299
275
|
|
|
300
|
-
|
|
276
|
+
- **`signData`**: Objeto con `signature`, `cert` y `signedDigest`.
|
|
301
277
|
|
|
302
|
-
**
|
|
278
|
+
**Ejemplo:**
|
|
303
279
|
|
|
304
|
-
|
|
280
|
+
```javascript
|
|
281
|
+
try {
|
|
282
|
+
const params = {
|
|
283
|
+
signature: { id: "sig-123" },
|
|
284
|
+
cert: "MIIC...==",
|
|
285
|
+
signedDigest: "abc...",
|
|
286
|
+
};
|
|
287
|
+
const response = await apacuana.signDocument(params);
|
|
288
|
+
console.log("Documento firmado:", response.data);
|
|
289
|
+
} catch (error) {
|
|
290
|
+
console.error("Error al firmar el documento:", error.message);
|
|
291
|
+
}
|
|
292
|
+
```
|
|
305
293
|
|
|
306
|
-
|
|
294
|
+
### `uploadSignatureVariant(data)`
|
|
307
295
|
|
|
308
|
-
|
|
309
|
-
- `revocationStatus` (String): El estado de la solicitud (ej. "pending").
|
|
310
|
-
- `requestId` (String | Number): El ID de la solicitud de revocación.
|
|
296
|
+
Sube una imagen de firma.
|
|
311
297
|
|
|
312
|
-
|
|
298
|
+
- **`data`**: Objeto con la propiedad `file` (instancia de `File`, tipo `image/png`).
|
|
313
299
|
|
|
314
|
-
|
|
300
|
+
**Ejemplo:**
|
|
315
301
|
|
|
316
|
-
|
|
302
|
+
```javascript
|
|
303
|
+
// Este código se ejecutaría en un entorno de navegador
|
|
304
|
+
const imageFile = new File(["..."], "firma.png", { type: "image/png" });
|
|
305
|
+
try {
|
|
306
|
+
const response = await apacuana.uploadSignatureVariant({ file: imageFile });
|
|
307
|
+
console.log(response.data);
|
|
308
|
+
} catch (error) {
|
|
309
|
+
console.error("Error al subir la firma:", error.message);
|
|
310
|
+
}
|
|
311
|
+
```
|
|
317
312
|
|
|
318
|
-
|
|
313
|
+
### `getSignatureVariant()`
|
|
319
314
|
|
|
320
|
-
|
|
321
|
-
- `reasons` (Array<Object>): Un array de objetos, donde cada objeto representa un motivo de revocación con `code` y `description`.
|
|
322
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
315
|
+
Obtiene la imagen de la firma del usuario.
|
|
323
316
|
|
|
324
|
-
**
|
|
317
|
+
**Ejemplo:**
|
|
325
318
|
|
|
326
|
-
|
|
327
|
-
|
|
319
|
+
```javascript
|
|
320
|
+
try {
|
|
321
|
+
const response = await apacuana.getSignatureVariant();
|
|
322
|
+
// La imagen viene en Base64
|
|
323
|
+
console.log("Firma obtenida (Base64):", response.data);
|
|
324
|
+
} catch (error) {
|
|
325
|
+
console.error("Error al obtener la firma:", error.message);
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
328
|
|
|
329
|
-
###
|
|
329
|
+
### `deleteSignatureVariant()`
|
|
330
330
|
|
|
331
|
-
|
|
331
|
+
Elimina la imagen de la firma del usuario.
|
|
332
332
|
|
|
333
|
-
**
|
|
333
|
+
**Ejemplo:**
|
|
334
334
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
335
|
+
```javascript
|
|
336
|
+
try {
|
|
337
|
+
const response = await apacuana.deleteSignatureVariant();
|
|
338
|
+
console.log(response.data);
|
|
339
|
+
} catch (error) {
|
|
340
|
+
console.error("Error al eliminar la firma:", error.message);
|
|
341
|
+
}
|
|
342
|
+
```
|
|
338
343
|
|
|
339
|
-
|
|
344
|
+
### `createFaceLivenessSession()`
|
|
340
345
|
|
|
341
|
-
|
|
342
|
-
- `message` (String): Un mensaje de confirmación.
|
|
343
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
346
|
+
Crea una sesión de prueba de vida.
|
|
344
347
|
|
|
345
|
-
**
|
|
348
|
+
**Ejemplo:**
|
|
346
349
|
|
|
347
|
-
|
|
348
|
-
|
|
350
|
+
```javascript
|
|
351
|
+
try {
|
|
352
|
+
const response = await apacuana.createFaceLivenessSession();
|
|
353
|
+
console.log("ID de sesión de prueba de vida:", response.data);
|
|
354
|
+
} catch (error) {
|
|
355
|
+
console.error("Error al crear la sesión:", error.message);
|
|
356
|
+
}
|
|
357
|
+
```
|
|
349
358
|
|
|
350
|
-
###
|
|
359
|
+
### `requestRevocation(params)`
|
|
351
360
|
|
|
352
|
-
|
|
361
|
+
Solicita la revocación de un certificado.
|
|
353
362
|
|
|
354
|
-
|
|
363
|
+
- **`params`**: Objeto con la propiedad `reasonCode` (numérico).
|
|
355
364
|
|
|
356
|
-
**
|
|
365
|
+
**Ejemplo:**
|
|
357
366
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
367
|
+
```javascript
|
|
368
|
+
try {
|
|
369
|
+
const response = await apacuana.requestRevocation({ reasonCode: 1 });
|
|
370
|
+
console.log("Solicitud de revocación enviada:", response.data);
|
|
371
|
+
} catch (error) {
|
|
372
|
+
console.error("Error al solicitar la revocación:", error.message);
|
|
373
|
+
}
|
|
374
|
+
```
|
|
361
375
|
|
|
362
|
-
|
|
376
|
+
### `getRevocationReasons()`
|
|
363
377
|
|
|
364
|
-
|
|
365
|
-
- **`ONPREMISE`**: No soportado. Lanza una `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
|
|
378
|
+
Obtiene la lista de razones para la revocación.
|
|
366
379
|
|
|
367
380
|
**Ejemplo:**
|
|
368
381
|
|
|
369
382
|
```javascript
|
|
370
383
|
try {
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
console.log("Imagen de la firma obtenida.");
|
|
374
|
-
// Puedes usar 'file' para mostrar la imagen, por ejemplo:
|
|
375
|
-
// const img = document.createElement('img');
|
|
376
|
-
// img.src = `data:image/png;base64,${file}`;
|
|
377
|
-
// document.body.appendChild(img);
|
|
378
|
-
}
|
|
384
|
+
const response = await apacuana.getRevocationReasons();
|
|
385
|
+
console.log("Razones de revocación:", response.data);
|
|
379
386
|
} catch (error) {
|
|
380
|
-
console.error("Error al obtener
|
|
387
|
+
console.error("Error al obtener las razones de revocación:", error.message);
|
|
381
388
|
}
|
|
382
389
|
```
|
|
383
390
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
Elimina la variante de firma (imagen) de un firmante.
|
|
391
|
+
## Manejo de Errores
|
|
387
392
|
|
|
388
|
-
|
|
393
|
+
El SDK utiliza dos clases personalizadas para gestionar los resultados de las operaciones asíncronas: `ApacuanaSuccess` para éxitos y `ApacuanaAPIError` para fallos.
|
|
389
394
|
|
|
390
|
-
|
|
395
|
+
### `ApacuanaSuccess`
|
|
391
396
|
|
|
392
|
-
|
|
393
|
-
- `message` (String): Un mensaje de confirmación.
|
|
394
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
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.
|
|
395
398
|
|
|
396
|
-
**
|
|
399
|
+
**Propiedades:**
|
|
397
400
|
|
|
398
|
-
-
|
|
399
|
-
-
|
|
401
|
+
- `success` (Boolean): Siempre `true`.
|
|
402
|
+
- `statusCode` (Number): El código de estado HTTP de la respuesta (ej. `200`).
|
|
403
|
+
- `data` (Object): El cuerpo de la respuesta de la API.
|
|
400
404
|
|
|
401
|
-
**Ejemplo:**
|
|
405
|
+
**Ejemplo de uso:**
|
|
402
406
|
|
|
403
407
|
```javascript
|
|
404
408
|
try {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
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);
|
|
409
414
|
} catch (error) {
|
|
410
|
-
|
|
415
|
+
// Manejo de errores (ver abajo)
|
|
416
|
+
console.error(error);
|
|
411
417
|
}
|
|
412
418
|
```
|
|
413
419
|
|
|
414
|
-
###
|
|
415
|
-
|
|
416
|
-
Obtiene una lista de documentos paginada.
|
|
417
|
-
|
|
418
|
-
**Parámetros:**
|
|
419
|
-
|
|
420
|
-
- `data` (`GetDocsParams`): Objeto que contiene los parámetros para la consulta.
|
|
421
|
-
- `page` (Number): Número de página.
|
|
422
|
-
- `size` (Number): Cantidad de resultados por página.
|
|
423
|
-
- `status` (Number, opcional): Filtra por estado (`-1`: Rechazado, `0`: Pendiente, `1`: Firmado, `2`: En proceso).
|
|
420
|
+
### `ApacuanaAPIError`
|
|
424
421
|
|
|
425
|
-
|
|
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.
|
|
426
423
|
|
|
427
|
-
|
|
428
|
-
- `totalRecords` (Number): El número total de documentos.
|
|
429
|
-
- `records` (Array<Object>): Un array de documentos.
|
|
430
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
424
|
+
**Propiedades:**
|
|
431
425
|
|
|
432
|
-
|
|
426
|
+
- `success` (Boolean): Siempre `false`.
|
|
427
|
+
- `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`).
|
|
429
|
+
- `message` (String): Una descripción legible del error.
|
|
433
430
|
|
|
434
|
-
|
|
435
|
-
- `ACTIVE`: Activo y listo para usar.
|
|
436
|
-
- `EXPIRED`: Caducado.
|
|
437
|
-
- `REVOKED`: Revocado.
|
|
438
|
-
- `SUSPENDED`: Suspendido temporalmente.
|
|
431
|
+
**Ejemplo de manejo de errores:**
|
|
439
432
|
|
|
440
|
-
|
|
433
|
+
```javascript
|
|
434
|
+
try {
|
|
435
|
+
// Forzamos un error pasando parámetros inválidos
|
|
436
|
+
await apacuana.requestCertificate({ type: 999, documents: [] });
|
|
437
|
+
} catch (error) {
|
|
438
|
+
if (error.name === "ApacuanaAPIError") {
|
|
439
|
+
console.error("Ocurrió un error de la API de Apacuana:");
|
|
440
|
+
console.error("- Mensaje:", error.message);
|
|
441
|
+
console.error("- Código de estado HTTP:", error.statusCode);
|
|
442
|
+
console.error("- Código de error interno:", error.errorCode);
|
|
443
|
+
} else {
|
|
444
|
+
// Captura de otros errores inesperados (ej. problemas de red)
|
|
445
|
+
console.error("Ocurrió un error inesperado:", error);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
```
|
|
441
449
|
|
|
442
|
-
|
|
443
|
-
- `ONPREMISE`: Integración donde el cliente gestiona su propia infraestructura.
|
|
450
|
+
### Listado de Códigos de Error
|
|
444
451
|
|
|
445
|
-
|
|
452
|
+
A continuación se muestra una lista de los `errorCode` más comunes que puede devolver el SDK:
|
|
446
453
|
|
|
447
|
-
|
|
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. |
|
|
448
467
|
|
|
449
468
|
## Licencia
|
|
450
469
|
|
|
451
|
-
Este SDK está
|
|
470
|
+
Este SDK está distribuido bajo una licencia propietaria. Para más detalles, contacte con el equipo de Apacuana.
|