PT

A API pública

O diretório de jogos pode ser lido em JSON, sem conta: para outro site, um aplicativo, um bot…

A API é somente leitura e permite chamadas a partir de qualquer site (CORS). As respostas ficam em cache por um minuto.

Os jogos

Parâmetro
category uma categoria (o slug dela)
kind original (criação), cpc (remake de Amstrad CPC), port (port)
order[rating], order[plays], order[publishedAt], order[title] a ordenação, asc ou desc; vários em sequência para desempatar. Por padrão: os mais recentes primeiro
page, itemsPerPage 30 jogos por página, até 100
curl -g -H 'Accept: application/json' 'https://<ce site>/api/games?category=arcade&order[rating]=desc'

Cada jogo:

Campo
slug, title, description
category, kind a categoria (slug), o tipo de projeto
author o autor (identificador do GitHub)
rating, ratings a nota média de 5 (null sem votos), o número de votos
plays o número de partidas iniciadas
engine, publishedAt a versão do motor JumPHP, a data da última publicação
forkOf o jogo do qual ele é fork, senão null
url, play, source a página dele, o jogo em tela cheia, o código navegável
image a imagem de 640 × 360 (null se não tiver)
repository, manifest o repositório GitHub, a lista dos arquivos publicados (modo remoto do JumPHP)

A ordenação por nota é a mesma da página dos jogos: a média é puxada para 3 enquanto um jogo tem poucos votos (três votos fantasmas), para que um único 5 de 5 não passe à frente de muitos 4,5.

Páginas e JSON-LD

Em JSON simples (Accept: application/json), uma lista é um array. Em JSON-LD (Accept: application/ld+json, o formato padrão), ela também informa o número total (totalItems) e os endereços das 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" }
}

Erros: 404 para um jogo ou uma categoria que não existe (ou não está mais listado), 422 para um parâmetro inválido (kind=zzz), no formato Problem Details (application/problem+json).