---
title: Revalidação Silenciosa
description: Utiliza o motor da Revalidação Inteligente, que analisa o contexto comportamental do usuário dentro do efeito de rede da Unico, para entregar um sinal de confiança para a transação corrente — ou seja, o nível de confiança de que este é o usuário esperado.
canonical: https://developer.unico.io/pt-BR/dual-api/developers/sdks-and-tools/android/smart-revalidation/silent-revalidation
locale: pt-BR
generated_by: markdown-export
---

## Atributos do PrepareInfo

| Atributo | Tipo | Obrigatório | Descrição |
|---|---|:-:|---|
| `externalUserId` | `String` | ✅ | Identificador do usuário no seu sistema. Automaticamente hasheado com SHA-256 antes da transmissão, nunca enviado em texto simples. |

## Iniciando uma Revalidação Silenciosa

****Passo 1** — Implementar `initializeSDK`**

Crie uma nova classe/objeto `UnicoSDK`, com um método estático `initializeSDK` que retorna a instância do `UnicoSDK`, recebendo o `context` e um `UnicoSDKConfig` com seu `sdkKey`, `bundleId` e `environment`. Guarde a instância retornada — ela será necessária mais tarde para chamar `startSilentValidation` a partir do Java.

  :::warning[Chame no launch do aplicativo]
  `UnicoSDK.initializeSDK` deve ser chamado o mais cedo possível no launch do aplicativo (ex.: `Application.onCreate`). Chamá-lo mais tarde reduz o tempo de processamento em background e aumenta a chance de respostas de autenticação inconclusivas.
  :::

  ### Kotlin

    ```kotlin
    UnicoSDK.initializeSDK(
        context,
        UnicoSDKConfig(
            sdkKey = "your_sdk_key",
            bundleId = "your_bundle_id",
            environment = Environment.UAT
        )
    )
    ```

### Java

    ```java
    UnicoSDK sdk = UnicoSDK.initializeSDK(
        context,
        new UnicoSDKConfig("your_sdk_key", "your_bundle_id", Environment.UAT)
    );
    ```

****Passo 2** — Implementar `startSilentValidation`**

Depois do `initializeSDK`, associe a coleta já em andamento ao usuário identificado chamando `startSilentValidation` com um `PrepareInfo` contendo o `externalUserId`.

  ### Kotlin

    ```kotlin
    val prepareInfo = PrepareInfo(
        externalUserId = "external_user_id"
    )

    UnicoSDK.startSilentValidation(prepareInfo)
        .onSuccess { result -> /* ... */ }
        .onFailure { error -> /* ... */ }
    ```

### Java

:::info[Java requer uma bridge em Kotlin]
    `startSilentValidation` é uma função suspend do Kotlin — o Java não consegue chamá-la diretamente. Use a bridge abaixo para fazer essa ponte.
    :::

    ```kotlin
    interface SilentAuthCallback {
        fun onSuccess(success: Boolean)
        fun onFailure(message: String?)
    }

    object SilentAuthBridge {

        @JvmStatic
        fun startSilentValidation(
            owner: LifecycleOwner,
            sdk: UnicoSDK,
            externalUserId: String,
            callback: SilentAuthCallback
        ) {
            owner.lifecycleScope.launch {
                val result = sdk.startSilentValidation(PrepareInfo(externalUserId, null))
                result.onSuccess { callback.onSuccess(it.success) }
                    .onFailure { callback.onFailure(it.message) }
            }
        }
    }
    ```

    ```java
    SilentAuthBridge.startSilentValidation(this, sdk, externalUserId, new SilentAuthCallback() {
        @Override
        public void onSuccess(boolean success) {
            /* ... */
        }

        @Override
        public void onFailure(String message) {
            /* ... */
        }
    });
    ```

  Se a validação ocorrer no início do fluxo, por exemplo, no login, aguarde o retorno do callback `onSuccess` antes de seguir para o Passo 3.

****Passo 3** — Criar o processo e autenticar**

Com a validação em andamento, crie o processo de verificação para concluir a autenticação. Consulte [Referência de API ▸ API ▸ Criar Processo](/dual-api/developers/api-reference/api/post-processes).

  Inclua no corpo da requisição o mesmo `externalUserId` enviado no `PrepareInfo` do Passo 2 — é o que permite ao backend correlacionar a criação do processo com a validação já em andamento.

  ```bash
  curl -X POST https://api.id.unico.app/processes/v1 \
    -H "Authorization: Bearer $TOKEN" \
    -H "APIKEY: $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "subject": {
        "duiType": 1,
        "code": "12345678909",
        "name": "Luke Skywalker",
        "gender": "M",
        "birthDate": "2000-05-20",
        "email": "luke@example.com",
        "phone": "5519725570707"
      },
      "useCase": "Onboarding",
      "externalUserId": "external_user_id",
      "imageBase64": "/9j/4AAQSkZJR..."
    }'
  ```

  A resposta inclui o campo `silentAuth.result` com o resultado da autenticação:

  ```json
  {
      "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
      "status": 3,
      "silentAuth": {
          "result": "yes"
      }
  }
  ```

  | Campo | Tipo | Descrição |
  |---|---|---|
  | `silentAuth.result` | string | `yes` ou `no` — ver valores possíveis abaixo. |

  <details>
  **`silentAuth.result` — valores possíveis**

  | Valor | Significado |
  |---|---|
  | `yes` | Autenticação aprovada, usuário reconhecido com confiança suficiente, sem necessidade de captura adicional. |
  | `no` | Dados insuficientes para aprovar silenciosamente. Recomenda-se autenticar por biometria (selfie) ou por outro método alternativo. |

</details>