Публічний 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).