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

# Autenticação

## **Introdução**

O Procfy utiliza o padrão de autenticação baseado em token. Para autenticar uma requisição, você deve enviar o token de acesso no cabeçalho da requisição.

Todos os tokens criados no painel api tokens são compostos de 64 caracteres.

O envio do token é composto por duas partes: o tipo de autenticação e o token em si. O tipo de autenticação deve ser `Bearer` e o token logo em seguida, conforme o exemplo ao lado direito.

> Exemplo de requisição com token de acesso

<CodeGroup>
  ```shellscript shell theme={null}

  curl -X GET \
    -H "Authorization: Bearer seu-token-aqui" \
    https://api.procfy.io/api/v1/exemplo
  ```

  ```ruby ruby theme={null}
  require 'httparty'

  TOKEN = "seu_token_de_acesso"
  url = "https://api.exemplo.com/recurso"

  response = HTTParty.get(url, headers: { "Authorization" => "Bearer #{TOKEN}" })

  puts response.body
  ```

  ```python python theme={null}
  import requests

  url = "https://api.procfy.io/api/v1/exemplo"
  headers = {
      "Authorization": "Bearer seu-token-aqui"
  }

  response = requests.get(url, headers=headers)

  print(response.text)
  ```

  ```javascript javascript theme={null}
  const axios = require('axios');

  const TOKEN = 'seu_token_de_acesso';
  const url = 'https://api.exemplo.com/recurso';

  axios.get(url, {
      headers: {
          'Authorization': `Bearer ${TOKEN}`
      }
  })
  ```
</CodeGroup>

***

## **Erros**

A API do Procfy utiliza diferentes códigos de status HTTP para indicar o sucesso ou falha de uma requisição. O código de status é retornado no cabeçalho da resposta, e o corpo da resposta contém um JSON com mais detalhes sobre o erro.

| Código do erro | Significado                                                   |
| :------------- | :------------------------------------------------------------ |
| 400            | Bad Request -- Suas requisições estão mal formatadas          |
| 401            | Unauthorized -- Seu token de acesso é inválido                |
| 403            | Forbidden -- Você não tem permissão para acessar este recurso |

> Ao enviar uma requisição com um token de acesso em branco, a API retornará o seguinte JSON com o status HTTP 400:

```json theme={null}
{
  "error": "Token not found",
  "description": "Token not found, please check your request"
}
```

> Ao enviar uma requisição com um token de acesso inválido, a API retornará o seguinte JSON com o status HTTP 401:

```json theme={null}
{
  "error": "Invalid token",
  "description": "Invalid token, certify that you are using the correct token"
}
```

> Ao enviar uma requisição com um token de acesso já expirado, a API retornará o seguinte JSON com o status HTTP 403:

```json theme={null}
{
  "error": "Token expired",
  "description": "Token expired, please create a new token"
}
```
