ChatRoom


Una sala de chat: una conversación entre cuentas (Account). Puede estar atada a un model polimórfico (Order, OrderProvider, Company o Account) — target_type da su nombre legible. is_direct marca los chats 1:1; is_private siempre es true (no hay salas públicas). Cada company tiene sus propias salas (company_id).

Tiempo real

channel es el canal de websocket de la sala (private-ch-{id}). last_message_id apunta al último mensaje.

Notas y gotchas

  • model_type / model_id están en $hidden; se exponen como target_type.
  • Enviar mensajes requiere ser miembro no restringido de una sala habilitada (ver los errores de los endpoints de envío).

Estructura de Datos

Atributo Tipo Descripción
id int
created_at datetime\|null
updated_at datetime\|null
model_type string\|null Tipo del modelo asociado a la sala (oculto; ver target_type)
model_id int\|null Id del modelo asociado (oculto)
is_enabled bool Si la sala está activa (si no, solo los admins pueden escribir)
is_direct bool Si es un chat directo 1:1 entre dos cuentas
is_private bool Si la sala es privada (siempre true)
name string\|null Nombre de la sala
image_url string\|null URL de la imagen de la sala
company_id int {@link Company} dueña de la sala
last_message_id int\|null Último {@link ChatMessage} de la sala
allLogs ApiLog>
channel string Canal de websocket de la sala (private-ch-{id})
lastMessage ChatMessage\|null Último mensaje de la sala
logs ApiLog>
members ChatMember> Miembros de la sala ({@link ChatMember})
messages ChatMessage> Mensajes de la sala ({@link ChatMessage})
model Model\|Eloquent Modelo asociado a la sala (Order, OrderProvider, Company o Account)
target_type string\|null Nombre legible del tipo de modelo asociado (order, order_provider, company, account)
{
    "id": 1,
    "created_at": "2022-07-14 16:38:51",
    "updated_at": "2022-07-21 21:25:30",
    "is_enabled": true,
    "is_direct": false,
    "is_private": true,
    "name": "Chat OrderProvider2197",
    "image_url": null,
    "company_id": 116,
    "last_message_id": 981,
    "channel": "private-ch-1",
    "target_type": "order_provider"
}

Endpoints

Listar ChatRoom

{info} Soporta: Paginación Filters Carga dinámica

Listar salas de chat

Devuelve las ChatRoom de la company visibles para la cuenta autenticada (o la de account_id, con permiso): aquellas donde es miembro más las salas no privadas.

Método URI Cabeceras
GET /companies/{companyId}/chat-rooms Authorization

Mostrar ChatRoom

{info} Soporta: Carga dinámica

Mostrar sala de chat

Devuelve la ChatRoom por su id (dentro de la company en curso), con su model asociado cargado.

Método URI Cabeceras
GET /companies/{companyId}/chat-rooms/{chatRoomId} Authorization

Relaciones