API Reference

MESSAGE
SCHEMA.

Формат payload повідомлень, типи подій Socket.IO та структура даних для клієнта і бекенду LUMYN.

← Назад до оновлень
// 01
Base Message Payload
Базова структура зашифрованого повідомлення. Всі поля, крім ciphertext, передаються у відкритому вигляді для маршрутизації. Ciphertext — зашифрований AES-256-GCM контент.
JSON · Message Envelope
{ "type": "text", // тип повідомлення "senderName": "alice", // ідентифікатор відправника "receiverName": "bob", // або "GROUP_uuid" для груп "ciphertext": "base64...", // AES-256-GCM зашифрований контент "nonce": "base64...", // 96-bit унікальний nonce "mac": "base64...", // 128-bit GCM authentication tag "timestamp": "2026-03-30T...", // ISO-8601 "messageId": "uuid-v4", // UUID v4 для дедуплікації "isEphemeral": false // true = ефірне повідомлення }
// 02
Типи повідомлень
Поле type визначає як клієнт декодує та відображає вміст ciphertext після розшифрування.
text
Звичайне текстове повідомлення. Ciphertext містить UTF-8 рядок.
image
Зображення. Ciphertext — зашифрований base64 JPEG/PNG файл.
voice
Голосове повідомлення. Ciphertext — зашифрований аудіофайл.
ephemeral_text
Ефірний текст. Видаляється після прочитання на всіх пристроях.
ephemeral_image
Ефірне зображення. Автоматично знищується після перегляду.
reaction
Emoji реакція на повідомлення. Містить messageId та emoji символ.
system
Системне повідомлення: учасник приєднався, ключі синхронізовано.
deleted
Маркер видаленого повідомлення. Замінює вміст на стороні клієнта.
// 03
Socket.IO Events
Транспортний рівень LUMYN базується на Socket.IO. Нижче наведені ключові події клієнт↔сервер.
Подія Напрям Опис
register
emit →
Реєстрація клієнта: передає username та публічний ключ X25519.
sendMessage
emit →
Надсилання зашифрованого повідомлення одному отримувачу.
sendGroupMessage
emit →
Надсилання повідомлення до групи по groupId.
sendEphemeral
emit →
Ефірне повідомлення для прямого чату. Видаляється після доставки.
sendEphemeralGroup
emit →
Ефірне повідомлення для групи.
sendVoice
emit →
Передача зашифрованого голосового повідомлення.
sendImage
emit →
Передача зашифрованого зображення.
receiveMessage
← on
Клієнт отримує нове зашифроване повідомлення від сервера.
getPublicKey
emit →
Запит публічного ключа іншого користувача для ECDH обміну.
typing
emit →
Індикатор набору тексту. Передає sender, receiver, isTyping.
deleteMessage
emit →
Видалення повідомлення по messageId. Сервер розсилає всім учасникам.
createGroup
emit →
Створення групи з назвою та списком учасників.
fcmToken
emit →
Реєстрація FCM токена для push-повідомлень через Firebase.
// 04
Group Schema
JSON · Group Object
{ "groupId": "GROUP_uuid-v4", // унікальний префікс GROUP_ "groupName": "Team Alpha", "members": ["alice", "bob", "carol"], "createdBy": "alice", "createdAt": "2026-03-30T12:00:00Z", "avatarBase64": "base64..." // nullable }