Desenvolvedores · Documentação técnica
Arena Upya
Autenticação
API Key estática por empresa (tenant), com escopos por módulo — cada escopo cobre várias rotas.
Visão geral
A chave autentica a empresa no papel de gestor. Não há login de usuário na API. Envie a chave em:
Authorization: Bearer <api_key>- ou
X-API-Key: <api_key>
Obtendo a chave
- Entre no App como gestor.
- Abra API no menu.
- Informe o nome da aplicação e marque os escopos desejados (por módulo).
- Clique em Gerar chave e copie o token — ele não será exibido de novo.
Segurança: trate a chave como senha. Revogue em App → API se houver vazamento.
Escopos (por módulo)
Não há checkbox por endpoint: um escopo libera um conjunto de rotas.
*.write implica *.read no mesmo módulo.
Sem o escopo necessário → 403 FORBIDDEN.
| Escopo | Grupo | Permissão | Endpoints cobertos |
|---|---|---|---|
ranking.entries.write |
Ranking | Ranking · lançar vendas |
POST /api/v1/ranking/entries
|
ranking.read |
Ranking | Ranking · leitura |
GET /api/v1/ranking/campaigns
GET /api/v1/ranking/campaigns/{id}
GET /api/v1/ranking/teams
GET /api/v1/ranking/sellers
GET /api/v1/ranking/prizes
GET /api/v1/ranking/awards
|
ranking.write |
Ranking | Ranking · escrita (campanhas/times/vendedores) |
POST/PATCH /api/v1/ranking/campaigns
POST/PATCH/DELETE /api/v1/ranking/teams
POST/PATCH /api/v1/ranking/sellers
POST/DELETE /api/v1/ranking/prizes
POST/DELETE /api/v1/ranking/awards
|
missions.read |
Missões | Missões · leitura |
GET /api/v1/missions
GET /api/v1/missions/{id}
GET /api/v1/missions/board
|
missions.write |
Missões | Missões · escrita |
POST/PATCH/DELETE /api/v1/missions
POST /api/v1/missions/{id}/complete
|
shop.read |
Baú | Baú · leitura |
GET /api/v1/shop/tiers
GET /api/v1/shop/tiers/{id}
GET /api/v1/shop/redeems
|
shop.write |
Baú | Baú · escrita / resgates |
POST/PATCH /api/v1/shop/tiers
POST /api/v1/shop/redeems
|
links.read |
Links | Links · leitura |
GET /api/v1/links
GET /api/v1/links/{id}
|
links.write |
Links | Links · escrita |
POST/PATCH/DELETE /api/v1/links
|
meetings.read |
Reuniões | Reuniões · leitura |
GET /api/v1/meetings
GET /api/v1/meetings/{id}
|
meetings.write |
Reuniões | Reuniões · escrita |
POST /api/v1/meetings
PATCH /api/v1/meetings/{id}
|
followups.read |
Follow-ups | Follow-ups · leitura |
GET /api/v1/followups
GET /api/v1/followups/{id}
GET /api/v1/followups/settings
|
followups.write |
Follow-ups | Follow-ups · escrita |
POST /api/v1/followups
POST /api/v1/followups/{id}/done
PATCH /api/v1/followups/settings
|
withdrawals.read |
Resgates | Resgates · leitura |
GET /api/v1/withdrawals
GET /api/v1/withdrawals/{id}
|
withdrawals.write |
Resgates | Resgates · aprovar/rejeitar |
POST /api/v1/withdrawals/{id}/approve
POST /api/v1/withdrawals/{id}/reject
|
commissions.read |
Comissões | Comissões · leitura |
GET /api/v1/commissions/report
GET /api/v1/commissions/rules
GET /api/v1/commissions/settings
|
commissions.write |
Comissões | Comissões · regras |
POST/PATCH/DELETE /api/v1/commissions/rules
PATCH /api/v1/commissions/settings
|
users.read |
Usuários | Usuários · leitura |
GET /api/v1/users
GET /api/v1/users/{id}
GET /api/v1/users?external_code=
|
users.write |
Usuários | Usuários · escrita |
POST /api/v1/users
PATCH /api/v1/users/{id}
|
notices.read |
Avisos | Avisos · inbox / marcar lido |
GET /api/v1/notices
POST /api/v1/notices/{id}/read
POST /api/v1/notices/read-all
|
notices.write |
Avisos | Avisos · broadcast |
POST /api/v1/notices
|
Rate limit
Por API key, janela fixa. Precedência:
- Específico da chave — definido só em Gestão → API (TI)
- Global (Gestão → Configurações, TI) — fallback se a chave não tiver limite próprio (ex.: criada no App)
- Headers:
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset,X-RateLimit-Policy(key|global) - Estouro →
429 RATE_LIMITED+Retry-After GET /healthnão consome o limite
Anti-IDOR
O tenant é sempre o company_id da chave. IDs de outra empresa (ou inexistentes)
respondem 404 NOT_FOUND com mensagem genérica — não revelamos existência cross-tenant.
Teste smoke: chave da empresa A não deve ler/escrever IDs da empresa B.
Exemplo
curl -X GET "https://arenaupya.com.br/api/v1/users" \
-H "Authorization: Bearer arena_live_SEU_TOKEN"