ES

La API pública

El directorio de juegos se lee en JSON, sin cuenta: para otro sitio, una aplicación, un bot…

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