# Autenticação

Para garantir a segurança e integridade dos dados, nossa API utiliza dois tipos de autenticação: `APIKeys` e `BearerTokens`.

### Tipos de Autenticação

#### APIKeys

A chave de API é definida nos headers `x-api-key-id` e `x-api-key-secret` e está vinculada a um usuário. Essa chave possui permissões específicas para operações de gestão, como criar novos clientes, consultores, buscar relatórios, etc. Cada chave é única no sistema e deve ser mantida em segurança, não sendo recomendada a sua exposição pública.

{% hint style="info" %}
**Recomendação**

É extremamente recomendado que você defina um IP fixo na pagina de integração do nosso portal, pois caso você exponha sua chave de API nenhuma requisição será aceita, a menos que venha do servidor indicado.
{% endhint %}

Esse exemplo em TypeScript realiza uma requisição buscando todos os clientes da empresa à qual a chave de API pertence.

```typescript
import axios from "axios"

const altpayApi = axios.config({
  baseURL: process.env.ALTPAY_API_URL,
  headers: {
    "x-api-key-id": process.env.ALTPAY_API_KEY_ID,
    "x-api-key-secret": process.env.ALTPAY_API_KEY_SECRET
  }
})

altpayApi.get("/v1/customers")
  .then((response) => {
    console.log(response.data)
  })
  .catch((error) => {
    handleAltPayError(error)
  })
```

```bash
ALTPAY_API_URL="https://staging-api.altpaybr.com.br/api"
ALTPAY_API_KEY="67ed57dec64cfa5892e30ed9"
ALTPAY_API_KEY_SECRET="api_key__fd321a1d...7cbaf4"
```

#### BearerToken

O token `Bearer` é obtido a partir do endpoint de login. Acesse a documentação das rotas de API e veja como gerar um. Com esse token, você poderá realizar a autenticação dos seus usuários e integrar a API da forma que melhor lhe convier.

**Exemplo de uso do BearerToken**

Esse exemplo em TypeScript realiza uma requisição buscando os dados do usuário logado.

```typescript
import axios from "axios";

const altpayApi = axios.config({
  baseURL: process.env.ALTPAY_API_URL,
  headers: {
    "Authorization": "Bearer eyJhb...Qssw5c",
  },
});

altpayApi.get("/v1/user/me")
  .then((response) => {
    console.log(response.data);
  })
  .catch((error) => {
    console.error(handleAltPayError(error));
  });
```

#### Permissões e Operações Permitidas

Aqui estão algumas das operações permitidas para cada um dos métodos de autenticação e autorização:

**Permissões da APIKey**

* **Administrar clientes**: Permite a leitura, criação, atualização e remoção de clientes.
* **Administrar consultores**: Permite a leitura, criação, atualização e remoção de consultores.
* **Relatórios**: Permite a visualização e exportação de relatórios.
* entre outras...

**Permissões do BearerToken**

* **Acesso a Informações do Usuário**: Permite acessar e atualizar informações do perfil do usuário logado.
* **Acesso a Dados Pessoais**: Permite visualizar dados pessoais do usuário logado.
* **Administrar usuários**: Permite a administração de usuários existentes.
* entre outras....

{% hint style="warning" %}
Na documentação das rotas da API, você encontrará detalhes sobre os métodos de autenticação aceitos. Leia-os para saber exatamente o que cada método de autenticação pode fazer.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.altpaybr.com.br/documentation/api-integration/authentication.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
