Estamos buscando um desenvolvedor para criar uma api rest autenticada por token para nossa plataforma saas. O objetivo é permitir a integração com ferramentas como Claude, scripts e automações, fornecendo acesso seguro e controlado aos dados.
Nossa stack atual em produção inclui
Next.js 16 (App Router), Prisma 6.19, PostgreSQL e NextAuth 4.24. É Crucial que não sejam introduzidas novas dependências, utilizando as que já existem no projeto (por exemplo, bcryptjs já está disponível).
O projeto é de natureza read-only para a API de tokens e tem uma estimativa de 8-10 horas de trabalho.
As tarefas a serem realizadas incluem:
1. Criação de nova tabela PersonalAccessToken:
* Utilizar Prisma para o modelo e realizar a migration.
* Campos necessários: id, userId (FK User), name, tokenHash (bcrypt), prefix, scopes (string[]), lastUsedAt, expiresAt, revokedAt, createdAt.
* Importante: Não modificar a tabela AuthToken existente, pois ela é utilizada para fluxos de login e não deve ser afetada.
2. Implementação de Middleware de Autenticação (src/lib/auth/
pat-auth.ts):
* O middleware deve ler o cabeçalho Authorization: Bearer pat_xxx.
* Validar a autenticidade do token (verificar se não está expirado ou revogado).
* Checar os scopes associados ao token para autorização.
* Atualizar o campo lastUsedAt a cada uso do token.
3. Desenvolvimento de Endpoints da API:
* Endpoints para Gerenciamento de Token (acessíveis via login de sessão normal):
* POST /api/me/tokens: Cria um novo token e o exibe uma única vez.
* GET /api/me/tokens: Lista todos os tokens do usuário.
* DELETE /api/me/tokens/:id: Revoga um token específico (soft delete, não exclusão física).
* Endpoints para Leitura de Dados (protegidos por Bearer token):
* GET /api/me: Retorna perfil do usuário, créditos e informações de assinatura.
* GET /api/me/credits-history: Histórico de créditos.
* GET /api/me/generations: Dados de gerações.
* GET /api/me/tasks e /api/tasks/:id: Tarefas (apenas as do proprietário do token).
* GET /api/me/subscriptions: Assinaturas do usuário.
* GET /api/me/orders: Pedidos (sem o campo metadata sensível).
* Cada endpoint de leitura deve ser protegido por um scope específico (ex: read:profile, read:credits).
4. Criação de Tela /dashboard/api-tokens:
* Interface para listar, criar e revogar tokens de API.
* Na criação, permitir definir nome, scopes e validade do token.
* Exibir o token gerado uma única vez, com um aviso claro para o usuário copiá-lo imediatamente, pois não será visível novamente.
5. Registro de Auditoria:
* Registrar eventos de criação (
pat.create) e revogação (
pat.revoke) de tokens na tabela AuditLog já existente.
Prazo de Entrega: Não estabelecido