De openbare API
Het overzicht van de games is zonder account als JSON te lezen: voor een andere site, een app, een bot…
- Interactieve documentatie (OpenAPI): /api/docs, je kunt er elke aanroep uitproberen; de ruwe beschrijving: /api/docs.jsonopenapi
- De games:
GET /api/games - Eén game:
GET /api/games/{slug} - De categorieën:
GET /api/categories, één categorie:GET /api/categories/{slug}
De API is alleen-lezen en staat aanroepen vanaf elke site toe (CORS). De antwoorden worden een minuut in de cache bewaard.
De games
| Parameter | |
|---|---|
category |
een categorie (haar slug) |
kind |
original (eigen game), cpc (Amstrad CPC-remake), port (port) |
order[rating], order[plays], order[publishedAt], order[title] |
de sortering, asc of desc; meerdere achter elkaar om gelijke standen te beslissen. Standaard: de nieuwste eerst |
page, itemsPerPage |
30 games per pagina, tot 100 |
curl -g -H 'Accept: application/json' 'https://<ce site>/api/games?category=arcade&order[rating]=desc'
Elke game:
| Veld | |
|---|---|
slug, title, description |
|
category, kind |
zijn categorie (slug), zijn soort project |
author |
zijn maker (GitHub-gebruikersnaam) |
rating, ratings |
zijn gemiddelde cijfer op 5 (null zonder stemmen), het aantal stemmen |
plays |
het aantal gestarte potjes |
engine, publishedAt |
de versie van de JumPHP-engine, de datum van de laatste publicatie |
forkOf |
de game waarvan hij een fork is, anders null |
url, play, source |
zijn pagina, de game op volledig scherm, zijn doorbladerbare code |
image |
zijn afbeelding van 640 × 360 (null als hij er geen heeft) |
repository, manifest |
zijn GitHub-repository, de lijst van zijn gepubliceerde bestanden (externe modus van JumPHP) |
De sortering op cijfer is dezelfde als op de gamespagina: het gemiddelde wordt naar 3 getrokken zolang een game weinig stemmen heeft (drie spookstemmen), zodat één enkele 5 op 5 niet voor veel games met een 4,5 komt.
Pagina's en JSON-LD
In gewone JSON (Accept: application/json) is een lijst een array. In JSON-LD
(Accept: application/ld+json, het standaardformaat) geeft ze ook het totale aantal (totalItems) en de
adressen van de pagina's (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" }
}
Fouten: 404 voor een game of categorie die niet bestaat (of niet meer wordt getoond), 422 voor een ongeldige
parameter (kind=zzz), in het formaat Problem Details (application/problem+json).