Backend / REST API

API: Сообщения

Чтение истории сообщений и полное удаление переписок. Префикс: /messages. Файл: srv/app/api/endpoints/messages.py

Обзор эндпоинтов

МетодПутьОписание
GET/messages/history/{contact_id}Получить историю сообщений с собеседником
GET/messages/lastПолучить последнее сообщение диалога
DELETE/messages/allПолный сброс: удалить все свои сообщения и чаты

Пагинация истории сообщений (GET /messages/history/{contact_id})

Эндпоинт поддерживает два режима пагинации:

1. Классическая пагинация (Legacy)

Использует параметры offset (смещение) и limit (количество сообщений). Возвращает плоский массив сообщений, отсортированный по ID в порядке убывания.

2. Умная пагинация с якорем (v2_pagination=True)

Используется для быстрого открытия чата на первом непрочитанном сообщении. Параметры:

  • anchor_id (опционально) — ID сообщения, вокруг которого нужно собрать историю. Если не передан, сервер ищет первое непрочитанное сообщение от собеседника.
  • limit_before — количество сообщений до якоря (более старые).
  • limit_after — количество сообщений после якоря (более новые).

Если непрочитанных сообщений нет, сервер просто возвращает последние limit_before сообщений.

Response 200 OK (v2)
{
  "anchor_id": 4820,
  "messages": [
    {
      "id": 4822,
      "sender_id": 102,
      "receiver_id": 100,
      "content": "Base64EncryptedText...",
      "timestamp": "2026-06-23T12:00:00",
      "read_at": null,
      "message_type": "text"
    },
    {
      "id": 4820, // Якорь
      "sender_id": 102,
      "receiver_id": 100,
      "content": "Base64EncryptedText...",
      "timestamp": "2026-06-23T11:59:00",
      "read_at": null,
      "message_type": "text"
    }
  ]
}

Полная очистка (DELETE /messages/all)

Этот метод удаляет все сообщения с участием текущего пользователя из базы данных. После удаления сервер отправляет WebSocket событие типа chat_deleted всем пользователям, с которыми у текущего пользователя были диалоги. Это удаляет чаты из интерфейса собеседников в реальном времени.