# Autenticação

A API utiliza JWT (JSON Web Token) para autenticação, garantindo que apenas usuários autorizados possam acessar os dados sensíveis. O processo de autenticação é iniciado pelo endpoint de login, onde os usuários fornecem suas credenciais (nome de usuário e senha) para receber um `access_token` e um `id_token`. Esses tokens são usados para autenticar subsequentes requisições à API.

### Endpoint

<mark style="color:green;">`POST`</mark> [<mark style="color:green;">`https://cotacoes-stage.bemfacil.com.br/login`</mark>](https://cotacoes-stage.bemfacil.com.br/login)

### Headers

| Name         | Type   | Description               |
| ------------ | ------ | ------------------------- |
| Content-Type | string | default: application/json |

### Request body

| Name     | Type   | Description                                 |
| -------- | ------ | ------------------------------------------- |
| username | string | Documento do EC que irá realizar a consulta |
| password | string | Senha utilizada para a autenticação         |

### Response body

| Name          | Type   | Description                                                 |
| ------------- | ------ | ----------------------------------------------------------- |
| access\_token | string | Chave de acesso, utilizada no header das demais requisições |
| id\_token     | string | Chave contendo as informações do EC que está logado na API  |

### Exemplos

{% tabs %}
{% tab title="JavaScript" %}

```javascript
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");

const raw = JSON.stringify({
  "username": "**********",
  "password": "**********"
});

const requestOptions = {
  method: "POST",
  headers: myHeaders,
  body: raw,
  redirect: "follow"
};

fetch("https://cotacoes-stage.bemfacil.com.br/login", requestOptions)
  .then((response) => response.text())
  .then((result) => console.log(result))
  .catch((error) => console.error(error));
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = "https://cotacoes-stage.bemfacil.com.br/login"

payload = json.dumps({
  "username": "************",
  "password": "************"
})
headers = {
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require "uri"
require "json"
require "net/http"

url = URI("https://cotacoes-stage.bemfacil.com.br/login")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "username": "*************",
  "password": "*************"
})

response = https.request(request)
puts response.read_body

```

{% endtab %}
{% endtabs %}
