Download OpenAPI specification:
人狼本部のサイト(WordPress)に、開催予定の村と事前予約の数を渡す API(ドラフト版)。
+09:00)で返す。「今日」の区切りも日本時間。servers のアドレスだけ。X-API-Key ヘッダーで認証できる(v2 と同じ形)。CORS は要らない。Access-Control-Allow-Origin でサイトのオリジンだけを許すが、防げるのはほかのサイトのブラウザからの利用だけで、ブラウザ以外からの取得は防げない。CORS のヘッダーは、すべての応答(200・304・500・503)に付ける。JS から ETag を読むなら Access-Control-Expose-Headers: ETag も要る。If-None-Match を手で付けるなら、プリフライト(OPTIONS)への応答も要る。今日(日本時間)以降に開催する村を返す。
generatedAt)の日本時間で判定する。日付が変わった直後や開始の直後は、次の集計まで(最大 5 分)前の判定のまま返ることがある。reservation が付く。それ以外は null。sources で分かる。| If-None-Match | string Example: "5f2a9c" 前回の応答の |
{- "generatedAt": "2026-10-25T16:05:00+09:00",
- "sources": {
- "sheet": {
- "ok": true,
- "lastAttemptAt": "2026-10-25T16:05:00+09:00",
- "lastSuccessAt": "2026-10-25T16:05:00+09:00"
}, - "discord": {
- "ok": true,
- "lastAttemptAt": "2026-10-25T16:05:00+09:00",
- "lastSuccessAt": "2026-10-25T16:05:00+09:00"
}
}, - "events": [
- {
- "id": "20261205-2100-1a2b3c4d",
- "date": "2026-12-05",
- "startsAt": "2026-12-05T21:00:00+09:00",
- "gm": "サンプルA",
- "title": "☘️初心者歓迎☘️Discord 13人村",
- "tool": "discord",
- "capacity": 13,
- "capacityLabel": "13",
- "reservation": {
- "status": "open",
- "slots": [
- {
- "emoji": "1️⃣",
- "reactionCount": 6,
- "entrants": 5,
- "remaining": 8
}
], - "updatedAt": "2026-10-25T16:05:00+09:00"
}
}, - {
- "id": "20261212-2100-1a2b3c4d",
- "date": "2026-12-12",
- "startsAt": "2026-12-12T21:00:00+09:00",
- "gm": "サンプルA",
- "title": "【お遊び村】Discord 変則ルール村",
- "tool": "discord",
- "capacity": 13,
- "capacityLabel": "最大13",
- "reservation": {
- "status": "unlinked",
- "messageUrl": null,
- "slots": [ ],
- "updatedAt": null
}
}, - {
- "id": "20261219-2200-5e6f7a8b",
- "date": "2026-12-19",
- "startsAt": "2026-12-19T22:00:00+09:00",
- "gm": "サンプルB",
- "title": "Disocrd 時短13人村 ※2戦予定",
- "tool": "discord",
- "capacity": 13,
- "capacityLabel": "13",
- "reservation": {
- "status": "open",
- "slots": [
- {
- "emoji": "🇦",
- "reactionCount": 14,
- "entrants": 13,
- "remaining": 0
}, - {
- "emoji": "🇧",
- "reactionCount": 9,
- "entrants": 8,
- "remaining": 5
}
], - "updatedAt": "2026-10-25T16:05:00+09:00"
}
}, - {
- "id": "20261220-2100-5e6f7a8b",
- "date": "2026-12-20",
- "startsAt": "2026-12-20T21:00:00+09:00",
- "gm": "サンプルB",
- "title": "Zoom 13人村 初心者歓迎",
- "tool": "zoom",
- "capacity": 13,
- "capacityLabel": "13",
- "reservation": {
- "status": "closed",
- "slots": [
- {
- "emoji": "2️⃣",
- "reactionCount": 10,
- "entrants": 9,
- "remaining": 4
}
], - "updatedAt": "2026-10-24T22:30:00+09:00"
}
}, - {
- "id": "20261224-2100-9c0d1e2f",
- "date": "2026-12-24",
- "startsAt": "2026-12-24T21:00:00+09:00",
- "gm": null,
- "title": "特別企画村",
- "tool": null,
- "capacity": null,
- "capacityLabel": "-",
- "reservation": null
}, - {
- "id": "20261226-2100-3a4b5c6d",
- "date": "2026-12-26",
- "startsAt": "2026-12-26T21:00:00+09:00",
- "gm": "サンプルC",
- "title": "Discord 11人村 初心者歓迎",
- "tool": "discord",
- "capacity": 11,
- "capacityLabel": "11",
- "reservation": {
- "status": "full",
- "slots": [
- {
- "emoji": "1️⃣",
- "reactionCount": 12,
- "entrants": 11,
- "remaining": 0
}
], - "updatedAt": "2026-10-25T16:05:00+09:00"
}
}
]
}