> ## Documentation Index
> Fetch the complete documentation index at: https://base39-release-notes-06-mar.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# UNICO

## O que é a UNICO?

A UNICO é uma IDTech brasileira que oferece soluções baseadas na identidade digital com o objetivo de simplificar processos burocráticos de forma rápida e segura.

A Bas39 oferece a possibilidade de integração com a solução de identidade digital, que consiste em um conjunto de dados, documentos pessoais e informações biométricas usadas para comprovar e autenticar a identidade de uma pessoa em um ambiente virtual.

## Fluxo da integração

Confira na imagem abaixo uma visão 360 do fluxo de integração:

<Frame caption="Visão geral da integração com a UNICO">
  <img src="https://mintlify.s3-us-west-1.amazonaws.com/base39-release-notes-06-mar/assets/images/360-vision-unico-integration.png" />
</Frame>

## Como integramos com a UNICO

A integração ocorre via a funcionalidade de tipos de etapa da Esteira. Foi criado um novo tipo de etapa específico para a integração chamado `unico`. \
Durante o processamento da etapa um processo é criado na UNICO e a etapa fica com o status de `in_progress` até receber a resposta da UNICO.

## Criação da etapa da esteira

É necessário criar a etapa da esteira para poder realizar a integração com a UNICO. A criação pode ser feita no `tenant`, `company`ou `product`.

<Accordion title="cURL de exemplo">
  ```bash
  curl --request POST \
   --url https://api.dev.base39.io/v1/settings \
   --header 'accept: application/json' \
   --header 'authorization: Bearer API-KEY' \
   --header 'content-type: application/json' \
   --data '
  {
  "steps": {
  "ColetaBiometrica": {
    "type": "unico",
    "methodData": {
      "minScore": 65
    },
    "needs": [],
    "title": "Unico"
  }
  }
  }
  '
  ```
</Accordion>

### Configuração do score mínimo (`minScore`)

Para informar o score mínimo (`minScore`) é necessário entender seu funcionamento, clique [aqui](https://developers.unico.io/docs/check/GuiaUsuario/fluxos/#score-de-autentica%C3%A7%C3%A3o) para saber mais sobre os diferentes tipos de score e o que cada um deles significa.

### Processamento da etapa

O processamento da etapa tipo `unico` consiste na criação de um processo para a UNICO que solicita a coleta de biomoteria por parte do funcionário. A criação do processo é realizada pela Base39 e é feita todas as vezes em que um empréstimo é criado.

Quando o empréstimo (loan) é criado todos os passos configurados serão criados executados conforme prioridade e/ou depedência.

<Warning> A etapa fica com status de `pending` até que a ação de refresh seja executada mundando o status para `failure`ou `done`.</Warning>

<Tip>Para compreender melhor como funciona as etapas da esteira, seus repectivos status e dependências consulte nossa documentação: [Esteira](https://docs.base39.com.br/origination/steps)</Tip>

### Sincronização do processo (Etapa x UNICO)

A UNICO não possui recursos de notificação sobre mundanças de estado de um processo, ou seja, depois de solicitar a biometria por parte do funcionário, quando o mesmo envia os dados de biometria para UNICO e ela os processa, não somos (Base39 e clientes) notificados automaticamente sobre o resultado.

Para isso, recomendamos que nossos clientes executem a ação de `refresh`.

O `refresh` dentro da etapa tipo `unico` é responsável por consultar a API da UNICO para obter o resultado da biometria que foi enviada pelo funcionário. Ao pegar esse resultado, a Base39 define a etapa como `done` ou `failure`.

```json
curl --request POST \
     --url https://api.dev.base39.io/v1/steps/step_5f92f01728e009f403d8502e/refresh \
     --header 'accept: application/json' \
     --header 'authorization: Bearer ${API-KEY}'

```

<Note>Apenas as etapas do tipo UNICO possuem a ação de `refresh`.</Note>

## Regras de interpretação da resposta da UNICO

Confira abaixo as verificações feitas pela Base39 no retorno da UNICO:

1. A primeira verificação é a que considera o atributo `status:PROCESS_RESULT_INVALID_IDENTITY` - Caso o valor recebido seja uma identidade inválida, nenhuma ação adicional precisa ser feita e a etapa é marcada como falha.
2. Quando o retorno for de uma identidade válida, é necessário realizar verificações usando combinações com os atributos `status`e `state`. Caso haja a combinação: `status:PROCESS_RESULT_OK`e `state:PROCESS_STATE_FINISHED` as verificações são feitas seguindo a seguinte ordem de prioridade:

* Verificamos se `authenticationInfo.authenticationResult`é igual a `AUTHENTICATION_RESULT_POSITIVE`o que significa que a validação da identidade é positiva e com isso a etapa é definida como `done` e nenhuma outra verificação precisa ser realizada.
* Verificamos se o `authenticationInfo.scoreEngineeResult.score` é maior ou igual ao score mínimo parametrizado durante a configuração da etapa da esteira. Caso o score seja maior do que o score mínimo a etapa é marcada como `done`, caso seja menor a etapa é marcada como `failure`.
  Confira abaixo um schema de exemplo de resposta da UNICO:

```
{
 "authenticationInfo":{
   "authenticationResult":"AUTHENTICATION_RESULT_POSITIVE",
   "scoreEngineResult":{
     "score":  65
   }
 },
 "result":"PROCESS_RESULT_OK"
}
```

## FAQ

1. **Quem é o responsável pela comunicação ao cliente para coleta biométrica?** \
   A UNICO se encarrega da comunicação e coleta da biometria.
2. **Quem é responsável pela coleta da *Selfie*/Biometria?** \
   A UNICO que é responsável pela coleta, toda parte de frontend é por conta da UNICO, nós apenas solicitamos a coleta e recebemos o retorno.
3. **Quais os canais de comunicação utilizados?** \
   Por padrão, e-mail, whatsApp e SMS. E-mail está temporariamente inativo.
4. **Temos como personalizar mensagens, tema visual e etc?** \
   Não, não há suporte para personalização.
5. **Cada tenant dos nossos clientes estão em tenant separado na UNICO?** \
   Não, todos os tenants dos nossos clientes usam o mesmo tenant na UNICO.
6. **O que é um processo na UNICO?** \
   No nosso contexto, é a solicitação validação de identidade, toda vez que solicitamos é criado o processo.
7. **Existe *retry* de notificação quando o cliente não captura a biometria em certo período de tempo?** \
   A UNICO não fornece *feature* de *retry* de comunicação.
8. **O processo expira se em um determinado período de tempo não for coletado biometria?** \
   O processo nunca expira, o processo só encerra apenas quando a biometria for coletada.
9. **Como o serviço de coleta da biometria é terceirizado, existem métricas para acompanhar falhas, limitações do SDK, processos iniciados e não terminados e etc?** \
   Não há nenhuma métrica fornecida.
10. **Como é coletado a biometria?** \
    A UNICO envia um *link* via canal de comunicação. Esse link leva o usuário para página web para ser coletada a biometria. Não existe um aplicativo móvel para a coleta da biometria. A UNICO sugere usar o celular para coletar a biometria ao invés do computador.
