# Como autenticar nas APIs do Zeev

## Visão geral

Para utilizar as API's do Zeev, **será preciso  um token de autenticação**. O Zeev utiliza o método de autenticação conhecido como **Bearer Token**.

A autenticação de API usando Bearer Token é um método de segurança que garante que apenas usuários e sistemas autorizados possam acessar uma API.&#x20;

Um "token" é como um cartão de acesso digital que o usuário recebe após uma verificação inicial. Sempre que ele fizer uma requisição à API, esse token é enviado como uma "prova" de que ele está autorizado a usar os serviços da API. É importante porque ajuda a proteger os dados sensíveis e impede que usuários não autorizados acessem ou modifiquem informações.

## Permissões vinculadas ao token

Um token representa uma pessoa do sistema.&#x20;

Por isso, as permissões de acesso em operações de API seguirão as mesmas regras de permissão de acesso a essa pessoa na interface do sistema e poderão ser impactadas, por exemplo, por seus [grupos de manutenção](/zeev/apis/all/access/groups.md). Pessoas sem privilégios administradores não conseguirão realizar determinadas operações ou poderão não ter acesso a todos os dados em consultas.

Por exemplo:

* Se a pessoa não possui permissão de criar um novo usuário, seu token não permitirá realizar essa operação por API;
* Se a pessoa não possui permissão de abrir uma determinada solicitação, seu token não permitirá essa operação por API;
* Se a pessoa não é responsável atual por uma determinada tarefa, seu token não permitirá essa operação por API;

## Tipos de tokens&#x20;

Existem dois tipos de tokens:

* **Token (*****temporário*****):** pode ser usado até 10 minutos após sua emissão;
* **Token permanente:** não tem data fixa de expiração;

## Como obter o token de autenticação

O token é a representação de uma pessoa ativa e não bloqueada do sistema.&#x20;

O token pode ser encontrado dentro do módulo de pessoas, dentro do cadastro de uma determinada pessoa, ao final da tela. Somente pessoas [superadministradoras ](/zeev/usuarios-e-permissoes/gerenciar-usuarios/o-que-sao-superadministradores-e-o-que-podem-fazer.md)podem ver esse box.&#x20;

![](/files/-MDoYxYEQM0t5DhZM9l1)

Evite gerar e armazenar tokens de usuários [superadministradores](/zeev/usuarios-e-permissoes/gerenciar-usuarios/o-que-sao-superadministradores-e-o-que-podem-fazer.md). É provável que nesse caso você esteja gerando um token com muitas mais permissões do que é necessário.&#x20;

{% hint style="danger" %}
É altamente recomendável que seja criado um usuário específico no sistema somente para realizar integrações.&#x20;

Esse usuário deve ter uma senha extremamente segura e possuir permissões somente nas operações que efetivamente sejam necessárias junto às APIs.

Utilizar tokens de usuários comuns pode acarretar os seguintes problemas:

* A pessoa pode ser desativada do sistema por outros motivos e todas as integrações pararem de funcionar;
* A pessoa ter permissões demais, desnecessárias para as integrações, e isso acarretar um problema de segurança;
  {% endhint %}

{% hint style="info" %}
Para saber como obter um token de autenticação via API consulte [Tokens / Segurança](/zeev/apis/all/tokens.md)
{% endhint %}

## Como enviar o token para chamadas de API

Em todas as chamadas de API do Zeev, você precisará enviar o token de autenticação. O token é enviado através do cabeçalho / *header* da solicitação, com a chave *Authorization* e prefixo *Bearer:*

```javascript
Authorization: Bearer token-de-autenticação
```

Veja, abaixo, exemplos de como enviar o token em Javascript, C# e Python. A expressão TOKEN-DE-AUTENTICACAO deve ser trocada pelo respectivo token.&#x20;

{% tabs %}
{% tab title="Node.js" %}

```javascript
//javascript
async function fetchData() {
  const url = 'https://api.exemplo.com/dados';
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer TOKEN-DE-AUTENTICACAO'
  };

  try {
    const response = await fetch(url, { headers: headers });
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error:', error);
  }
}

fetchData();
```

{% endtab %}

{% tab title="C#" %}

```csharp
static async Task Main()
{
    using (HttpClient client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", "Bearer TOKEN-DE-AUTENTICACAO");

        try
        {
            HttpResponseMessage response = await client.GetAsync("https://api.exemplo.com/dados");
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseBody);
        }
        catch (HttpRequestException e)
        {
            Console.WriteLine("\nException Caught!");
            Console.WriteLine("Message :{0} ", e.Message);
        }
    }
}// Some code
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

url = "https://api.exemplo.com/dados"
headers = {
    "Authorization": "Bearer TOKEN-DE-AUTENTICACAO"
}

response = requests.get(url, headers=headers)
print(response.status_code)
print(response.text)
```

{% endtab %}
{% endtabs %}

{% hint style="danger" %}
Atenção: jamais faça integrações com API's do Zeev com Javascript executando dentro de um navegador de internet. Utilize Javascript somente executando em um servidor (exemplo: Node.js). Qualquer pessoa pode obter o código-fonte de sua página e obter o token de autenticação. De posse do token, poderá acessar o sistema.&#x20;
{% endhint %}

## Como configurar minha aplicação terceira para usar os tokens

Se você tem um sistema externo e deseja se conectar nas APIs do Zeev, siga os passos abaixo:

1. Obtenha o token permanente de um usuário;
2. Salve ele no código em um arquivo de configuração do seu sistema, de maneira segura.

{% hint style="danger" %}
Salve e guarde o token como uma senha especial. Salve ele em arquivos de configuração seguros, que não possam ser acessados por usuários finais. Salve ele em locais em que você você, futuramente, se necessário, facilmente trocá-lo.
{% endhint %}

## Melhores práticas e passo a passo de como configurar

Nos vídeos abaixo explicitamos melhor prática de como configurar permissões, usuários e tokens.

{% embed url="<https://www.youtube.com/watch?v=yO-dYN8KgSs>" %}

{% embed url="<https://www.youtube.com/watch?v=nwuDHDeaPfM>" %}

{% embed url="<https://www.youtube.com/watch?v=vVyYtjHNWUc>" %}


---

# 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://kb.stoque.com.br/zeev/apis/como-utilizar-as-apis-do-zeev/como-gerar-tokens-para-autenticar-nas-apis.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.
