# Autenticação

{% hint style="info" %}
Para aceder à API, um token de acesso deverá ser usado. Um Token está associado a um Utilizador autenticado numa Localização, num Terminal e numa Caixa, na sua empresa. Tudo o que for feito usando um Token, terá a autoria atribuída ao utilizador associado e reger-se-á pelas suas permissões na aplicação.
{% endhint %}

## A criação de Tokens pode ser feita de duas maneiras:

* BackOffice: Poderá criar Tokens acedendo ao BackOffice, em Empresa  Tokens de Acesso à API, onde poderá atribuir o Token a um Utilizador, Localização e Terminal.
* Usando a própria API: Pode obter um Token fazendo um pedido ao end-point `/auth/login`, incluindo as suas credenciais de autenticação, obtendo na resposta o Token que poderá utilizar nos pedidos posteriores.

## Login

## Gera um Token de Acesso para as credenciais fornecidas:

<mark style="color:green;">`POST`</mark> `https://api.cloudinvoice.net/auth/login/`

#### Request Body

| Name                                       | Type   | Description |
| ------------------------------------------ | ------ | ----------- |
| username<mark style="color:red;">\*</mark> | email  |             |
| password<mark style="color:red;">\*</mark> | string |             |
| company\_code                              | string |             |
| till\_code                                 | string |             |

{% tabs %}
{% tab title="Exemplo de Pedido" %}

```shell
curl -X POST https://api.cloudinvoice.net/auth/login/
    -d '{
        "username": "user@sample.com",
        "password": "pFS2VwMk"
    }'
```

{% endtab %}

{% tab title="Exemplo de Resposta" %}

```json
{
    "key": "329c2d5cadd96ccce7b0b0f2653e8d08f61ddd52"
}

```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Para além das credenciais username/password, pode também incluir a Empresa **`company_code`** e a Caixa **`till_code`** a que pretende associar o token de acesso.
{% endhint %}

## Pedidos com Autenticação

Para efectuar pedidos com autenticação, deverá usar um dos seguintes métodos:

* Incluir o Header HTTP: `Authorization: Token <token>`

```shell
curl https://api.cloudinvoice.net/customers/
    -H "Content-Type: application/json"
    -H "Authorization: Token 329c2d5cadd96ccce7b0b0f2653e8d08f61ddd52"
```

* Incluir o Query Param: `api_token=<token>`

```shell
curl https://api.cloudinvoice.net/customers/?api_token=329c2d5cadd96ccce7b0b0f2653e8d08f61ddd52
    -H "Content-Type: application/json"
```

{% hint style="info" %}
Em pedidos **`POST`** deve incluir sempre o&#x20;

Header: **`Content-Type: application/json;`**
{% 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://apidocs.cloudinvoice.net/introducao/autenticacao.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.
