Autenticação

Todas as chamadas à API requerem autenticação via API Key.

Obter uma API Key

  1. Regista-te no Portal do Cliente
  2. Após aprovação do administrador, acede ao painel
  3. Navega para API Keys e clica em Nova API Key
  4. A chave é mostrada apenas uma vez, guarda-a imediatamente
  5. O formato é feak_ seguido de 64 caracteres hexadecimais

Exemplo:

feak_8738a27cee79a85c02fa5c96fc1bf1a2d31d856c98b0bf1a344be9f013f5ea67

Usar a API Key

Inclui a chave em todos os requests à API. Escolhe um destes métodos:

Header x-api-key (recomendado)

x-api-key: feak_8738a27cee79a85c02fa5c96fc1bf1a2d31d856c98b0bf1a344be9f013f5ea67

Header Authorization: Bearer

Authorization: Bearer feak_8738a27cee79a85c02fa5c96fc1bf1a2d31d856c98b0bf1a344be9f013f5ea67

Exemplo de Chamada

curl -X POST https://connect.factflexi.com/v2/series 
  -H "Content-Type: application/json" 
  -H "x-api-key: feak_8738a27cee79a85c02fa5c96fc1bf1a2d31d856c98b0bf1a344be9f013f5ea67" 
  -d '{"nif":"5000537039","privateKey":"-----BEGIN PRIVATE KEY-----\n..."}'

Respostas de Erro de Autenticação

HTTPRespostaCausa
401{ "success": false, "error": "Nao autorizado.", "code": "UNAUTHORIZED" }API Key não foi enviada
401{ "success": false, "error": "API Key invalida.", "code": "UNAUTHORIZED" }API Key não existe ou foi revogada
403{ "success": false, "error": "Scope insuficiente.", "code": "FORBIDDEN" }A key não tem permissão para este endpoint
429{ "success": false, "error": "Demasiados pedidos. Tente novamente mais tarde.", "code": "RATE_LIMITED" }Limite de pedidos excedido

Rate Limiting

Cada API Key tem um limite de pedidos por minuto (por defeito: 60/minuto, configurável na criação da key). Pedidos sem key válida também são limitados por IP.

Quando o limite é excedido, a resposta vem com HTTP 429 e o header Retry-After (segundos a aguardar):

HTTP/1.1 429 Too Many Requests
Retry-After: 42

Boa prática: implementar backoff exponencial no teu sistema — ao receber 429, aguarda o Retry-After indicado em vez de insistir imediatamente.

Scopes (Permissões)

Cada API Key tem scopes que definem o que pode fazer:

ScopePermite
facturas:emitirEmitir documentos e solicitar séries
facturas:consultarConsultar estado de documentos
series:listarListar séries de numeração
*Acesso total a todos os endpoints

Segurança

  • A chave é mostrada apenas uma vez no momento da criação
  • Se perderes a chave, usa a opção Rodar para gerar uma nova
  • A chave anterior é revogada automaticamente ao rodar
  • As chaves são armazenadas com hash SHA-256, impossível recuperar
  • Guarda a chave num gestor de segredos (ex: variáveis de ambiente, Vault)

Boas Práticas

  1. Nunca exponhas a API Key no frontend, usa-a apenas no backend do teu sistema
  2. Usa uma key por ambiente, cria keys separadas para testes e produção
  3. Roda as chaves periodicamente, recomendado a cada 90 dias
  4. Trata erros 401, faz logout/notifica o administrador se a key for revogada
  5. Não comites a key no Git, usa .env ou gestor de segredos