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

# Autenticação

> A API da Base39 utiliza o protocolo OAuth 2.0 para autenticação e autorização. Este documento explica como implementar a autenticação em sua aplicação.

## O que é OAuth 2.0?

OAuth 2.0 é um protocolo de autorização que permite que aplicações terceiras acessem recursos protegidos em nome de um usuário, sem precisar compartilhar suas credenciais. É o padrão da indústria para autenticação segura.

## Fluxo de autenticação

A Base39 utiliza o Client Credentials Flow, ideal para comunicação entre máquinas/serviços (M2M) onde não há interação do usuário. O processo é simples:

1. **Obtenção de Credenciais**: Sua aplicação usa suas credenciais (Client ID e Client Secret)
2. **Solicitação de Token**: Faz uma requisição direta para obter o token de acesso
3. **Acesso à API**: Use o token para fazer requisições à API

## Implementação

### 1. Registrar sua aplicação

Antes de começar, você precisa registrar sua aplicação com o time de suporte da Base39 para obter:

* Client ID
* Client Secret

### 2. Configurar URLs

* URL de Token: `https://auth.base39.com.br/oauth2/token`

### 3. Escopos disponíveis

* `read`: Permissão para ler dados
* `write`: Permissão para escrever dados

### 4. Exemplo de implementação

```javascript theme={null}
// Obter token diretamente com credenciais
const tokenResponse = await fetch("https://auth.base39.com.br/oauth2/token", {
  method: "POST",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded",
  },
  body: new URLSearchParams({
    grant_type: "client_credentials",
    client_id: "SEU_CLIENT_ID",
    client_secret: "SEU_CLIENT_SECRET",
    scope: "read write",
  }),
});

const { access_token } = await tokenResponse.json();

// Usar o token nas requisições
const apiResponse = await fetch("https://api.base39.com.br/v1/...", {
  headers: {
    Authorization: `Bearer ${access_token}`,
  },
});
```

## Segurança

* Nunca compartilhe seu Client Secret
* Sempre use HTTPS
* Armazene tokens de forma segura
* Implemente refresh tokens para renovação automática
* Revogue tokens quando não forem mais necessários
* Use credenciais específicas para cada serviço
* Monitore e audite o uso das credenciais
