Skip to content

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

json
{
  "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

json
{
  "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

json
{
  "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

json
{
  "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

json
{
  "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

json
{
  "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

json
{
  "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

Feito por CloudFace