> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-pt-br/api-rest/identity-api/identity-api-reference/tracking/finish-tracking.md).

# Finalizar Tracking

Este serviço completa o processo de tracking e deve ser invocado ao finalizar todas as validações nos fluxos de Onboarding ou Autenticação. **Quando este serviço está integrado, não é necessário invocar o método closeSession do SDK Mobile/Web.**

### Endpoint

```
POST /services/finishTracking
```

### Cabeçalhos

| Nome          | Tipo   | Obrigatório | Descrição                                                                                            |
| ------------- | ------ | ----------- | ---------------------------------------------------------------------------------------------------- |
| **x-api-key** | string | **Sim**     | API key de autorização de acesso.                                                                    |
| **family**    | string | Não         | Valor: **Onboarding** ou **Authentication**, conforme o fluxo. Necessário com o serviço de tracking. |

{% hint style="info" %}
Todas as chamadas aos Endpoints para Tracking com **Identity Platform** devem conter o cabeçalho `family`.
{% endhint %}

### Corpo da solicitação

**Content-Type:** `application/json`

#### Parâmetros

| Parâmetro   | Tipo   | Obrigatório | Descrição                                                                                           |
| ----------- | ------ | ----------- | --------------------------------------------------------------------------------------------------- |
| `family`    | string | **Sim**     | Valores possíveis: **Authentication**, **Onboarding**                                               |
| `status`    | string | **Sim**     | Valores possíveis: **SUCCEEDED**, **DENIED**, **ERROR**, **CANCELLED**, **BLACKLISTED**             |
| `reason`    | string | **Sim**     | Motivo do resultado do tracking. Veja [valores possíveis de `reason`](#valores-posibles-de-reason). |
| `extraData` | string | **Sim**     | Token gerado pelo SDK Mobile/Web. Contém informações de tracking tokenizadas.                       |

#### Valores possíveis de `reason`

| Valor                              | Descrição                                     |
| ---------------------------------- | --------------------------------------------- |
| `""`                               | Sem motivo específico (operação bem-sucedida) |
| `DOCUMENT_VALIDATION_NOT_PASSED`   | A validação do documento não foi aprovada     |
| `DOCUMENT_VALIDATION_ERROR`        | Erro durante a validação do documento         |
| `FACIAL_AUTHENTICATION_NOT_PASSED` | A autenticação facial não foi aprovada        |
| `FACIAL_LIVENESS_NOT_PASSED`       | O teste de vida facial não foi aprovado       |
| `FACIAL_AUTHENTICATION_ERROR`      | Erro durante a autenticação facial            |
| `FACIAL_LIVENESS_ERROR`            | Erro durante o teste de vida facial           |
| `BLACKLISTED_FACE_TEMPLATE`        | O template facial está na blacklist           |
| `ALREADY_REGISTERED`               | O usuário já está registrado                  |
| `MANUAL_STATUS_CHANGE`             | Alteração manual de status                    |
| `SECURITY_SERVICE_ERROR`           | Erro no serviço de segurança                  |
| `SELPHID_INTERNAL_ERROR`           | Erro interno do SelphID                       |
| `SELPHID_TIMEOUT`                  | Timeout do SelphID                            |
| `SELPHI_TIMEOUT`                   | Timeout de Selphi                             |

#### Exemplo de solicitação

```json
{
  "family": "OnBoarding",
  "status": "SUCCEEDED",
  "reason": "MANUAL_STATUS_CHANGE",
  "extraData": "BQABAQG2gBNjuHN4kLmPqYf7R..."
}
```

### Respostas

#### `200` Sucesso

#### Parâmetros de resposta

| Parâmetro         | Tipo    | Descrição                                                                                                                                    |
| ----------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `trackingStatus`  | integer | Código que indica o resultado da execução do serviço de tracking. O valor **201** indica que o serviço foi processado sem exceções.          |
| `trackingMessage` | string  | Mensagem que indica o resultado da execução do serviço de tracking. O valor **"FinishTrackingEvent: Ok"** indica processamento sem exceções. |
| `transactionId`   | string  | Identificador de transação associado à solicitação processada pela API.                                                                      |
| `timestamp`       | string  | Marca temporal (UTC) da resposta no formato YYYY-MM-DDThh:flag\_mm:ss.SSSZ                                                                   |

#### Exemplo de resposta

```json
{
  "trackingStatus": 201,
  "trackingMessage": "FinishTrackingEvent: Ok",
  "transactionId": "123e4567-e89b-12d3-a456-426614174000",
  "timestamp": "2023-05-01T12:34:56.789Z"
}
```

#### `400` Requisição inválida

```json
{
  "status": 400,
  "title": "Bad Request",
  "detail": "Invalid request.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
  "errors": []
}
```

#### `401` Não autorizado

```json
{
  "message": "Unauthorized"
}
```

#### `403` Proibido

```json
{
  "Message": "User is not authorized to access this resource with an explicit deny"
}
```

#### `502` Gateway inválido

```json
{
  "status": 502,
  "title": "Bad Gateway",
  "detail": "Server got an invalid response.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502"
}
```

#### `504` Tempo esgotado no gateway

```json
{
  "message": "Endpoint request timed out"
}
```
