tray-autorizacao
Autenticação e autorização na API da Tray. Utilize quando o desenvolvedor precisar implementar o fluxo OAuth 2.0, gerar chaves de acesso (access_token), renovar tokens expirados via refresh_token, ou
Files1
View on GitHubSKILL.mdskills/autorizacao/SKILL.md
GitHubAutorização — API Tray
Documentação oficial: https://developers.tray.com.br/#autorizacao
Fluxo OAuth 2.0 (3 etapas)
Etapa 1 — Redirecionamento
Redirecione o lojista para a tela de autorização da Tray:
https://{dominio_loja}/auth.php?response_type=code&consumer_key={consumer_key}&callback={callback_url}
Parâmetros:
response_type— semprecodeconsumer_key— chave do aplicativo (obtida ao criar o app na Tray)callback— URL de retorno do seu aplicativo
Etapa 2 — Callback
Após o lojista autorizar, a Tray redireciona para sua callback com os parâmetros:
| Parâmetro | Descrição |
|---|---|
code |
Código de autorização (uso único) |
adm_user |
Identificador do usuário administrativo |
store |
URL da loja |
api_address |
Endereço base da API para esta loja |
Etapa 3 — Gerar Chaves de Acesso
Endpoint: POST https://{api_address}/auth
Parâmetros do body (JSON):
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
consumer_key |
string | Sim | Chave do aplicativo |
consumer_secret |
string | Sim | Segredo do aplicativo |
code |
string | Sim | Código recebido no callback |
Resposta de sucesso (201):
{
"code": 201,
"message": "Created tokens",
"access_token": "xxxxxxxxxxxxx",
"refresh_token": "xxxxxxxxxxxxx",
"date_expiration_access_token": "2026-03-21 15:00:00",
"date_expiration_refresh_token": "2026-04-20 12:00:00",
"date_activated": "2026-03-21 12:00:00",
"api_host": "https://{api_address}/",
"store_id": "123456"
}
Renovar Chave de Acesso
Endpoint: GET https://{api_address}/auth?refresh_token={refresh_token}
Resposta de sucesso (200):
{
"code": 200,
"message": "Refreshed tokens",
"access_token": "novo_access_token",
"refresh_token": "novo_refresh_token",
"date_expiration_access_token": "2026-03-21 18:00:00",
"date_expiration_refresh_token": "2026-04-20 15:00:00",
"store_id": "123456"
}
Expiração de Tokens
| Token | Expiração | Ação necessária |
|---|---|---|
access_token |
3 horas | Renovar via refresh_token antes de expirar |
refresh_token |
30 dias | Requer nova autorização completa se expirar |
Autenticação nas Requisições
Todas as chamadas à API (exceto rotas públicas) exigem o access_token como query parameter:
GET https://{api_address}/products?access_token={access_token}
POST https://{api_address}/products?access_token={access_token}
Códigos de Erro de Autenticação
| Código | Situação | Ação recomendada |
|---|---|---|
1000 |
Token expirado, loja ativa | Renovar via refresh_token |
1001 |
Token expirado, loja bloqueada | Verificar status com o lojista |
1002 |
Token expirado, loja inativa | Verificar ativação da loja |
1003 |
Token expirado, loja cancelada | Loja não está mais disponível |
1099 |
Token inválido ou expirado (motivo desconhecido) | Verificar token e refazer autenticação |
Nota: o campo retornado pela API é
error_code(nãocode). Validado em teste real: token inválido retornaerror_code: 1099com HTTP 401.
Resposta de erro (401):
{
"code": 401,
"message": "Unauthorized",
"causes": ["Token expired or invalid"]
}
Limites de Requisições
| Tipo | Limite |
|---|---|
| Curto prazo | 180 requisições por minuto |
| Diário (padrão) | 10.000 requisições por dia |
| Diário (corporate) | 50.000 requisições por dia |
Resposta de limite excedido (429): A API retorna HTTP 429 quando o limite é atingido. Implemente backoff exponencial.
Boas Práticas
- Nunca hardcode tokens — use variáveis de ambiente (
TRAY_ACCESS_TOKEN,TRAY_CONSUMER_KEY,TRAY_CONSUMER_SECRET) - Renove antes de expirar — agende renovação antes das 3 horas (ex: a cada 2h30)
- Trate todos os códigos — implemente tratamento para códigos 1000, 1001, 1002, 1003 e 1099
- Backoff exponencial — para erros 429, aguarde progressivamente (1s, 2s, 4s, 8s...)
- Armazene o api_address — ele é específico por loja e retornado no callback
Como Usar no Claude Code
Exemplos de Prompt
- "implementa o fluxo OAuth completo com a API da Tray"
- "como conecto minha aplicação à Tray pela primeira vez?"
- "adiciona renovação automática do access_token antes de expirar"
- "como trato o erro 1099 da Tray na autenticação?"
O que o Claude faz
- Explica o fluxo OAuth 2.0 de 3 etapas (redirecionamento → callback → geração de tokens)
- Gera o código de autenticação na linguagem e framework do projeto
- Implementa a lógica de renovação automática via
refresh_tokenantes das 3 horas - Adiciona tratamento específico para cada código de erro (1000–1003, 1099)
- Documenta as variáveis de ambiente necessárias
O que você recebe
- Código funcional do fluxo OAuth pronto para integrar
- Helper ou middleware de renovação automática de tokens
- Handler com os 5 códigos de erro de autenticação mapeados
- Exemplo de
.envcom todas as variáveis necessárias
Pré-requisitos
consumer_keyeconsumer_secretdo seu app na Tray (obtidos no painel de parceiros)- URL de callback configurada e acessível publicamente