# API, которые использует студия Студия = редактор игр. Дёргает много API: загрузка моделей, сохранение проектов, публикация, ассеты, админ-функции. Этот документ — полный список. ## Базовый URL В prod: `https://api.rublox.pro` (alias на `minecraftia-school.ru/api-storys`) В dev: `https://dev-api.rublox.pro` (staging) Локально: `http://localhost:8674` (storys-микросервис) ## Эндпоинты — список ### Проекты (CRUD) | Method | Path | Когда | |---|---|---| | GET | `/kubikon3d/projects/` | при открытии проекта в редакторе | | POST | `/kubikon3d/projects` | при сохранении нового проекта | | PUT | `/kubikon3d/projects/` | при auto-save (каждые 60с) и при manual-save | | DELETE | `/kubikon3d/projects/` | юзер удалил свой проект | | GET | `/kubikon3d/my-projects` | страница «Мои проекты» | | POST | `/kubikon3d/projects//publish` | юзер жмёт «Опубликовать» | **Размер `project_data` JSON:** обычно 100 КБ - 5 МБ. Лимит на бэке — **20 МБ** (settings, может меняться). Если проект больше — split на несколько (НЕ реализовано пока). ### Модели и ассеты | Method | Path | Когда | |---|---|---| | GET | `/kubikon3d/models/public` | при открытии редактора, список общих GLB-моделей | | GET | `/kubikon3d/models/mine` | панель «Мои модели» | | GET | `/kubikon3d/models/` | при первом упоминании модели в проекте | | POST | `/kubikon3d/models` | юзер залил свою GLB-модель | | DELETE | `/kubikon3d/models/` | юзер удалил свою | ### Лента и поиск (как в плеере) | Method | Path | Когда | |---|---|---| | GET | `/kubikon3d/feed` | главная редактора | | GET | `/kubikon3d/trending` | главная | | GET | `/kubikon3d/search?q=...` | поиск чужих проектов (для копирования идей) | | GET | `/kubikon3d/collections` | секции | | GET | `/kubikon3d/top-authors` | топ авторов | | GET | `/kubikon3d/events` | мероприятия | ### Скины и аватары | Method | Path | Когда | |---|---|---| | GET | `/kubikon3d/rublox/equipped-skin/` | превью аватара текущего юзера в редакторе | | GET | `/kubikon3d/rublox/owned-skins` | панель «Скины» | | POST | `/kubikon3d/rublox/equipped-skin` | юзер сменил скин | ### Материалы для дизайнера | Method | Path | Когда | |---|---|---| | GET | `/api-storys/designer/materials/list` | панель «Материалы» — текстуры и материалы для блоков | ### Чат и комментарии | Method | Path | Когда | |---|---|---| | POST | `/kubikon3d/chat/` | юзер пишет сообщение в чат своей игры (preview) | ### Telemetry (как в плеере) | Method | Path | Когда | |---|---|---| | POST | `/kubikon3d/play/heartbeat` | при тесте игры через Play в редакторе | | POST | `/kubikon3d/activity` | вход/выход в тестовый Play | | POST | `/kubikon3d/perf-log` | при просадке FPS в тестовом Play | | POST | `/kubikon3d/bug-reports` | юзер жмёт «Сообщить о баге» | | POST | `/kubikon3d/reports` | репорт на чужой проект (из поиска) | ### Админка (для роли admin) Все `/kubikon3d/admin/*` доступны только админам. Не админ → 403. Список — см. [rublox-player/API_USAGE.md#админка](../rublox-player/API_USAGE.md). Студия использует тот же набор, что и плеер. ## Аутентификация JWT в заголовке `Authorization: Bearer `. Получение — через `/api-user/auth/login` (см. [rublox-player/API_USAGE.md#аутентификация](../rublox-player/API_USAGE.md#аутентификация)). ## Особенности студии vs плеера - **Студия дополнительно** имеет CRUD на `/projects` (плеер только читает). - **Студия загружает модели**: POST `/models` с multipart/form-data. Лимит 50 МБ на файл. - **Auto-save**: студия каждые 60 секунд молча шлёт `PUT /projects/`. Без этого проекты теряются при сбое браузера. - **Conflict resolution**: если двое редактируют один проект, бэк возвращает 409 на PUT. Студия показывает диалог «Кто-то открыл проект параллельно, перезагрузить?». ## Изменения API **Breaking changes** (изменение сигнатур, удаление полей) — объявление в `#разработка` за 48 часов + запись в `API_CHANGELOG.md` админ-репо. ## Контакты - Issue tracker: https://git.rublox.pro/rublox/studio/issues - Чат: `#разработка` на https://team.rublox.pro