Die öffentliche API
Das Spieleverzeichnis lässt sich ohne Konto als JSON auslesen: für eine andere Website, eine App, einen Bot …
- Interaktive Dokumentation (OpenAPI): /api/docs, dort kannst du jeden Aufruf ausprobieren; die Rohbeschreibung: /api/docs.jsonopenapi
- Die Spiele:
GET /api/games - Ein Spiel:
GET /api/games/{slug} - Die Kategorien:
GET /api/categories, eine Kategorie:GET /api/categories/{slug}
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).