UK

Публічний API

Каталог ігор читається у форматі JSON без акаунта: для іншого сайту, застосунку, бота…

  • Інтерактивна документація (OpenAPI): /api/docs, де можна спробувати кожен виклик; сирий опис: /api/docs.jsonopenapi
  • Ігри: GET /api/games
  • Одна гра: GET /api/games/{slug}
  • Категорії: GET /api/categories, одна категорія: GET /api/categories/{slug}

API доступний лише для читання та дозволяє виклики з будь-якого сайту (CORS). Відповіді кешуються на одну хвилину.

Ігри

Параметр
category категорія (її slug)
kind original (оригінальна гра), cpc (рімейк Amstrad CPC), port (портування)
order[rating], order[plays], order[publishedAt], order[title] сортування, asc або desc; можна кілька поспіль для розв'язання нічиїх. За замовчуванням: найновіші першими
page, itemsPerPage 30 ігор на сторінку, до 100
curl -g -H 'Accept: application/json' 'https://<цей сайт>/api/games?category=arcade&order[rating]=desc'

Кожна гра:

Поле
slug, title, description
category, kind її категорія (slug), тип проєкту
author її автор (ідентифікатор GitHub)
rating, ratings її середня оцінка з 5 (null без голосів), кількість голосів
plays кількість запущених партій
engine, publishedAt версія рушія JumPHP, дата останньої публікації
forkOf гра, форком якої вона є, інакше null
url, play, source її сторінка, гра на весь екран, її код для перегляду
image її зображення 640 × 360 (null, якщо його немає)
repository, manifest її репозиторій GitHub, перелік її опублікованих файлів (віддалений режим JumPHP)

Сортування за оцінкою таке саме, як на сторінці ігор: середнє значення притягується до 3, поки в гри мало голосів (три віртуальні голоси), щоб одна оцінка 5 з 5 не випередила багато ігор з 4,5.

Сторінки та JSON-LD

У простому JSON (Accept: application/json) список — це масив. У JSON-LD (Accept: application/ld+json, формат за замовчуванням) він також повертає загальну кількість (totalItems) та адреси сторінок (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" }
}

Помилки: 404 для гри або категорії, якої не існує (або яку більше не показано в каталозі), 422 для некоректного параметра (kind=zzz), у форматі Problem Details (application/problem+json).