API — Admin
Endpoints de administração da plataforma. Acessíveis apenas por usuários com papel superadmin.
Superadmin apenas
Estes endpoints não são destinados a usuários finais. O acesso requer um token de um usuário com papel superadmin criado diretamente no banco ou via variável de ambiente SUPERADMIN_EMAIL.
Base path: /api/v1/admin
GET /admin/stats
Retorna estatísticas globais da plataforma.
Response 200
{
"organizations": {
"total": 42,
"by_plan": {
"free": 35,
"professional": 6,
"enterprise": 1
}
},
"users": {
"total": 187,
"active_last_30d": 94
},
"workspaces": { "total": 78 },
"projects": { "total": 234 },
"issues": {
"total": 8921,
"open": 4302,
"done": 4619
},
"storage_used_bytes": 1234567890
}GET /admin/users
Lista todos os usuários da plataforma.
Query params: page, per_page, q (busca por nome/email)
Response 200
{
"users": [
{
"id": "01J8X...",
"name": "Gabriel Mowses",
"email": "gabriel@exemplo.com",
"superadmin": false,
"created_at": "2026-01-01T00:00:00Z",
"organization_count": 2
}
],
"total": 187
}PATCH /admin/users/:id
Atualiza um usuário (ex: promover a superadmin, banir conta).
Body
{
"superadmin": true,
"banned": false
}Response 200 — usuário atualizado
GET /admin/organizations
Lista todas as organizações.
Query params: page, per_page, plan, q
Response 200
{
"organizations": [
{
"id": "01J8X...",
"name": "Acme Corp",
"slug": "acme-corp",
"plan": "professional",
"member_count": 8,
"issue_count": 423,
"created_at": "2026-01-01T00:00:00Z"
}
],
"total": 42
}PATCH /admin/organizations/:id
Atualiza uma organização (ex: forçar downgrade de plano, suspender).
Body
{
"plan": "free",
"suspended": false
}Response 200 — organização atualizada
GET /admin/workspaces
Lista todos os workspaces.
Query params: page, per_page, organization_id
Response 200 — lista paginada de workspaces
PATCH /admin/workspaces/:id
Atualiza um workspace.
Response 200 — workspace atualizado
GET /admin/plans
Lista os planos disponíveis na plataforma.
Response 200
{
"plans": [
{
"id": "free",
"name": "Gratuito",
"price_brl": 0,
"limits": {
"members": 5,
"projects": 3,
"issues": 100,
"storage_bytes": 524288000
},
"features": {
"semantic_search": false,
"custom_fields": false,
"sso": false,
"audit_log": false
}
}
]
}POST /admin/plans
Cria um novo plano.
Body
{
"id": "startup",
"name": "Startup",
"price_brl": 2990,
"limits": {
"members": 10,
"projects": 10,
"issues": 5000,
"storage_bytes": 2147483648
},
"features": {
"semantic_search": true,
"custom_fields": false,
"sso": false,
"audit_log": false
}
}Response 201 — plano criado
PATCH /admin/plans/:id
Atualiza um plano existente. Não afeta retroativamente organizações já no plano.
Response 200 — plano atualizado