> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wincred.digital/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticação

> Configure o acesso às nossas APIs utilizando OAuth 2.0

Nossas APIs utiliza o protocolo **OAuth 2.0** com fluxo de credenciais de cliente (Client Credentials Flow) através do Microsoft Identity Platform (Azure AD).

### Credenciais de Acesso

Para autenticar suas requisições, você precisará das seguintes credenciais, essas credenciais são enviadas no email do contato técnico responsável pela operação da sua instituição:

| Parâmetro       | Descrição                                          |
| --------------- | -------------------------------------------------- |
| `client_id`     | Identificador único da sua aplicação               |
| `client_secret` | Chave secreta da aplicação (Enviada via Bitwarden) |
| `tenant_id`     | Identificador do tenant no Azure AD                |
| `scope`         | Escopo de acesso                                   |

### Como Autenticar

A autenticação é feita em duas etapas:

#### 1. Obter o Access Token

Primeiro, faça uma requisição POST para o endpoint de autenticação do Azure AD:

```bash theme={null}
curl --request POST \
  --url https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --data "client_id={client_id}&client_secret={client_secret}&scope={scope}&grant_type=client_credentials"
```

Substitua os placeholders `{tenant_id}`, `{client_id}`, `{client_secret}` e `{scope}` pelas suas credenciais.

**Resposta:**

```json theme={null}
{
  "token_type": "Bearer",
  "expires_in": 3599,
  "access_token": "eyJ0eXAi......"
}
```

#### 2. Usar o Token nas Requisições

Utilize o `access_token` recebido no header `Authorization` de suas requisições à API:

```bash theme={null}
curl --request POST \
  --url https://api.exemplo.com/proposals \
  --header "Authorization: Bearer {access_token}" \
  --header "Content-Type: application/json" \
  --data '{
    "campo": "valor"
  }'
```

### Renovação de Tokens

<Info>
  Os tokens de acesso têm validade de **1 hora** (3600 segundos).
</Info>

Quando o token expirar, você precisará solicitar um novo token seguindo o mesmo processo descrito acima. Recomendamos:

* **Implementar renovação automática:** Configure sua aplicação para solicitar um novo token antes da expiração
* **Tratar erros 401:** Se receber erro 401 (Unauthorized), solicite um novo token e tente novamente
* **Cache inteligente:** Armazene o token e reutilize-o enquanto estiver válido
