Skip to main content
Las rutas son relativas a /m2m/v1. Envía Authorization: Bearer <clave>. La clave determina el tenant. La API usa crm_sales_opportunities (tarjetas), crm_sales_pipelines (configuración publicada) y crm_sales_audit (actividad). Los contactos siguen en leads y los seguimientos en follow_ups. Con crm:sales:read puedes consultar:
  • GET /crm/sales/configuration: configuración publicada, versión y estado; no incluye borradores.
  • GET /crm/sales/opportunities: tarjetas paginadas.
  • GET /crm/sales/opportunities/{opportunityId}: detalle y últimas 50 actividades.
  • GET /crm/sales/opportunities/{opportunityId}/contact: contacto vinculado por leadId.
  • GET /crm/sales/opportunities/{opportunityId}/follow-ups: seguimientos de esa oportunidad; limit y cursor.
El tenant debe tener el CRM habilitado y una configuración publicada; de lo contrario devuelve 403. Las tarjetas admiten limit (hasta 100), cursor, stageId, status, group=closed e includeTotal. No combines el grupo cerrado con stageId/status. Si cambia la versión publicada, un cursor puede devolver 409: recarga y reinicia la paginación. PATCH /crm/sales/opportunities/{opportunityId} requiere crm:sales:write:
Cada edición requiere la revisión actual. Ante 409, recarga y concilia antes de reintentar. Las ediciones manuales bloquean cambios de IA, incluso al limpiar con null. Usa restoreAi:true con fieldId para liberar un campo, o sin fieldId para liberar la etapa. Una etapa terminal cierra la tarjeta; las tarjetas cerradas no se reabren. Se conserva la invalidación de seguimientos del CRM. No se crean tarjetas, publican pipelines ni envían seguimientos. Los eventos crm.opportunity.created y crm.opportunity.updated notifican IDs y cambios de revisión/etapa/estado; no incluyen valores capturados.