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

# Atualizar template do usuário

Este serviço permite a atualização do Template Biométrico associado a um usuário específico. Sua função principal é sincronizar o template facial mais recente do usuário armazenado no repositório de dados do cliente com um novo template registrado para o usuário.

#### Funcionalidade

* **userId**: Identificador único do usuário, persistido e associado ao Template Biométrico correspondente (oldRegisteredTemplateRaw). Precisa de pelo menos dois dígitos.
* **image (Opcional)**: Imagem em formato Base64 obtida do registro civil para autenticação. Torna-se obrigatória se não for fornecida a Template Biométrico registrada (registeredTemplateRaw).
* **oldRegisteredTemplateRaw**: Template atualmente registrada associada ao userId.
* **newRegisteredTemplateRaw**: Novo template a ser associado ao userId. Deve ser persistido para futuras autenticações.

### Endpoint

```
POST /services/updateUserTemplate
```

### 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: **Authentication**. Obrigatório com o serviço de tracking. |

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

### Corpo da solicitação

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

#### Parâmetros

| Parâmetro                  | Tipo   | Obrigatório | Descrição                                                                                                                                        |
| -------------------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `userId`                   | string | **Sim**     | Identificador único do usuário. Deve ser persistido e associado ao Template Biométrico correspondente. Precisa de pelo menos dois dígitos.       |
| `oldRegisteredTemplateRaw` | string | **Sim**     | Template atualmente registrada associada ao userId.                                                                                              |
| `newRegisteredTemplateRaw` | string | **Sim**     | Novo template a ser associado ao userId. Deve ser persistido para futuras autenticações.                                                         |
| `image`                    | string | Não         | Imagem em formato Base64 obtida do registro civil para autenticação. Torna-se obrigatória se não for fornecida a Template Biométrico registrada. |
| `tracking`                 | object | Não         | Objeto que representa as informações de tracking necessárias.                                                                                    |
| `tracking.extraData`       | string | Não         | Token gerado pelo SDK Mobile/Web. Contém informações de tracking tokenizadas com a Plataforma.                                                   |
| `tracking.operationId`     | string | Não         | Identificador de operação gerado pelo SDK Mobile/Web.                                                                                            |

#### Exemplo de solicitação

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

### Respostas

#### `200` Sucesso

#### Parâmetros de resposta

| Parâmetro           | Tipo    | Descrição                                                                                                        |
| ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------- |
| `serviceResultCode` | integer | Código que indica o **resultado geral** da execução do serviço. Veja [Service Result Code](#service-result-code) |
| `serviceResultLog`  | string  | Campo descritivo do resultado da execução. Se for bem-sucedida, indica a descrição do código de resultado.       |
| `timestamp`         | string  | Marca de tempo (UTC) da resposta no formato YYYY-MM-DDThh:flag\_mm:ss.SSSZ                                       |
| `transactionId`     | string  | Identificador de transação associado à solicitação processada pela API.                                          |

#### Service Result Code

O `serviceResultCode` indica o resultado geral da execução do serviço:

| serviceResultCode | Descrição                                                                              | Código HTTP |
| ----------------- | -------------------------------------------------------------------------------------- | ----------- |
| 0                 | A execução do serviço foi bem-sucedida, o módulo processou a solicitação corretamente. | 200         |

#### Código de resultado do serviço: Atualizar template do usuário

Códigos de resultado específicos do Endpoint `updateUserTemplate`:

| serviceResultCode | Descrição                                                                                                                                           | Código HTTP |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| 0                 | O Template (`templateRaw`) do usuário foi atualizado com sucesso.                                                                                   | 200         |
| -100              | O parâmetro `registeredTemplateRaw` não coincide com o ID: \[XXX]                                                                                   | 401         |
| -102              | O parâmetro `registeredTemplateRaw` enviado não coincide com o `templateRaw` registrado do usuário para o ID: \[XXX]. InvalidRegisteredTemplateRaw. | 401         |
| -103              | Usuário não encontrado.                                                                                                                             | 400         |

#### Exemplo de resposta

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

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

```json
{
  "status": 400,
  "title": "Solicitação inválida",
  "detail": "Requisição inválida.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
  "errors": []
}
```

#### `401` Não autorizado

```json
{
  "message": "Não autorizado"
}
```

#### `403` Acesso negado

```json
{
  "Message": "O usuário não está autorizado a acessar este recurso com uma negação explícita"
}
```

#### `502` Gateway inválido

```json
{
  "status": 502,
  "title": "Gateway inválido",
  "detail": "O servidor recebeu uma resposta inválida.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502"
}
```

#### `504` Gateway Timeout

```json
{
  "message": "A solicitação do Endpoint excedeu o tempo limite"
}
```
