API REST v1

Documentation de l'API

Catalogue des endpoints REST disponibles. Authentification via Bearer JWT dans le header Authorization.

Base URL: https://crm.xpevolution.fr/api/v1

Auth: Authorization: Bearer <jwt-access-token> (obter em /auth/login)

Content-Type: application/json em todos os POSTs/PATCHs

🔐 Auth

POST /auth/register — Cria tenant + admin Public (sans auth)
POST /auth/login — Login com slug + email + senha Public (sans auth)
POST /auth/refresh — Renova access token Public (sans auth)
POST /auth/logout — Logout (auditado) Auth requise
GET /me — Usuário autenticado atual Auth requise

👥 Users

GET /users — Lista paginada (filtros: q, role, is_active, sort, order, page, per_page) Auth requise
POST /users — Criar usuário Rôle minimal: tenant_admin
GET /users/{id:uuid} — Detalhe Auth requise
PATCH /users/{id:uuid} — Atualizar (admin: tudo / self: campos limitados) Auth requise
DELETE /users/{id:uuid} — Soft delete Rôle minimal: tenant_admin
POST /users/{id:uuid}/restore — Restaurar Rôle minimal: tenant_admin
POST /users/{id:uuid}/password — Trocar senha (self exige current_password) Auth requise

🏛️ Accounts (empresas)

GET /accounts — Lista (filtros: q, lifecycle_stage, tier, industry, owner_id, country) Auth requise
POST /accounts — Criar Rôle minimal: sales+
GET /accounts/{id:uuid} — Detalhe Auth requise
PATCH /accounts/{id:uuid} — Atualizar Rôle minimal: sales+
DELETE /accounts/{id:uuid} — Soft delete Rôle minimal: manager+
POST /accounts/{id:uuid}/restore — Restaurar Rôle minimal: manager+

👤 Contacts (pessoas)

GET /contacts — Lista (filtros: q, lifecycle_stage, lead_status, temperature, account_id, owner_id, do_not_contact) Auth requise
POST /contacts — Criar (full_name e dedupe_hash auto-gerados) Rôle minimal: sales+
GET /contacts/{id:uuid} — Detalhe Auth requise
PATCH /contacts/{id:uuid} — Atualizar Rôle minimal: sales+
DELETE /contacts/{id:uuid} — Soft delete Rôle minimal: manager+
POST /contacts/{id:uuid}/restore — Restaurar Rôle minimal: manager+

🔄 Pipelines & Stages

GET /pipelines — Listar pipelines Auth requise
POST /pipelines — Criar (?seed=true cria 6 stages padrão) Rôle minimal: manager+
GET /pipelines/{id:uuid} — Detalhe c/ stages Auth requise
PATCH /pipelines/{id:uuid} — Atualizar Rôle minimal: manager+
DELETE /pipelines/{id:uuid} — Soft delete Rôle minimal: tenant_admin
POST /pipelines/{id:uuid}/restore — Restaurar Rôle minimal: tenant_admin
GET /pipelines/{id:uuid}/stages — Listar stages Auth requise
POST /pipelines/{id:uuid}/stages — Criar stage Rôle minimal: manager+
PATCH /pipelines/{id:uuid}/stages/{stageId:uuid} — Atualizar stage Rôle minimal: manager+
DELETE /pipelines/{id:uuid}/stages/{stageId:uuid} — Deletar stage (bloqueia se tem opps) Rôle minimal: manager+

💼 Opportunities (deals)

GET /opportunities — Lista (15+ filtros: status, priority, owner, account, pipeline, stage, faixa de valor, datas) Auth requise
POST /opportunities — Criar (FK validation completa) Rôle minimal: sales+
GET /opportunities/{id:uuid} — Detalhe Auth requise
PATCH /opportunities/{id:uuid} — Atualizar (stage_id BANIDO — usar /move) Rôle minimal: sales+
DELETE /opportunities/{id:uuid} — Soft delete Rôle minimal: manager+
POST /opportunities/{id:uuid}/restore — Restaurar Rôle minimal: manager+
POST /opportunities/{id:uuid}/move — Mover de stage (auto-detecta won/lost, registra histórico) Rôle minimal: sales+
GET /opportunities/{id:uuid}/history — Timeline de movimentações Auth requise

📅 Activities

GET /activities — Lista (filtros: type, status, owner_id=me, opportunity_id, overdue, due_from/to) Auth requise
POST /activities — Criar (link polimórfico obrigatório) Rôle minimal: sales+
GET /activities/{id:uuid} — Detalhe Auth requise
PATCH /activities/{id:uuid} — Atualizar Rôle minimal: sales+
DELETE /activities/{id:uuid} — Soft delete Rôle minimal: sales+
POST /activities/{id:uuid}/restore — Restaurar Rôle minimal: manager+
POST /activities/{id:uuid}/complete — Atalho: marcar como concluída Rôle minimal: sales+

📊 Dashboard

GET /dashboard/summary — 12 KPIs (contatos, accounts, pipeline aberto, won_this_month, conversion_rate, avg_cycle, activities) Auth requise
GET /dashboard/pipeline — Kanban-ready (?pipeline_id=...). Stages com counts e values Auth requise
GET /dashboard/activity-feed — Timeline (?limit=20). Joina nomes de owner, contact, account, opp Auth requise

Health & Diagnóstico

GET /api/v1/ping — Liveness Public (sans auth)
GET /api/v1/health — Readiness (DB + Redis + Meili) Public (sans auth)