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).
channel es el canal de websocket de la sala (private-ch-{id}). last_message_id apunta al
último mensaje.
model_type / model_id están en $hidden; se exponen como target_type.| 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"
}
{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 |
{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 |
allLogs HasMany ApiLoglastMessage BelongsTo ChatMessagelogs HasMany ApiLogmembers HasMany ChatMembermessages HasMany ChatMessagemodel BelongsTo OrderProvider