Открытое API XMVP
загружаю спецификацию…
/api/v1Authorization: Bearer <токен>POST + application/jsonЕсли запрос составлен неверно
Сервер никогда не обрывает запрос молча. На любую ошибку приходит объяснение: что именно не так, жив ли сам эндпоинт и какая команда сработает. Из браузера то же самое открывается обычной страницей, в консоли и коде в виде JSON.
error, message, hint, endpoint, service, docs, exampleЖивые каналы
Реалтайм работает на восьми каналах: каждый открывается отдельным постоянным соединением на свой путь и принимает только свои команды. Рукопожатие везде одинаковое: hello, потом sess с токеном, потом join в комнату. Машиночитаемая спецификация протокола: asyncapi.json.
/ws/room комната, присутствие, пароли, список своих комнат/ws/editor совместный редактор, бинарные кадры Yjs и awareness/ws/upload выгрузка файлов чанками с докачкой/ws/download скачивание файлов и архива комнаты/ws/files дерево файлов, переименование, потоковые билеты/ws/versions история версий комнаты/ws/watch совместный просмотр видео/ws/admin живая сводка панели администратораКапча из своего клиента
Регистрация, сброс токена и вход анонима в комнату защищены капчей, а её виджет работает только в браузере. Клиент без интерфейса (скрипт, бот, консольная утилита) проходит проверку через бекенд: получает ссылку, человек открывает её в любом браузере, клиент забирает готовый пропуск.
POST /captcha/start вернёт ticket и urlurl пользователю: открыть в браузере, QR, строка в терминалеPOST /captcha/result раз в 3 секунды, пока не придёт solved: true и captcha_passcaptcha_pass в теле запроса или как captchaPass в команде join живого канала
404 captcha_ticket_gone, нужна новая/auth/register и /token/reset принимают пропуск один раз и только в первые 10 минут: на каждую своя заявкаcaptcha_pass сразу в /auth/session и /auth/whoami, заявка им нужна только для сброса токена/captcha/start отвечает required: false, шаги 2–5 пропускаются