Publiczne API
Katalog gier można czytać w JSON, bez konta: dla innej strony, aplikacji, bota…
- Interaktywna dokumentacja (OpenAPI): /api/docs, można w niej wypróbować każde wywołanie; surowy opis: /api/docs.jsonopenapi
- Gry:
GET /api/games - Gra:
GET /api/games/{slug} - Kategorie:
GET /api/categories, kategoria:GET /api/categories/{slug}
API jest tylko do odczytu i zezwala na wywołania z dowolnej strony (CORS). Odpowiedzi są przechowywane w pamięci podręcznej przez minutę.
Gry
| Parametr | |
|---|---|
category |
kategoria (jej slug) |
kind |
original (oryginalna gra), cpc (remake na Amstrad CPC), port (port) |
order[rating], order[plays], order[publishedAt], order[title] |
sortowanie, asc lub desc; kilka po kolei, aby rozstrzygać remisy. Domyślnie: najnowsze najpierw |
page, itemsPerPage |
30 gier na stronę, do 100 |
curl -g -H 'Accept: application/json' 'https://<ce site>/api/games?category=arcade&order[rating]=desc'
Każda gra:
| Pole | |
|---|---|
slug, title, description |
|
category, kind |
jej kategoria (slug), rodzaj projektu |
author |
jej autor (identyfikator GitHub) |
rating, ratings |
średnia ocena w skali do 5 (null bez głosów), liczba głosów |
plays |
liczba rozpoczętych rozgrywek |
engine, publishedAt |
wersja silnika JumPHP, data ostatniej publikacji |
forkOf |
gra, której jest forkiem, w przeciwnym razie null |
url, play, source |
jej strona, gra na pełnym ekranie, jej kod do przeglądania |
image |
jej obraz 640 × 360 (null, jeśli go nie ma) |
repository, manifest |
jej repozytorium GitHub, lista jej opublikowanych plików (tryb zdalny JumPHP) |
Sortowanie według oceny jest takie samo jak na stronie gier: średnia jest ściągana w stronę 3, dopóki gra ma mało głosów (trzy widmowe głosy), aby pojedyncza ocena 5 na 5 nie wyprzedzała wielu ocen 4,5.
Strony i JSON-LD
W zwykłym JSON (Accept: application/json) lista jest tablicą. W JSON-LD (Accept: application/ld+json, format domyślny) podaje też łączną liczbę (totalItems) i adresy stron (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" }
}
Błędy: 404 dla gry lub kategorii, która nie istnieje (albo nie jest już wyświetlana), 422 dla nieprawidłowego parametru (kind=zzz), w formacie Problem Details (application/problem+json).