Un mensaje dentro de una ChatRoom, escrito por una Account (author). type
es text o image; en image, message guarda la URL del archivo subido. Usa soft delete.
is_delivered / is_read indican si este mensaje fue entregado o leído por los demás
miembros: se compara su id con el menor last_delivered_message_id / last_read_message_id
del resto de miembros (se ignora al autor). is_mine indica si lo escribió la cuenta
autenticada. Los endpoints set-delivered / set-read avanzan esos punteros para el miembro
actual.
last_delivered_message_id / last_read_message_id del mensaje son agregados calculados
(mínimo entre los demás miembros), no columnas.loggedAccountMember está en $hidden.| Atributo | Tipo | Descripción |
|---|---|---|
id |
int |
|
created_at |
datetime\|null |
|
updated_at |
datetime\|null |
|
deleted_at |
datetime\|null |
|
author_id |
int |
{@link Account} que escribió el mensaje |
room_id |
int |
{@link ChatRoom} del mensaje |
message |
string |
Texto del mensaje, o URL del archivo si type = image |
type |
string |
Tipo del mensaje: text o image |
allLogs |
ApiLog> |
|
author |
Account |
{@link Account} autora del mensaje |
channel |
string |
Canal de websocket de la sala |
is_delivered |
bool\|null |
Si el mensaje fue entregado a los demás miembros |
is_mine |
bool\|null |
Si lo escribió la cuenta autenticada |
is_read |
bool\|null |
Si el mensaje fue leído por los demás miembros |
last_delivered_message_id |
int |
Menor puntero de entrega entre los demás miembros (agregado) |
last_read_message_id |
int |
Menor puntero de lectura entre los demás miembros (agregado) |
loggedAccountMember |
ChatMember\|null |
Miembro correspondiente a la cuenta autenticada (oculto) |
logs |
ApiLog> |
|
members |
ChatMember> |
Miembros de la sala del mensaje |
room |
ChatRoom |
{@link ChatRoom} del mensaje |
{
"id": 1,
"created_at": "2022-07-14 16:38:51",
"updated_at": "2022-07-14 16:38:51",
"deleted_at": null,
"author_id": 753,
"room_id": 1,
"message": "Porfa, no te comas mi hamburguesa",
"type": "text",
"is_delivered": true,
"is_read": true,
"is_mine": false,
"last_delivered_message_id": 981,
"last_read_message_id": 981,
"channel": "private-ch-1"
}
Enviar mensaje a una sala
Publica un mensaje (text, o image con el archivo en image) en la ChatRoom
indicada.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/chat-rooms/{chatRoomId}/chat-messages |
Authorization |
{
"message": "required_if:type,text|string|max:8192",
"image": "required_if:type,image|image|mimes:jpeg,png,bmp|max:4096",
"type": "string|in:text,image"
}
| Código | HTTP | Cuándo ocurre |
|---|---|---|
EC030 |
400 | La cuenta no es miembro de la sala. |
EC031 |
400 | El miembro está restringido para escribir. |
EC032 |
400 | La sala no está activa. |
{info} Soporta: Paginación Filters Carga dinámica
Listar mensajes de una sala
Mensajes de la ChatRoom indicada, paginados. Si el llamador es miembro, ve su propio hilo; al pedir la primera página se marca como entregado el mensaje más reciente para ese miembro.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/chat-rooms/{chatRoomId}/chat-messages |
Authorization |
{info} Soporta: Paginación Filters Carga dinámica
Mensajes del chat directo entre la cuenta autenticada y la cuenta indicada. Falla si aún no existe la sala directa.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/accounts/{userId}/chat-messages |
Authorization |
{info} Soporta: Paginación Filters Carga dinámica
Mensajes de la ChatRoom asociada a la Order indicada.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/orders/{orderId}/chat-messages |
Authorization |
{info} Soporta: Paginación Filters Carga dinámica
Mensajes de la ChatRoom asociada al OrderProvider indicado (chat entre cliente y repartidor de esa asignación).
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/order-providers/{orderProviderId}/chat-messages |
Authorization |
Publica un mensaje en el chat directo con la cuenta indicada; crea la sala y las membresías si aún no existían.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/accounts/{userId}/chat-messages |
Authorization |
{
"message": "required_if:type,text|string|max:8192",
"image": "required_if:type,image|image|mimes:jpeg,png,bmp|max:4096",
"type": "string|in:text,image"
}
| Código | HTTP | Cuándo ocurre |
|---|---|---|
EC030 |
400 | La cuenta no es miembro de la sala. |
EC031 |
400 | El miembro está restringido para escribir. |
EC032 |
400 | La sala no está activa. |
Publica un mensaje en la ChatRoom de la Order; crea la sala y suma al cliente (y al admin) si hace falta. Solo se admite un administrador por sala.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/orders/{orderId}/chat-messages |
Authorization |
{
"message": "required_if:type,text|string|max:8192",
"image": "required_if:type,image|image|mimes:jpeg,png,bmp|max:4096",
"type": "string|in:text,image"
}
| Código | HTTP | Cuándo ocurre |
|---|---|---|
EC033 |
400 | Ya hay otro administrador en la sala de la orden. |
EC030 |
400 | La cuenta no es miembro de la sala. |
EC031 |
400 | El miembro está restringido para escribir. |
EC032 |
400 | La sala no está activa. |
Publica un mensaje en la ChatRoom del OrderProvider; crea la sala con el cliente y el repartidor si no existía.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/order-providers/{orderProviderId}/chat-messages |
Authorization |
{
"message": "required_if:type,text|string|max:8192",
"image": "required_if:type,image|image|mimes:jpeg,png,bmp|max:4096",
"type": "string|in:text,image"
}
| Código | HTTP | Cuándo ocurre |
|---|---|---|
EC030 |
400 | La cuenta no es miembro de la sala. |
EC031 |
400 | El miembro está restringido para escribir. |
EC032 |
400 | La sala no está activa. |
Avanza el puntero de entrega del miembro actual hasta este ChatMessage. Devuelve la ChatMember actualizada.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/chat-messages/{chatMessageId}/set-delivered |
Authorization |
Avanza el puntero de lectura del miembro actual hasta este ChatMessage (y, con él, el de entrega). Devuelve la ChatMember actualizada.
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/chat-messages/{chatMessageId}/set-read |
Authorization |
allLogs HasMany ApiLogauthor BelongsTo AccountloggedAccountMember HasOne ChatMemberlogs HasMany ApiLogmembers HasMany ChatMemberroom BelongsTo ChatRoom