JA

公開API

ゲームのディレクトリは、アカウントなしでJSONとして読み取れます:他のサイト、アプリ、ボットなどから利用できます。

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)です。