Skip to main content

Módulo Contact

src/app/modules/contact/

Gestiona los contactos externos del CRM (clientes que inician conversaciones).

Modelo — Contact

CampoTipoDescripción
_idObjectIdID de MongoDB
tenantIdObjectId → TenantTenant propietario
externalIdstringID en el sistema origen (ej: WhatsApp ID)
usernamestringNombre del contacto
emailstringEmail (opcional)
phonestringTeléfono (opcional)
isBlockedbooleanSi está bloqueado, no puede enviar mensajes
labelsObjectId[] → LabelEtiquetas asignadas
createdAtDate
updatedAtDate

Endpoints

MétodoRutaAuthDescripción
GET/api/v1/contacts@Auth()Lista contactos paginada
GET/api/v1/contacts/:id@Auth()Obtiene un contacto
POST/api/v1/contacts@Auth()Crea contacto
PATCH/api/v1/contacts/:id@Auth()Actualiza contacto
DELETE/api/v1/contacts/:id@Auth()Elimina contacto
POST/api/v1/contacts/:id/labels@Auth()Asigna etiquetas al contacto

DTOs

CreateContactDto

{
tenantId: string
externalId: string
username: string
email?: string
phone?: string
}

AssignLabelsDto

{
labelIds: string[] // array de UUIDs de Labels
}

Relaciones

  • ChatGateway — verifica isBlocked antes de permitir que el contacto envíe mensajes
  • TicketModule — cada ticket está asociado a un contacto
  • LabelModule — los labels del contacto son referencias a Label