# Transacional

{% hint style="info" %}
**URL Base**:

* UAT: <mark style="color:blue;">`https://api.id.uat.unico.app`</mark>;
* Produção: <mark style="color:blue;">`https://api.id.unico.app`</mark>.
  {% endhint %}

## Criar Processo Transacional

> Endpoint para criar um novo processo Transacional no by Client.

```json
{"openapi":"3.0.0","info":{"title":"CreateProcess by Client","version":"0.0.1"},"servers":[{"url":"https://api.id.uat.unico.app"}],"paths":{"/processes/v1":{"post":{"summary":"Criar Processo Transacional","description":"Endpoint para criar um novo processo Transacional no by Client.","parameters":[{"in":"header","name":"Authorization","required":true,"schema":{"type":"string"},"description":"Access-token válido."},{"in":"header","name":"APIKEY","required":true,"schema":{"type":"string"},"description":"APIKEY válida com as capacidades para uso do Transacional."}],"requestBody":{"description":null,"required":true,"content":{"application/json":{"schema":{"type":"object","required":["subject","referenceProcessId","imageBase64"],"properties":{"subject":{"type":"object","description":"Informações do usuário.","required":["code"],"properties":{"code":{"type":"string","description":"Identificador do usuário. Pode ser o CPF brasileiro ou o CURP mexicano. Deve ser enviado sem pontos ou traços."},"name":{"type":"string","description":"Nome do usuário."},"gender":{"type":"string","description":"Gênero do usuário. Valores possíveis: 'M' para homens ou 'F' para mulheres."},"birthDate":{"type":"string","description":"Data de nascimento do usuário. Deve estar no formato ISO 8601 (yyyy-MM-dd)."},"email":{"type":"string","description":"E-mail do usuário."},"phone":{"type":"string","description":"Telefone do usuário. Deve conter 13 caracteres e ser enviado sem pontos ou traços, no padrão DDI + DDD + Número de telefone."}}},"referenceProcessId":{"type":"string","description":"Identificador do processo que foi gerado durante a criação da transação biométrica, cuja foto será usada para comparação."},"useCase":{"type":"string","description":"Caso de uso da operação."},"subsidiaryId":{"type":"string","description":"o ID da filial onde o processo será criado. Caso haja somente uma filial associada a conta de serviço, não há a necessidade de passar este parâmetro. Caso haja separação de processos por filial, você receberá os IDs das filiais do time Unico."},"imageBase64":{"type":"string","description":"Arquivo encrypted gerado pelo SDK ou base64 (caso não utilize a Prova de vida)."}}}}}},"responses":{"200":{"description":"Processo criado com sucesso (Usuário autenticado).","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"ID do processo."},"status":{"type":"integer","enum":[3,5],"description":"Status do processo. Valores possíveis: '3' - Concluído; '5' - Erro."},"unicoId":{"type":"object","description":"Informações sobre a verificação de identidade.","properties":{"result":{"type":"string","enum":["yes","no","inconclusive"],"description":"Resultado da verificação de identidade. Valores possíveis: 'yes' - É a face titular do CPF; 'no' - Não é a face titular do CPF; 'inconclusive' - Não conseguimos garantir com precisão se essa é a face titular do CPF."}}},"identityFraudsters":{"type":"object","description":"Informações sobre o alerta de comportamento.","properties":{"result":{"type":"enum","enum":["yes","inconclusive"],"description":"Resultado do alerta de comportamento. Valores possíveis: 'yes' - A face já foi envolvida em alguma transação fraudulenta de identidade; 'inconclusive' - Não temos indícios que a face já foi envolvida em alguma transação fraudulenta de identidade."}}},"biometryToken":{"type":"object","description":"Informações sobre a validação 1:1.","properties":{"result":{"type":"boolean","enum":["true","false"],"description":"Resultado da autenticação. Valores possíveis: 'true' - Sucesso. A face da transação é a mesma do processo de referência; 'false' - Falha. A face da transação não é a mesma do processo de referência."}}},"liveness":{"type":"integer","enum":[1,2],"description":"Resultado da prova de vida. Valores possíveis: '1' - Prova de vida aprovada; '2' - Prova de vida recusada."}}}}}},"400":{"description":"Bad Request.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","description":"Error code."},"description":{"type":"string","description":"Error description."}}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","description":"Error code."},"description":{"type":"string","description":"Error description."}}}}}}}},"500":{"description":"Internal Server Error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"integer","description":"Error code."},"description":{"type":"string","description":"Error description."}}}}}}}}}}}}}
```

{% hint style="warning" %}
**Pontos Importantes**:

* Para utilizar a capacidade Prova de vida, é indispensável o uso dos nossos SDKs:
  * É possível utilizar a capacidade de Validação (1:1) sem a Prova de vida. Para este caso de uso, não devolveremos o parâmetro `liveness` no response da API. Neste cenário **não há nenhuma** validação da prova de vida, nem mesmo passiva;
  * Ao utilizar a Validação (1:1) com outras capacidades, é necessário sempre considerar os retornos separadamente.
* Para este caso de uso, não é possível orquestrar com Score de risco;
* Caso utilize processos de referência do by Unico, o valor que deve ser utilizado como `referenceProcessId` deve ser referente ao parâmetro `authenticationInfo.authenticationId`.
* Caso ocorra algum erro no processamento, o processo retornará um `status = 5`, como no exemplo abaixo:

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

{% endhint %}

### Erros

{% tabs %}
{% tab title="400 Bad Request" %}

<table><thead><tr><th width="110">code</th><th width="290">message</th><th>Descrição</th></tr></thead><tbody><tr><td><code>20900</code></td><td><code>O base64 informado não é válido.</code></td><td>O parâmetro base64 é inválido. Possíveis causas: Não é uma imagem ou é uma tentativa de injection.</td></tr><tr><td><code>20807</code></td><td><code>A imagem precisa estar no padrão HD ou possuir uma resolução superior a 640 x 480.</code></td><td>A resolução da imagem enviada é muito pequena.</td></tr><tr><td><code>20507</code></td><td><code>O parâmetro subject.code é inválido.</code></td><td>CPF fora do padrão ou inexistente.</td></tr><tr><td><code>20506</code></td><td><code>O base64 informado é muito grande. O tamanho máximo suportado é até 800kb.</code></td><td>A imagem é muito grande. A imagem pode ser comprimida para JPEG92 sem perda de qualidade.</td></tr><tr><td><code>20505</code></td><td><code>O base64 informado não é suportado. Os formatos aceitos são png, jpeg e webp.</code></td><td>Base64 inválido. Possíveis causas: não é uma imagem válida ou prefixo inválido.</td></tr><tr><td><code>20009</code></td><td><code>O parâmetro imagebase64 não foi informado.</code></td><td>Falta o parâmetro imagebase64, que contém a selfie da pessoa.</td></tr><tr><td><code>20006</code></td><td><code>O parâmetro subject.name não foi informado.</code></td><td>Falta o parâmetro subject.name, que contém o nome da pessoa.</td></tr><tr><td><code>20005</code></td><td><code>O parâmetro subject.code não foi informado.</code></td><td>Falta o parâmetro subject.code, que contém o cpf da pessoa.</td></tr><tr><td><code>20004</code></td><td><code>O parâmetro subject não foi informado.</code></td><td>Falta o parâmetro subject, que contém os dados da pessoa (cpf, nome).</td></tr><tr><td><code>20003</code></td><td><code>The request body is missing or invalid.</code></td><td>Payload nulo ou inválido.</td></tr><tr><td><code>20002</code></td><td><code>O parâmetro APIKey não foi informado.</code></td><td>Falta o parâmetro APIKEY no cabeçalho da requisição.</td></tr><tr><td><code>20001</code></td><td><code>O parâmetro authtoken não foi informado</code></td><td>Falta o parâmetro do token de integração no cabeçalho da requisição.</td></tr><tr><td><code>10508</code></td><td><code>The JWT with the captured face has already been used.</code></td><td>O .jwt só pode ser usado uma única vez.</td></tr><tr><td><code>10507</code></td><td><code>The JWT with the captured face is expired.</code></td><td>JWT expirado. O .jwt deve ser enviado em até 10 minutos.</td></tr><tr><td><code>10506</code></td><td><code>The bundle is invalid.</code></td><td>Bundle inválido. APIKEY usa um método de segurança e esta solicitação não atende aos requisitos de segurança (SDK).</td></tr></tbody></table>
{% endtab %}

{% tab title="403 Forbidden" %}

<table><thead><tr><th width="183">code</th><th>message</th><th>Descrição</th></tr></thead><tbody><tr><td><code>30017</code></td><td><code>Jwt header is an invalid JSON.</code></td><td>Quando o access-token utilizado contém caracteres errados.</td></tr><tr><td><code>10502</code></td><td><code>O token informado está expirado.</code></td><td>Quando o access-token utilizado expirou</td></tr><tr><td><code>10501</code></td><td><code>O token informado é inválido.</code></td><td>O token de autenticação é inválido.</td></tr><tr><td><code>10201</code></td><td><code>O AppKey informado é inválido.</code></td><td>O parâmetro APIKEY não foi informado ou não existe.</td></tr></tbody></table>
{% endtab %}

{% tab title="500 Internal Server Error" %}

<table><thead><tr><th width="99">code</th><th width="299">message</th><th>Descrição</th></tr></thead><tbody><tr><td>99999</td><td><code>Internal failure! Try again later</code></td><td>Quando há algum erro interno.</td></tr></tbody></table>
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://devcenter.unico.io/unico-idcloud/by-client-integration/pt/by-client-api/api-reference/transacional.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
