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:

TipoPrefixoExemplo
Produçãoea_live_ea_live_8f92k3d7a9b2c4e6f8g0h1i2j3...
Testeea_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/json

Exemplos 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:

  1. Acesse Configurações → API Keys
  2. Localize a chave pelo prefixo
  3. Clique em "Revogar"
  4. 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):

  1. Gere uma nova chave
  2. Atualize suas aplicações para usar a nova chave
  3. Monitore que tudo está funcionando
  4. Revogue a chave antiga

Erros de Autenticação

CódigoErroDescriçãoSolução
401Missing Authorization headerHeader não presenteAdicione o header Authorization
401Invalid API key formatFormato incorretoUse o formato Bearer ea_live_...
401Invalid API keyChave não encontradaVerifique se a chave existe e está ativa
403ForbiddenSem permissãoVerifique 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?

On this page