apacuana-sdk-core 0.9.0 → 0.11.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 +320 -236
- package/coverage/clover.xml +341 -212
- package/coverage/coverage-final.json +9 -7
- package/coverage/lcov-report/index.html +34 -19
- package/coverage/lcov-report/src/api/certs.js.html +493 -37
- package/coverage/lcov-report/src/api/faceLiveness.js.html +496 -0
- package/coverage/lcov-report/src/api/index.html +43 -28
- package/coverage/lcov-report/src/api/revocations.js.html +103 -106
- package/coverage/lcov-report/src/api/signatures.js.html +25 -253
- package/coverage/lcov-report/src/api/users.js.html +7 -13
- 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 +48 -3
- 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 +591 -352
- package/dist/api/certs.d.ts +13 -30
- package/dist/api/faceLiveness.d.ts +6 -0
- package/dist/api/revocations.d.ts +3 -42
- package/dist/api/signatures.d.ts +11 -153
- package/dist/index.d.ts +10 -0
- package/dist/index.js +630 -214
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +630 -214
- 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 +10 -0
- package/dist/types/revocations.d.ts +40 -0
- package/dist/types/signatures.d.ts +152 -0
- package/dist/types/users.d.ts +260 -0
- package/package.json +1 -1
- package/src/api/certs.js +175 -23
- package/src/api/faceLiveness.js +137 -0
- package/src/api/revocations.js +66 -67
- package/src/api/signatures.js +21 -97
- package/src/api/users.js +4 -6
- package/src/index.js +16 -1
- package/src/success/index.js +8 -0
- package/src/types/certs.js +56 -0
- package/src/types/faceLiveness.js +7 -0
- package/src/types/revocations.js +25 -0
- package/src/types/signatures.js +77 -0
- package/src/types/users.js +73 -0
- package/tests/api/certs.test.js +209 -4
- package/tests/api/faceLiveness.test.js +172 -0
- package/tests/api/revocations.test.js +37 -37
- package/tests/api/signatures.test.js +11 -5
- package/tests/api/users.test.js +3 -2
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,377 +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)
|
|
130
|
-
|
|
131
|
-
Obtiene el estado actual del certificado del usuario.
|
|
145
|
+
### `getCertStatus(isCertificateInDevice)`
|
|
132
146
|
|
|
133
|
-
|
|
147
|
+
Obtiene el estado del certificado del usuario.
|
|
134
148
|
|
|
135
|
-
-
|
|
149
|
+
- **`isCertificateInDevice`**: Booleano que indica si el certificado está en el dispositivo.
|
|
136
150
|
|
|
137
|
-
**
|
|
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
|
-
###
|
|
162
|
+
### `getCertTypes()`
|
|
144
163
|
|
|
145
|
-
|
|
164
|
+
Obtiene los tipos de certificados disponibles.
|
|
146
165
|
|
|
147
|
-
**
|
|
166
|
+
**Ejemplo:**
|
|
148
167
|
|
|
149
|
-
|
|
168
|
+
```javascript
|
|
169
|
+
try {
|
|
170
|
+
const response = await apacuana.getCertTypes();
|
|
171
|
+
console.log("Tipos de certificados:", response.data);
|
|
172
|
+
} catch (error) {
|
|
173
|
+
console.error("Error al obtener los tipos de certificado:", error.message);
|
|
174
|
+
}
|
|
175
|
+
```
|
|
150
176
|
|
|
151
|
-
|
|
177
|
+
### `getRequerimentsByTypeUser(params)`
|
|
152
178
|
|
|
153
|
-
|
|
179
|
+
Obtiene los requisitos para un tipo de usuario.
|
|
154
180
|
|
|
155
|
-
|
|
181
|
+
- **`params`**: Objeto con la propiedad `type` (numérico).
|
|
156
182
|
|
|
157
|
-
**
|
|
183
|
+
**Ejemplo:**
|
|
158
184
|
|
|
159
|
-
```
|
|
160
|
-
{
|
|
161
|
-
|
|
162
|
-
"
|
|
163
|
-
|
|
164
|
-
"
|
|
165
|
-
"signature": [
|
|
166
|
-
{
|
|
167
|
-
"page": 1,
|
|
168
|
-
"x": 0.5,
|
|
169
|
-
"y": 0.85
|
|
170
|
-
}
|
|
171
|
-
]
|
|
185
|
+
```javascript
|
|
186
|
+
try {
|
|
187
|
+
const response = await apacuana.getRequerimentsByTypeUser({ type: 1 });
|
|
188
|
+
console.log("Requisitos:", response.data);
|
|
189
|
+
} catch (error) {
|
|
190
|
+
console.error("Error al obtener los requisitos:", error.message);
|
|
172
191
|
}
|
|
173
192
|
```
|
|
174
193
|
|
|
175
|
-
|
|
194
|
+
### `requestCertificate(params)`
|
|
176
195
|
|
|
177
|
-
|
|
178
|
-
- **`reference`** (`string`, requerido): Referencia externa del documento en el gestor documental.
|
|
179
|
-
- **`typedoc`** (`string`, requerido): Tipo de documento de identidad. Valores permitidos: `V`, `P`, `E`.
|
|
180
|
-
- **`doc`** (`string`, requerido): Número del documento de identidad.
|
|
181
|
-
- **`signature`** (`Array<SignaturePosition>`, requerido): Un array de objetos que definen la posición de la firma.
|
|
182
|
-
- **`page`** (`number`, requerido): Número de página (entero positivo).
|
|
183
|
-
- **`x`** (`number`, requerido): Coordenada X (entre 0 y 1).
|
|
184
|
-
- **`y`** (`number`, requerido): Coordenada Y (entre 0 y 1).
|
|
196
|
+
Solicita un certificado.
|
|
185
197
|
|
|
186
|
-
|
|
198
|
+
- **`params`**: Objeto con las propiedades `type` (numérico) y `documents` (array).
|
|
187
199
|
|
|
188
|
-
|
|
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
|
+
```
|
|
189
211
|
|
|
190
|
-
|
|
212
|
+
### `addSigner(signerData)`
|
|
191
213
|
|
|
192
|
-
|
|
214
|
+
Añade un firmante a un documento.
|
|
193
215
|
|
|
194
|
-
|
|
216
|
+
- **`signerData`**: Objeto con los datos del firmante.
|
|
195
217
|
|
|
196
|
-
|
|
197
|
-
- `signer` (String): Un identificador del firmante, construido a partir de `typedoc` y `doc`.
|
|
198
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
218
|
+
**Ejemplo:**
|
|
199
219
|
|
|
200
|
-
|
|
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
|
+
```
|
|
201
235
|
|
|
202
|
-
|
|
236
|
+
### `getDocs(data)`
|
|
203
237
|
|
|
204
|
-
|
|
238
|
+
Obtiene una lista paginada de documentos.
|
|
205
239
|
|
|
206
|
-
-
|
|
207
|
-
- `cert` (String): Certificado del firmante en formato PEM (codificado en base64).
|
|
208
|
-
- `signatureId` (String): Identificador único del proceso de firma.
|
|
240
|
+
- **`data`**: Objeto con parámetros de paginación (`page`, `size`) y filtro (`status`).
|
|
209
241
|
|
|
210
|
-
**
|
|
242
|
+
**Ejemplo:**
|
|
211
243
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
+
```
|
|
215
253
|
|
|
216
|
-
###
|
|
254
|
+
### `getDigest(signData)`
|
|
217
255
|
|
|
218
|
-
|
|
256
|
+
Obtiene el digest de un documento para ser firmado.
|
|
219
257
|
|
|
220
|
-
|
|
258
|
+
- **`signData`**: Objeto con `cert` y `signatureId`.
|
|
221
259
|
|
|
222
|
-
|
|
223
|
-
- `signature` (Object): Objeto con información de la firma.
|
|
224
|
-
- `id` (String): ID de la firma.
|
|
225
|
-
- `positions` (Array<Object>): Posiciones de la firma en el documento.
|
|
226
|
-
- `cert` (String): El certificado del firmante en formato base64.
|
|
227
|
-
- `signedDigest` (String): El digest del documento, ya firmado.
|
|
260
|
+
**Ejemplo:**
|
|
228
261
|
|
|
229
|
-
|
|
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
|
+
```
|
|
230
271
|
|
|
231
|
-
|
|
272
|
+
### `signDocument(signData)`
|
|
232
273
|
|
|
233
|
-
|
|
274
|
+
Firma un documento.
|
|
234
275
|
|
|
235
|
-
|
|
276
|
+
- **`signData`**: Objeto con `signature`, `cert` y `signedDigest`.
|
|
236
277
|
|
|
237
|
-
**
|
|
278
|
+
**Ejemplo:**
|
|
238
279
|
|
|
239
|
-
|
|
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
|
+
```
|
|
240
293
|
|
|
241
|
-
|
|
294
|
+
### `uploadSignatureVariant(data)`
|
|
242
295
|
|
|
243
|
-
|
|
244
|
-
- `revocationStatus` (String): El estado de la solicitud (ej. "pending").
|
|
245
|
-
- `requestId` (String | Number): El ID de la solicitud de revocación.
|
|
296
|
+
Sube una imagen de firma.
|
|
246
297
|
|
|
247
|
-
|
|
298
|
+
- **`data`**: Objeto con la propiedad `file` (instancia de `File`, tipo `image/png`).
|
|
248
299
|
|
|
249
|
-
|
|
300
|
+
**Ejemplo:**
|
|
250
301
|
|
|
251
|
-
|
|
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
|
+
```
|
|
252
312
|
|
|
253
|
-
|
|
313
|
+
### `getSignatureVariant()`
|
|
254
314
|
|
|
255
|
-
|
|
256
|
-
- `reasons` (Array<Object>): Un array de objetos, donde cada objeto representa un motivo de revocación con `code` y `description`.
|
|
257
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
315
|
+
Obtiene la imagen de la firma del usuario.
|
|
258
316
|
|
|
259
|
-
**
|
|
317
|
+
**Ejemplo:**
|
|
260
318
|
|
|
261
|
-
|
|
262
|
-
|
|
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
|
+
```
|
|
263
328
|
|
|
264
|
-
###
|
|
329
|
+
### `deleteSignatureVariant()`
|
|
265
330
|
|
|
266
|
-
|
|
331
|
+
Elimina la imagen de la firma del usuario.
|
|
267
332
|
|
|
268
|
-
**
|
|
333
|
+
**Ejemplo:**
|
|
269
334
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
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
|
+
```
|
|
273
343
|
|
|
274
|
-
|
|
344
|
+
### `createFaceLivenessSession()`
|
|
275
345
|
|
|
276
|
-
|
|
277
|
-
- `message` (String): Un mensaje de confirmación.
|
|
278
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
346
|
+
Crea una sesión de prueba de vida.
|
|
279
347
|
|
|
280
|
-
**
|
|
348
|
+
**Ejemplo:**
|
|
281
349
|
|
|
282
|
-
|
|
283
|
-
|
|
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
|
+
```
|
|
284
358
|
|
|
285
|
-
###
|
|
359
|
+
### `requestRevocation(params)`
|
|
286
360
|
|
|
287
|
-
|
|
361
|
+
Solicita la revocación de un certificado.
|
|
288
362
|
|
|
289
|
-
|
|
363
|
+
- **`params`**: Objeto con la propiedad `reasonCode` (numérico).
|
|
290
364
|
|
|
291
|
-
**
|
|
365
|
+
**Ejemplo:**
|
|
292
366
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
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
|
+
```
|
|
296
375
|
|
|
297
|
-
|
|
376
|
+
### `getRevocationReasons()`
|
|
298
377
|
|
|
299
|
-
|
|
300
|
-
- **`ONPREMISE`**: No soportado. Lanza una `ApacuanaAPIError` con el código `NOT_IMPLEMENTED`.
|
|
378
|
+
Obtiene la lista de razones para la revocación.
|
|
301
379
|
|
|
302
380
|
**Ejemplo:**
|
|
303
381
|
|
|
304
382
|
```javascript
|
|
305
383
|
try {
|
|
306
|
-
const
|
|
307
|
-
|
|
308
|
-
console.log("Imagen de la firma obtenida.");
|
|
309
|
-
// Puedes usar 'file' para mostrar la imagen, por ejemplo:
|
|
310
|
-
// const img = document.createElement('img');
|
|
311
|
-
// img.src = `data:image/png;base64,${file}`;
|
|
312
|
-
// document.body.appendChild(img);
|
|
313
|
-
}
|
|
384
|
+
const response = await apacuana.getRevocationReasons();
|
|
385
|
+
console.log("Razones de revocación:", response.data);
|
|
314
386
|
} catch (error) {
|
|
315
|
-
console.error("Error al obtener
|
|
387
|
+
console.error("Error al obtener las razones de revocación:", error.message);
|
|
316
388
|
}
|
|
317
389
|
```
|
|
318
390
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
Elimina la variante de firma (imagen) de un firmante.
|
|
391
|
+
## Manejo de Errores
|
|
322
392
|
|
|
323
|
-
|
|
393
|
+
El SDK utiliza dos clases personalizadas para gestionar los resultados de las operaciones asíncronas: `ApacuanaSuccess` para éxitos y `ApacuanaAPIError` para fallos.
|
|
324
394
|
|
|
325
|
-
|
|
395
|
+
### `ApacuanaSuccess`
|
|
326
396
|
|
|
327
|
-
|
|
328
|
-
- `message` (String): Un mensaje de confirmación.
|
|
329
|
-
- `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.
|
|
330
398
|
|
|
331
|
-
**
|
|
399
|
+
**Propiedades:**
|
|
332
400
|
|
|
333
|
-
-
|
|
334
|
-
-
|
|
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.
|
|
335
404
|
|
|
336
|
-
**Ejemplo:**
|
|
405
|
+
**Ejemplo de uso:**
|
|
337
406
|
|
|
338
407
|
```javascript
|
|
339
408
|
try {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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);
|
|
344
414
|
} catch (error) {
|
|
345
|
-
|
|
415
|
+
// Manejo de errores (ver abajo)
|
|
416
|
+
console.error(error);
|
|
346
417
|
}
|
|
347
418
|
```
|
|
348
419
|
|
|
349
|
-
###
|
|
350
|
-
|
|
351
|
-
Obtiene una lista de documentos paginada.
|
|
352
|
-
|
|
353
|
-
**Parámetros:**
|
|
354
|
-
|
|
355
|
-
- `data` (`GetDocsParams`): Objeto que contiene los parámetros para la consulta.
|
|
356
|
-
- `page` (Number): Número de página.
|
|
357
|
-
- `size` (Number): Cantidad de resultados por página.
|
|
358
|
-
- `status` (Number, opcional): Filtra por estado (`-1`: Rechazado, `0`: Pendiente, `1`: Firmado, `2`: En proceso).
|
|
420
|
+
### `ApacuanaAPIError`
|
|
359
421
|
|
|
360
|
-
|
|
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.
|
|
361
423
|
|
|
362
|
-
|
|
363
|
-
- `totalRecords` (Number): El número total de documentos.
|
|
364
|
-
- `records` (Array<Object>): Un array de documentos.
|
|
365
|
-
- `success` (Boolean): Indicador de éxito de la operación.
|
|
424
|
+
**Propiedades:**
|
|
366
425
|
|
|
367
|
-
|
|
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.
|
|
368
430
|
|
|
369
|
-
|
|
370
|
-
- `ACTIVE`: Activo y listo para usar.
|
|
371
|
-
- `EXPIRED`: Caducado.
|
|
372
|
-
- `REVOKED`: Revocado.
|
|
373
|
-
- `SUSPENDED`: Suspendido temporalmente.
|
|
431
|
+
**Ejemplo de manejo de errores:**
|
|
374
432
|
|
|
375
|
-
|
|
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
|
+
```
|
|
376
449
|
|
|
377
|
-
|
|
378
|
-
- `ONPREMISE`: Integración donde el cliente gestiona su propia infraestructura.
|
|
450
|
+
### Listado de Códigos de Error
|
|
379
451
|
|
|
380
|
-
|
|
452
|
+
A continuación se muestra una lista de los `errorCode` más comunes que puede devolver el SDK:
|
|
381
453
|
|
|
382
|
-
|
|
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. |
|
|
383
467
|
|
|
384
468
|
## Licencia
|
|
385
469
|
|
|
386
|
-
Este SDK está
|
|
470
|
+
Este SDK está distribuido bajo una licencia propietaria. Para más detalles, contacte con el equipo de Apacuana.
|