PL

Publiczne API

Katalog gier można czytać w JSON, bez konta: dla innej strony, aplikacji, bota…

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).