Перейти к содержимому

Публичный API

Структурированный доступ только для чтения к отчётам сообщества о совместимости карт, автобусов, транспортных средств, модов, объектов, плагинов и инструментов, работающих на openOMSI. Создан для разработчиков openOMSI, инструментов анализа, ботов и интеграций.

Это НЕ API для сообщений об ошибках openOMSI. Ошибки самого движка следует направлять в официальные каналы проекта. Здесь можно только читать то, что протестировало сообщество.

⚠ ЛИМИТ ЗАПРОСОВ ПУБЛИЧНОГО API

6 запросов с одного IP за 60 мин.

Этот API намеренно имеет жёсткое ограничение частоты запросов, поскольку он публичный и не требует аутентификации.

  • Проектируйте интеграции так, чтобы ответы кэшировались локально.
  • Не опрашивайте API постоянно.
  • По возможности используйте агрегирующие эндпоинты: один вызов отвечает на большинство вопросов.

Лимит общий для всех публичных эндпоинтов и действует только для внешних потребителей; сам сайт эту квоту не использует.

Быстрый старт

Базовый URL: https://openomsi.omsimods.com.br/api/public/v1. Всё в формате JSON, только GET, без аутентификации. Начните с эндпоинта meta, чтобы узнать точные значения, принимаемые фильтрами.

curl https://openomsi.omsimods.com.br/api/public/v1/meta
curl "https://openomsi.omsimods.com.br/api/public/v1/content?q=millennium&type=VEHICLE"

OpenAPI (JSON)

Лимит запросов, заголовки и ошибки

HTTP/1.1 429 Too Many Requests
Retry-After: 1234
RateLimit-Limit: 6
RateLimit-Remaining: 0
RateLimit-Reset: 1234

{
  "error": "rate_limit_exceeded",
  "message": "Public API limit reached. Try again later.",
  "retry_after": 1234
}

Практические сценарии использования

Значения в примерах условные; структура ответов настоящая.

1. Работает ли Grand Paris Moulon на Windows?

Один вызов возвращает сводку по платформам, категории проблем, распределение FPS, протестированные версии и последние отчёты. Смотрите compatibility.by_platform.WINDOWS.

GET https://openomsi.omsimods.com.br/api/public/v1/content/grand-paris-moulon

Ответ (сокращённо)

{
  "compatibility": {
    "total_reports": 4,
    "works": 2,
    "works_with_issues": 2,
    "does_not_work": 0,
    "inconclusive": 0,
    "low_data": false,
    "by_platform": {
      "WINDOWS": {
        "reports": 4,
        "works": 2,
        "works_with_issues": 2,
        "does_not_work": 0,
        "inconclusive": 0,
        "latest_tested_openomsi_version": "0.1.126",
        "fps": {
          "samples": 3,
          "median": 38,
          "min": 28,
          "max": 60
        }
      }
    }
  },
  "issues": {
    "by_category": {
      "TEXTURES": 2,
      "SCRIPTS": 1
    },
    "reports_with_issues": 2
  },
  "performance": {
    "source": "user_reported",
    "fps": {
      "samples": 3,
      "median": 38,
      "min": 28,
      "max": 60
    },
    "load_time_seconds": {
      "samples": 2,
      "median": 95,
      "min": 80,
      "max": 110
    }
  },
  "latest_tested_openomsi_version": "0.1.126"
}

2. Список карт, протестированных на Android

Фильтруйте по типу и платформе. Каждый элемент уже содержит итоги, протестированные платформы и последнюю протестированную версию openOMSI.

GET https://openomsi.omsimods.com.br/api/public/v1/content?type=MAP&platform=ANDROID&sort=reports&limit=20

Ответ (сокращённо)

{
  "data": [
    {
      "id": "cm0millennium1",
      "slug": "mapa-brigadeiro-sampaio",
      "name": "Mapa Brigadeiro Sampaio",
      "type": "MAP",
      "author": null,
      "current_version": null,
      "url": "https://openomsi.omsimods.com.br/conteudo/caio-millennium-brt-i-o500u",
      "source_url": "https://omsimods.com.br/",
      "image_url": null,
      "omsimodsbr_verified": true,
      "reports": {
        "total": 3,
        "works": 0,
        "works_with_issues": 3,
        "does_not_work": 0,
        "inconclusive": 0,
        "by_platform": {
          "WINDOWS": {
            "reports": 3,
            "works": 0,
            "works_with_issues": 3,
            "does_not_work": 0,
            "inconclusive": 0
          }
        }
      },
      "reports_with_issues": 3,
      "latest_tested_openomsi_version": "0.1.126",
      "latest_test_at": "2026-09-29T15:20:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1,
    "pages": 1
  }
}

3. Как разработчик openOMSI, посмотреть проблемы с текстурами в текущей версии

Фильтруйте отчёты по версии openOMSI и категории проблемы. Каждый отчёт содержит структурированные issue_categories и описание тестировщика.

GET https://openomsi.omsimods.com.br/api/public/v1/reports?openomsi_version=0.1.126&issue_category=TEXTURES&limit=50

Ответ (сокращённо)

{
  "data": [
    {
      "id": "cm0report0001",
      "content": {
        "id": "cm0grandparis01",
        "slug": "grand-paris-moulon",
        "name": "Grand Paris Moulon",
        "type": "MAP"
      },
      "content_version": null,
      "openomsi_version": "0.1.126",
      "platform": "WINDOWS",
      "architecture": "X64",
      "result": "WORKS_WITH_ISSUES",
      "fps": {
        "avg": 41,
        "min": 28,
        "max": 60
      },
      "load_time_seconds": 95,
      "device": {
        "label": "Desktop GTX 1060",
        "model": null,
        "os_version": "Windows 11",
        "cpu": "Ryzen 5 3600",
        "gpu": "GTX 1060 6GB",
        "ram_gb": 16
      },
      "issue_categories": [
        "TEXTURES"
      ],
      "issue_description": "Windows of some black buses render with wrong textures.",
      "notes": null,
      "tested_at": "2026-09-29T17:02:00.000Z",
      "screenshot_url": null,
      "author": {
        "display_name": "tester"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1,
    "pages": 1
  }
}

4. Обнаружить возможную регрессию между версиями

compare показывает один контент бок о бок в двух версиях; regressions перечисляет весь контент, который раньше работал, а теперь сообщает о проблемах. Результаты — лишь возможные регрессии, но не подтверждённые.

GET https://openomsi.omsimods.com.br/api/public/v1/compatibility/compare?content=grand-paris-moulon&from=0.1.121&to=0.1.126
GET https://openomsi.omsimods.com.br/api/public/v1/compatibility/regressions?from=0.1.121&to=0.1.126&type=BUS

Ответ (сокращённо)

{
  "changes": [
    {
      "platform": "WINDOWS",
      "from": {
        "works": 3,
        "works_with_issues": 0,
        "does_not_work": 0,
        "inconclusive": 0
      },
      "to": {
        "works": 1,
        "works_with_issues": 3,
        "does_not_work": 0,
        "inconclusive": 0
      },
      "from_reports": 3,
      "to_reports": 4,
      "possible_regression": true
    }
  ],
  "possible_regression": true
}

5. Подключить Discord-бота

Ищите по названию, затем формируйте ответ по первому элементу: название, платформа, результат, последняя протестированная версия и количество отчётов. Кэшируйте у себя.

GET https://openomsi.omsimods.com.br/api/public/v1/content?q=grand%20paris&platform=WINDOWS&limit=1

Ответ (сокращённо)

{
  "data": [
    {
      "name": "Grand Paris Moulon",
      "reports": {
        "total": 4,
        "works": 2,
        "works_with_issues": 2
      },
      "latest_tested_openomsi_version": "0.1.126"
    }
  ]
}

Пример ответа бота

Grand Paris Moulon
Windows
⚠ Работает с проблемами
Последнее тестирование: 0.1.126
Отчёты: 4

6. О каких проблемах на Android сообщают чаще всего?

Эндпоинт issues агрегирует категории с количеством отчётов и различного контента; эндпоинт platform добавляет наиболее часто упоминаемые устройства и FPS.

GET https://openomsi.omsimods.com.br/api/public/v1/issues?platform=ANDROID&openomsi_version=0.1.126
GET https://openomsi.omsimods.com.br/api/public/v1/platforms/android

Ответ (сокращённо)

{
  "data": [
    {
      "category": "TEXTURES",
      "reports": 31,
      "contents": 18
    },
    {
      "category": "PHYSICS",
      "reports": 22,
      "contents": 14
    }
  ]
}

7. Текущий релиз и загрузки

releases/latest возвращает версию, дату публикации, URL на GitHub и официальные файлы для загрузки по платформам и архитектурам.

GET https://openomsi.omsimods.com.br/api/public/v1/releases/latest

Ответ (сокращённо)

{
  "version": "0.1.126",
  "published_at": "2026-09-27T20:11:00.000Z",
  "github_url": "https://github.com/openOMSI-org/openOMSI/releases/tag/v0.1.126",
  "assets": [
    {
      "key": "android-arm64",
      "label": "Android ARM64",
      "platform": "ANDROID",
      "architecture": "ARM64",
      "type": "CLIENT",
      "name": "openOMSI-android-arm64.apk",
      "download_url": "https://github.com/openOMSI-org/openOMSI/releases/download/v0.1.126/openOMSI-android-arm64.apk",
      "size_bytes": 152043520
    }
  ]
}

8. Найти контент, который ещё никто не тестировал

has_reports=false выводит одобренный контент без отчётов; комбинируйте с type или q.

GET https://openomsi.omsimods.com.br/api/public/v1/content?has_reports=false&type=MAP&limit=50

Ответ (сокращённо)

{
  "data": [
    {
      "name": "…",
      "type": "MAP",
      "reports": {
        "total": 0
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 312,
    "pages": 7
  }
}

Эндпоинты

Все пути начинаются с https://openomsi.omsimods.com.br/api/public/v1. Полное машиночитаемое описание — документ OpenAPI.

ЭндпоинтЧто возвращает
GET /metaТаксономии, лимиты и версия API.
GET /statusПроверка работоспособности (тоже ограничена по частоте: не опрашивайте её).
GET /contentПоиск контента с итогами по отчётам, протестированными платформами и последней протестированной версией для каждого элемента.
GET /content/{slug}Один контент за один вызов: источники, совместимость, проблемы, производительность, протестированные версии, устройства и последние отчёты.
GET /reportsОтдельные отчёты со структурированными категориями проблем, FPS, оборудованием и датами.
GET /compatibilityАгрегация по версии openOMSI, платформе или типу контента.
GET /compatibility/compareОдин контент, сравниваемый между двумя версиями openOMSI.
GET /compatibility/regressionsВозможные регрессии между последовательными протестированными версиями.
GET /issuesКатегории проблем, ранжированные по отчётам и затронутому контенту.
GET /platforms/{platform}Агрегация по одной платформе (android, windows, linux, macos).
GET /devicesОборудование, указанное тестировщиками, сгруппированное и подсчитанное.
GET /runtime-reportsТесты устройств самого openOMSI (сессия могла так и не начаться): оборудование, ОС, до какого этапа дошёл запуск, графический API, очищенный текст ошибки и необязательный очищенный журнал (sanitized_log). Без какого-либо контента.
GET /runtime-reports/{id}Один тест устройства с очищенным журналом, если он есть.
GET /releases/latestТекущий релиз и официальные файлы для загрузки.
GET /releasesИстория релизов с постраничной навигацией.

Тесты устройств никогда не раскрывают исходный журнал, IP-адреса, адреса электронной почты, имена пользователей и идентификаторы аккаунтов: только технические данные и очищенный журнал. Это наблюдения сообщества, а не бенчмарк и не официальное требование.

Фильтры, пагинация, сортировка и поля

Параметры

ПараметрОписание
qТекстовый поиск по названиям и псевдонимам контента.
typeТип контента. Допускается список через запятую.
platformПлатформа, указанная в отчёте. Допускается список через запятую.
resultРезультат, сообщённый тестировщиком. Допускается список через запятую.
openomsi_versionВерсия openOMSI, на которой выполнялся тест.
issue_categoryКатегория проблемы, прикреплённая к отчёту (AUDIO принимается как псевдоним SOUND). Допускается список через запятую.
authorАвтор контента (частичное совпадение).
has_reportstrue: только протестированный контент; false: только контент, который ещё никто не тестировал.
sortПоле сортировки.
orderНаправление сортировки.
pageНомер страницы, начиная с 1.
limitКоличество элементов на странице (максимум 50).
fieldsСписок полей верхнего уровня через запятую, которые нужно оставить в каждом элементе (необязательно; по умолчанию элемент возвращается целиком).
contentSlug или id контента (точное совпадение) либо часть его названия.
architectureАрхитектура процессора, указанная в отчёте. Допускается список через запятую.
deviceТекст, содержащийся в названии устройства.
has_fpsТолько отчёты с указанным (true) или без указанного (false) значения FPS.
fromreports: протестировано в эту дату ISO или позже. compare/regressions: более старая версия openOMSI.
toreports: протестировано в эту дату ISO или раньше. compare/regressions: более новая версия openOMSI.
startup_stageДо какого этапа openOMSI дошёл на устройстве. Допускается список через запятую.
graphics_backendГрафический API, выбранный тестировщиком. Допускается список через запятую.
gpuТекст, содержащийся в названии GPU.
cpuТекст, содержащийся в названии CPU.
manufacturerПроизводитель устройства (частичное совпадение).
device_modelМодель устройства (частичное совпадение).
os_versionВерсия ОС (частичное совпадение).
media_indexing_observedAndroid: тестировщик сообщил, что галерея или сканер медиафайлов индексировал изображения OMSI (true) или нет (false).
has_logТолько тесты с очищенным журналом (true) или без него (false).
include_logВключить sanitized_log в каждый элемент (по умолчанию false: в списке указывается только has_sanitized_log).

Enums / Таксономии

Сгенерировано из собственных списков приложения. AUDIO принимается в фильтрах как псевдоним SOUND.

ContentType

ADDONMAPBUSVEHICLEMODSCENERYOBJECTSPLINEPLUGINTOOLOTHER

CompatibilityResult

WORKSWORKS_WITH_ISSUESDOES_NOT_WORKINCONCLUSIVE

Platform

ANDROIDWINDOWSLINUXMACOS

Architecture

X86X64ARM64UNKNOWN

IssueCategory

GRAPHICSTEXTURESPHYSICSSCRIPTSSOUNDCOLLISIONSPERFORMANCELOADINGCONTROLSMULTIPLAYERINTERFACECRASHOTHER

Данные о производительности

FPS и время загрузки — данные, СООБЩАЕМЫЕ ПОЛЬЗОВАТЕЛЯМИ, а не контролируемый бенчмарк. В статистике в первую очередь используется медиана, и всегда указывается размер выборки (samples), а также min и max.

Кэш, CORS и версионирование

Рекомендации по интеграции

О данных

Отчёты сообщества — это наблюдения, а не авторитетная сертификация совместимости. Один отчёт не означает ни «этот мод совместим», ни «это ошибка openOMSI». Учитывайте количество выборок, версию openOMSI, платформу, оборудование, версию контента, категорию проблемы и согласованность отчётов между собой.

Конфиденциальность

Ответы никогда не содержат Discord ID, адреса электронной почты, IP-адреса, сессии, подписки на уведомления, данные модерации или идентификаторы устройств. Отчёты показывают только публичное отображаемое имя и оборудование, которое тестировщик решил опубликовать. В отчёте issue_categories структурировано, а issue_description — это единственное свободное текстовое описание тестировщика для всего отчёта.

https://openomsi.omsimods.com.br/api/openapi.json

Независимая база сообщества, которую ведёт Portal OmsiModsBR. Не является официальной сертификацией проекта openOMSI или авторов содержимого.

OMSI и openOMSI принадлежат их соответствующим авторам/правообладателям. Этот сайт не распространяет проприетарное содержимое: ссылки ведут на первоисточники, а результаты — это индивидуальные тесты, отправленные пользователями.

Публичный API | openOMSI Compatibility