KO

공개 API

게임 디렉터리는 계정 없이 JSON으로 읽을 수 있어요. 다른 사이트, 애플리케이션, 봇에서 사용해 보세요.

API는 읽기 전용이고 어느 사이트에서든 호출할 수 있어요(CORS). 응답은 1분 동안 캐시돼요.

게임

매개변수
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://<ce site>/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 쪽으로 보정돼요(가상의 투표 3개). 그래서 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, 잘못된 매개변수(kind=zzz)는 422이며, Problem Details 형식(application/problem+json)이에요.