公開API
ゲームのディレクトリは、アカウントなしでJSONとして読み取れます:他のサイト、アプリ、ボットなどから利用できます。
- インタラクティブなドキュメント(OpenAPI):/api/docs。各呼び出しを試せます。生の定義は:/api/docs.jsonopenapi
- ゲーム一覧:
GET /api/games - 1つのゲーム:
GET /api/games/{slug} - カテゴリ一覧:
GET /api/categories、1つのカテゴリ:GET /api/categories/{slug}
APIは読み取り専用で、どのサイトからの呼び出しも許可されています(CORS)。レスポンスは1分間キャッシュされます。
ゲーム
| パラメータ | |
|---|---|
category |
カテゴリ(そのslug) |
kind |
original(オリジナル作品)、cpc(Amstrad CPCリメイク)、port(移植) |
order[rating], order[plays], order[publishedAt], order[title] |
並べ替え。ascまたはdesc。同順位を決めるために、複数を続けて指定できます。初期設定は、新しいものから順 |
page, itemsPerPage |
1ページ30ゲーム、最大100まで |
curl -g -H 'Accept: application/json' 'https://<ce site>/api/games?category=arcade&order[rating]=desc'
各ゲームの項目:
| フィールド | |
|---|---|
slug, title, description |
|
category, kind |
カテゴリ(slug)、プロジェクトの種類 |
author |
作者(GitHubのID) |
rating, ratings |
5点満点の平均評価(投票がなければnull)、投票数 |
plays |
開始されたプレイの回数 |
engine, publishedAt |
JumPHPエンジンのバージョン、最後に公開された日付 |
forkOf |
フォーク元のゲーム。なければnull |
url, play, source |
ゲームのページ、フルスクリーンのゲーム、閲覧できるソースコード |
image |
640 × 360の画像(ない場合はnull) |
repository, manifest |
GitHubリポジトリ、公開されているファイルの一覧(JumPHPのリモートモード) |
評価順の並べ替えは、ゲーム一覧ページと同じです。投票が少ないゲームでは、平均値が3に近づくように補正されます(仮の投票を3票加えます)。これは、5点満点がたった1つあるだけのゲームが、4.5点を多数集めたゲームより上に来ないようにするためです。
ページネーションとJSON-LD
通常のJSON(Accept: application/json)では、一覧は配列で返ります。JSON-LD(Accept: application/ld+json、初期設定の形式)では、総数(totalItems)とページのアドレス(view.next、view.last)も返ります。
{
"@id": "/api/games",
"totalItems": 42,
"member": [ { "@id": "/api/games/pong", "slug": "pong", "title": "PONG", "…": "…" } ],
"view": { "next": "/api/games?page=2", "last": "/api/games?page=2" }
}
エラー:存在しない(または、もう掲載されていない)ゲームやカテゴリには404、不正なパラメータ(kind=zzz)には422を返します。形式はProblem Details(application/problem+json)です。