> 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/api-rest/identity-api/identity-api-reference/tracking/finish-tracking.md).

# Finish Tracking

Este servicio completa el proceso de tracking y debe ser invocado al finalizar todas las validaciones en los flujos de Onboarding o Autenticación. **Cuando este servicio está integrado, no es necesario invocar el método closeSession del SDK Mobile/Web.**

### Endpoint

```
POST /services/finishTracking
```

### Headers

| Nombre        | Tipo   | Requerido | Descripción                                                                                        |
| ------------- | ------ | --------- | -------------------------------------------------------------------------------------------------- |
| **x-api-key** | string | **Sí**    | API key de autorización de acceso.                                                                 |
| **family**    | string | No        | Valor: **OnBoarding** o **Authentication**, según el flujo. Requerido con el servicio de tracking. |

{% hint style="info" %}
Todas las llamadas a los Endpoints para tracking con **Identity Platform** deben contener el header `family`.
{% endhint %}

### Cuerpo de la solicitud

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

#### Parámetros

| Parámetro   | Tipo   | Requerido | Descripción                                                                                         |
| ----------- | ------ | --------- | --------------------------------------------------------------------------------------------------- |
| `family`    | string | **Sí**    | Valores posibles: **Authentication**, **OnBoarding**                                                |
| `status`    | string | **Sí**    | Valores posibles: **SUCCEEDED**, **DENIED**, **ERROR**, **CANCELLED**, **BLACKLISTED**              |
| `reason`    | string | **Sí**    | Motivo del resultado del tracking. Ver [valores posibles de `reason`](#valores-posibles-de-reason). |
| `extraData` | string | **Sí**    | Token generado por el SDK Mobile/Web. Contiene información de seguimiento tokenizada.               |

#### Valores posibles de `reason`

| Valor                              | Descripción                                      |
| ---------------------------------- | ------------------------------------------------ |
| `""`                               | Sin motivo específico (operación exitosa)        |
| `DOCUMENT_VALIDATION_NOT_PASSED`   | La validación del documento no fue superada      |
| `DOCUMENT_VALIDATION_ERROR`        | Error durante la validación del documento        |
| `FACIAL_AUTHENTICATION_NOT_PASSED` | La autenticación facial no fue superada          |
| `FACIAL_LIVENESS_NOT_PASSED`       | La prueba de vida facial no fue superada         |
| `FACIAL_AUTHENTICATION_ERROR`      | Error durante la autenticación facial            |
| `FACIAL_LIVENESS_ERROR`            | Error durante la prueba de vida facial           |
| `BLACKLISTED_FACE_TEMPLATE`        | La plantilla facial se encuentra en la blacklist |
| `ALREADY_REGISTERED`               | El usuario ya se encuentra registrado            |
| `MANUAL_STATUS_CHANGE`             | Cambio de estado manual                          |
| `SECURITY_SERVICE_ERROR`           | Error en el servicio de seguridad                |
| `SELPHID_INTERNAL_ERROR`           | Error interno de SelphID                         |
| `SELPHID_TIMEOUT`                  | Timeout de SelphID                               |
| `SELPHI_TIMEOUT`                   | Timeout de Selphi                                |

#### Ejemplo de solicitud

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

### Respuestas

#### `200` Éxito

#### Parámetros de respuesta

| Parámetro         | Tipo    | Descripción                                                                                                                                            |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `trackingStatus`  | integer | Código que indica el resultado de la ejecución del servicio de tracking. El valor **201** indica servicio procesado sin excepciones.                   |
| `trackingMessage` | string  | Mensaje que indica el resultado de la ejecución del servicio de tracking. El valor **"FinishTrackingEvent: Ok"** indica procesamiento sin excepciones. |
| `transactionId`   | string  | Identificador de transacción asociado a la solicitud procesada por la API.                                                                             |
| `timestamp`       | string  | Marca de tiempo (UTC) de la respuesta en formato YYYY-MM-DDThh:flag\_mm:ss.SSSZ                                                                        |

#### Ejemplo de respuesta

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

#### `400` Bad Request

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

#### `401` Unauthorized

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

#### `403` Forbidden

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

#### `502` Bad Gateway

```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` Gateway Timeout

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