Backend / REST API

API: Пользователи

Управление личными данными, приватностью, списком чатов и поиском. Префикс: /users. Файл: srv/app/api/endpoints/users.py

Эндпоинты профиля

МетодПутьОписание
GET/users/meПолучить профиль текущего пользователя
PUT/users/meОбновить профиль (имя, телефон, о себе)
PUT/users/me/encryption-keyОбновить резервную копию приватного ключа E2EE
PUT/users/me/passwordИзменить пароль аккаунта
PUT/users/me/privacyОбновить настройки конфиденциальности
GET/users/me/privacyПолучить текущие настройки приватности
PUT/users/me/avatarУстановить UUID аватарки в БД

Поиск и чаты

МетодПутьОписание
GET/users/allСписок всех пользователей системы (с поиском по query)
GET/users/chatsСписок активных диалогов (с последними сообщениями)
GET/users/by-username/{username}Поиск профиля по точному логину
GET/users/{user_id}Получить профиль по числовому ID

Настройки конфиденциальности

Пользователи могут управлять видимостью своих личных данных (email, phone, avatar, about, last_online) для других участников чата. Для проверки видимости бэкенд сверяет флаги приватности в таблице users:

  • show_email (1/0) — показывать email
  • show_phone (1/0) — показывать номер телефона
  • show_avatar (1/0) — показывать аватар
  • show_about (1/0) — показывать информацию "О себе"
  • show_last_online (1/0) — показывать статус последней активности

Супер-администратор (user_id = 1) всегда видит все поля пользователей, независимо от их настроек приватности.

Диалоги пользователя (GET /users/chats)

Эндпоинт /users/chats собирает данные о диалогах. Для каждого собеседника рассчитывается:

  1. Последнее отправленное сообщение (last_message) и его тип (текст, картинка, файл и др.).
  2. Количество непрочитанных входящих сообщений (unread_count) от этого собеседника.
  3. Текущий статус в сети (online) через проверку в WebSocket менеджере.

Список сортируется по времени последнего сообщения в порядке убывания.