santoid-sdk 5.3.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.
package/README.md CHANGED
@@ -54,11 +54,11 @@ startSDK()
54
54
  ## Envio de arquivos
55
55
  Um ponto importante são os tipos dos arquivos que são suportados pelo SDK.
56
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**.
57
+ Para execução em navegadores e ambientes semelhantes, os tipos de arquivos suportados são **File** ou **Blob**.
58
58
 
59
59
  Para ambientes Node.js, os tipos dos arquivos devem ser **string, ArrayBuffer, Buffer ou Buffer[]**.
60
60
 
61
- ## Utilização da biblioteca via CDN / Tags \<script\>
61
+ ## Utilização da biblioteca via CDN
62
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
63
 
64
64
  Ao importar a biblioteca via tag script, todas as funções do SDK ficarão disponíveis por meio da classe **SantoiDSDK**.
@@ -145,6 +145,7 @@ const typificationResponse = await typification({
145
145
  })
146
146
 
147
147
  typificationResponse.startCamera()
148
+ typificationResponse.captureImage()
148
149
 
149
150
  // Ou
150
151
 
@@ -160,15 +161,29 @@ typificationResponse.sendFile(fileVariable)
160
161
  | customId | Identificador customizado para auditoria. | Não |
161
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 |
162
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 |
163
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 |
164
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 |
165
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 |
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 |
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 |
167
170
  | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
168
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
+
169
181
  #### Utilização em Node.js
170
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.
171
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
+
172
187
  ### OCR
173
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.
174
189
 
@@ -214,6 +229,7 @@ const ocrResponse = await ocr({
214
229
  })
215
230
 
216
231
  ocrResponse.startCamera()
232
+ ocrResponse.captureImage()
217
233
 
218
234
  // Ou
219
235
 
@@ -229,15 +245,29 @@ ocrResponse.sendFile(fileVariable)
229
245
  | customId | Identificador customizado para auditoria. | Não |
230
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 |
231
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 |
232
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 |
233
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 |
234
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 |
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 |
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 |
236
254
  | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
237
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
+
238
265
  #### Utilização em Node.js
239
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.
240
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
+
241
271
  ### Face Match
242
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.
243
273
 
@@ -291,12 +321,12 @@ const faceMatchResponse = await faceMatch({
291
321
  // ...
292
322
  })
293
323
 
294
- ocrResponse.startCamera()
324
+ faceMatchResponse.startCamera()
295
325
  faceMatchResponse.captureFirstImage()
296
326
 
297
327
  // Ou
298
328
 
299
- ocrResponse.sendFiles(fileVariable1, fileVariable2)
329
+ faceMatchResponse.sendFiles(fileVariable1, fileVariable2)
300
330
  ```
301
331
 
302
332
  #### Opções para a função faceMatch (JavaScript)
@@ -308,15 +338,30 @@ ocrResponse.sendFiles(fileVariable1, fileVariable2)
308
338
  | customId | Identificador customizado para auditoria. | Não |
309
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 |
310
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 |
311
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 |
312
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 |
313
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 |
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 |
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 |
315
347
  | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
316
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
+
317
359
  #### Utilização em Node.js
318
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.
319
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
+
320
365
  ### Prova de Vida
321
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.
322
367
 
@@ -366,7 +411,7 @@ As propriedades disponíveis para utilização no objeto de opções estão list
366
411
  | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
367
412
 
368
413
  <br>
369
- 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.
370
415
 
371
416
  #### Retorno da função livenessDetection (JavaScript)
372
417
  A função livenessDetection retorna alguns métodos que possibilitam um melhor controle da verificação.
@@ -574,7 +619,53 @@ Em que:
574
619
  ```typescript
575
620
  type TResultStatuses = 'success' | 'error' | null
576
621
 
577
- interface ITypificationResult {
622
+ type TPositions = 'front' | 'right' | 'left' | 'up' | 'bottom'
623
+
624
+ interface ILivenessResults {
625
+ livenessId: string
626
+ successFrames: Record<TPositions, Blob>
627
+ }
628
+ ```
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
+
632
+ #### Utilização em Node.js
633
+ De forma semelhante à funcionalidade da Prova de Vida, para o Node.js o caminho da importação muda
634
+ e a função **getNextFrame** passa a ser obrigatória e deve ser fornecida às opções para o livenessDetection.
635
+
636
+ Outro detalhe é que no Node.js todos os tipos envolvendo **File** ou **Blob** passam a utilizar valores do tipo **string, ArrayBuffer, Buffer ou Buffer[]**.
637
+
638
+ Todos as outras opções e retornos se mantém os mesmos da versão para JavaScript.
639
+
640
+ ```ts
641
+ import { uploadIdentificationDocument } from 'santoid-sdk/server/liveness'
642
+
643
+ const uploadIdentificationDocumentResponse = uploadIdentificationDocument({
644
+ token: 'string',
645
+ track: 'string',
646
+
647
+ livenessDetectionOptions: {
648
+ getNextFrame () {
649
+ // ...
650
+ },
651
+
652
+ // ...
653
+ },
654
+
655
+ // ...
656
+ })
657
+ ```
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.
661
+
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.
663
+
664
+ Por essa razão, para simplificar o entendimento, serão disponibilizados a seguir as interfaces dos resultados dessas funcionalidades de forma simplificada.
665
+
666
+ ### Estrutura base
667
+ ```ts
668
+ interface IBaseAsyncResult {
578
669
  count: number
579
670
  customerRequestId: string
580
671
  domain: string
@@ -585,80 +676,115 @@ interface ITypificationResult {
585
676
  service: string
586
677
  status: string
587
678
  track: string
679
+ }
680
+ ```
588
681
 
589
- documents: Array<{
590
- typification: {
591
- id: string
592
- score: number
593
- }
682
+ ### Resultados da Tipificação
683
+ ```ts
684
+ // Resultados completos da tipificação
685
+ interface ITypificationResult extends IBaseAsyncResult {
686
+ documents: ITypificationDocumentResult[]
687
+ }
688
+
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
+ }
594
699
 
595
- error?: {
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
596
755
  message: string
597
756
  }
757
+ } | null
598
758
 
599
- ocr: {
600
- template: string
601
-
602
- labels: Array<{
603
- x: number
604
- y: number
605
- w: number
606
- h: number
607
- bottomRight: number[]
608
- topLeft: number[]
609
-
610
- label: string | null
611
-
612
- text: string | null
613
- ocr_score: number | null
614
- crop: string | null
615
- ocrInterpretive?: boolean | string | null
616
- ocrList?: Array<{
617
- x: number
618
- y: number
619
- w: number
620
- h: number
621
- bottomRight: number[]
622
- topLeft: number[]
623
-
624
- dataField?: string
625
- dataFieldValue?: boolean
626
-
627
- label: string | null
628
- ocr?: string | null
629
- ocr_score?: number
630
- cropBase64?: string | null
631
- }> | null
632
-
633
- serpro_query?: {
634
- serpro_data: any
635
- search_logs: {
636
- document: string
637
- type: string
638
- search_time: string
639
- status_code: number
640
- message: string
641
- }
642
- } | null
643
-
644
- validation: {
645
- type: string | null
646
- value: number | string | boolean
647
- } | null
648
-
649
- validationSerpro?: Record<string, number | boolean>
650
- }> | null
651
- } | null
652
- }>
653
- }
759
+ validation: {
760
+ type: string | null
761
+ value: number | string | boolean
762
+ } | null
654
763
 
655
- export type TPositions = 'front' | 'right' | 'left' | 'up' | 'bottom'
764
+ validationSerpro?: Record<string, number | boolean>
765
+ }
656
766
 
657
- interface ILivenessResults {
658
- livenessId: string
659
- successFrames: Record<TPositions, Blob>
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
660
783
  }
784
+ ```
661
785
 
786
+ ### Resultados do Face Match
787
+ ```ts
662
788
  interface IFaceMatchResult {
663
789
  domain: string
664
790
  track: string
@@ -677,31 +803,4 @@ interface IFaceMatchResult {
677
803
  fileImage1?: string
678
804
  fileImage2?: string
679
805
  }
680
- ```
681
-
682
- #### Utilização em Node.js
683
- De forma semelhante à funcionalidade da Prova de Vida, para o Node.js o caminho da importação muda
684
- e a função **getNextFrame** passa a ser obrigatória e deve ser fornecida às opções para o livenessDetection.
685
-
686
- Outro detalhe é que no Node.js todos os tipos envolvendo **File** ou **Blob** passam a utilizar valores do tipo **string, ArrayBuffer, Buffer ou Buffer[]**.
687
-
688
- Todos as outras opções e retornos se mantém os mesmos da versão para JavaScript.
689
-
690
- ```ts
691
- import { uploadIdentificationDocument } from 'santoid-sdk/server/liveness'
692
-
693
- const uploadIdentificationDocumentResponse = uploadIdentificationDocument({
694
- token: 'string',
695
- track: 'string',
696
-
697
- livenessDetectionOptions: {
698
- getNextFrame () {
699
- // ...
700
- },
701
-
702
- // ...
703
- },
704
-
705
- // ...
706
- })
707
- ```
806
+ ```
@@ -9,9 +9,6 @@ interface IFaceMatchStatusGetResponse extends Awaited<ReturnType<InstanceType<ty
9
9
  fileImage1?: string;
10
10
  fileImage2?: string;
11
11
  }
12
- export interface IError {
13
- error: string;
14
- }
15
12
  export interface IFaceMatchResult {
16
13
  domain: string;
17
14
  track: string;
@@ -20,7 +17,9 @@ export interface IFaceMatchResult {
20
17
  requestType: string;
21
18
  customerRequestId: string;
22
19
  executionDatetime: string;
23
- error?: IError;
20
+ error?: {
21
+ error: string;
22
+ };
24
23
  status: string;
25
24
  comparison_score: number;
26
25
  similarity_score: number;
@@ -57,5 +57,6 @@ export interface IOcrDocumentResult {
57
57
  } | boolean;
58
58
  }
59
59
  export interface IOcrResult extends IBaseAsyncResult {
60
+ template: string;
60
61
  documents: IOcrDocumentResult[];
61
62
  }
@@ -13,7 +13,7 @@ export interface ITypificationDocumentResult {
13
13
  error?: {
14
14
  message: string;
15
15
  };
16
- ocr: {
16
+ ocr?: {
17
17
  template: string;
18
18
  labels: ICropResult[] | null;
19
19
  } | boolean;