DE

Die öffentliche API

Das Spieleverzeichnis lässt sich ohne Konto als JSON auslesen: für eine andere Website, eine App, einen Bot …

Die API ist schreibgeschützt und erlaubt Aufrufe von jeder Website aus (CORS). Die Antworten werden eine Minute lang zwischengespeichert.

Die Spiele

Parameter
category eine Kategorie (ihr slug)
kind original (eigenes Spiel), cpc (Amstrad-CPC-Remake), port (Portierung)
order[rating], order[plays], order[publishedAt], order[title] die Sortierung, asc oder desc; mehrere hintereinander zum Auflösen von Gleichständen. Standard: die neuesten zuerst
page, itemsPerPage 30 Spiele pro Seite, bis zu 100
curl -g -H 'Accept: application/json' 'https://<diese Website>/api/games?category=arcade&order[rating]=desc'

Jedes Spiel:

Feld
slug, title, description
category, kind seine Kategorie (slug), seine Projektart
author sein Autor (GitHub-Kennung)
rating, ratings seine durchschnittliche Bewertung von 5 (null ohne Stimme), die Anzahl der Stimmen
plays die Anzahl der gestarteten Spielrunden
engine, publishedAt die Version der JumPHP-Engine, das Datum der letzten Veröffentlichung
forkOf das Spiel, von dem es ein Fork ist, sonst null
url, play, source seine Seite, das Spiel im Vollbild, sein durchsuchbarer Quellcode
image sein Bild mit 640 × 360 (null, wenn es keines hat)
repository, manifest sein GitHub-Repository, die Liste seiner veröffentlichten Dateien (Remote-Modus von JumPHP)

Die Sortierung nach Bewertung ist dieselbe wie auf der Spieleseite: Der Durchschnitt wird zu 3 hingezogen, solange ein Spiel wenige Stimmen hat (drei Geisterstimmen), damit eine einzige 5 von 5 nicht vor vielen 4,5 landet.

Seiten und JSON-LD

Bei einfachem JSON (Accept: application/json) ist eine Liste ein Array. Bei JSON-LD (Accept: application/ld+json, dem Standardformat) liefert sie zusätzlich die Gesamtzahl (totalItems) und die Adressen der Seiten (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" }
}

Fehler: 404 für ein Spiel oder eine Kategorie, die nicht existiert (oder nicht mehr gelistet ist), 422 für einen ungültigen Parameter (kind=zzz), im Format Problem Details (application/problem+json).