npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

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.

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-sdk

Para instalar utilizando o Yarn, utilize este outro comando:

yarn add santoid-sdk

Autenticaçã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 } = livenessDetectionResponse

As 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 } = livenessDetectionResponse

Teste 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
} = uploadIdentificationDocumentResponse

Retorno 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
}