Criar Processo
Este artigo explica como criar um processo na plataforma de integração através da API REST.
Requisição
Faça uma requisição POST para o endpoint:
- Homologação: https://api.cadastro.uat.unico.app/client/v1/process
- Produção: https://api.cadastro.unico.app/client/v1/process
Com o token de acesso válido, faça uma requisição para o endpoint enviando os seguintes parâmetros:
{
"callbackUri": "REDIRECIONA_Usuario"
"flow": "JORNADA"
"person": {
"duiType": "TIPO_Identificadorr",
"duiValue": "VALOR_Identificador",
"friendlyName": "_NOME_Usuario",
"phone": "PHONE_Usuario",
"email": "PHONE_Usuario",
"notifications": [
"notificationChannel": "NOTIFICATION_CHANNEL_WHATSAPP"
"notificationChannel": "NOTIFICATION_CHANNEL_SMS"
]
"purpose": "PROPOSITO_usodedados"
"payload": []
},
}
Parâmetros de requisição
Nome | Tipo | Mandatorio/Opcional | Descrição |
---|---|---|---|
flow | String | Mandatório | Define a jornada que a ser executada. 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 | String | Mandatório | Define para onde o usuário será redirecionado ao fim do processo. URL: Você pode utilizar uma URL para uma página web de seu fluxo. Exemplo: https://developers.unico.io/callback . Você pode personalizar como desejar. URL Scheme: Você também pode realizar o redirecionamento para aplicações móveis nativas. Exemplo: br.com.meupacote.app://callback . Esse callback precisa estar registrado em sua aplicação móvel. Sem redirecionamento: Caso você esteja usando a solução em um fluxo de mensagem, utilize o valor / para evitar um redirecionamento ao final do fluxo. |
person.personDuiType | String | Mandatório | Define o tipo de identificador do usuário. DUI_TYPE_BR_CPF : Para utilizar CPF como identificador. |
person.personDuiValue | String | Mandatório | Define o valor do identificador do usuário especificado no campo personDuiType. Exemplo: No caso de uso do identificador DUI_TYPE_BR_CPF para CPF utilize um CPF válido sem formatação: 73689290074 . Nota: Obrigatório nos fluxos de SMS e WhatsAPP. |
person.friendlyName | String | Opcional | Define o nome do usuário, por exemplo, Fulano . |
person.phone | String | Opcional(*) | Define o telefone do usuário. |
person.email | String | Opcional | Define o email do usuário. |
notifications.notificationChannel | String | Opcional | notifications :É um array que define o canal de envio das notificações. O campo deve ser preenchido com as notificações desejadas: SMS, ou WhatsApp, ou os dois canais. Exemplo de uso: notificationChannel ": NOTIFICATION_CHANNEL_SMS notificationChannel : NOTIFICATION_CHANNEL_WHATSAPP Não enviar campos de notifications em caso de recebimento de URL apenas. |
purpose | String | Mandatório | Define o propósito de uso e coleta de dados do usuário. Tem como objetivo dar transparência e garantir o tratamento de dados correto pela LGPD. creditprocess : Caso você esteja utilizando a solução para oferecer um crédito ao usuário. biometryonboarding : Caso você esteja utilizando a solução para realizar onboarding do usuário. carpurchase : Caso você esteja utilizando a solução para realizar commpra de um veículo. |
payload | Array | Mandatório | O campo payload é um Array que oferece um local para inserção de arquivos necessários para alguns fluxos específicos, como por exemplo idsign . Dentro do Array payload outro Array pode ser utilizado para criação de envelopes de fluxo de assinatura. O campo documents é um Array recebe o documentos que compoem cada envelope, podendo ser 1 ou mais. Cada Objeto document possui: - documentName : Nome do documento. - fileContents : Base64 do PDF a ser assinado. Esse campo é obrigatório para integração com o IDSign. |
(*) O parâmetro person.phone se torna mandatório quando o campo notifications.notificationChannel for preenchido.
Exemplo de requisição
- cURL
- Postman
- NodeJS
- Java
- C#
- Go
curl -X 'POST' \
'https://api.cadastro.uat.unico.app/client/v1/process/' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {{TOKEN}}'
-d '{
"callbackUri": "/",
"flow": "id",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "73689290074"
},
"purpose": "creditprocess"
}'
Para utilizar o Postman, siga os passos:
- Selecione o método POST.
- Insira a URL
https://api.cadastro.uat.unico.app/client/v1/process/
. - Selecione a aba Authorization.
- Na lista de Type, selecione Bearer Token.
- Insira o token obtido no campo Token com o prefixo
Bearer
. - Selecione a aba Body e insira os dados abaixo de acordo com sua necessidade.
{
"callbackUri": "/",
"flow": "id",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "73689290074"
},
"purpose": "creditprocess"
}
const axios = require("axios");
const apiUrl = "https://api.cadastro.uat.unico.app/client/v1/process/";
const token = "SEU_TOKEN_AQUI";
const requestData = {
callbackUri: "/",
flow: "id",
person: {
duiType: "DUI_TYPE_BR_CPF",
duiValue: "73689290074",
},
purpose: "creditprocess",
};
const headers = {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
accept: "application/json",
};
axios
.post(apiUrl, requestData, { headers })
.then((response) => {
console.log("Resposta da API:", response.data);
})
.catch((error) => {
console.error("Erro:", error);
});
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
String apiUrl = "https://api.cadastro.uat.unico.app/client/v1/process/";
String token = "SEU_TOKEN_AQUI";
// Crie o corpo da solicitação em formato JSON
String requestBody = "{\"callbackUri\":\"/\",\"flow\":\"id\",\"person\":{\"duiType\":\"DUI_TYPE_BR_CPF\",\"duiValue\":\"73689290074\"},\"purpose\":\"creditprocess\"}";
// Configure os cabeçalhos da solicitação
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("Authorization", "Bearer " + token);
headers.put("accept", "application/json");
// Crie a instância do HttpClient
HttpClient httpClient = HttpClient.newBuilder().build();
// Crie a solicitação HTTP POST
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiUrl))
.headers(headers.entrySet().stream()
.map(e -> e.getKey() + ":" + e.getValue())
.toArray(String[]::new))
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
try {
// Envie a solicitação e obtenha a resposta
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
// Exiba a resposta da API
System.out.println("Status da resposta: " + response.statusCode());
System.out.println("Corpo da resposta: " + response.body());
} catch (Exception e) {
e.printStackTrace();
}
}
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
string apiUrl = "https://api.cadastro.uat.unico.app/client/v1/process/";
string token = "SEU_TOKEN_AQUI";
// Crie o corpo da solicitação em formato JSON
string requestBody = "{\"callbackUri\":\"/\",\"flow\":\"id\",\"person\":{\"duiType\":\"DUI_TYPE_BR_CPF\",\"duiValue\":\"73689290074\"},\"purpose\":\"creditprocess\"}";
// Configure os cabeçalhos da solicitação
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Content-Type", "application/json");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
client.DefaultRequestHeaders.Add("accept", "application/json");
try
{
// Envie a solicitação HTTP POST
HttpResponseMessage response = await client.PostAsync(apiUrl, new StringContent(requestBody, Encoding.UTF8, "application/json"));
// Verifique o status da resposta
if (response.IsSuccessStatusCode)
{
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine("Status da resposta: " + response.StatusCode);
Console.WriteLine("Corpo da resposta: " + responseBody);
}
else
{
Console.WriteLine("Erro na solicitação. Status da resposta: " + response.StatusCode);
}
}
catch (Exception e)
{
Console.WriteLine("Erro: " + e.Message);
}
}
}
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
apiURL := "https://api.cadastro.uat.unico.app/client/v1/process/"
token := "SEU_TOKEN_AQUI"
// Crie o corpo da solicitação em formato JSON
requestBody := []byte(`{
"callbackUri": "/",
"flow": "id",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "73689290074"
},
"purpose": "creditprocess"
}`)
// Crie um cliente HTTP
client := &http.Client{}
// Crie uma solicitação HTTP POST
req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(requestBody))
if err != nil {
fmt.Println("Erro ao criar a solicitação HTTP:", err)
return
}
// Defina os cabeçalhos da solicitação
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("accept", "application/json")
// Faça a solicitação HTTP
resp, err := client.Do(req)
if err != nil {
fmt.Println("Erro ao fazer a solicitação HTTP:", err)
return
}
defer resp.Body.Close()
// Verifique o status da resposta
if resp.StatusCode == http.StatusOK {
// Leitura do corpo da resposta
var responseBody []byte
_, err := resp.Body.Read(responseBody)
if err != nil {
fmt.Println("Erro ao ler o corpo da resposta:", err)
return
}
fmt.Println("Status da resposta:", resp.Status)
fmt.Println("Corpo da resposta:", string(responseBody))
} else {
fmt.Println("Erro na solicitação. Status da resposta:", resp.Status)
}
}
Exemplos de requisição de fluxos.
- ID
- IDCheck
- IDDocs
- ID + Sign
- IDDocs + Sign
Para uma jornada apenas com validação de identidade.
{
//URL de redirecionamento.
"callbackUri": "/",
//Tipo de jornada.
"flow": "id",
//Dados do usuário.
"person": {
//Tipo de identificador utilizado, DUI_TYPE_BR_CPF para CPF no Brasil.
"duiType": "DUI_TYPE_BR_CPF",
//Valor do identificador.
"duiValue": "73689290074"
},
//Caso de uso onde você está aplicando a solução da Unico.
"purpose": "biometryonboarding"
}
Para uma jornada com validação de identidade e score do Check no caso de inconclusivo do ID.
{
//URL de redirecionamento.
"callbackUri": "/",
//Tipo de jornada.
"flow": "idcheck",
//Dados do usuário.
"person": {
//Tipo de identificador utilizado, DUI_TYPE_BR_CPF para CPF no Brasil.
"duiType": "DUI_TYPE_BR_CPF",
//Valor do identificador.
"duiValue": "73689290074"
},
//Caso de uso onde você está aplicando a solução da Unico.
"purpose": "biometryonboarding"
}
Para uma jornada com validação de identidade, score do Check no caso de inconclusivo do ID e captura/reaproveitamento de documento de identificação (RG/CNH).
{
//URL de redirecionamento.
"callbackUri": "/",
//Tipo de jornada.
"flow": "iddocs",
//Dados do usuário.
"person": {
//Tipo de identificador utilizado, DUI_TYPE_BR_CPF para CPF no Brasil.
"duitype": "DUI_TYPE_BR_CPF",
//Valor do identificador.
"duiValue": "73689290074"
},
//Caso de uso onde você está aplicando a solução da Unico.
"purpose": "creditprocess"
}
Para uma jornada com validação de identidade, score do Check no caso de inconclusivo do ID e assinatura eletrônica.
{
//URL de redirecionamento.
"callbackUri": "/",
//Tipo de jornada.
"flow": "idsign",
//Dados do usuário.
"person": {
//Tipo de identificador utilizado, DUI_TYPE_BR_CPF para CPF no Brasil.
"duiType": "DUI_TYPE_BR_CPF",
//Valor do identificador.
"duiValue": "73689290074"
},
//Caso de uso onde você está aplicando a solução da Unico.
"purpose": "biometryonboarding",
//Dados completares da jornada.
"payload": [
{
//Dados do envelope para ser assinado.
"envelopePayload": {
//Lista de documentos do seu envelope.
"documents": [
{
//Nome do seu arquivo PDF.
"documentName": "teste",
//Base 64 do seu PDF.
"fileContents": "JVBERi0xLjMNCiXi48/[...]DQoNCnN0YXJ0eHJlZg0KMjcxNA0KJSVFT0YNCg=="
}
]
}
}
]
}
Para uma jornada com validação de identidade, score do Check no caso de inconclusivo do ID, captura/reaproveitamento de documento de identificação (RG/CNH) e assinatura eletrônica.
{
//URL de redirecionamento.
"callbackUri": "/",
//Tipo de jornada.
"flow": "iddocssign",
//Dados do usuário.
"person": {
//Tipo de identificador utilizado, DUI_TYPE_BR_CPF para CPF no Brasil.
"duiType": "DUI_TYPE_BR_CPF",
//Valor do identificador.
"duiValue": "73689290074"
},
//Caso de uso onde você está aplicando a solução da Unico.
"purpose": "biometryonboarding",
//Dados completares da jornada.
"payload": [
{
//Dados do envelope para ser assinado.
"envelopePayload": {
//Lista de documentos do seu envelope.
"documents": [
{
//Nome do seu arquivo PDF.
"documentName": "teste",
//Base 64 do seu PDF.
"fileContents": "JVBERi0xLjMNCiXi48/[...]DQoNCnN0YXJ0eHJlZg0KMjcxNA0KJSVFT0YNCg=="
}
]
}
}
]
}
Requisição executada com sucesso
No caso de sucesso na execução da requisição, um 200 OK
é retornado como resposta com as seguintes informações:
{
"process": {
// ID do processo criado.
"id": "057f8d90-6ff6-4f52-ba05-ead6123f73bd",
// Tipo de jornada criada.
"flow": "idcheck",
// Dados da empresa visualizado pelo usuário.
"company": {
// Código da empresa.
"code": "unico",
// Nome fantasia da empresa.
"friendlyName": "Orquestrador",
// 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/057f8d90-6ff6-4f52-ba05-ead6123f73bd",
// Estado atual do processo
"state": "PROCESS_STATE_FINISHED",
// Resultado atual do processo.
"result": "PROCESS_RESULT_OK",
// Dados do usuário no processo.
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "11693205629",
"friendlyName": "Rodrigo"
},
// Propósito cadastrado no processo.
"purpose": "creditprocess",
// Resultados do processo 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
}
},
// Momento em que o processo foi criado.
"createdAt": "2023-08-09T15:15:09.751991Z",
// 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. Mais detalhes em Parametros de requisição. |
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_WARNING : Processo finalizado com alerta. PROCESS_RESULT_ERROR : Processo finalizado com algum tipo de erro. |
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 ID. AUTHENTICATION_RESULT_UNSPECIFIED : Aguardando o retorno do processo de autenticação. 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. |
authenticationInfo.authenticationResult. scoreEngineResult.score | Sinaliza o resultado do score do Check. 0 : Caso esteja desabilitado. -100 a 100 : Resultado do score. |
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.