> 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/midapi-v2/autenticacion.md).

# Autenticação

Os endpoints de MIDAPI v2 são autenticados com um **Token JWT de consumer** enviado no cabeçalho `Authorization: Bearer <token>`. O Token é emitido a partir dos dois conceitos apresentados em [MIDAPI v2](/docs.facephi-pt-br/api-rest/midapi-v2.md): a **plataforma do cliente** emite Tokens para seus **consumers**, e cada chamada operacional é realizada em nome de um consumer.

### Cabeçalhos de identificação

| Cabeçalho          | Descrição                                                                                                         |
| ------------------ | ----------------------------------------------------------------------------------------------------------------- |
| `platform-id`      | Identifica a plataforma do cliente. Obrigatória somente na emissão do Token de consumer (`POST /consumer/token`). |
| `platform-api-key` | API Key da plataforma do cliente. Obrigatória somente na emissão do Token de consumer (`POST /consumer/token`).   |
| `consumer-id`      | Identifica o canal/consumer. Obrigatório nos endpoints operacionais (`/storage` e `/v2/daf/*`).                   |

### Requisitos dos endpoints operacionais

Todos os endpoints de DAF requerem:

* **Autenticação OAuth2**: cabeçalho `Authorization: Bearer <token>`, obtido por meio de `POST /consumer/token` (JWT assinado com RS256, veja mais abaixo).
* Cabeçalho **`consumer-id`**: identificador do consumer. Obrigatório e não vazio.
* Cabeçalho **`operation-id`**: identificador da operação/sessão de negócio. Obrigatória em `POST /v2/daf/validate` e na consulta de status `GET /v2/daf/{transactionId}`.

{% hint style="info" %}
MIDAPI v2 não utiliza autenticação por `x-api-key`. O esquema é OAuth2 Bearer + `consumer-id` (e `operation-id` ao iniciar a validação e ao consultar o status).
{% endhint %}

## Obter o Token de consumer

Antes de invocar qualquer endpoint operacional, o consumer deve obter um Token JWT e enviá-lo no cabeçalho `Authorization: Bearer <token>`. O Token é emitido por Facephi e inclui o `consumer-id` e os scopes correspondentes aos serviços habilitados para esse consumer.

### Endpoint

```
POST /consumer/token
```

### Cabeçalhos

| Nome                 | Tipo   | Obrigatório | Descrição                               |
| -------------------- | ------ | ----------- | --------------------------------------- |
| **platform-id**      | string | **Sim**     | Identificador da plataforma do cliente. |
| **platform-api-key** | string | **Sim**     | API Key da plataforma do cliente.       |

### Corpo da solicitação

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

#### Parâmetros

| Parâmetro    | Tipo   | Obrigatório | Descrição                                                                       |
| ------------ | ------ | ----------- | ------------------------------------------------------------------------------- |
| `consumerId` | string | **Sim**     | Identificador do consumer (canal ou vertical) para o qual o Token é solicitado. |

#### Exemplo de solicitação

```json
{
  "consumerId": "<consumerId>"
}
```

### Respostas

#### `200` Sucesso

#### Parâmetros de resposta

| Parâmetro    | Tipo   | Descrição                                                             |
| ------------ | ------ | --------------------------------------------------------------------- |
| `consumerId` | string | Consumer para o qual o Token foi emitido.                             |
| `token`      | string | Token JWT a ser enviado no cabeçalho `Authorization: Bearer <token>`. |
| `expiresAt`  | string | Data e hora de expiração do Token no formato **ISO 8601**.            |

#### Exemplo de resposta

```json
{
  "consumerId": "<consumerId>",
  "token": "<jwt>",
  "expiresAt": "2026-06-26T13:00:00.000Z"
}
```

{% hint style="info" %}
O Token tem uma **validade de 1 hora** desde sua emissão (o instante exato de expiração é retornado no campo `expiresAt`). Uma vez expirado, basta solicitar um novo por meio do mesmo endpoint. Em cada requisição, são validados a assinatura, o emissor, o `consumer-id`, a expiração e os scopes do Token.
{% endhint %}
