공개 API
게임 디렉터리는 계정 없이 JSON으로 읽을 수 있어요. 다른 사이트, 애플리케이션, 봇에서 사용해 보세요.
- 대화형 문서(OpenAPI): /api/docs에서 각 호출을 직접 시험해 볼 수 있어요. 원본 명세: /api/docs.jsonopenapi
- 게임 목록:
GET /api/games - 게임 하나:
GET /api/games/{slug} - 카테고리 목록:
GET /api/categories, 카테고리 하나:GET /api/categories/{slug}
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)이에요.