Przejdź do treści
Intum
Aktualizacja: 2 min czytania

Chat - API

Moduł chat musi być aktywny na koncie, token z uprawnieniem chat.

Autoryzacja: Authorization: Bearer TOKEN

Endpointy

Metoda Ścieżka Opis
GET /chat.json Pokoje zalogowanego użytkownika
GET /chat/rooms.json Wszystkie pokoje konta (admin; q, kind)
POST /chat/rooms.json Utworzenie/znalezienie pokoju
PATCH /chat/rooms/:id.json Zmiana nazwy (owner/admin)
DELETE /chat/rooms/:id.json Usunięcie pokoju (owner/admin)
GET /chat/rooms/:id/members.json Członkowie pokoju
POST /chat/rooms/:id/add_member.json?user_id=X Dodanie osoby
POST /chat/rooms/:id/remove_member.json?user_id=X Usunięcie osoby (owner/admin)
POST /chat/rooms/:id/join.json Dołączenie (kanały)
POST /chat/rooms/:id/leave.json Opuszczenie (rozmowy 1:1 nie da się opuścić)
POST /chat/rooms/:id/mark_read.json Oznaczenie jako przeczytane
GET /chat/rooms/:id/messages.json Historia (od najnowszych; paginacja before_id)
POST /chat/rooms/:id/messages.json Wysłanie wiadomości
GET /chat/messages.json Wszystkie wiadomości (admin; q, kind, room_id)
PATCH /chat/messages/:id.json Edycja własnej wiadomości
DELETE /chat/messages/:id.json Usunięcie (autor/admin)
POST /chat/messages/:id/toggle_reaction.json?emoji=👍 Reakcja emoji

Id pokoi i wiadomości to uuid (string).

Tworzenie pokoi

Rozmowa 1:1 (find-or-create per para):

{ "chat_room": { "kind": "dm", "user_id": 5 } }

Kanał:

{ "chat_room": { "kind": "group", "name": "Ogólny", "user_ids": [5, 7] } }

Rozmowa w kontekście obiektu (jeden pokój per obiekt; subject_type: Organize::Task, Organize::Project, Organize::Team, Mail::Email, Helpdesk::Ticket, Crm::Client):

{ "chat_room": { "kind": "subject", "subject_type": "Organize::Task", "subject_id": 123 } }

Wysłanie wiadomości

{ "chat_message": { "content": "Treść (markdown)", "parent_id": null } }

Wzmianka to token z ID: @[Imię Nazwisko](user:5) - użytkownik 5 dostanie powiadomienie, jeśli jest członkiem pokoju. @all / @here powiadamia wszystkich członków.