公開API
openOMSI 上で動作するマップ、バス、車両、MOD、オブジェクト、プラグイン、ツールに関するコミュニティ互換性レポートへ、構造化された読み取り専用のアクセスを提供します。openOMSI の開発者、分析ツール、ボット、連携システム向けに作られています。
これは openOMSI のバグを報告するためのAPIではありません。エンジン自体のバグはプロジェクトの公式チャンネルへお寄せください。ここではコミュニティがテストした結果を読み取ることのみができます。
⚠ 公開APIのレート制限
IPごとに 60 分あたり 6 リクエスト
このAPIは公開されており認証を必要としないため、意図的に厳しいレート制限をかけています。
- レスポンスをローカルにキャッシュするよう連携を設計してください。
- APIを継続的にポーリングしないでください。
- 可能な限り集約エンドポイントを使ってください。1回の呼び出しでほとんどの疑問に答えられます。
制限はすべての公開エンドポイントで共有され、外部の利用者にのみ適用されます。Webサイト自体はこの枠を使用しません。
クイックスタート
ベース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)
レート制限、ヘッダー、エラー
- すべてのレスポンスに RateLimit-Limit、RateLimit-Remaining、RateLimit-Reset が含まれます。制限に達すると、APIは Retry-After(秒)付きで 429 を返します。
- 条件付きリクエスト(If-None-Match / If-Modified-Since)はボディなしで 304 を返しますが、304 も割り当てにカウントされます。
- エラーは常に同じ形式 {"error": code, "message": text} で返され、ステータスは 400、404、429、500 です。スタックトレースは一切返されません。
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 で動作しますか?
1回の呼び出しで、プラットフォーム別の概要、問題カテゴリ、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 でテストされたマップを一覧表示する
type とプラットフォームで絞り込みます。各アイテムには、合計数、テスト済みプラットフォーム、最後にテストされた 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 は1つのコンテンツを2つのバージョンで並べて表示し、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 は、バージョン、公開日、GitHub の URL、そしてプラットフォームとアーキテクチャ別の公式ダウンロードアセットを返します。
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} | 1回の呼び出しで1つのコンテンツの情報: ソース、互換性、問題、パフォーマンス、テスト済みバージョン、デバイス、最新のレポート。 |
GET /reports | 個別のレポート。構造化された問題カテゴリ、FPS、ハードウェア、日付を含みます。 |
GET /compatibility | openOMSI バージョン、プラットフォーム、コンテンツタイプ別の集計。 |
GET /compatibility/compare | 1つのコンテンツを2つの openOMSI バージョン間で比較します。 |
GET /compatibility/regressions | 連続してテストされたバージョン間のリグレッションの可能性。 |
GET /issues | レポート数と影響を受けるコンテンツ数でランク付けした問題カテゴリ。 |
GET /platforms/{platform} | 1つのプラットフォーム(android、windows、linux、macos)の集計。 |
GET /devices | テスターが入力したハードウェアを、グループ化して集計したもの。 |
GET /runtime-reports | openOMSI 自体のデバイステスト(セッションが一度も開始されていない場合もあります): ハードウェア、OS、到達した段階、グラフィックスAPI、サニタイズされたエラーテキスト、および任意のサニタイズされたログ。コンテンツは含まれません。 |
GET /runtime-reports/{id} | 1件のデバイステスト。サニタイズされたログがある場合はそれも含まれます。 |
GET /releases/latest | 現在のリリースと公式ダウンロードアセット。 |
GET /releases | ページネーション付きのリリース履歴。 |
デバイステストでは、元のログ、IPアドレス、メールアドレス、ユーザー名、アカウント識別子は一切公開されません。公開されるのは技術データとサニタイズされたログのみです。これらはコミュニティの観察結果であり、ベンチマークでも公式の要件でもありません。
フィルター、ページネーション、ソート、フィールド
- ページネーション: page(1から)と limit(デフォルト 20、最大 50)。一覧のレスポンスは {"data": [...], "pagination": {page, limit, total, pages}} の形式です。
- ソート: sort = reports、recent、name、latest_test、issues のいずれか。order = asc または desc。
- オプションの fields=name,slug,type を指定すると、各アイテムからそれらのトップレベルフィールドのみが残ります。デフォルトのレスポンスはすでに完全な内容です。
- enum フィルターは大文字小文字を区別せず、カンマ区切りのリストを受け付けます(platform=ANDROID,WINDOWS)。
- コンテンツ検索でレポートのフィルター(platform、result、openomsi_version、issue_category)を使用した場合、件数は条件に一致するレポートを対象にします。
パラメーター
| パラメーター | 説明 |
|---|
q | コンテンツ名とエイリアスを対象にしたテキスト検索。 |
type | コンテンツの種類。 カンマ区切りのリストを指定できます。 |
platform | レポートのプラットフォーム。 カンマ区切りのリストを指定できます。 |
result | テスターが報告した結果。 カンマ区切りのリストを指定できます。 |
openomsi_version | テストを実行した openOMSI のバージョン。 |
issue_category | レポートに付与された問題カテゴリ(AUDIO は SOUND のエイリアスとして受け付けられます)。 カンマ区切りのリストを指定できます。 |
author | コンテンツの作者(部分一致)。 |
has_reports | true: テスト済みのコンテンツのみ、false: まだ誰もテストしていないコンテンツのみ。 |
sort | ソートするフィールド。 |
order | ソート順。 |
page | ページ番号(1 から開始)。 |
limit | 1 ページあたりの件数(最大 50)。 |
fields | 各アイテムに残す最上位フィールドをカンマ区切りで指定(省略可。既定ではアイテム全体を返します)。 |
content | コンテンツの slug または id(完全一致)、もしくは名前の一部。 |
architecture | レポートの CPU アーキテクチャ。 カンマ区切りのリストを指定できます。 |
device | デバイス名に含まれるテキスト。 |
has_fps | FPS 値があるレポート(true)またはないレポート(false)のみ。 |
from | reports: この ISO 日付以降にテスト。compare/regressions: 古い方の openOMSI バージョン。 |
to | reports: この ISO 日付以前にテスト。compare/regressions: 新しい方の openOMSI バージョン。 |
startup_stage | デバイス上で openOMSI が到達した段階。 カンマ区切りのリストを指定できます。 |
graphics_backend | テスターが選択したグラフィックスAPI。 カンマ区切りのリストを指定できます。 |
gpu | GPU 名に含まれるテキスト。 |
cpu | CPU 名に含まれるテキスト。 |
manufacturer | デバイスの製造元(部分一致)。 |
device_model | デバイスのモデル(部分一致)。 |
os_version | OS のバージョン(部分一致)。 |
media_indexing_observed | Android: ギャラリーまたはメディアスキャナーが OMSI の画像をインデックス化していた(true)か、していなかった(false)かをテスターが報告したもの。 |
has_log | サニタイズされたログがあるテスト(true)またはないテスト(false)のみ。 |
include_log | 各アイテムに sanitized_log を含めます(デフォルトは false: 一覧には has_sanitized_log のみが表示されます)。 |
Enum / 分類
アプリケーション自身のリストから生成されています。フィルターでは AUDIO が SOUND の別名として使用できます。
ContentType
ADDONMAPBUSVEHICLEMODSCENERYOBJECTSPLINEPLUGINTOOLOTHER
CompatibilityResult
WORKSWORKS_WITH_ISSUESDOES_NOT_WORKINCONCLUSIVE
Platform
ANDROIDWINDOWSLINUXMACOS
Architecture
X86X64ARM64UNKNOWN
IssueCategory
GRAPHICSTEXTURESPHYSICSSCRIPTSSOUNDCOLLISIONSPERFORMANCELOADINGCONTROLSMULTIPLAYERINTERFACECRASHOTHER
パフォーマンスデータ
FPS とロード時間はユーザーが報告したデータであり、統制されたベンチマークではありません。統計はまず中央値を使用し、常にサンプル数(samples)と、最小値・最大値を含みます。
キャッシュ、CORS、バージョニング
- レスポンスには Cache-Control、ETag、Last-Modified が含まれます。ブラウザーは数分間再利用できますが、共有キャッシュは常に割り当てが適用されるよう再検証しなければなりません。
- CORS は GET、HEAD、OPTIONS のみ許可されています。書き込みメソッドはありません。
- APIはパスでバージョン管理されています(/api/public/v1)。以前のバージョンなしのパスは v1 へリダイレクト(308)されます。破壊的変更は新しいバージョンとしてのみ提供されます。
- openOMSI Compatibility のWebサイトは自身のデータベースを直接読み取り、このAPIやその割り当てを使用することはありません。
連携のガイドライン
- データをローカルにキャッシュしてください。
- ポーリングは避け、必要なときだけリクエストしてください。
- 集約エンドポイント(content detail、compatibility、issues、platforms)を使用してください。
- Retry-After と RateLimit-* ヘッダーを尊重してください。
- APIに同等のデータがある場合は、HTMLをスクレイピングしないでください。
- コミュニティのレポートからエンジンの確定的なバグを推測しないでください。
- 分析には常に openOMSI のバージョンを含めてください。
データについて
コミュニティのレポートは観察結果であり、公式な互換性の認証ではありません。1件のレポートだけでは「この MOD は互換性がある」とも「これは openOMSI のバグだ」とも言えません。サンプル数、openOMSI バージョン、プラットフォーム、ハードウェア、コンテンツのバージョン、問題カテゴリ、レポート間の一貫性を考慮してください。
プライバシー
レスポンスには、Discord ID、メールアドレス、IPアドレス、セッション、通知の購読、モデレーションデータ、デバイス識別子は一切含まれません。レポートには、公開表示名と、テスターが公開を選んだハードウェアのみが表示されます。レポートでは issue_categories は構造化されており、issue_description はレポート全体に対するテスターの自由記述の説明です。
https://openomsi.omsimods.com.br/api/openapi.json