santoid-sdk
v5.4.0
Published
Com esta biblioteca, você pode conectar-se ao Santo iD via código JavaScript de forma fácil e rápida, podendo integrá-lo à sua aplicação de forma mais eficiente.
Keywords
Readme
SantoiD SDK
Com esta biblioteca, você pode conectar-se ao Santo iD via código JavaScript de forma fácil e rápida, podendo integrá-lo à sua aplicação de forma mais eficiente.
Instalação
Para instalar o SDK utilizando o NPM, utilize o seguinte comando:
npm install santoid-sdkPara instalar utilizando o Yarn, utilize este outro comando:
yarn add santoid-sdkAutenticação
Atualmente, o SDK suporta a autenticação via contas de serviço do Santo iD. Para realizar a autenticação, crie uma conta de serviço do Santo iD na página de Contas de Serviço da plataforma.
Com a conta criada, armazene as credenciais obtidas em um arquivo no seu projeto com o nome que desejar. Após isso, será necessário passar as credenciais para o SDK com a função de inicialização.
É recomendado que a inicialização do SDK seja realizada no back-end do seu projeto, pois, ao colocar o arquivo de credenciais em um front-end, há um risco de as credenciais serem expostas aos usuários.
No seu projeto, você pode colocar o arquivo de credenciais em um determinado local e expor uma variável de ambiente SANTOID_SDK_CREDENTIALS informando o local do arquivo.
Dessa forma, após certificar-se de que o usuário tem autorização de acordo com as regras de negócio de sua aplicação, inicialize o SDK da forma abaixo:
import { initialize } from 'santoid-sdk/server/auth'
async function startSDK () {
const token = await initialize()
// ...
}
// Certifique-se de que o usuário está autenticado antes
startSDK()Você também pode passar as credenciais em formato de objeto ou transformadas em base64 por meio da propriedade credentials do objeto de opções de inicialização.
import { initialize } from 'santoid-sdk/server/auth'
async function startSDK () {
const token = await initialize({
credentials: '...', // Conta de serviço em base64 ou o objeto da conta de serviço
})
// ...
}
// Certifique-se de que o usuário está autenticado antes
startSDK()Envio de arquivos
Um ponto importante são os tipos dos arquivos que são suportados pelo SDK.
Para execução em navegadores e ambientes semelhantes, os tipos de arquivos suportados são File ou Blob.
Para ambientes Node.js, os tipos dos arquivos devem ser string, ArrayBuffer, Buffer ou Buffer[].
Utilização da biblioteca via CDN
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.
Ao importar a biblioteca via tag script, todas as funções do SDK ficarão disponíveis por meio da classe SantoiDSDK.
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.
<body>
<button onclick="startTypification()">Iniciar tipificação</button>
<button onclick="startLiveness()">Iniciar liveness</button>
<!-- ... -->
<script src="https://cdn.jsdelivr.net/npm/santoid-sdk@VERSION/browser/index.js"></script>
<script>
function startTypification () {
SantoiDSDK.typification({
track: 'string',
token: 'string',
// ...
})
}
function startLiveness () {
SantoiDSDK.livenessDetection({
track: 'string',
token: 'string',
// ...
})
}
// ...
</script>
</body>Funcionalidades disponíveis
Tipificação
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.
Utilização em JavaScript
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.
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.
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.
import { typification } from 'santoid-sdk/client/core'
// ...
// Método 1 - Para iniciar câmera assim que a função for chamada
const typificationResponse = await typification({
token: 'string',
track: 'string',
customId: 'string',
startTheCameraImmediately: true,
onStart (params) {
// ...
},
// ...
})
// Método 2 - Para enviar arquivos assim que a função for chamada
const typificationResponse = await typification({
startTheCameraImmediately: false,
// ...
}, fileVariable)
// Método 3 - Para fazer isso depois
const typificationResponse = await typification({
startTheCameraImmediately: false,
// ...
})
typificationResponse.startCamera()
typificationResponse.captureImage()
// Ou
typificationResponse.sendFile(fileVariable)Opções para a função typification (JavaScript)
| Nome da propriedade | Função | É obrigatório? | | ------------------- | ------ | -------------- | | token | Token de acesso obtido por meio da autenticação. | Sim | | track | Identificador do processo que será utilizado. | Sim | | customId | Identificador customizado para auditoria. | Não | | 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 | | onStart | Função executada quando a verificação for iniciada. Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (videoStream), caso disponível. | Não | | onCameraStart | Função executada quando a câmera for iniciada. Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (videoStream), caso disponível. | Não | | onCameraStop | Função executada quando a câmera for interrompida. | Não | | 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.). 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 | | 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 | | onError | Função executada quando ocorre um erro. Disponibiliza pelos parâmetros a instância do erro, a qual contém um identificador (propriedade code). | Não | | onSuccess | Função executada quando a verificação é finalizada com sucesso. Disponibiliza pelos parâmetros um objeto com os resultados. | Não | | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
Retorno da função typification (JavaScript)
| Nome da propriedade | Função | | ------------------- | ------ | | startCamera | Função para iniciar a câmera manualmente. É 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). Por padrão o facingMode é 'user'. | | stopCamera | Função para desligar a câmera manualmente. | | captureImage | Função para capturar a imagem que será utilizada para consumo com a câmera. | | getVideoStream | Função para obter a stream de vídeo da câmera, se ela estiver disponível. | | sendFile | Função para enviar arquivos manualmente, iniciando também o processamento. |
Utilização em Node.js
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.
Formato dos resultados
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.
OCR
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.
Utilização em JavaScript
Para utilizar a funcionalidade de OCR, é necessário importar a função de OCR e acioná-la passando as opções necessárias.
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.
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.
import { ocr } from 'santoid-sdk/client/core'
// ...
// Método 1 - Para iniciar câmera assim que a função for chamada
const ocrResponse = await ocr({
token: 'string',
track: 'string',
customId: 'string',
startTheCameraImmediately: true,
onStart (params) {
// ...
},
// ...
})
// Método 2 - Para enviar arquivos assim que a função for chamada
const ocrResponse = await ocr({
startTheCameraImmediately: false,
// ...
}, fileVariable)
// Método 3 - Para fazer isso depois
const ocrResponse = await ocr({
startTheCameraImmediately: false,
// ...
})
ocrResponse.startCamera()
ocrResponse.captureImage()
// Ou
ocrResponse.sendFile(fileVariable)Opções para a função ocr (JavaScript)
| Nome da propriedade | Função | É obrigatório? | | ------------------- | ------ | -------------- | | token | Token de acesso obtido por meio da autenticação. | Sim | | track | Identificador do processo que será utilizado. | Sim | | customId | Identificador customizado para auditoria. | Não | | 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 | | onStart | Função executada quando a verificação for iniciada. Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (videoStream), caso disponível. | Não | | onCameraStart | Função executada quando a câmera for iniciada. Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (videoStream), caso disponível. | Não | | onCameraStop | Função executada quando a câmera for interrompida. | Não | | 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.). 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 | | 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 | | onError | Função executada quando ocorre um erro. Disponibiliza pelos parâmetros a instância do erro, a qual contém um identificador (propriedade code). | Não | | onSuccess | Função executada quando a verificação é finalizada com sucesso. Disponibiliza pelos parâmetros um objeto com os resultados. | Não | | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
Retorno da função ocr (JavaScript)
| Nome da propriedade | Função | | ------------------- | ------ | | startCamera | Função para iniciar a câmera manualmente. É 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). Por padrão o facingMode é 'user'. | | stopCamera | Função para desligar a câmera manualmente. | | captureImage | Função para capturar a imagem que será utilizada para consumo com a câmera. | | getVideoStream | Função para obter a stream de vídeo da câmera, se ela estiver disponível. | | sendFile | Função para enviar arquivos manualmente, iniciando também o processamento. |
Utilização em Node.js
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.
Formato dos resultados
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.
Face Match
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.
Utilização em JavaScript
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.
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.
E em cada um desses modos, pode optar por realizar a obtenção/fornecimento de imagens assim que executar a função ou posteriormente.
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.
import { faceMatch } from 'santoid-sdk/client/core'
// ...
// Método 1 - Para iniciar câmera assim que a função for chamada
const faceMatchResponse = await faceMatch({
token: 'string',
track: 'string',
customId: 'string',
startTheCameraImmediately: true,
onStart (params) {
// ...
},
// ...
})
// Caso deseje tirar uma única foto
faceMatchResponse.captureFirstImage()
// Caso deseje tirar duas fotos
faceMatchResponse.captureFirstImage({ startProcessing: false })
faceMatchResponse.captureSecondImage()
// Método 2 - Para enviar arquivos assim que a função for chamada
const faceMatchResponse = await faceMatch({
startTheCameraImmediately: false,
// ...
}, fileVariable1, fileVariable2)
// Método 3 - Para fazer isso depois
const faceMatchResponse = await faceMatch({
startTheCameraImmediately: false,
// ...
})
faceMatchResponse.startCamera()
faceMatchResponse.captureFirstImage()
// Ou
faceMatchResponse.sendFiles(fileVariable1, fileVariable2)Opções para a função faceMatch (JavaScript)
| Nome da propriedade | Função | É obrigatório? | | ------------------- | ------ | -------------- | | token | Token de acesso obtido por meio da autenticação. | Sim | | track | Identificador do processo que será utilizado. | Sim | | customId | Identificador customizado para auditoria. | Não | | 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 | | onStart | Função executada quando a verificação for iniciada. Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (videoStream), caso disponível. | Não | | onCameraStart | Função executada quando a câmera for iniciada. Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (videoStream), caso disponível. | Não | | onCameraStop | Função executada quando a câmera for interrompida. | Não | | 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.). 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 | | 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 | | onError | Função executada quando ocorre um erro. Disponibiliza pelos parâmetros a instância do erro, a qual contém um identificador (propriedade code). | Não | | onSuccess | Função executada quando a verificação é finalizada com sucesso. Disponibiliza pelos parâmetros um objeto com os resultados. | Não | | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
Retorno da função faceMatch (JavaScript)
| Nome da propriedade | Função | | ------------------- | ------ | | startCamera | Função para iniciar a câmera manualmente. É 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). Por padrão o facingMode é 'user'. | | stopCamera | Função para desligar a câmera manualmente. | | captureFirstImage | Função para capturar a primeira imagem que será utilizada para o Face Match. 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. | | captureSecondImage | Função para capturar a segunda imagem que será utilizada para o Face Match. Por padrão, iniciará o processamento após a captura, porém caso deseje impedir isso você pode utilizar a opção startProcessing. | | getVideoStream | Função para obter a stream de vídeo da câmera, se ela estiver disponível. | | 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. |
Utilização em Node.js
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.
Formato dos resultados
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.
Prova de Vida
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.
Utilização em JavaScript
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:
import { livenessDetection } from 'santoid-sdk/client/liveness'
const livenessDetectionResponse = livenessDetection({
token: 'string',
track: 'string',
customId: 'string',
getNextFrame: () => {
// ...
},
// ...
})
const { getVideoStream, stopLivenessDetection, resumeGettingFrames, pauseGettingFrames } = livenessDetectionResponseAs propriedades disponíveis para utilização no objeto de opções estão listadas na tabela abaixo.
Opções para a função livenessDetection (JavaScript)
| Nome da propriedade | Função | É obrigatório? | | ------------------- | ------ | -------------- | | token | Token de acesso obtido por meio da autenticação. | Sim | | track | Identificador do processo que será utilizado. | Sim | | customId | Identificador customizado para auditoria. | Não | | useBillingAccounts | Booleano que controla a utilização das contas de faturamento customizadas | Não | | startGettingFrames | Função executada quando a obtenção de frames for iniciada. Se retornar um valor do tipo MediaStream, ele será salvo e fornecido por meio da função getVideoStream. | Não | | getNextFrame | Função que deve retornar os frames no formato File ou Blob. Será executada várias vezes e deve sempre devolver o próximo frame. | Não | | stopGettingFrames | Função executada quando a obtenção de frames for finalizada. | Não | | onStart | Função executada quando a verificação for iniciada. Disponibiliza pelos parâmetros um objeto contendo a stream da transmissão (videoStream), caso disponível. | Não | | onNextStep | Função executada sempre que a validação muda para a próxima etapa. Disponibiliza pelos parâmetros a etapa atual ('front', 'left', 'right', 'up' ou 'bottom'). | Não | | onFrontStep | Função executada quando a etapa 'front' é iniciada. | Não | | onLeftStep | Função executada quando a etapa 'left' é iniciada. | Não | | onRightStep | Função executada quando a etapa 'right' é iniciada. | Não | | onUpStep | Função executada quando a etapa 'up' é iniciada. | Não | | onBottomStep | Função executada quando a etapa 'bottom' é iniciada. | Não | | onError | Função executada quando ocorre um erro. Disponibiliza pelos parâmetros a instância do erro, a qual contém um identificador (propriedade code). | Não | | onSuccess | Função executada quando a verificação é finalizada com sucesso. Disponibiliza pelos parâmetros um objeto com os resultados, compostos pelo ID da solicitação (livenessId) e pelos frames de sucesso (successFrames). | Não | | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não |
Retorno da função livenessDetection (JavaScript)
A função livenessDetection retorna alguns métodos que possibilitam um melhor controle da verificação.
| Nome da propriedade | Função | | ------------------- | ------ | | getVideoStream | Retorna a stream dos frames (MediaStream), caso ela esteja disponível. | | stopLivenessDetection | Para a verificação de prova de vida imediatamente e a finaliza completamente. | | pauseGettingFrames | Para a verificação temporariamente, a qual pode ser retomada posteriormente. | | resumeGettingFrames | Retoma a verificação, caso ela tenha sido pausada com a função pauseGettingFrames. |
import { livenessDetection } from 'santoid-sdk/client/liveness'
const livenessDetectionResponse = livenessDetection({
token: 'string',
track: 'string',
onStart ({ videoStream }) {
const video = document.querySelector('video')
video.srcObject = videoStream
},
onNextStep () {
pauseGettingFrames()
// Simulando intervalo de sucesso
setTimeout(() => {
resumeGettingFrames()
}, 1000)
},
// ...
})
// Funções retornadas
const { getVideoStream, stopLivenessDetection, pauseGettingFrames, resumeGettingFrames } = livenessDetectionResponse
Utilização em Node.js
Caso deseje executar a função da prova de vida no servidor (Node.js), é obrigatório informar ao SDK a função de obtenção de frames (getNextFrame), a qual deve retornar um valor no formato string, ArrayBuffer, Buffer ou Buffer[] contendo os dados da imagem do frame.
Fique atento ao caminho de importação da função, que muda para o caso de execução no servidor (Node.js):
Opções para a função livenessDetection (Node.js)
Para Node.js, as opções são quase as mesmas que as utilizadas em JavaScript, mudando apenas a obrigatoriedade de alguns valores. Abaixo estão listadas as propriedades que mudaram. As outras permanecem iguais às apresentadas anteriormente.
| Nome da propriedade | Função | É obrigatório? | | ------------------- | ------ | -------------- | | startGettingFrames | Função executada quando a obtenção de frames for iniciada. Não precisa retornar nenhum valor. | Não | | getNextFrame | Função que deve retornar os frames no formato string, ArrayBuffer, Buffer ou Buffer[]. Será executada várias vezes e deve sempre devolver o próximo frame. | Sim |
Retorno da função livenessDetection (Node.js)
Os itens retornados pela função livenessDetection para Node.js são semelhantes àos retornados pela função para JavaScript, com exceção da função getVideoStream, que não é retornada.
import { livenessDetection } from 'santoid-sdk/server/liveness'
function getNextFrame (): string | ArrayBuffer | Buffer | Buffer[] {
// ...
}
const livenessDetectionResponse = livenessDetection({
token: 'string',
track: 'string',
getNextFrame,
// ...
})
// Funções retornadas
const { stopLivenessDetection, pauseGettingFrames, resumeGettingFrames } = livenessDetectionResponseTeste do Fluxo Completo
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.
Ao chamar a função uploadIdentificationDocument, ela retorna um determinado conjunto de métodos, os quais possibilitam as análises.
Com o método retornado startAll é possível iniciar todas as análises simultaneamente, porém também é possível iniciar uma de cada vez com os métodos startDocumentUpload, startLivenessDetection e startFaceComparison.
Entretanto, o método startFaceComparison para a comparação entre as faces detectadas será chamado automaticamente quando as outras análises forem concluídas, sendo mais útil apenas para reiniciar a comparação em caso de erro. Caso o método seja acionado quando as faces ainda não estiverem disponíveis para análise, a função onError será chamada com uma instância de erro como parâmetro, caso tenha sido fornecida.
Utilização em JavaScript
As propriedades disponíveis para utilização no objeto de opções estão listadas na tabela abaixo.
Opções para a função uploadIdentificationDocument (JavaScript)
| Nome da propriedade | Função | É obrigatório? | | ------------------- | ------ | -------------- | | token | Token de acesso obtido por meio da autenticação. | Sim | | track | Identificador do processo que será utilizado. | Sim | | useBillingAccounts | Booleano que controla a utilização das contas de faturamento customizadas | Não | | livenessDetectionOptions | Opções para a verificação de prova de vida. | Não | | 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.). Disponibiliza pelos parâmetros um objeto contendo as informações sobre a situação de cada tipo de processamento realizado (envio de documento, prova de vida, etc.). | Não | | onError | Função executada quando ocorre erro em alguma das operações. | Não | | onSuccess | Função executada quando as verificações são finalizadas com sucesso. Disponibiliza pelos parâmetros o mesmo objeto fornecido pela função onUpdate, porém com todos os resultados preenchidos. | Não | | onEnd | Função executada quando a verificação é finalizada, seja com erro ou com sucesso. | Não | | 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 | | onClearInterval | Função executada após a implementação da função setInterval(), retorna a variável atribuída ao setInterval() permitindo que o usuário consiga utilizar a função clearInterval() para limpar o temporizador quando desejar | Não |
import { uploadIdentificationDocument } from 'santoid-sdk/client/liveness'
const uploadIdentificationDocumentResponse = uploadIdentificationDocument({
token: 'string',
track: 'string',
onUpdate (results) => {
// ...
},
onError (error) {
// ...
},
onSuccess (results) {
// ...
},
onEnd () {
// ...
},
onValidationRequested (requestInformation) {
// ..
},
onClearInterval (interval) {
// ..
},
livenessDetectionOptions: {
getNextFrame () {
// ...
},
onSuccess () {
// ...
},
// ...
},
// ...
})
const {
startAll,
startDocumentUpload,
startLivenessDetection,
startFaceComparison,
getResults
} = uploadIdentificationDocumentResponseRetorno da função uploadIdentificationDocument (JavaScript)
A função uploadIdentificationDocument retorna alguns métodos que podem ser utilizados para dar controlar as análises.
| Nome da propriedade | Função | | ------------------- | ------ | | startAll | Inicia todas as análises simultaneamente e espera dois parâmetros: o arquivo do documento (no formato Blob ou File) e, opcionalmente, as configurações para a prova de vida (caso deseje sobrescrevê-las). | | startDocumentUpload | Inicia a etapa de upload/análise do documento que será enviado e espera receber um parâmetro com o arquivo. (no formato Blob ou File). | | startLivenessDetection | Inicia a verificação de prova de vida e aceita as mesmas opções que a função livenessDetection, caso deseje sobrescrevê-las. | | startFaceComparison | Inicia a comparação da face do documento com a face detectada na prova de vida. Ela será iniciada automaticamente quando as outras análises forem concluídas, porém você pode usar essa função para fazer uma nova tentativa em caso de falha. | | getResults | Retorna os status atuais de cada análise, no formato apresentado abaixo. |
Formato dos resultados da função uploadIdentificationDocument
interface IUploadIdentificationDocumentResults {
uploadedDocument: Blob | File | null
typification: {
status: TResultStatuses
results: ITypificationResult | null
loading: boolean
error: SDKError | null
}
liveness: {
status: TResultStatuses
results: ILivenessResults<Blob | File | null | undefined> | null
loading: boolean
error: SDKError | null
}
faceMatch: {
status: TResultStatuses
results: IFaceMatchResult | null
loading: boolean
error: SDKError | null
}
}Em que:
type TResultStatuses = 'success' | 'error' | null
type TPositions = 'front' | 'right' | 'left' | 'up' | 'bottom'
interface ILivenessResults {
livenessId: string
successFrames: Record<TPositions, Blob>
}Os tipos ITypificationResult e IFaceMatchResult podem ser conferidos na seção de Tipos comuns, disponível mais a frente na documentação.
Utilização em Node.js
De forma semelhante à funcionalidade da Prova de Vida, para o Node.js o caminho da importação muda e a função getNextFrame passa a ser obrigatória e deve ser fornecida às opções para o livenessDetection.
Outro detalhe é que no Node.js todos os tipos envolvendo File ou Blob passam a utilizar valores do tipo string, ArrayBuffer, Buffer ou Buffer[].
Todos as outras opções e retornos se mantém os mesmos da versão para JavaScript.
import { uploadIdentificationDocument } from 'santoid-sdk/server/liveness'
const uploadIdentificationDocumentResponse = uploadIdentificationDocument({
token: 'string',
track: 'string',
livenessDetectionOptions: {
getNextFrame () {
// ...
},
// ...
},
// ...
})Tipos comuns
Esta seção destina-se a disponibilizar os tipos dos resultados de algumas funções. Algumas funcionalidades possuem resultados com estruturas parecidas internamente.
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.
Por essa razão, para simplificar o entendimento, serão disponibilizados a seguir as interfaces dos resultados dessas funcionalidades de forma simplificada.
Estrutura base
interface IBaseAsyncResult {
count: number
customerRequestId: string
domain: string
error: object
executionDatetime: string
requestId: string
requestType: string
service: string
status: string
track: string
}Resultados da Tipificação
// Resultados completos da tipificação
interface ITypificationResult extends IBaseAsyncResult {
documents: ITypificationDocumentResult[]
}
// Resultados para um documento individual
interface ITypificationDocumentResult {
typification: {
id: string
score: number
}
error?: {
message: string
}
ocr?: {
template: string
labels: ICropResult[] | null
} | boolean
}Resultados do OCR
// Resultados completos do OCR
interface IOcrResult extends IBaseAsyncResult {
template: string
documents: IOcrDocumentResult[]
}
// Resultados para um documento individual
interface IOcrDocumentResult {
error?: {
message: string
}
ocr: {
template: string
labels: ICropResult[] | null
} | boolean
}
// Resultados para um único campo
interface ICropResult {
x: number
y: number
w: number
h: number
bottomRight: number[]
topLeft: number[]
label: string | null
text: string | null
ocr_score: number | null
crop: string | null
ocrInterpretive?: boolean | string | null
ocrList: IOcrListResult[] | null
serpro_query?: {
serpro_data: any
search_logs: {
document: string
type: string
search_time: string
status_code: number
message: string
}
} | null
validation: {
type: string | null
value: number | string | boolean
} | null
validationSerpro?: Record<string, number | boolean>
}
// Resultados para os campos internos de um campo com OCR em lista configurado
interface IOcrListResult {
x: number
y: number
w: number
h: number
bottomRight: number[]
topLeft: number[]
dataField?: string
dataFieldValue?: boolean
label: string | null
ocr?: string | null
ocr_score?: number
cropBase64?: string | null
}Resultados do Face Match
interface IFaceMatchResult {
domain: string
track: string
service: string
requestId: string
requestType: string
customerRequestId: string
executionDatetime: string
error?: {
error: string
}
status: string
comparison_score: number
similarity_score: number
match: boolean
fileImage1?: string
fileImage2?: string
}