Autenticação
Como autenticar suas requisições à API Ecosys Auto usando API Keys.
Autenticação
A API Ecosys Auto utiliza API Keys para autenticação. Cada chave está vinculada a um time específico e tem acesso completo aos recursos desse time.
Formato da API Key
As chaves de API seguem o padrão:
| Tipo | Prefixo | Exemplo |
|---|---|---|
| Produção | ea_live_ | ea_live_8f92k3d7a9b2c4e6f8g0h1i2j3... |
| Teste | ea_test_ | ea_test_a1b2c3d4e5f6g7h8i9j0k1l2... |
Use chaves ea_test_ para desenvolvimento e ea_live_ para produção.
Importante
A API Key é exibida apenas uma vez no momento da criação. Se você perder a chave, será necessário gerar uma nova.
Obtendo suas Chaves
Acesse o painel de API Keys
Navegue até Configurações → API Keys no painel do Ecosys Auto.
Gere uma nova chave
Clique em "Gerar Nova Chave". Você pode criar múltiplas chaves para diferentes ambientes (produção, staging, desenvolvimento).
Copie e armazene com segurança
A chave completa só é exibida uma vez. Copie e armazene em um local seguro como:
- Variáveis de ambiente
- Secrets manager (AWS, GCP, Azure)
- HashiCorp Vault
Formato do Header
Inclua o header Authorization em todas as requisições:
Authorization: Bearer ea_live_sua_chave_aqui
Content-Type: application/jsonExemplos de Autenticação
curl -X GET https://api.shopcar.com.br/v1/vehicles \
-H "Authorization: Bearer ea_live_sua_chave_aqui" \
-H "Content-Type: application/json"const apiKey = process.env.ECOSYS_AUTO_API_KEY;
const response = await fetch('https://api.shopcar.com.br/v1/vehicles', {
method: 'GET',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
}
});
const data = await response.json();
// Cliente reutilizável
class EcosysAutoClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = 'https://api.shopcar.com.br/v1';
}
async request(endpoint, options = {}) {
const response = await fetch(`${this.baseUrl}${endpoint}`, {
...options,
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
...options.headers
}
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error?.message || 'API Error');
}
return response.json();
}
}
const client = new EcosysAutoClient(process.env.ECOSYS_AUTO_API_KEY);import os
import requests
api_key = os.environ.get('ECOSYS_AUTO_API_KEY')
headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.shopcar.com.br/v1/vehicles',
headers=headers
)
data = response.json()
# Classe cliente reutilizável
class EcosysAutoClient:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = 'https://api.shopcar.com.br/v1'
self.session = requests.Session()
self.session.headers.update({
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
})
def get(self, endpoint, params=None):
response = self.session.get(f'{self.base_url}{endpoint}', params=params)
response.raise_for_status()
return response.json()
def post(self, endpoint, data):
response = self.session.post(f'{self.base_url}{endpoint}', json=data)
response.raise_for_status()
return response.json()
client = EcosysAutoClient(os.environ['ECOSYS_AUTO_API_KEY'])<?php
$apiKey = getenv('ECOSYS_AUTO_API_KEY');
$baseUrl = 'https://api.shopcar.com.br/v1';
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $baseUrl . '/vehicles',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
]
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
// Classe cliente
class EcosysAutoClient {
private $apiKey;
private $baseUrl = 'https://api.shopcar.com.br/v1';
public function __construct($apiKey) {
$this->apiKey = $apiKey;
}
public function request($method, $endpoint, $data = null) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $this->baseUrl . $endpoint,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $this->apiKey,
'Content-Type: application/json'
]
]);
if ($data) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
}
$client = new EcosysAutoClient(getenv('ECOSYS_AUTO_API_KEY'));Vinculação com Time (Team)
Cada API Key está vinculada a um time específico. Isso permite:
- Controle de acesso: Cada time tem suas próprias chaves
- Isolamento de dados: Só acessa recursos do time vinculado
- Auditoria: Requisições são rastreadas por chave
Gerenciamento de Chaves
Listando Chaves
No painel de API Keys você pode ver:
- Prefixo da chave: Primeiros caracteres para identificação
- Data de criação: Quando a chave foi gerada
- Último uso: Última vez que a chave foi utilizada
- Status: Ativa ou inativa
Revogando Chaves
Para revogar uma chave comprometida:
- Acesse Configurações → API Keys
- Localize a chave pelo prefixo
- Clique em "Revogar"
- Confirme a ação
A revogação é imediata e irreversível. Todas as requisições usando esta chave passarão a retornar 401 Unauthorized.
Rotação de Chaves
Recomendamos rotacionar suas chaves periodicamente (a cada 90 dias):
- Gere uma nova chave
- Atualize suas aplicações para usar a nova chave
- Monitore que tudo está funcionando
- Revogue a chave antiga
Erros de Autenticação
| Código | Erro | Descrição | Solução |
|---|---|---|---|
401 | Missing Authorization header | Header não presente | Adicione o header Authorization |
401 | Invalid API key format | Formato incorreto | Use o formato Bearer ea_live_... |
401 | Invalid API key | Chave não encontrada | Verifique se a chave existe e está ativa |
403 | Forbidden | Sem permissão | Verifique as permissões do time |
Exemplo de Resposta de Erro
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "API Key inválida ou ausente"
}
}Boas Práticas de Segurança
Faça
- Armazene chaves em variáveis de ambiente
- Use secrets managers em produção
- Rotacione chaves periodicamente (a cada 90 dias)
- Use chaves de TESTE para desenvolvimento
- Monitore o uso das chaves
Não Faça
- Commitar chaves em repositórios Git
- Expor chaves em código front-end ou logs
- Compartilhar chaves entre desenvolvedores
- Usar chaves de teste em produção
- Deixar chaves antigas ativas sem uso
Testando a Autenticação
Verifique se sua chave está funcionando:
curl -X GET https://api.shopcar.com.br/v1/vehicles \
-H "Authorization: Bearer ea_live_sua_chave_aqui"Resposta de sucesso:
{
"success": true,
"data": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 0,
"pages": 0
}
}Resposta de erro:
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "API Key inválida"
}
}Suporte
Problemas com autenticação?
- Email: suporte@shopcar.com.br
- Documentação: Início Rápido