> 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/authentication/update-user-template.md).

# Update User Template

Este servicio permite la actualización de la plantilla biométrica asociada a un usuario específico. Su función principal es sincronizar la plantilla facial más reciente del usuario almacenada en el repositorio de datos del cliente con una nueva plantilla registrada para el usuario.

#### Funcionalidad

* **userId**: Identificador único del usuario, persistido y asociado con la plantilla biométrica correspondiente (oldRegisteredTemplateRaw). Necesita al menos dos dígitos.
* **image (Opcional)**: Imagen en formato Base64 obtenida del registro civil para autenticación. Se vuelve obligatoria si no se proporciona la plantilla biométrica registrada (registeredTemplateRaw).
* **oldRegisteredTemplateRaw**: Plantilla actualmente registrada asociada al userId.
* **newRegisteredTemplateRaw**: Nueva plantilla a asociar con el userId. Debe ser persistida para futuras autenticaciones.

### Endpoint

```
POST /services/updateUserTemplate
```

### Headers

| Nombre        | Tipo   | Requerido | Descripción                                                       |
| ------------- | ------ | --------- | ----------------------------------------------------------------- |
| **x-api-key** | string | **Sí**    | API key de autorización de acceso.                                |
| **family**    | string | No        | Valor: **Authentication**. 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                                                                                                                                             |
| -------------------------- | ------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `userId`                   | string | **Sí**    | Identificador único del usuario. Debe ser persistido y asociado con la plantilla biométrica correspondiente. Necesita al menos dos dígitos.             |
| `oldRegisteredTemplateRaw` | string | **Sí**    | Plantilla actualmente registrada asociada al userId.                                                                                                    |
| `newRegisteredTemplateRaw` | string | **Sí**    | Nueva plantilla a asociar con el userId. Debe ser persistida para futuras autenticaciones.                                                              |
| `image`                    | string | No        | Imagen en formato Base64 obtenida del registro civil para autenticación. Se vuelve obligatoria si no se proporciona la plantilla biométrica registrada. |
| `tracking`                 | object | No        | Objeto que representa la información de seguimiento necesaria.                                                                                          |
| `tracking.extraData`       | string | No        | Token generado por el SDK Mobile/Web. Contiene información de seguimiento tokenizada con la Plataforma.                                                 |
| `tracking.operationId`     | string | No        | Identificador de operación generado por el SDK Mobile/Web.                                                                                              |

#### Ejemplo de solicitud

```json
{
  "userId": "001",
  "oldRegisteredTemplateRaw": "BAIBAQFpWL...",
  "newRegisteredTemplateRaw": "BAIBAQG0NRm0d...",
  "tracking": {
    "extraData": "BQABAQG2gBNjuHN...",
    "operationId": "123e4567-e89b-12d3-a456-426614174000"
  }
}
```

### Respuestas

#### `200` Éxito

#### Parámetros de respuesta

| Parámetro           | Tipo    | Descripción                                                                                                              |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------ |
| `serviceResultCode` | integer | Código que indica el **resultado general** de la ejecución del servicio. Ver [Service Result Code](#service-result-code) |
| `serviceResultLog`  | string  | Campo descriptivo del resultado de la ejecución. Si es exitoso, indica la descripción del código de resultado.           |
| `timestamp`         | string  | Marca de tiempo (UTC) de la respuesta en formato YYYY-MM-DDThh:flag\_mm:ss.SSSZ                                          |
| `transactionId`     | string  | Identificador de transacción asociado a la solicitud procesada por la API.                                               |

#### Service Result Code

El `serviceResultCode` indica el resultado general de la ejecución del servicio:

| serviceResultCode | Descripción                                                                          | Código HTTP |
| ----------------- | ------------------------------------------------------------------------------------ | ----------- |
| 0                 | La ejecución del servicio fue exitosa, el módulo procesó la solicitud correctamente. | 200         |

#### Service Result Code: Update User Template

Códigos de resultado específicos del endpoint `updateUserTemplate`:

| serviceResultCode | Descripción                                                                                                                                            | Código HTTP |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- |
| 0                 | La plantilla (`templateRaw`) del usuario fue actualizada exitosamente.                                                                                 | 200         |
| -100              | El parámetro `registeredTemplateRaw` no coincide con el ID: \[XXX]                                                                                     | 401         |
| -102              | El parámetro `registeredTemplateRaw` enviado no coincide con el `templateRaw` registrado del usuario para el ID: \[XXX]. InvalidRegisteredTemplateRaw. | 401         |
| -103              | Usuario no encontrado.                                                                                                                                 | 400         |

#### Ejemplo de respuesta

```json
{
  "timestamp": "2023-05-01T12:34:56.789Z",
  "transactionId": "123e4567-e89b-12d3-a456-426614174000",
  "serviceResultCode": 0,
  "serviceResultLog": "Service request successfully processed"
}
```

#### `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"
}
```
