Obtendo o resultado do processo
Este artigo explica como obter o resultado de um processo na plataforma através da API REST.
Requisição
Faça uma requisição GET para o endpoint:
- Homologação: https://api.cadastro.uat.unico.app/client/v1/process/{id}
- Produção: https://api.cadastro.unico.app/client/v1/process/{id}
Com o token de acesso válido, faça uma requisição para o endpoint passando o parâmetro {id} que deve ser o mesmo que foi gerado durante a criação do processo.
Exemplo de requisição
Através do ID do processo é possível recuperar todas informações do processo.
- cURL
- Postman
- NodeJS
- Java
- C#
- Go
curl -X 'GET' \
'https://api.cadastro.uat.unico.app/client/v1/process/{processId}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {{TOKEN}}'
Lembre-se de trocar o processId
pelo id do processo desejado.
Para utilizar o Postman, siga os passos:
- Selecione o método GET.
- Insira a URL
https://api.cadastro.uat.unico.app/client/v1/process/
e adicione o id do seu processo. - Selecione a aba Authorization.
- Na lista de Type, selecione Bearer Token.
- Insira o token obtido no campo Token com o prefixo
Bearer
.
const axios = require('axios');
const TOKEN = 'SEU_TOKEN'; // Substitua com o seu token
const processId = 'SEU_PROCESS_ID'; // Substitua com o ID do processo que você deseja acessar
const headers = {
'accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': `Bearer ${TOKEN}`
};
const apiUrl = `https://api.cadastro.uat.unico.app/client/v1/process/${processId}`;
axios.get(apiUrl, { headers })
.then(response => {
console.log('Resposta da API:', response.data);
})
.catch(error => {
console.error('Erro ao fazer a requisição:', error);
});
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ExemploRequisicaoGET {
public static void main(String[] args) {
String token = "SEU_TOKEN"; // Substitua com o seu token
String processId = "SEU_PROCESS_ID"; // Substitua com o ID do processo que você deseja acessar
try {
URL url = new URL("https://api.cadastro.uat.unico.app/client/v1/process/" + processId);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// Defina os cabeçalhos da requisição
connection.setRequestProperty("accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Authorization", "Bearer " + token);
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// Imprima a resposta da API
System.out.println("Resposta da API: " + response.toString());
} else {
System.err.println("Erro ao fazer a requisição. Código de resposta: " + responseCode);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
string token = "SEU_TOKEN"; // Substitua com o seu token
string processId = "SEU_PROCESS_ID"; // Substitua com o ID do processo que você deseja acessar
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("https://api.cadastro.uat.unico.app/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
HttpResponseMessage response = await client.GetAsync($"client/v1/process/{processId}");
if (response.IsSuccessStatusCode)
{
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine("Resposta da API: " + responseBody);
}
else
{
Console.WriteLine("Erro ao fazer a requisição. Código de resposta: " + response.StatusCode);
}
}
}
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
token := "SEU_TOKEN" // Substitua com o seu token
processId := "SEU_PROCESS_ID" // Substitua com o ID do processo que você deseja acessar
url := fmt.Sprintf("https://api.cadastro.uat.unico.app/client/v1/process/%s", processId)
client := &http.Client{}
req, err := http.NewRequest("GET", url, nil)
if err != nil {
fmt.Println("Erro ao criar a requisição:", err)
return
}
req.Header.Add("accept", "application/json")
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Authorization", "Bearer " + token)
resp, err := client.Do(req)
if err != nil {
fmt.Println("Erro ao fazer a requisição:", err)
return
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusOK {
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Erro ao ler a resposta da API:", err)
return
}
fmt.Println("Resposta da API:", string(body))
} else {
fmt.Println("Erro ao fazer a requisição. Código de resposta:", resp.StatusCode)
}
}
Requisição executada com sucesso
No caso de sucesso na execução da requisição, um 200 OK
é retornado como resposta com informações sobre dados do processo, biometria, documentos, e assinatura.
Após o encerramento do processo, é necessário um tempo maior para obter o resultado das informações relacionadas à assinatura de documentos. Existe um delay entre o tempo de finalização do processo pela plataforma e o tempo em que o Sign processa as informações.
A seguir todas as informações que são retornadas como resposta:
{
"process": {
// ID do processo criado.
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
// Tipo de jornada criada.
"flow": "iddocssign",
// Dados da empresa visualizado pelo usuário.
"company": {
// Código da empresa.
"code": "unico",
// Nome fantasia da empresa.
"friendlyName": "Acesso QA Digital",
// URL da imagem da empresa.
"logoUrl": "https://unico.io/wp-content/themes/theme_unico/img/logo/unico-color.svg"
},
// URL de redirecionamento cadastrada no processo.
"callbackUri": "https://unico.io",
// URL de navegação do usuário. Veja mais em
"userRedirectUrl": "https://cadastro.dev.unico.app/process/53060f52-f146-4c12-a234-5bb5031f6f5b",
// Estado atual do processo
"state": "PROCESS_STATE_FINISHED",
// Resultado atual do processo.
"result": "PROCESS_RESULT_OK",
// Dados do usuário no processo.
"person": {
// Tipo de identificador utilizado.
"duiType": "DUI_TYPE_BR_CPF",
// Identificador do usuário.
"duiValue": "73689290074",
// Nome do usuário.
"friendlyName": "Fulano",
},
// Propósito cadastrado no processo.
"purpose": "creditprocess",
// Resultados da etapa de autenticação.
"authenticationInfo": {
// Resultado da autenticação com o ID.
"authenticationResult": "AUTHENTICATION_RESULT_INCONCLUSIVE",
// Resultado da autenticação com o Check.
"scoreEngineResult": {
// Apresenta se o Check está habilitado ou desabilitado.
"scoreEnabled": "SCORE_ENABLED_TRUE",
// Resultado do score.
"score": 50
}
},
// Dados referentes a outras etapas do processo.
"services": {
// Dados referentes a etapa de documentos.
"docs": {
// Lista de documentos compartilhados.
"documents": [
{
// Informações sobre o documentos.
"doc": {
// Tipo de documento.
"code": "RG"
},
// documento tipificado
"typified": true,
// OCR Code
"cpf_match": true,
// ID do documentos.
"doc_id": "1e61a978-3673-4fdd-8fa8-808d0a26d131",
// Documanto validado.
"validate_doc": true,
// Reaproveitamento do documento
"reused_doc": true,
// URL assinada do documento.
"signed_url": "https://api.datafortress.dev.private.unico.run/url-signer/signature/dmF1bHQ6[...]OXc9PQ%3D%3D"
}
],
"consent_granted": true
},
// Dados referentes a etapa de assinatura.
"sign": {
"signature": {
// ID do envelope.
"envelopeId": "4d4f3d90-04a3-4259-b63b-930ab10d2e47",
// Lista de ID dos documentos do envelope.
"documentIds": [
"03307601-b518-49ca-b368-ae3919e24e54"
]
}
}
},
// Momento em que o processo foi criado.
"createdAt": "2023-10-05T18:28:58.537985Z"
// Momento em que o processo foi finalizado.
"finishedAt": "2023-08-09T15:15:25.417105Z"
}
}
Parâmetro | Descrição |
---|---|
id | O identificador do processo. |
flow | Define a jornada que foi criada. id : Fluxo de validação de identidade com biometria facial. idcheck : Fluxo de validação de identidade com biometria facial com score no caso de inclonclusivo. iddocs : Fluxo de validação de identidade com captura e reaproveitamento de documentos (RG ou CNH). idsign : Fluxo de validação de identidade com assinatura eletrônica.iddocssign : Fluxo de validação de identidade, captura/reaproveitamento de documentos (RG ou CNH) e assinatura eletrônica. |
callbackUri | Define para onde o usuário será redirecionado no fim do processo. Para mais detalhes volte para criando um processo. |
company.code | Sinaliza o código da empresa no ecossistema Unico. |
company.friendlyName | Sinaliza o nome do cliente exibido na jornada do usuário. |
company.logoUrl | Sinaliza a logo do cliente exibido na jornada do usuário. |
userRedirectUrl | URL para onde você deverá redirecionar o usuário para finalização da jornada |
state | Sinaliza o estado atual do processo, por ser do tipo: PROCESS_STATE_CREATED : Processo criado e ainda não finalizado pelo usuário. PROCESS_STATE_FINISHED : Processo finalizado pelo usuário com sucesso. PROCESS_STATE_FAILED : Processo criado ou finalizado com erro. |
result | Sinaliza o resultado do processo da jornada do usuário, podendo ser do tipo: PROCESS_RESULT_OK : Processo finalizado com sucesso. PROCESS_RESULT_ERROR : Processo finalizado com algum tipo de erro. PROCESS_RESULT_INVALID_IDENTITY : Processo finalizado com com falha no liveness, ou resultado de inconclusivo quando flow = ID, ou quando no flow = IDCheck, houver uma divergência demorando mais que o tempo estabelecido. |
person.personDuiType | Define o tipo de identificador do usuário. DUI_TYPE_BR_CPF : Para CPF como identificador. |
person.personDuiValue | Define o valor do identificador do usuário especificado no campo personDuiType. |
person.friendlyName | Define o nome do usuário, por exemplo, Fulano . |
authenticationInfo.authenticationResult | Resultado da validação de identidade pelo IDUnico. AUTHENTICATION_RESULT_UNSPECIFIED : É retornado quando o cliente utiliza o IDUnico sozinho. Situações de retorno: - Não foi possível encontrar o usuário na base de autenticados; - Inconsistencia encontrada, por exemplo: Não houve retorno da orquestração com o check, cadastros com divergências. AUTHENTICATION_RESULT_INCONCLUSIVE : Resultado de autenticação inconclusivo. AUTHENTICATION_RESULT_POSITIVE : Resultado de autenticação positivo. |
authenticationInfo.authenticationResult .scoreEngineResult.scoreEnabled | Sinaliza se o processo está com o Check habilitado no caso de inconclusivo do ID. SCORE_ENABLED_TRUE : Habilitado. SCORE_ENABLED_FALSE : Desabilitado. SCORE_ENABLED_UNSPECIFIED : Não especificado. Ocorre quando authenticationResult também for não especificado. |
authenticationInfo.authenticationResult .scoreEngineResult.score | Sinaliza o resultado do score do Check. 0 : Caso esteja desabilitado. -100 a 100 : Resultado do score. |
services.docs.documents | service.docs: Apresenta os dados compartilhados pela etapa de documentos. .documents: Lista de documentos compartilhados pelo usuário. |
services.docs.documents.doc.code | Quando tipificado retornará RG ou CNH, quando não “Desconhecido RG : Sinaliza que o documento compartilhado é do tipo RG.CNH : Sinaliza que o documento compartilhado é do tipo CNH. Um documento é tipificado quando é possível identificar o layout desse documento durante a captura da imagem. |
services.docs.documents.doc_id | Identificador único do documento compartilhado. |
services.docs.documents.signed_url | Sinaliza a URL assinada do documento. |
services.docs.documents.validate_doc | Sinaliza se houve (true) ou não (false) validação do documento. Um documento é validado quando é possível identificar que o CPF do documento é o mesmo do usuário. |
services.docs.documents.reuse_doc | Sinaliza se houve (true) ou não (false) reaproveitamento do documento. Um documento é reaproveitado quando já existe na base da dados da Unico e o usuário deu permissão para reutilizá-lo sem a necessidade de uma nova captura. |
services.docs.documents.typified | Sinaliza se houve (true) ou não (false) a tipificação do documento. Um documento é tipificado quando é possível identificar o seu layout. |
services.docs.documents.cpf_match | Sinaliza se o CPF da requisição é o mesmo do documento. Se sim (true), se não (false). |
services.docs.consent_granted | Sinaliza se houve (true) ou não (false) consentimento do usuário. |
services.sign.signature | Apresenta os dados compartilhados pela etapa de assinatura. |
services.sign.signature.envelopeId | Identificador único do envelope assinado. |
services.sign.signature.documentIds | Array de identificadores dos documentos do envelope. |
createdAt | Sinaliza o momento em que o processo foi criado. |
finishedAt | Sinaliza o momento em que o processo foi concluído pelo usuário. |
Para mais informações sobre este endpoint, consulte a API Reference.
Dúvidas?
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da Central de Ajuda.