CULTIVA IA — Revisor de Diseno API REST

FlowCRM API v2 — Informe de Auditoria

Cliente: FlowCRM SaaS  |  Spec comparada: v1.0.0 → v2.0.0  |  Fecha: 2026-06-12
7 Breaking Changes 17 Warnings de Lint Scorecard: F (44.66) 8 endpoints analizados 3 herramientas ejecutadas
⚠️

NO APTO PARA PUBLICACION — Requiere correccion antes del merge

La v2 rompe compatibilidad con 7 cambios criticos (endpoints eliminados, URL de servidor cambiada, schema renombrado) y su scorecard global es F (44.66/100). El equipo debe corregir los breaking changes, estandarizar la convencion de nombres y completar la documentacion antes de publicar.

Nota Global (Scorecard)
F
44.66 / 100 puntos
Breaking Changes
7
5 criticos · 2 altos
Issues de Lint
26
1 error · 17 warn · 8 info
Lint Score (v2)
91.4
Convencion REST — Bueno
Scorecard de Calidad por Dimension
Consistencia
D
66.0 · peso 30%
Documentacion
F
37.9 · peso 20%
Seguridad
F
40.0 · peso 20%
Usabilidad
F
47.8 · peso 15%
Performance
F
14.0 · peso 15%
Breaking Changes detectados (v1 → v2)
5 criticos
2 altos
1 potencialmente breaking
9 mejoras
Breaking 🔴 Critico
GET /contacts/{contactId} eliminado
Endpoint de lectura de contacto eliminado. Los clientes recibiran 404.
→ Migrar a GET /contacts/{contact_id}
Breaking 🔴 Critico
PUT /contacts/{contactId} eliminado
Endpoint de actualizacion completa eliminado sin reemplazo directo PUT.
→ Usar PATCH /contacts/{contact_id} (solo actualiza campos parciales)
Breaking 🔴 Critico
DELETE /contacts/{contactId} eliminado
No hay endpoint de borrado de contactos en v2.
→ Anadir DELETE /contacts/{contactId} antes del release
Breaking 🔴 Critico
GET /deals/{dealId} eliminado
Lectura individual de deal eliminada. Sin alternativa en v2.
→ Restaurar GET /deals/{dealId} o crear equivalente
Breaking 🔴 Critico
GET /contacts eliminado del metodo HTTP
El listado de contactos se movio a /getContacts (URL con verbo — anti-patron).
→ Renombrar /getContacts a /contacts y restaurar GET
Breaking 🟠 Alto
/servers — URL base cambiada
URL eliminada: https://api.flowcrm.es/v1. Clientes configurados a v1 fallan.
→ Mantener soporte v1 o comunicar migracion con tiempo
Breaking 🟠 Alto
/components/schemas/ContactInput eliminado
Schema renombrado a contact_input (snake_case, no PascalCase). Las referencias fallan.
→ Renombrar a ContactInput (PascalCase) y mantener alias
Potencialmente Breaking 🟡 Medio
/components/securitySchemes cambiado
Esquema de autenticacion bearerAuth eliminado en v2. Sin definicion de seguridad.
→ Restaurar securitySchemes y aplicar en todos los endpoints
Hallazgos del Linter — Convencion REST (OpenAPI v2)
Severidad Categoria Problema detectado Ruta / Contexto
ERROR parameters
Parametro de ruta contact_id no tiene required: true
💡 Los path parameters deben ser siempre requeridos
GET /contacts/{contact_id}
WARN naming
Segmento de URL con verbo: getContacts (anti-patron REST)
💡 Usar sustantivos: /contacts con metodo GET
GET /getContacts
WARN naming
Segmento de URL con verbo: createNote (anti-patron REST)
💡 Preferir /contacts/{id}/notes con POST
POST /contacts/{contactId}/createNote
WARN naming
Segmento de URL con verbo: updateStage (anti-patron REST)
💡 Preferir PATCH /deals/{id} con body {stage: ...}
POST /deals/{dealId}/updateStage
WARN naming
Schema contact_input deberia usar PascalCase
💡 Renombrar a ContactInput
/components/schemas/contact_input
WARN naming
Query params page_number, page_size usan snake_case
💡 Usar camelCase: pageNumber, pageSize
GET /getContacts
WARN naming
Path parameter contact_id usa snake_case en lugar de camelCase
💡 Usar contactId (consistente con el resto de la API)
/contacts/{contact_id}
WARN responses
4 endpoints sin respuestas de error definidas (4xx/5xx)
💡 Anadir 400, 401, 404, 500 como minimo en cada operacion
GET /getContacts, PATCH /contacts, GET /deals, POST /deals, POST /updateStage
WARN documentation
Faltan campos description y contact en info
💡 Documentar la API con descripcion y contacto del equipo
/info
Plan de Accion Prioritario (Top 5)