Ошибки, версии и совместимость
HTTP-ошибки, ожидание повторного запроса и совместимость экспортных данных.
Сначала проверяйте HTTP-статус, затем разбирайте тело. Успешный ответ содержит content,
а предусмотренные ошибки API - поле error. Его значение может быть строкой или объектом.
HTTP-ошибки и ответ
| HTTP | Причина | Что проверить |
|---|---|---|
400 |
ID отсутствует или имеет неверный формат | Передан ли шестизначный ID экспорта |
404 |
Экспорт не найден или срок действия истёк | ID из окна публикации и время экспорта |
429 |
Превышено ограничение запросов | Ожидание в Retry-After |
500 |
Ошибка обработки запроса или сохранённых данных | Текст ошибки; для Invalid JSON можно заново опубликовать проект |
503 |
Хранилище API недоступно | Доступность сервиса; немедленные повторные запросы не устраняют причину |
HTTP 400: отсутствующий или неверный ID
{"error":"ID is missing"}HTTP 404: несуществующий или истёкший ID
{"error":"ID does not exist or is outdated"}HTTP 429: превышение частоты запросов
{ "error": { "code": "rate_limited", "message": "Too many requests. Please try again later.", "retryAfterSeconds": 45 }}Заголовок Retry-After и поле retryAfterSeconds указывают ожидание в секундах.
В этом примере оно равно 45 секундам; фактическое значение берите из ответа.
Два действующих лимита и их заголовки описаны в разделе
Ограничения запросов.
HTTP 500: внутренняя ошибка обработки запроса
{"error":"Internal error"}HTTP 500: невозможно обработать сохранённые данные экспорта
{"error":"Invalid JSON"}HTTP 503: подключение к хранилищу недоступно
{"error":"PostgreSQL is not connected."}Это форматы ошибок, возвращаемых самим API. При сетевом или инфраструктурном сбое ответ может иметь другой формат, включая HTML или пустое тело. Сетевая ошибка также может завершить запрос до получения HTTP-ответа. Поэтому ошибка разбора JSON сама по себе не определяет причину сбоя.
Временный ID
Публикация доступна 10 минут. После этого API возвращает тот же 404, что и для
несуществующего ID: по телу ответа различить эти случаи нельзя.
Проверьте, что скопирован ID экспорта, а не ID модели в каталоге. Если срок истёк, повторите экспорт из редактора и используйте новый ID. Повторный запрос со старым ID не восстанавливает публикацию и не продлевает её срок. Все правила: Запрос по ID, параметры и срок жизни.
Совместимость полученных данных
200 означает успешное получение данных. Их применение зависит от поддержки вашей
интеграцией выбранной версии Minecraft и конкретных полей экспорта.
В ответе могут отсутствовать анимации, звуки, хитбоксы и project_id.
Отсутствие необязательного поля само по себе не является ошибкой API.
При чтении passengers учитывайте, что строки внутри массива имеют формат SNBT:
повторный JSON.parse() не превращает их в объекты Minecraft.
Если данные получены, но модель не создаётся или события не воспроизводятся, сверьте структуру JSON и состав экспорта. Ошибки исполнения внутри интеграции не являются HTTP-ошибками API.
Смысл версий
| Значение | Что оно означает |
|---|---|
content.version, например "1.21.4" |
Версия Minecraft, выбранная при экспорте |
content.meta.schema, сейчас 1 |
Версия схемы метаданных анимаций и звуков |
Аргумент version у editorAPI.exportToJSON() |
Числовой индекс версии в интерфейсе редактора |
| Версия сборки BDEngine | Версия редактора, подготовившего экспорт; отдельного обязательного поля с ней здесь нет |
Числовой индекс editorAPI нельзя интерпретировать как строку версии Minecraft.
Текущая реализация переводит его в выбранную версию и записывает строку в content.version.
Сигнатура метода: Проекты, списки и геометрия.
Состав JSON может развиваться вместе с редактором. Неизвестную версию схемы метаданных
не следует молча считать схемой 1, а отсутствующее meta в старом экспорте не даёт
основания угадывать шаг кадров. Значения полей описаны в статье Структура JSON.