5.5 KiB
5.5 KiB
API
Сущность Chat (Чат)
Поля:
- id (string) — уникальный идентификатор чата (UUID).
- title (string) — название чата (для групповых чатов).
- type (enum:
private,group,channel) — тип чата. - mode (enum:
work,personal) — режим чата (рабочий/личный). - participants (array of user IDs) — список участников.
- created_at (timestamp) — дата создания.
- is_archived (boolean) — флаг архивации.
- metadata (JSON) — дополнительные данные (например,
{"project_id": "abc123", "jira_link": "..."}).
Эндпоинты для Chat
| Метод | Путь | Описание | Параметры |
|---|---|---|---|
| POST | /api/v1/chats |
Создать чат | { title, type, mode, participants } |
| GET | /api/v1/chats/{id} |
Получить чат по ID | — |
| PATCH | /api/v1/chats/{id} |
Обновить чат (название, режим, архив) | { title?, mode?, is_archived? } |
| DELETE | /api/v1/chats/{id} |
Архивировать чат | — |
| GET | /api/v1/chats |
Поиск чатов | ?type=group&mode=work&participant=user123&search=project |
| POST | /api/v1/chats/{id}/join |
Добавить участника | { user_id } |
| POST | /api/v1/chats/{id}/leave |
Удалить участника | { user_id } |
Сущность Message (Сообщение)
Поля:
- id (string) — уникальный идентификатор сообщения (UUID).
- chat_id (string) — ID чата.
- sender_id (string) — ID отправителя.
- text (string) — текст сообщения (может быть
nullдля вложений). - attachments (array) — вложения:
{ type: "file" | "link" | "meeting", url: string, preview?: string }. - timestamp (timestamp) — время отправки.
- status (enum:
sent,delivered,read) — статус сообщения. - metadata (JSON) — дополнительные данные (хештеги, упоминания).
Эндпоинты для Message
| Метод | Путь | Описание | Параметры |
|---|---|---|---|
| POST | /api/v1/chats/{chat_id}/messages |
Отправить сообщение | { text?, attachments[], metadata? } |
| GET | /api/v1/messages/{id} |
Получить сообщение по ID | — |
| DELETE | /api/v1/messages/{id} |
Удалить сообщение (для отправителя) | — |
| GET | /api/v1/chats/{chat_id}/messages |
Получить историю сообщений | ?limit=50&offset=0&search=bug&from=2023-01-01&to=2023-12-31 |
| PATCH | /api/v1/messages/{id}/status |
Обновить статус (например, read) |
{ status } |
Примеры запросов
Создание чата:
POST /api/v1/chats
Body:
{
"type": "group",
"mode": "work",
"title": "Project Alpha",
"participants": ["user1", "user2"]
}
Поиск сообщений:
GET /api/v1/chats/chat123/messages?search=deadline&from=2023-10-01
Отправка сообщения с вложением:
POST /api/v1/chats/chat123/messages
Body:
{
"text": "Проверьте новый дизайн",
"attachments": [
{ "type": "file", "url": "https://.../design.pdf", "preview": "https://.../preview.png" }
]
}
Особенности:
- Авторизация: Все запросы требуют токена (JWT в заголовке
Authorization). - Ошибки:
403 Forbidden— пользователь не является участником чата.404 Not Found— чат/сообщение не существует.400 Bad Request— неверный формат вложений.
- Пагинация: Для списков используется
limitиoffset(по умолчаниюlimit=20).