Visão geral
A API affiliate usa chaves no headerx-api-key. Cada chave de afiliado possui escopos que limitam quais endpoints podem ser chamados.
Formato da chave
- Legado (v1): string de 32 caracteres — continua válida durante a transição
- Novo (v2):
lmd_{env}_{prefix}_{secret}— lookup por prefix + hash; o segredo não é armazenado em texto plano
Escopos affiliate
Todos os escopos declarados em uma rota são obrigatórios (AND). Sem o escopo necessário, a API retorna
403 Forbidden.
Partner scopes
Keys of typepartner authenticate /api/partner/* (catalog, no affiliate context).
New partner keys include all three scopes. Older keys with only
organizations:read still work on that route; brands and campaigns require the matching scope.
An affiliate key on a partner route (and the reverse) returns 401.
Rate limiting
Limite global: 60 requests / 60 seconds por API key e IP do cliente.
Ao exceder o limite, a API retorna
429 com código TOO_MANY_REQUESTS e headers Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining (0) e X-RateLimit-Reset.
Requisições com campos desconhecidos no body (ex.: POST /affiliate/shortener/url) retornam 400 por validação estrita (whitelist).
Erros de autenticação
Provisionamento
Chaves affiliate são criadas via GraphQL no serviço open-api (autenticação de dashboard com JWT emx-api-token):
A resposta de criação/rotação inclui o segredo completo apenas uma vez no campo
apiKey. Guarde-o com segurança.