santoid-sdk 5.1.0 → 5.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.
Files changed (65) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/README.md +278 -52
  3. package/api/ApiAsyncService.d.ts +32 -0
  4. package/api/ApiAsyncService.js +15 -0
  5. package/api/ApiFaceMatchService.d.ts +31 -0
  6. package/api/ApiFaceMatchService.js +32 -0
  7. package/api/ApiOcrService.d.ts +61 -0
  8. package/api/ApiOcrService.js +25 -0
  9. package/api/ApiTypificationService.d.ts +23 -0
  10. package/api/{TypificationService.js → ApiTypificationService.js} +8 -9
  11. package/browser/index.js +1 -1
  12. package/client/core/commons/BaseCoreService.d.ts +22 -0
  13. package/client/core/commons/BaseCoreService.js +150 -0
  14. package/client/core/index.d.ts +4 -0
  15. package/client/core/index.js +9 -0
  16. package/client/core/methods/faceMatch/Service.d.ts +20 -0
  17. package/client/core/methods/faceMatch/Service.js +126 -0
  18. package/client/core/methods/faceMatch/index.d.ts +15 -0
  19. package/client/core/methods/faceMatch/index.js +43 -0
  20. package/client/core/methods/ocr/Service.d.ts +13 -0
  21. package/client/core/methods/ocr/Service.js +56 -0
  22. package/client/core/methods/ocr/index.d.ts +10 -0
  23. package/client/core/methods/ocr/index.js +40 -0
  24. package/client/core/methods/typification/Service.d.ts +10 -0
  25. package/client/core/methods/typification/Service.js +56 -0
  26. package/client/core/methods/typification/index.d.ts +10 -0
  27. package/client/core/methods/typification/index.js +41 -0
  28. package/client/core/utils/types.d.ts +26 -0
  29. package/client/core/utils/types.js +2 -0
  30. package/client/index.d.ts +6 -0
  31. package/client/index.js +6 -0
  32. package/client/liveness/methods/livenessDetection/Service.js +10 -2
  33. package/client/liveness/methods/livenessDetection/index.js +5 -1
  34. package/client/liveness/methods/uploadIdentificationDocument/Service.d.ts +20 -19
  35. package/client/liveness/methods/uploadIdentificationDocument/Service.js +38 -5
  36. package/client/liveness/methods/uploadIdentificationDocument/index.d.ts +4 -6
  37. package/client/liveness/utils/getNextFrame.js +7 -2
  38. package/package.json +1 -1
  39. package/server/core/index.d.ts +4 -0
  40. package/server/core/index.js +9 -0
  41. package/server/core/methods/faceMatch/Service.d.ts +9 -0
  42. package/server/core/methods/faceMatch/Service.js +23 -0
  43. package/server/core/methods/faceMatch/index.d.ts +7 -0
  44. package/server/core/methods/faceMatch/index.js +28 -0
  45. package/server/core/methods/ocr/Service.d.ts +9 -0
  46. package/server/core/methods/ocr/Service.js +23 -0
  47. package/server/core/methods/ocr/index.d.ts +7 -0
  48. package/server/core/methods/ocr/index.js +28 -0
  49. package/server/core/methods/typification/Service.d.ts +9 -0
  50. package/server/core/methods/typification/Service.js +23 -0
  51. package/server/core/methods/typification/index.d.ts +7 -0
  52. package/server/core/methods/typification/index.js +28 -0
  53. package/server/index.d.ts +6 -0
  54. package/server/index.js +6 -0
  55. package/server/liveness/methods/livenessDetection/index.js +5 -1
  56. package/server/liveness/methods/uploadIdentificationDocument/Service.d.ts +2 -2
  57. package/server/liveness/methods/uploadIdentificationDocument/Service.js +4 -4
  58. package/server/liveness/methods/uploadIdentificationDocument/index.d.ts +6 -8
  59. package/utils/error.d.ts +19 -2
  60. package/utils/error.js +21 -2
  61. package/utils/types.d.ts +1 -0
  62. package/.bitbucket/pipelines/generated/pipeline/pipes/sonarsource/sonarcloud-scan/sonarcloud-scan.log +0 -286
  63. package/api/FaceMatchService.d.ts +0 -9
  64. package/api/FaceMatchService.js +0 -19
  65. package/api/TypificationService.d.ts +0 -90
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## Versão 5.3.0
4
+ - Foram adicionadas as versões para consumo da **Tipificação**, do **OCR** e do **Face Match**.
5
+
6
+ ## Versão 5.2.0
7
+
8
+ ### Mudanças
9
+ - Adicionada rota assíncrona para o método **startFaceMatch** utilizado internamente no método **startFaceComparison** da função **uploadIdentificationDocument**. Após a requisição, o método aguarda internamente a finalização do processamento dos resultados antes de entregá-los.
10
+ - Alteração no retorno do campo **results** do objeto **faceMatch** do resultado da função **uploadIdentificationDocument**. O novo formato está específicado na interface **IFaceMatchResult**. Foram adicionados novos campos no retorno, porém os campos que já estavam presentes nas versões anteriores não foram alterados.
11
+
3
12
  ## Versão 5.1.0
4
13
 
5
14
  ### Mudanças
@@ -10,7 +19,7 @@
10
19
 
11
20
  ### Mudanças
12
21
  - Adicionada rota assíncrona para o método **startDocumentUpload** da função **uploadIdentificationDocument**. Após a requisição, o método aguarda internamente a finalização do processamento dos resultados antes de entregá-los.
13
- - Mudança do payload do campo **results** do objeto **typification** do resultado da função **uploadIdentificationDocument**. O novo formato está específicado na interface **ITypificationResult**.
22
+ - Mudança no retorno do campo **results** do objeto **typification** do resultado da função **uploadIdentificationDocument**. O novo formato está específicado na interface **ITypificationResult**.
14
23
 
15
24
  ## Versão 4.0.0
16
25
 
package/README.md CHANGED
@@ -51,10 +51,274 @@ async function startSDK () {
51
51
  startSDK()
52
52
  ```
53
53
 
54
+ ## Envio de arquivos
55
+ Um ponto importante são os tipos dos arquivos que são suportados pelo SDK.
56
+
57
+ Para a execução em ambientes que utilizam JavaScript padrão, como os navegadores ou WebView, os tipos de arquivos suportados são **File** ou **Blob**.
58
+
59
+ Para ambientes Node.js, os tipos dos arquivos devem ser **string, ArrayBuffer, Buffer ou Buffer[]**.
60
+
61
+ ## Utilização da biblioteca via CDN / Tags \<script\>
62
+ Caso deseje utilizar a biblioteca via CDN, importando-a diretamente em uma tag **script**, basta utilizar o caminho especificado no exemplo abaixo, substituindo o **VERSION** pela versão desejada.
63
+
64
+ Ao importar a biblioteca via tag script, todas as funções do SDK ficarão disponíveis por meio da classe **SantoiDSDK**.
65
+
66
+ **Importante**: Nesse modo de utilização, as opções disponíveis para configuração dos métodos, assim como também as respostas dos métodos, são idênticas às descritas para a utilização em JavaScript de cada uma das funcionalidades, com a única diferença de que é necessário usar a classe da biblioteca.
67
+
68
+ ```html
69
+ <body>
70
+ <button onclick="startTypification()">Iniciar tipificação</button>
71
+ <button onclick="startLiveness()">Iniciar liveness</button>
72
+
73
+ <!-- ... -->
74
+
75
+ <script src="https://cdn.jsdelivr.net/npm/santoid-sdk@VERSION/browser/index.js"></script>
76
+
77
+ <script>
78
+ function startTypification () {
79
+ SantoiDSDK.typification({
80
+ track: 'string',
81
+ token: 'string',
82
+
83
+ // ...
84
+ })
85
+ }
86
+
87
+ function startLiveness () {
88
+ SantoiDSDK.livenessDetection({
89
+ track: 'string',
90
+ token: 'string',
91
+
92
+ // ...
93
+ })
94
+ }
95
+
96
+ // ...
97
+ </script>
98
+ </body>
99
+ ```
100
+
54
101
  ## Funcionalidades disponíveis
55
102
 
103
+ ### Tipificação
104
+ Por meio do SDK é possível utilizar a funcionalidade de **Tipificação**, que permite reconhecer o tipo de um documento e, caso necessário, aplicar o sistema de OCR para extrair as informações de seus campos.
105
+
106
+ #### Utilização em JavaScript
107
+ Para utilizar a funcionalidade de Tipificação, é necessário importar a função de Tipificação e acioná-la passando as opções necessárias.
108
+
109
+ Para o caso da execução da função em um navegador ou ambientes parecidos é possível iniciar a câmera e usar o próprio SDK para tirar fotos para consumo ou enviar os arquivos manualmente.
110
+
111
+ Você também pode optar por fazer isso assim que a função inicial for chamada ou deixar para tirar as fotos/enviar arquivos em um momento posterior utilizando as opções adequadas.
112
+
113
+ ```ts
114
+ import { typification } from 'santoid-sdk/client/core'
115
+
116
+ // ...
117
+
118
+ // Método 1 - Para iniciar câmera assim que a função for chamada
119
+ const typificationResponse = await typification({
120
+ token: 'string',
121
+ track: 'string',
122
+ customId: 'string',
123
+
124
+ startTheCameraImmediately: true,
125
+
126
+ onStart (params) {
127
+ // ...
128
+ },
129
+
130
+ // ...
131
+ })
132
+
133
+ // Método 2 - Para enviar arquivos assim que a função for chamada
134
+ const typificationResponse = await typification({
135
+ startTheCameraImmediately: false,
136
+
137
+ // ...
138
+ }, fileVariable)
139
+
140
+ // Método 3 - Para fazer isso depois
141
+ const typificationResponse = await typification({
142
+ startTheCameraImmediately: false,
143
+
144
+ // ...
145
+ })
146
+
147
+ typificationResponse.startCamera()
148
+
149
+ // Ou
150
+
151
+ typificationResponse.sendFile(fileVariable)
152
+ ```
153
+
154
+ #### Opções para a função typification (JavaScript)
155
+
156
+ | Nome da propriedade | Função | É obrigatório? |
157
+ | ------------------- | ------ | -------------- |
158
+ | token | Token de acesso obtido por meio da autenticação. | Sim |
159
+ | track | Identificador do processo que será utilizado. | Sim |
160
+ | customId | Identificador customizado para auditoria. | Não |
161
+ | startTheCameraImmediately | Booleano que determina se a câmera será acionada assim que a função for executada ou se será acionada manualmente depois. Por padrão, a câmera será acionada automaticamente. | Não |
162
+ | onStart | Função executada quando a verificação for iniciada. <br><br>Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (**videoStream**), caso disponível. | Não |
163
+ | onUpdate | Função executada toda vez que ocorre uma atualização no status geral (quando alguma operação é iniciada ou concluída, quando ocorre erro, etc.). <br><br>Disponibiliza pelos parâmetros um objeto contendo as informações sobre a situação do processamento (qual o status atual, se está carregando, se existe erro, etc.) | Não |
164
+ | onValidationRequested | Função executada quando o status do processamento é "validation". Retorna informações da requisição para que o usuário consiga fazer a validação manual da requisição | Não |
165
+ | onError | Função executada quando ocorre um erro. <br><br>Disponibiliza pelos parâmetros a instância do erro, a qual contém um identificador (propriedade **code**). | Não |
166
+ | onSuccess | Função executada quando a verificação é finalizada com sucesso. <br><br>Disponibiliza pelos parâmetros um objeto com os resultados, compostos pelo ID da solicitação (**livenessId**) e pelos frames de sucesso (**successFrames**). | Não |
167
+ | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
168
+
169
+ #### Utilização em Node.js
170
+ A utilização da função de Tipificação em Node.js é idêntica à utilização em JavaScript normal para browsers e ambientes semelhantes, com a exceção das funções e propriedades relacionadas à câmera, que não estão disponíveis nesta versão.
171
+
172
+ ### OCR
173
+ Por meio do SDK também é possível utilizar a funcionalidade de **OCR** diretamente, que permite extrair as informações dos campos de um documento.
174
+
175
+ #### Utilização em JavaScript
176
+ Para utilizar a funcionalidade de OCR, é necessário importar a função de OCR e acioná-la passando as opções necessárias.
177
+
178
+ Para o caso da execução da função em um navegador ou ambientes parecidos é possível iniciar a câmera e usar o próprio SDK para tirar fotos para consumo ou enviar os arquivos manualmente.
179
+
180
+ Você também pode optar por fazer isso assim que a função inicial for chamada ou deixar para tirar as fotos/enviar arquivos em um momento posterior utilizando as opções adequadas.
181
+
182
+ ```ts
183
+ import { ocr } from 'santoid-sdk/client/core'
184
+
185
+ // ...
186
+
187
+ // Método 1 - Para iniciar câmera assim que a função for chamada
188
+ const ocrResponse = await ocr({
189
+ token: 'string',
190
+ track: 'string',
191
+ customId: 'string',
192
+
193
+ startTheCameraImmediately: true,
194
+
195
+ onStart (params) {
196
+ // ...
197
+ },
198
+
199
+ // ...
200
+ })
201
+
202
+ // Método 2 - Para enviar arquivos assim que a função for chamada
203
+ const ocrResponse = await ocr({
204
+ startTheCameraImmediately: false,
205
+
206
+ // ...
207
+ }, fileVariable)
208
+
209
+ // Método 3 - Para fazer isso depois
210
+ const ocrResponse = await ocr({
211
+ startTheCameraImmediately: false,
212
+
213
+ // ...
214
+ })
215
+
216
+ ocrResponse.startCamera()
217
+
218
+ // Ou
219
+
220
+ ocrResponse.sendFile(fileVariable)
221
+ ```
222
+
223
+ #### Opções para a função ocr (JavaScript)
224
+
225
+ | Nome da propriedade | Função | É obrigatório? |
226
+ | ------------------- | ------ | -------------- |
227
+ | token | Token de acesso obtido por meio da autenticação. | Sim |
228
+ | track | Identificador do processo que será utilizado. | Sim |
229
+ | customId | Identificador customizado para auditoria. | Não |
230
+ | startTheCameraImmediately | Booleano que determina se a câmera será acionada assim que a função for executada ou se será acionada manualmente depois. Por padrão, a câmera será acionada automaticamente. | Não |
231
+ | onStart | Função executada quando a verificação for iniciada. <br><br>Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (**videoStream**), caso disponível. | Não |
232
+ | onUpdate | Função executada toda vez que ocorre uma atualização no status geral (quando alguma operação é iniciada ou concluída, quando ocorre erro, etc.). <br><br>Disponibiliza pelos parâmetros um objeto contendo as informações sobre a situação do processamento (qual o status atual, se está carregando, se existe erro, etc.) | Não |
233
+ | onValidationRequested | Função executada quando o status do processamento é "validation". Retorna informações da requisição para que o usuário consiga fazer a validação manual da requisição | Não |
234
+ | onError | Função executada quando ocorre um erro. <br><br>Disponibiliza pelos parâmetros a instância do erro, a qual contém um identificador (propriedade **code**). | Não |
235
+ | onSuccess | Função executada quando a verificação é finalizada com sucesso. <br><br>Disponibiliza pelos parâmetros um objeto com os resultados, compostos pelo ID da solicitação (**livenessId**) e pelos frames de sucesso (**successFrames**). | Não |
236
+ | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
237
+
238
+ #### Utilização em Node.js
239
+ A utilização da função de OCR em Node.js é idêntica à utilização em JavaScript normal para browsers e ambientes semelhantes, com a exceção das funções e propriedades relacionadas à câmera, que não estão disponíveis nesta versão.
240
+
241
+ ### Face Match
242
+ Por meio do SDK também é possível utilizar a funcionalidade de **Face Match**, que permite comparar duas faces e verificar se são iguais. É possível enviar uma imagem que contenha dois rostos para comparação, ou enviar duas imagens, com um rosto em cada uma.
243
+
244
+ #### Utilização em JavaScript
245
+ O uso da função de Face Match é muito semelhante ao das funções de Tipificação e OCR, com a única diferença de que é preciso lidar com até duas imagens.
246
+
247
+ Ou seja, se for utilizar o sistema de câmera, você pode optar por tirar uma única foto ou tirar duas fotos. E se for utilizar o envio de arquivos manual, pode optar por enviar um ou dois arquivos.
248
+
249
+ E em cada um desses modos, pode optar por realizar a obtenção/fornecimento de imagens assim que executar a função ou posteriormente.
250
+
251
+ Outro detalhe é que, caso opte por utilizar o sistema embutido de captura de fotos, o processamento será iniciado automaticamente com uma única foto. Caso deseje tirar duas, você pode utilizar a opção **startProcessing** dos métodos de captura de imagem para controlar se deseja ou não iniciar o processamento.
252
+
253
+ ```ts
254
+ import { faceMatch } from 'santoid-sdk/client/core'
255
+
256
+ // ...
257
+
258
+ // Método 1 - Para iniciar câmera assim que a função for chamada
259
+ const faceMatchResponse = await faceMatch({
260
+ token: 'string',
261
+ track: 'string',
262
+ customId: 'string',
263
+
264
+ startTheCameraImmediately: true,
265
+
266
+ onStart (params) {
267
+ // ...
268
+ },
269
+
270
+ // ...
271
+ })
272
+
273
+ // Caso deseje tirar uma única foto
274
+ faceMatchResponse.captureFirstImage()
275
+
276
+ // Caso deseje tirar duas fotos
277
+ faceMatchResponse.captureFirstImage({ startProcessing: false })
278
+ faceMatchResponse.captureSecondImage()
279
+
280
+ // Método 2 - Para enviar arquivos assim que a função for chamada
281
+ const faceMatchResponse = await faceMatch({
282
+ startTheCameraImmediately: false,
283
+
284
+ // ...
285
+ }, fileVariable1, fileVariable2)
286
+
287
+ // Método 3 - Para fazer isso depois
288
+ const faceMatchResponse = await faceMatch({
289
+ startTheCameraImmediately: false,
290
+
291
+ // ...
292
+ })
293
+
294
+ ocrResponse.startCamera()
295
+ faceMatchResponse.captureFirstImage()
296
+
297
+ // Ou
298
+
299
+ ocrResponse.sendFiles(fileVariable1, fileVariable2)
300
+ ```
301
+
302
+ #### Opções para a função faceMatch (JavaScript)
303
+
304
+ | Nome da propriedade | Função | É obrigatório? |
305
+ | ------------------- | ------ | -------------- |
306
+ | token | Token de acesso obtido por meio da autenticação. | Sim |
307
+ | track | Identificador do processo que será utilizado. | Sim |
308
+ | customId | Identificador customizado para auditoria. | Não |
309
+ | startTheCameraImmediately | Booleano que determina se a câmera será acionada assim que a função for executada ou se será acionada manualmente depois. Por padrão, a câmera será acionada automaticamente. | Não |
310
+ | onStart | Função executada quando a verificação for iniciada. <br><br>Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (**videoStream**), caso disponível. | Não |
311
+ | onUpdate | Função executada toda vez que ocorre uma atualização no status geral (quando alguma operação é iniciada ou concluída, quando ocorre erro, etc.). <br><br>Disponibiliza pelos parâmetros um objeto contendo as informações sobre a situação do processamento (qual o status atual, se está carregando, se existe erro, etc.) | Não |
312
+ | onValidationRequested | Função executada quando o status do processamento é "validation". Retorna informações da requisição para que o usuário consiga fazer a validação manual da requisição | Não |
313
+ | onError | Função executada quando ocorre um erro. <br><br>Disponibiliza pelos parâmetros a instância do erro, a qual contém um identificador (propriedade **code**). | Não |
314
+ | onSuccess | Função executada quando a verificação é finalizada com sucesso. <br><br>Disponibiliza pelos parâmetros um objeto com os resultados, compostos pelo ID da solicitação (**livenessId**) e pelos frames de sucesso (**successFrames**). | Não |
315
+ | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
316
+
317
+ #### Utilização em Node.js
318
+ A utilização da função de Face Match em Node.js é idêntica à utilização em JavaScript normal para browsers e ambientes semelhantes, com a exceção das funções e propriedades relacionadas à câmera, que não estão disponíveis nesta versão.
319
+
56
320
  ### Prova de Vida
57
- Atualmente, o SDK conta com a funcionalidade de **Prova de Vida**, que possibilita a verificação do usuário atual, avaliando se uma pessoa real está realizando as atividades online por meio de uma rápida análise facial.
321
+ O SDK conta com a funcionalidade de **Prova de Vida**, que possibilita a verificação do usuário atual, avaliando se uma pessoa real está realizando as atividades online por meio de uma rápida análise facial.
58
322
 
59
323
  #### Utilização em JavaScript
60
324
  Para utilizar a funcionalidade de Prova de Vida, é necessário importar a função para iniciar a verificação e passar alguns valores dentro do objeto de opções, como no exemplo abaixo:
@@ -182,34 +446,6 @@ const livenessDetectionResponse = livenessDetection({
182
446
  const { stopLivenessDetection, pauseGettingFrames, resumeGettingFrames } = livenessDetectionResponse
183
447
  ```
184
448
 
185
- #### Utilização via CDN
186
- Caso deseje utilizar a biblioteca via CDN, importando-a diretamente em uma tag **script**, basta utilizar o caminho especificado no exemplo abaixo.
187
-
188
- Ao importar a biblioteca via tag script, a função **livenessDetection** ficará disponível por meio da classe **SantoiDSDK**.
189
-
190
- Substitua o **VERSION** pela versão desejada.
191
-
192
- Nesse modo de utilização, as opções disponíveis para configuração são as mesmas da versão JavaScript.
193
-
194
- ```html
195
- <body>
196
- <button onclick="startLiveness()">Iniciar</button>
197
-
198
- <script src="https://cdn.jsdelivr.net/npm/santoid-sdk@VERSION/browser/index.js"></script>
199
-
200
- <script>
201
- function startLiveness () {
202
- SantoiDSDK.livenessDetection({
203
- track: 'string',
204
- token: 'string',
205
-
206
- // ...
207
- })
208
- }
209
- </script>
210
- </body>
211
- ```
212
-
213
449
  ### Teste do Fluxo Completo
214
450
  Com a funcionalidade do teste do fluxo completo do Santo iD, é possível iniciar a análise de prova de vida juntamente com a análise de um documento de identificação enviado, realizando também a comparação da face encontrada na prova de vida com a do documento ao final do processo.
215
451
 
@@ -424,9 +660,22 @@ interface ILivenessResults {
424
660
  }
425
661
 
426
662
  interface IFaceMatchResult {
663
+ domain: string
664
+ track: string
665
+ service: string
666
+ requestId: string
667
+ requestType: string
668
+ customerRequestId: string
669
+ executionDatetime: string
670
+ error?: {
671
+ error: string
672
+ }
673
+ status: string
427
674
  comparison_score: number
428
675
  similarity_score: number
429
676
  match: boolean
677
+ fileImage1?: string
678
+ fileImage2?: string
430
679
  }
431
680
  ```
432
681
 
@@ -456,26 +705,3 @@ const uploadIdentificationDocumentResponse = uploadIdentificationDocument({
456
705
  // ...
457
706
  })
458
707
  ```
459
-
460
-
461
- #### Utilização via CDN
462
- De forma semelhante à funcionalidade da Prova de Vida, a funcionalidade do teste do fluxo
463
- completo também é disponibilizada globalmente por meio da classe SantoiDSDK.
464
-
465
- Substitua o **VERSION** pela versão desejada.
466
-
467
- ```html
468
- <body>
469
- <button onclick="startUploadIdentificationDocument()">Iniciar</button>
470
-
471
- <script src="https://cdn.jsdelivr.net/npm/santoid-sdk@VERSION/browser/index.js"></script>
472
-
473
- <script>
474
- async function startUploadIdentificationDocument () {
475
- const { startAll } = SantoiDSDK.uploadIdentificationDocument({
476
- // ...
477
- })
478
- }
479
- </script>
480
- </body>
481
- ```
@@ -0,0 +1,32 @@
1
+ import { AbstractService } from './AbstractService';
2
+ export declare class ApiAsyncService extends AbstractService {
3
+ resultsRoute: string;
4
+ constructor(asyncServiceOptions: IAsyncServiceConstructorOptions, ...abstractServiceOptions: ConstructorParameters<typeof AbstractService>);
5
+ get(requestId: string): Promise<IRequestStatusGetResponse>;
6
+ }
7
+ interface IAsyncServiceConstructorOptions {
8
+ resultsRoute: string;
9
+ }
10
+ export interface IAsyncProcessingStartedResponse {
11
+ createdAt: string;
12
+ message: string;
13
+ requestId: string;
14
+ }
15
+ export interface IRequestStatusGetResponse {
16
+ id: string;
17
+ status: string;
18
+ fileURL?: string;
19
+ }
20
+ export interface IBaseAsyncResult {
21
+ count: number;
22
+ customerRequestId: string;
23
+ domain: string;
24
+ error: object;
25
+ executionDatetime: string;
26
+ requestId: string;
27
+ requestType: string;
28
+ service: string;
29
+ status: string;
30
+ track: string;
31
+ }
32
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiAsyncService = void 0;
4
+ const AbstractService_1 = require("./AbstractService");
5
+ class ApiAsyncService extends AbstractService_1.AbstractService {
6
+ constructor(asyncServiceOptions, ...abstractServiceOptions) {
7
+ super(...abstractServiceOptions);
8
+ this.resultsRoute = asyncServiceOptions.resultsRoute;
9
+ }
10
+ async get(requestId) {
11
+ const response = await this.request().get(`/api/v1/tracks/${this.options.track}/${this.resultsRoute}/` + requestId);
12
+ return response.data;
13
+ }
14
+ }
15
+ exports.ApiAsyncService = ApiAsyncService;
@@ -0,0 +1,31 @@
1
+ import { type AbstractService } from './AbstractService';
2
+ import { ApiAsyncService, type IAsyncProcessingStartedResponse } from './ApiAsyncService';
3
+ export declare class ApiFaceMatchService<TFileType> extends ApiAsyncService {
4
+ constructor(...abstractServiceOptions: ConstructorParameters<typeof AbstractService>);
5
+ faceMatch(imageFile1: TFileType, imageFile2?: TFileType, customerRequestId?: string): Promise<IAsyncProcessingStartedResponse>;
6
+ get(...params: Parameters<InstanceType<typeof ApiAsyncService>['get']>): Promise<IFaceMatchStatusGetResponse>;
7
+ }
8
+ interface IFaceMatchStatusGetResponse extends Awaited<ReturnType<InstanceType<typeof ApiAsyncService>['get']>> {
9
+ fileImage1?: string;
10
+ fileImage2?: string;
11
+ }
12
+ export interface IError {
13
+ error: string;
14
+ }
15
+ export interface IFaceMatchResult {
16
+ domain: string;
17
+ track: string;
18
+ service: string;
19
+ requestId: string;
20
+ requestType: string;
21
+ customerRequestId: string;
22
+ executionDatetime: string;
23
+ error?: IError;
24
+ status: string;
25
+ comparison_score: number;
26
+ similarity_score: number;
27
+ match: boolean;
28
+ fileImage1?: string;
29
+ fileImage2?: string;
30
+ }
31
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiFaceMatchService = void 0;
4
+ const ApiAsyncService_1 = require("./ApiAsyncService");
5
+ const index_1 = require("../utils/index");
6
+ class ApiFaceMatchService extends ApiAsyncService_1.ApiAsyncService {
7
+ constructor(...abstractServiceOptions) {
8
+ super({ resultsRoute: 'face-async' }, ...abstractServiceOptions);
9
+ }
10
+ async faceMatch(imageFile1, imageFile2, customerRequestId) {
11
+ const requestFn = async () => {
12
+ const formData = new this.serviceOptions.FormDataClass();
13
+ formData.append('track', this.options.track);
14
+ formData.append('deliveryFront', 'true');
15
+ formData.append('sensitive_data_compliance', 'true');
16
+ formData.append('imageFile1', imageFile1, 'imageFile1.jpg');
17
+ if (imageFile2) {
18
+ formData.append('imageFile2', imageFile2, 'imageFile2.jpg');
19
+ }
20
+ if (customerRequestId) {
21
+ formData.append('customerRequestId', customerRequestId);
22
+ }
23
+ const response = await this.request({ contentType: 'multipart/form-data' }).post('/api/v1/face-match-async', formData);
24
+ return response.data;
25
+ };
26
+ return await (0, index_1.retryAsyncFunctionXTimes)(requestFn);
27
+ }
28
+ async get(...params) {
29
+ return await super.get(...params);
30
+ }
31
+ }
32
+ exports.ApiFaceMatchService = ApiFaceMatchService;
@@ -0,0 +1,61 @@
1
+ import { type AbstractService } from './AbstractService';
2
+ import { ApiAsyncService, type IAsyncProcessingStartedResponse, type IBaseAsyncResult } from './ApiAsyncService';
3
+ export declare class ApiOcrService<TFileType> extends ApiAsyncService {
4
+ constructor(...abstractServiceOptions: ConstructorParameters<typeof AbstractService>);
5
+ extract(imageFile: TFileType, customerRequestId: string): Promise<IAsyncProcessingStartedResponse>;
6
+ }
7
+ export interface IOcrListResult {
8
+ x: number;
9
+ y: number;
10
+ w: number;
11
+ h: number;
12
+ bottomRight: number[];
13
+ topLeft: number[];
14
+ dataField?: string;
15
+ dataFieldValue?: boolean;
16
+ label: string | null;
17
+ ocr?: string | null;
18
+ ocr_score?: number;
19
+ cropBase64?: string | null;
20
+ }
21
+ export interface ICropResult {
22
+ x: number;
23
+ y: number;
24
+ w: number;
25
+ h: number;
26
+ bottomRight: number[];
27
+ topLeft: number[];
28
+ label: string | null;
29
+ text: string | null;
30
+ ocr_score: number | null;
31
+ crop: string | null;
32
+ ocrInterpretive?: boolean | string | null;
33
+ ocrList: IOcrListResult[] | null;
34
+ serpro_query?: {
35
+ serpro_data: any;
36
+ search_logs: {
37
+ document: string;
38
+ type: string;
39
+ search_time: string;
40
+ status_code: number;
41
+ message: string;
42
+ };
43
+ } | null;
44
+ validation: {
45
+ type: string | null;
46
+ value: number | string | boolean;
47
+ } | null;
48
+ validationSerpro?: Record<string, number | boolean>;
49
+ }
50
+ export interface IOcrDocumentResult {
51
+ error?: {
52
+ message: string;
53
+ };
54
+ ocr: {
55
+ template: string;
56
+ labels: ICropResult[] | null;
57
+ } | boolean;
58
+ }
59
+ export interface IOcrResult extends IBaseAsyncResult {
60
+ documents: IOcrDocumentResult[];
61
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiOcrService = void 0;
4
+ const ApiAsyncService_1 = require("./ApiAsyncService");
5
+ const index_1 = require("../utils/index");
6
+ class ApiOcrService extends ApiAsyncService_1.ApiAsyncService {
7
+ constructor(...abstractServiceOptions) {
8
+ super({ resultsRoute: 'ocr-async' }, ...abstractServiceOptions);
9
+ }
10
+ async extract(imageFile, customerRequestId) {
11
+ const requestFn = async () => {
12
+ const formData = new this.serviceOptions.FormDataClass();
13
+ formData.append('imageFile', imageFile, 'imageFile.jpg');
14
+ formData.append('track', this.options.track);
15
+ formData.append('template', this.options.template);
16
+ formData.append('customerRequestId', customerRequestId);
17
+ formData.append('deliveryFront', 'true');
18
+ const response = await this.request({ contentType: 'multipart/form-data' })
19
+ .post('/api/v1/ocr-async/ocr', formData);
20
+ return response.data;
21
+ };
22
+ return await (0, index_1.retryAsyncFunctionXTimes)(requestFn);
23
+ }
24
+ }
25
+ exports.ApiOcrService = ApiOcrService;
@@ -0,0 +1,23 @@
1
+ import { type AbstractService } from './AbstractService';
2
+ import { ApiAsyncService, type IAsyncProcessingStartedResponse, type IBaseAsyncResult } from './ApiAsyncService';
3
+ import { type ICropResult } from './ApiOcrService';
4
+ export declare class ApiTypificationService<TFileType> extends ApiAsyncService {
5
+ constructor(...abstractServiceOptions: ConstructorParameters<typeof AbstractService>);
6
+ predict(imageFile: TFileType, customerRequestId: string): Promise<IAsyncProcessingStartedResponse>;
7
+ }
8
+ export interface ITypificationDocumentResult {
9
+ typification: {
10
+ id: string;
11
+ score: number;
12
+ };
13
+ error?: {
14
+ message: string;
15
+ };
16
+ ocr: {
17
+ template: string;
18
+ labels: ICropResult[] | null;
19
+ } | boolean;
20
+ }
21
+ export interface ITypificationResult extends IBaseAsyncResult {
22
+ documents: ITypificationDocumentResult[];
23
+ }
@@ -1,25 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TypificationService = void 0;
4
- const AbstractService_1 = require("./AbstractService");
3
+ exports.ApiTypificationService = void 0;
4
+ const ApiAsyncService_1 = require("./ApiAsyncService");
5
5
  const index_1 = require("../utils/index");
6
- class TypificationService extends AbstractService_1.AbstractService {
6
+ class ApiTypificationService extends ApiAsyncService_1.ApiAsyncService {
7
+ constructor(...abstractServiceOptions) {
8
+ super({ resultsRoute: 'typification-async' }, ...abstractServiceOptions);
9
+ }
7
10
  async predict(imageFile, customerRequestId) {
8
11
  const requestFn = async () => {
9
12
  const formData = new this.serviceOptions.FormDataClass();
10
13
  formData.append('imageFile', imageFile, 'imageFile.jpg');
11
14
  formData.append('track', this.options.track);
12
15
  formData.append('customerRequestId', customerRequestId);
13
- formData.append('deliveryFront', true);
16
+ formData.append('deliveryFront', 'true');
14
17
  const response = await this.request({ contentType: 'multipart/form-data' })
15
18
  .post('/api/v1/typification-async/predict', formData);
16
19
  return response.data;
17
20
  };
18
21
  return await (0, index_1.retryAsyncFunctionXTimes)(requestFn);
19
22
  }
20
- async get(requestId) {
21
- const response = await this.request().get(`/api/v1/tracks/${this.options.track}/typification-async/` + requestId);
22
- return response.data;
23
- }
24
23
  }
25
- exports.TypificationService = TypificationService;
24
+ exports.ApiTypificationService = ApiTypificationService;