La API pública
El directorio de juegos se lee en JSON, sin cuenta: para otro sitio, una aplicación, un bot…
- Documentación interactiva (OpenAPI): /api/docs, se puede probar cada llamada; la descripción en bruto: /api/docs.jsonopenapi
- Los juegos:
GET /api/games - Un juego:
GET /api/games/{slug} - Las categorías:
GET /api/categories, una categoría:GET /api/categories/{slug}
La API es de solo lectura y permite llamadas desde cualquier sitio (CORS). Las respuestas se guardan en caché un minuto.
Los juegos
| Parámetro | |
|---|---|
category |
una categoría (su slug) |
kind |
original (creación), cpc (remake de Amstrad CPC), port (port) |
order[rating], order[plays], order[publishedAt], order[title] |
la ordenación, asc o desc; varios seguidos para desempatar. Por defecto: los más recientes primero |
page, itemsPerPage |
30 juegos por página, hasta 100 |
curl -g -H 'Accept: application/json' 'https://<ce site>/api/games?category=arcade&order[rating]=desc'
Cada juego:
| Campo | |
|---|---|
slug, title, description |
|
category, kind |
su categoría (slug), su tipo de proyecto |
author |
su autor (identificador de GitHub) |
rating, ratings |
su valoración media sobre 5 (null sin votos), el número de votos |
plays |
el número de partidas iniciadas |
engine, publishedAt |
la versión del motor JumPHP, la fecha de la última publicación |
forkOf |
el juego del que es fork, si no null |
url, play, source |
su página, el juego a pantalla completa, su código navegable |
image |
su imagen de 640 × 360 (null si no tiene) |
repository, manifest |
su repositorio de GitHub, la lista de sus archivos publicados (modo remoto de JumPHP) |
La ordenación por valoración es la misma que en la página de juegos: la media se acerca a 3 mientras un juego tiene pocos votos (tres votos fantasma), para que un único 5 sobre 5 no adelante a muchos 4,5.
Páginas y JSON-LD
En JSON simple (Accept: application/json), una lista es un array. En JSON-LD
(Accept: application/ld+json, el formato por defecto), también da el número total (totalItems) y las
direcciones de las páginas (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" }
}
Errores: 404 para un juego o una categoría que no existe (o que ya no aparece en el listado), 422 para un parámetro
no válido (kind=zzz), en formato Problem Details (application/problem+json).