Pular para o conteúdo principal

Autenticação

A API usa JWT Bearer tokens. Toda requisição (exceto GET /health e o endpoint de webhook) deve incluir o header Authorization.

O administrador da plataforma fornece três credenciais necessárias:

CredencialVariávelDescrição
URL de autenticaçãoAUTH_URLEndpoint base do serviço de auth
Chave públicaAUTH_PUBLIC_KEYChave de acesso público (não secreta)
Email + senhaCredenciais do seu usuário

Visão geral do fluxo


Obtendo o token

Faça um POST ao endpoint de autenticação com email e senha:

POST {AUTH_URL}/auth/v1/token?grant_type=password
import requests

AUTH_URL = "<AUTH_URL>"
AUTH_PUBLIC_KEY = "<AUTH_PUBLIC_KEY>"

def get_token(email: str, password: str) -> tuple[str, str]:
resp = requests.post(
f"{AUTH_URL}/auth/v1/token?grant_type=password",
headers={
"apikey": AUTH_PUBLIC_KEY,
"Content-Type": "application/json",
},
json={"email": email, "password": password},
)
resp.raise_for_status()
data = resp.json()
return data["access_token"], data["refresh_token"]

access_token, refresh_token = get_token("usuario@empresa.com", "senha123")

Usando o token nas requisições

Inclua o token no header Authorization em todas as requisições autenticadas:

Authorization: Bearer <access_token>
BASE_URL = "https://api-fastdelivery.obotzap.com"

headers = {"Authorization": f"Bearer {access_token}"}
resp = requests.get(f"{BASE_URL}/api/v1/deliveries", headers=headers)

Expiração e refresh

O token expira em 1 hora. Use o refresh_token para obter um novo access_token sem reautenticar:

POST {AUTH_URL}/auth/v1/token?grant_type=refresh_token
def refresh_access_token(refresh_token: str) -> str:
resp = requests.post(
f"{AUTH_URL}/auth/v1/token?grant_type=refresh_token",
headers={
"apikey": AUTH_PUBLIC_KEY,
"Content-Type": "application/json",
},
json={"refresh_token": refresh_token},
)
resp.raise_for_status()
return resp.json()["access_token"]
Boas práticas

Armazene o refresh_token de forma segura (variável de ambiente ou secret manager). Nunca exponha tokens em logs ou código fonte.


Roles

O token carrega um campo de role que define o que o usuário pode acessar dentro da sua empresa (tenant):

RoleAcesso
company_ownerAcesso total à empresa: entregas, motoristas, preços, assinatura/billing
company_adminGestão operacional: entregas, motoristas, preços — sem acesso a billing
driverAceitar/iniciar/completar entregas vinculadas, acessar própria carteira, atualizar posição GPS
Acesso negado

Chamar um endpoint com role insuficiente retorna 403 Forbidden. Veja Erros & Status para detalhes.


Endpoints públicos (sem autenticação)

EndpointDescrição
GET /healthHealth check
POST /api/v1/companies/registerCadastro público de empresa
POST /api/v1/webhooks/asaas/{company_id}Receber eventos de pagamento/saque da sua empresa (usa assinatura HMAC-SHA256 no header asaas-signature)