Autenticação por Token
Como gerar, usar e gerenciar tokens de API para a Office API.
Visão Geral
A Office API utiliza tokens de API no formato sk_live_... para autenticação. Diferente da Storefront API (que usa cookies httpOnly), os tokens são enviados explicitamente no header Authorization.
Gerando um Token
Tokens são gerados pelo painel administrativo (Office) da sua loja. Para gerar via GraphQL no painel admin:
mutation {
generateApiToken(input: {
hostname: "minha-loja"
name: "ERP Produção"
permissions: ["products:read", "products:write"]
}) {
rawToken
tokenPrefix
name
}
} Importante: O token completo (
rawToken) é exibido apenas uma vez, no momento da criação. Armazene-o imediatamente em um local seguro (variável de ambiente, vault, etc). Após isso, apenas o prefixo será visível.
Usando o Token
Inclua o token no header Authorization de todas as requisições:
fetch('https://office.acessocomercial.com/api/office/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
},
body: JSON.stringify({ query, variables })
}) Permissões
Cada token possui um conjunto de permissões que controla quais operações são permitidas:
| Permissão | Descrição | Operações |
|---|---|---|
products:read | Leitura de produtos | product, products |
products:write | Escrita de produtos | insertProduct, updateProduct, deleteProduct, updateAvailableQuantity |
Revogando um Token
Para revogar um token comprometido ou não utilizado:
mutation {
revokeApiToken(input: {
tokenId: "QXBpVG9rZW46YWJjMTIz..."
hostname: "minha-loja"
}) {
success
}
} Listando Tokens
Para ver todos os tokens ativos de uma loja (mostra apenas o prefixo, não o token completo):
query {
apiTokens(hostname: "minha-loja") {
id
name
maskedToken
permissions
lastUsedAt
createdAt
}
} Segurança
- Tokens são armazenados como hash SHA-256 — não é possível recuperar o token original
- Cada token é associado a uma única loja (hostname)
- Use variáveis de ambiente para armazenar tokens — nunca commit no código
- Crie tokens com permissões mínimas necessárias (princípio do menor privilégio)
- Rotacione tokens regularmente e revogue tokens não utilizados