santoid-sdk 5.2.0 → 5.4.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 (66) hide show
  1. package/.bitbucket/pipelines/generated/pipeline/pipes/sonarsource/sonarcloud-scan/sonarcloud-scan.log +263 -295
  2. package/CHANGELOG.md +7 -0
  3. package/README.md +455 -143
  4. package/api/ApiAsyncService.d.ts +32 -0
  5. package/api/ApiAsyncService.js +15 -0
  6. package/api/ApiFaceMatchService.d.ts +30 -0
  7. package/api/ApiFaceMatchService.js +32 -0
  8. package/api/ApiOcrService.d.ts +62 -0
  9. package/api/ApiOcrService.js +25 -0
  10. package/api/ApiTypificationService.d.ts +23 -0
  11. package/api/{TypificationService.js → ApiTypificationService.js} +8 -9
  12. package/browser/index.js +1 -1
  13. package/client/core/commons/BaseCoreService.d.ts +23 -0
  14. package/client/core/commons/BaseCoreService.js +156 -0
  15. package/client/core/index.d.ts +4 -0
  16. package/client/core/index.js +9 -0
  17. package/client/core/methods/faceMatch/Service.d.ts +19 -0
  18. package/client/core/methods/faceMatch/Service.js +122 -0
  19. package/client/core/methods/faceMatch/index.d.ts +15 -0
  20. package/client/core/methods/faceMatch/index.js +43 -0
  21. package/client/core/methods/ocr/Service.d.ts +11 -0
  22. package/client/core/methods/ocr/Service.js +52 -0
  23. package/client/core/methods/ocr/index.d.ts +10 -0
  24. package/client/core/methods/ocr/index.js +40 -0
  25. package/client/core/methods/typification/Service.d.ts +9 -0
  26. package/client/core/methods/typification/Service.js +52 -0
  27. package/client/core/methods/typification/index.d.ts +10 -0
  28. package/client/core/methods/typification/index.js +40 -0
  29. package/client/core/utils/types.d.ts +30 -0
  30. package/client/core/utils/types.js +2 -0
  31. package/client/index.d.ts +6 -0
  32. package/client/index.js +6 -0
  33. package/client/liveness/methods/livenessDetection/Service.js +10 -2
  34. package/client/liveness/methods/livenessDetection/index.js +5 -1
  35. package/client/liveness/methods/uploadIdentificationDocument/Service.d.ts +19 -19
  36. package/client/liveness/methods/uploadIdentificationDocument/Service.js +8 -4
  37. package/client/liveness/methods/uploadIdentificationDocument/index.d.ts +4 -6
  38. package/client/liveness/utils/getNextFrame.d.ts +4 -1
  39. package/client/liveness/utils/getNextFrame.js +9 -3
  40. package/package.json +1 -1
  41. package/server/core/index.d.ts +4 -0
  42. package/server/core/index.js +9 -0
  43. package/server/core/methods/faceMatch/Service.d.ts +9 -0
  44. package/server/core/methods/faceMatch/Service.js +23 -0
  45. package/server/core/methods/faceMatch/index.d.ts +7 -0
  46. package/server/core/methods/faceMatch/index.js +28 -0
  47. package/server/core/methods/ocr/Service.d.ts +9 -0
  48. package/server/core/methods/ocr/Service.js +23 -0
  49. package/server/core/methods/ocr/index.d.ts +7 -0
  50. package/server/core/methods/ocr/index.js +28 -0
  51. package/server/core/methods/typification/Service.d.ts +9 -0
  52. package/server/core/methods/typification/Service.js +23 -0
  53. package/server/core/methods/typification/index.d.ts +7 -0
  54. package/server/core/methods/typification/index.js +28 -0
  55. package/server/index.d.ts +6 -0
  56. package/server/index.js +6 -0
  57. package/server/liveness/methods/livenessDetection/index.js +5 -1
  58. package/server/liveness/methods/uploadIdentificationDocument/Service.d.ts +2 -2
  59. package/server/liveness/methods/uploadIdentificationDocument/Service.js +4 -4
  60. package/server/liveness/methods/uploadIdentificationDocument/index.d.ts +6 -8
  61. package/utils/error.d.ts +19 -2
  62. package/utils/error.js +21 -2
  63. package/utils/types.d.ts +1 -0
  64. package/api/FaceMatchService.d.ts +0 -42
  65. package/api/FaceMatchService.js +0 -26
  66. package/api/TypificationService.d.ts +0 -90
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## Versão 5.4.0
4
+ - Foram adicionadas as funções de callback **onCameraStart** e **onCameraStop** para as funcionalidades de **Tipificação**, **OCR** e **Face Match**.
5
+ - Agora as funções de iniciar câmera para **Tipificação**, **OCR** e **Face Match** possuem a opção **facingMode**, que permitem que o usuário especifique a direção desejada da câmera
6
+
7
+ ## Versão 5.3.0
8
+ - Foram adicionadas as versões para consumo da **Tipificação**, do **OCR** e do **Face Match**.
9
+
3
10
  ## Versão 5.2.0
4
11
 
5
12
  ### Mudanças
package/README.md CHANGED
@@ -51,10 +51,319 @@ 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 execução em navegadores e ambientes semelhantes, 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
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
+ typificationResponse.captureImage()
149
+
150
+ // Ou
151
+
152
+ typificationResponse.sendFile(fileVariable)
153
+ ```
154
+
155
+ #### Opções para a função typification (JavaScript)
156
+
157
+ | Nome da propriedade | Função | É obrigatório? |
158
+ | ------------------- | ------ | -------------- |
159
+ | token | Token de acesso obtido por meio da autenticação. | Sim |
160
+ | track | Identificador do processo que será utilizado. | Sim |
161
+ | customId | Identificador customizado para auditoria. | Não |
162
+ | 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 |
163
+ | 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 |
164
+ | onCameraStart | Função executada quando a câmera for iniciada. <br><br>Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (**videoStream**), caso disponível. | Não |
165
+ | onCameraStop | Função executada quando a câmera for interrompida. | Não |
166
+ | 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 |
167
+ | 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 |
168
+ | 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 |
169
+ | onSuccess | Função executada quando a verificação é finalizada com sucesso. <br><br>Disponibiliza pelos parâmetros um objeto com os resultados. | Não |
170
+ | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
171
+
172
+ #### Retorno da função typification (JavaScript)
173
+ | Nome da propriedade | Função |
174
+ | ------------------- | ------ |
175
+ | startCamera | Função para iniciar a câmera manualmente. <br><br>É possível informar nos parâmetros a direção de câmera desejada (**facingMode**), seguindo um modelo semelhante ao das funções de controle de câmera do próprio JavaScript (No mobile, por exemplo, facingMode == 'user' para usar a câmera da frente e facingMode == 'environment' para usar a câmera de trás). <br><br>Por padrão o facingMode é 'user'. |
176
+ | stopCamera | Função para desligar a câmera manualmente. |
177
+ | captureImage | Função para capturar a imagem que será utilizada para consumo com a câmera. |
178
+ | getVideoStream | Função para obter a stream de vídeo da câmera, se ela estiver disponível. |
179
+ | sendFile | Função para enviar arquivos manualmente, iniciando também o processamento. |
180
+
181
+ #### Utilização em Node.js
182
+ 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.
183
+
184
+ #### Formato dos resultados
185
+ Os resultados podem ser obtidos por meio da função de callback **onSuccess** por meio dos parâmetros. Sua estrutura é baseada na interface **ITypificationResult**, a qual pode ser consultada mais abaixo na seção de **Tipos comuns**.
186
+
187
+ ### OCR
188
+ 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.
189
+
190
+ #### Utilização em JavaScript
191
+ Para utilizar a funcionalidade de OCR, é necessário importar a função de OCR e acioná-la passando as opções necessárias.
192
+
193
+ 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.
194
+
195
+ 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.
196
+
197
+ ```ts
198
+ import { ocr } from 'santoid-sdk/client/core'
199
+
200
+ // ...
201
+
202
+ // Método 1 - Para iniciar câmera assim que a função for chamada
203
+ const ocrResponse = await ocr({
204
+ token: 'string',
205
+ track: 'string',
206
+ customId: 'string',
207
+
208
+ startTheCameraImmediately: true,
209
+
210
+ onStart (params) {
211
+ // ...
212
+ },
213
+
214
+ // ...
215
+ })
216
+
217
+ // Método 2 - Para enviar arquivos assim que a função for chamada
218
+ const ocrResponse = await ocr({
219
+ startTheCameraImmediately: false,
220
+
221
+ // ...
222
+ }, fileVariable)
223
+
224
+ // Método 3 - Para fazer isso depois
225
+ const ocrResponse = await ocr({
226
+ startTheCameraImmediately: false,
227
+
228
+ // ...
229
+ })
230
+
231
+ ocrResponse.startCamera()
232
+ ocrResponse.captureImage()
233
+
234
+ // Ou
235
+
236
+ ocrResponse.sendFile(fileVariable)
237
+ ```
238
+
239
+ #### Opções para a função ocr (JavaScript)
240
+
241
+ | Nome da propriedade | Função | É obrigatório? |
242
+ | ------------------- | ------ | -------------- |
243
+ | token | Token de acesso obtido por meio da autenticação. | Sim |
244
+ | track | Identificador do processo que será utilizado. | Sim |
245
+ | customId | Identificador customizado para auditoria. | Não |
246
+ | 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 |
247
+ | 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 |
248
+ | onCameraStart | Função executada quando a câmera for iniciada. <br><br>Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (**videoStream**), caso disponível. | Não |
249
+ | onCameraStop | Função executada quando a câmera for interrompida. | Não |
250
+ | 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 |
251
+ | 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 |
252
+ | 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 |
253
+ | onSuccess | Função executada quando a verificação é finalizada com sucesso. <br><br>Disponibiliza pelos parâmetros um objeto com os resultados. | Não |
254
+ | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
255
+
256
+ #### Retorno da função ocr (JavaScript)
257
+ | Nome da propriedade | Função |
258
+ | ------------------- | ------ |
259
+ | startCamera | Função para iniciar a câmera manualmente. <br><br>É possível informar nos parâmetros a direção de câmera desejada (**facingMode**), seguindo um modelo semelhante ao das funções de controle de câmera do próprio JavaScript (No mobile, por exemplo, facingMode == 'user' para usar a câmera da frente e facingMode == 'environment' para usar a câmera de trás). <br><br>Por padrão o facingMode é 'user'. |
260
+ | stopCamera | Função para desligar a câmera manualmente. |
261
+ | captureImage | Função para capturar a imagem que será utilizada para consumo com a câmera. |
262
+ | getVideoStream | Função para obter a stream de vídeo da câmera, se ela estiver disponível. |
263
+ | sendFile | Função para enviar arquivos manualmente, iniciando também o processamento. |
264
+
265
+ #### Utilização em Node.js
266
+ 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.
267
+
268
+ #### Formato dos resultados
269
+ Os resultados podem ser obtidos por meio da função de callback **onSuccess** por meio dos parâmetros. Sua estrutura é baseada na interface **IOcrResult**, a qual pode ser consultada mais abaixo na seção de **Tipos comuns**.
270
+
271
+ ### Face Match
272
+ 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.
273
+
274
+ #### Utilização em JavaScript
275
+ 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.
276
+
277
+ 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.
278
+
279
+ E em cada um desses modos, pode optar por realizar a obtenção/fornecimento de imagens assim que executar a função ou posteriormente.
280
+
281
+ 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.
282
+
283
+ ```ts
284
+ import { faceMatch } from 'santoid-sdk/client/core'
285
+
286
+ // ...
287
+
288
+ // Método 1 - Para iniciar câmera assim que a função for chamada
289
+ const faceMatchResponse = await faceMatch({
290
+ token: 'string',
291
+ track: 'string',
292
+ customId: 'string',
293
+
294
+ startTheCameraImmediately: true,
295
+
296
+ onStart (params) {
297
+ // ...
298
+ },
299
+
300
+ // ...
301
+ })
302
+
303
+ // Caso deseje tirar uma única foto
304
+ faceMatchResponse.captureFirstImage()
305
+
306
+ // Caso deseje tirar duas fotos
307
+ faceMatchResponse.captureFirstImage({ startProcessing: false })
308
+ faceMatchResponse.captureSecondImage()
309
+
310
+ // Método 2 - Para enviar arquivos assim que a função for chamada
311
+ const faceMatchResponse = await faceMatch({
312
+ startTheCameraImmediately: false,
313
+
314
+ // ...
315
+ }, fileVariable1, fileVariable2)
316
+
317
+ // Método 3 - Para fazer isso depois
318
+ const faceMatchResponse = await faceMatch({
319
+ startTheCameraImmediately: false,
320
+
321
+ // ...
322
+ })
323
+
324
+ faceMatchResponse.startCamera()
325
+ faceMatchResponse.captureFirstImage()
326
+
327
+ // Ou
328
+
329
+ faceMatchResponse.sendFiles(fileVariable1, fileVariable2)
330
+ ```
331
+
332
+ #### Opções para a função faceMatch (JavaScript)
333
+
334
+ | Nome da propriedade | Função | É obrigatório? |
335
+ | ------------------- | ------ | -------------- |
336
+ | token | Token de acesso obtido por meio da autenticação. | Sim |
337
+ | track | Identificador do processo que será utilizado. | Sim |
338
+ | customId | Identificador customizado para auditoria. | Não |
339
+ | 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 |
340
+ | 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 |
341
+ | onCameraStart | Função executada quando a câmera for iniciada. <br><br>Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (**videoStream**), caso disponível. | Não |
342
+ | onCameraStop | Função executada quando a câmera for interrompida. | Não |
343
+ | 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 |
344
+ | 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 |
345
+ | 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 |
346
+ | onSuccess | Função executada quando a verificação é finalizada com sucesso. <br><br>Disponibiliza pelos parâmetros um objeto com os resultados. | Não |
347
+ | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
348
+
349
+ #### Retorno da função faceMatch (JavaScript)
350
+ | Nome da propriedade | Função |
351
+ | ------------------- | ------ |
352
+ | startCamera | Função para iniciar a câmera manualmente. <br><br>É possível informar nos parâmetros a direção de câmera desejada (**facingMode**), seguindo um modelo semelhante ao das funções de controle de câmera do próprio JavaScript (No mobile, por exemplo, facingMode == 'user' para usar a câmera da frente e facingMode == 'environment' para usar a câmera de trás). <br><br>Por padrão o facingMode é 'user'. |
353
+ | stopCamera | Função para desligar a câmera manualmente. |
354
+ | captureFirstImage | Função para capturar a primeira imagem que será utilizada para o Face Match. <br><br> Por padrão, iniciará o processamento após a captura, porém caso deseje utilizar duas imagens você pode evitar isso utilizando a opção **startProcessing**. |
355
+ | captureSecondImage | Função para capturar a segunda imagem que será utilizada para o Face Match. <br><br> Por padrão, iniciará o processamento após a captura, porém caso deseje impedir isso você pode utilizar a opção **startProcessing**. |
356
+ | getVideoStream | Função para obter a stream de vídeo da câmera, se ela estiver disponível. |
357
+ | sendFiles | Função para enviar arquivos manualmente, iniciando também o processamento. Como o Face Match suporta até 2 arquivos, você pode escolher entre enviar apenas 1 arquivo com dois rostos para análise ou 2 arquivos com 1 rosto em cada. |
358
+
359
+ #### Utilização em Node.js
360
+ 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.
361
+
362
+ #### Formato dos resultados
363
+ Os resultados podem ser obtidos por meio da função de callback **onSuccess** por meio dos parâmetros. Sua estrutura é baseada na interface **IFaceMatchResult**, a qual pode ser consultada mais abaixo na seção de **Tipos comuns**.
364
+
56
365
  ### 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.
366
+ 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
367
 
59
368
  #### Utilização em JavaScript
60
369
  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:
@@ -102,7 +411,7 @@ As propriedades disponíveis para utilização no objeto de opções estão list
102
411
  | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
103
412
 
104
413
  <br>
105
- Caso a função seja executada em um navegador (ou ambiente semelhante que utilize JavaScript, como o WebView, por exemplo), não é obrigatório fornecer uma função que retorne os frames para verificação (getNextFrame), pois o próprio SDK iniciará a câmera e realizará todo o processo caso a função não seja fornecida.
414
+ Caso a função seja executada em um navegador (ou ambiente semelhante), não é obrigatório fornecer uma função que retorne os frames para verificação (getNextFrame), pois o próprio SDK iniciará a câmera e realizará todo o processo caso a função não seja fornecida.
106
415
 
107
416
  #### Retorno da função livenessDetection (JavaScript)
108
417
  A função livenessDetection retorna alguns métodos que possibilitam um melhor controle da verificação.
@@ -182,34 +491,6 @@ const livenessDetectionResponse = livenessDetection({
182
491
  const { stopLivenessDetection, pauseGettingFrames, resumeGettingFrames } = livenessDetectionResponse
183
492
  ```
184
493
 
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
494
  ### Teste do Fluxo Completo
214
495
  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
496
 
@@ -338,111 +619,16 @@ Em que:
338
619
  ```typescript
339
620
  type TResultStatuses = 'success' | 'error' | null
340
621
 
341
- interface ITypificationResult {
342
- count: number
343
- customerRequestId: string
344
- domain: string
345
- error: object
346
- executionDatetime: string
347
- requestId: string
348
- requestType: string
349
- service: string
350
- status: string
351
- track: string
352
-
353
- documents: Array<{
354
- typification: {
355
- id: string
356
- score: number
357
- }
358
-
359
- error?: {
360
- message: string
361
- }
362
-
363
- ocr: {
364
- template: string
365
-
366
- labels: Array<{
367
- x: number
368
- y: number
369
- w: number
370
- h: number
371
- bottomRight: number[]
372
- topLeft: number[]
373
-
374
- label: string | null
375
-
376
- text: string | null
377
- ocr_score: number | null
378
- crop: string | null
379
- ocrInterpretive?: boolean | string | null
380
- ocrList?: Array<{
381
- x: number
382
- y: number
383
- w: number
384
- h: number
385
- bottomRight: number[]
386
- topLeft: number[]
387
-
388
- dataField?: string
389
- dataFieldValue?: boolean
390
-
391
- label: string | null
392
- ocr?: string | null
393
- ocr_score?: number
394
- cropBase64?: string | null
395
- }> | null
396
-
397
- serpro_query?: {
398
- serpro_data: any
399
- search_logs: {
400
- document: string
401
- type: string
402
- search_time: string
403
- status_code: number
404
- message: string
405
- }
406
- } | null
407
-
408
- validation: {
409
- type: string | null
410
- value: number | string | boolean
411
- } | null
412
-
413
- validationSerpro?: Record<string, number | boolean>
414
- }> | null
415
- } | null
416
- }>
417
- }
418
-
419
- export type TPositions = 'front' | 'right' | 'left' | 'up' | 'bottom'
622
+ type TPositions = 'front' | 'right' | 'left' | 'up' | 'bottom'
420
623
 
421
624
  interface ILivenessResults {
422
625
  livenessId: string
423
626
  successFrames: Record<TPositions, Blob>
424
627
  }
425
-
426
- interface IFaceMatchResult {
427
- domain: string
428
- track: string
429
- service: string
430
- requestId: string
431
- requestType: string
432
- customerRequestId: string
433
- executionDatetime: string
434
- error?: {
435
- error: string
436
- }
437
- status: string
438
- comparison_score: number
439
- similarity_score: number
440
- match: boolean
441
- fileImage1?: string
442
- fileImage2?: string
443
- }
444
628
  ```
445
629
 
630
+ Os tipos **ITypificationResult** e **IFaceMatchResult** podem ser conferidos na seção de **Tipos comuns**, disponível mais a frente na documentação.
631
+
446
632
  #### Utilização em Node.js
447
633
  De forma semelhante à funcionalidade da Prova de Vida, para o Node.js o caminho da importação muda
448
634
  e a função **getNextFrame** passa a ser obrigatória e deve ser fornecida às opções para o livenessDetection.
@@ -470,25 +656,151 @@ const uploadIdentificationDocumentResponse = uploadIdentificationDocument({
470
656
  })
471
657
  ```
472
658
 
659
+ ## Tipos comuns
660
+ Esta seção destina-se a disponibilizar os tipos dos resultados de algumas funções. Algumas funcionalidades possuem resultados com estruturas parecidas internamente.
473
661
 
474
- #### Utilização via CDN
475
- De forma semelhante à funcionalidade da Prova de Vida, a funcionalidade do teste do fluxo
476
- completo também é disponibilizada globalmente por meio da classe SantoiDSDK.
662
+ A tipificação, por exemplo, pode ser configurada para iniciar também o OCR dos campos e, consequentemente, conter resultados de OCR em seu interior.
477
663
 
478
- Substitua o **VERSION** pela versão desejada.
664
+ Por essa razão, para simplificar o entendimento, serão disponibilizados a seguir as interfaces dos resultados dessas funcionalidades de forma simplificada.
479
665
 
480
- ```html
481
- <body>
482
- <button onclick="startUploadIdentificationDocument()">Iniciar</button>
666
+ ### Estrutura base
667
+ ```ts
668
+ interface IBaseAsyncResult {
669
+ count: number
670
+ customerRequestId: string
671
+ domain: string
672
+ error: object
673
+ executionDatetime: string
674
+ requestId: string
675
+ requestType: string
676
+ service: string
677
+ status: string
678
+ track: string
679
+ }
680
+ ```
483
681
 
484
- <script src="https://cdn.jsdelivr.net/npm/santoid-sdk@VERSION/browser/index.js"></script>
682
+ ### Resultados da Tipificação
683
+ ```ts
684
+ // Resultados completos da tipificação
685
+ interface ITypificationResult extends IBaseAsyncResult {
686
+ documents: ITypificationDocumentResult[]
687
+ }
485
688
 
486
- <script>
487
- async function startUploadIdentificationDocument () {
488
- const { startAll } = SantoiDSDK.uploadIdentificationDocument({
489
- // ...
490
- })
689
+ // Resultados para um documento individual
690
+ interface ITypificationDocumentResult {
691
+ typification: {
692
+ id: string
693
+ score: number
694
+ }
695
+
696
+ error?: {
697
+ message: string
698
+ }
699
+
700
+ ocr?: {
701
+ template: string
702
+
703
+ labels: ICropResult[] | null
704
+ } | boolean
705
+ }
706
+ ```
707
+
708
+ ### Resultados do OCR
709
+ ```ts
710
+ // Resultados completos do OCR
711
+ interface IOcrResult extends IBaseAsyncResult {
712
+ template: string
713
+
714
+ documents: IOcrDocumentResult[]
715
+ }
716
+
717
+ // Resultados para um documento individual
718
+ interface IOcrDocumentResult {
719
+ error?: {
720
+ message: string
721
+ }
722
+
723
+ ocr: {
724
+ template: string
725
+
726
+ labels: ICropResult[] | null
727
+ } | boolean
728
+ }
729
+
730
+ // Resultados para um único campo
731
+ interface ICropResult {
732
+ x: number
733
+ y: number
734
+ w: number
735
+ h: number
736
+ bottomRight: number[]
737
+ topLeft: number[]
738
+
739
+ label: string | null
740
+
741
+ text: string | null
742
+ ocr_score: number | null
743
+ crop: string | null
744
+ ocrInterpretive?: boolean | string | null
745
+
746
+ ocrList: IOcrListResult[] | null
747
+
748
+ serpro_query?: {
749
+ serpro_data: any
750
+ search_logs: {
751
+ document: string
752
+ type: string
753
+ search_time: string
754
+ status_code: number
755
+ message: string
491
756
  }
492
- </script>
493
- </body>
757
+ } | null
758
+
759
+ validation: {
760
+ type: string | null
761
+ value: number | string | boolean
762
+ } | null
763
+
764
+ validationSerpro?: Record<string, number | boolean>
765
+ }
766
+
767
+ // Resultados para os campos internos de um campo com OCR em lista configurado
768
+ interface IOcrListResult {
769
+ x: number
770
+ y: number
771
+ w: number
772
+ h: number
773
+ bottomRight: number[]
774
+ topLeft: number[]
775
+
776
+ dataField?: string
777
+ dataFieldValue?: boolean
778
+
779
+ label: string | null
780
+ ocr?: string | null
781
+ ocr_score?: number
782
+ cropBase64?: string | null
783
+ }
494
784
  ```
785
+
786
+ ### Resultados do Face Match
787
+ ```ts
788
+ interface IFaceMatchResult {
789
+ domain: string
790
+ track: string
791
+ service: string
792
+ requestId: string
793
+ requestType: string
794
+ customerRequestId: string
795
+ executionDatetime: string
796
+ error?: {
797
+ error: string
798
+ }
799
+ status: string
800
+ comparison_score: number
801
+ similarity_score: number
802
+ match: boolean
803
+ fileImage1?: string
804
+ fileImage2?: string
805
+ }
806
+ ```
@@ -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 {};