Appearance
API一覧
WordPress REST 等、サーバー側 API-* 設計書の ID レジストリ と、各 API 名前空間のルート・権限の正。
設計書コード(ID)一覧
| 設計書コード | 機能名(概要) | 詳細 | 備考 |
|---|---|---|---|
| API-001 | 日別記事 REST v1 | § 詳細 | - |
| API-003 | 新台情報 REST v1 | § 詳細 | - |
| API-004 | イベントマスタ REST v1 | § 詳細 | - |
| API-005 | 外部データ取込 REST v1 | § 詳細 | - |
| API-006 | 運用確認 REST v1 | § 詳細 | - |
| API-007 | X告知 REST v1 | § 詳細 | - |
| API-008 | 誕生日 REST v1 | § 詳細 | - |
| API-009 | おすすめ台 REST v1 | § 詳細 | - |
API-002(commerce/v1 Stripe Webhook)は削除済み。国内代行導入時に REST を再定義する。
API-001 日別記事 REST(daily-article/v1)
path
/wp-json/daily-article/v1/
エンドポイント一覧
| code | path | method | 名称・役割 | 主な登録元 | 設計書 |
|---|---|---|---|---|---|
API-001-1 | /async-ranking | GET | ランキング非同期取得 | AsyncLoadingHandler | API-001-1 |
API-001-2 | /async-heatmap-detail | GET | ヒートマップ詳細(type 必須) | AsyncLoadingHandler | API-001-2 |
API-001-9 | /async-heatmap-simple | GET | ヒートマップ(簡易)非同期取得 | AsyncLoadingHandler | API-001-9 |
API-001-3 | /async-end-number | GET | 末尾データ非同期取得 | AsyncLoadingHandler | API-001-3 |
API-001-4 | /async-kishu-search | GET | 機種指定データ検索 | AsyncLoadingHandler | API-001-4 |
API-001-5 | /what-day-options | GET | 〇〇の日オプション | WhatDayOptionsHandler | API-001-5 |
API-001-6 | /period-samai-kishu-names | GET | 期間内機種名一覧 | PeriodSamaiKishuNamesHandler | API-001-6 |
API-001-7 | /performance-measurement | GET | 日別記事テンプレ用パフォーマンス計測 | PerformanceMeasurementHandler | API-001-7 |
API-001-8 | /kishu-names | GET | 日付・ホール別機種名 | KishuNamesHandler | API-001-8 |
API-001-10 | /async-warm-template-data | POST | 共有テンプレートデータ L2 warm(HTML なし) | AsyncLoadingHandler | API-001-10 |
API-001-11 | /async-relational-day | GET | 関連日 + 日別カレンダー非同期取得 | AsyncLoadingHandler | API-001-11 |
API-001-12 | /async-move-day-hall | GET | MoveDayHall 非同期取得 | AsyncLoadingHandler | API-001-12 |
API-001-13 | /async-mail-image | GET | MailImage 非同期取得 | AsyncLoadingHandler | API-001-13 |
API-001-14 | /async-kishudata | GET | 機種データ(kishudata)非同期取得 | AsyncLoadingHandler | API-001-14 |
API-001-15 | /period-kishu-samai-ranking | GET | 期間機種別差枚ランキング取得 | AsyncLoadingHandler | API-001-15 |
API-001-16 | /async-mail-image-batch | GET | MailImage ホール横断バッチ取得 | AsyncLoadingHandler | API-001-16 |
API-001-17 | /async-move-day-hall-batch | GET | MoveDayHall ホール横断バッチ取得 | AsyncLoadingHandler | API-001-17 |
API-001-18 | /async-warm-block-html | POST | 遅延ブロック完成 HTML warm(レスポンスに HTML なし) | AsyncLoadingHandler | API-001-18 |
API-001-19 | /articles | GET | 日別記事一覧(bot 編集用) | DailyArticleBotRestHandler | API-001-19 |
API-001-20 | /articles/{id} | GET | 日別記事の編集項目取得(bot 編集用) | DailyArticleBotRestHandler | API-001-19 |
API-001-21 | /articles/{id}/fields | POST | 日別記事の編集項目更新(bot 編集用) | DailyArticleBotRestHandler | API-001-19 |
API-001-22 | /articles/{id}/trash | POST | 未公開の日別記事をゴミ箱へ移動(bot 編集用) | DailyArticleBotRestHandler | API-001-19 |
API-001-23 | /events | GET | ホール別イベント一覧(bot 編集用) | DailyArticleBotRestHandler | API-001-19 |
API-001-24 | /events | POST | イベントマスタ登録(bot 編集用) | DailyArticleBotRestHandler | API-001-19 |
API-001-25 | /what-day-master | POST | 〇〇の日マスタ登録(bot 編集用) | DailyArticleBotRestHandler | API-001-19 |
API-001-26 | /birthdays | GET | 前後 N 日の誕生日・ホール別台数(bot 用) | DailyArticleBotRestHandler | API-001-19 |
API-001-27 | /birthdays/search | GET | 声優名・キャラ名で誕生日を検索(bot 用) | DailyArticleBotRestHandler | API-001-19 |
PermissionChecker 経由の責務(全エンドポイントの permission_callback は、各ハンドラーに注入された PermissionCheckerInterface 実装の check() を呼ぶ。具体型はルートごとに異なる):
- 権限チェック: 全エンドポイントで上記
permission_callbackから実施。実装はWordPressAsyncLoadingPermissionChecker/WordPressDailyArticleBotPermissionChecker/WordPressPermissionChecker等に分岐する。 - nonce 検証(
wp_verify_nonce( … , 'wp_rest' )を含む):AsyncLoadingHandler(API-001-1〜4, API-001-9〜18)。PerformanceMeasurementHandler(API-001-7)はWordPressPerformanceMeasurementPermissionCheckerで Cookie 認証のときだけ nonce を検証し、アプリケーションパスワードと Local バイパスでは検証しない。manage_options必須で、ユーザー単位 60 秒 10 回・IP 単位 60 秒 20 回のレート制限(カウンタを保存できないときは拒否)をかける(Issue #3867。詳細は API-001-7)。 - nonce を上記のように
PermissionChecker内で検証しない:KishuNamesHandler・PeriodSamaiKishuNamesHandler・WhatDayOptionsHandler・DailyArticleBotRestHandler(API-001-5 / 6 / 8 / 19〜27)はWordPressDailyArticleBotPermissionChecker(edit_daily_articles。API-001-25 は加えてmanage_what_day_master。ブロックエディタの Cookie 認証と日別記事編集bot のアプリケーションパスワードの両方を受ける。Cookie 認証で nonce が無いリクエストは WordPress コアが未ログイン扱いにするため 401)。API-001-5 / 6 / 8 は #3872 でWordPressDailyArticleAdminPermissionCheckerから切り替えたため、nonce 無しは 403(AUTH_FAILED)から 401(LOGIN_REQUIRED)に変わり、LocalRestBypassGuardの Local バイパスが効くようになった(各 API 詳細の「権限・nonce」参照)。WordPressDailyArticleAdminPermissionCheckerは現在EventMasterRegistrationHandlerだけが使う。 - Local バイパス(
WordPressPermissionChecker等):wp_get_environment_type() === 'local'のときのみ capability を省略する。ステージング・本番ではWP_ENVIRONMENT_TYPE=localにしないこと — ホスティング運用セキュリティチェックリスト / ステージングデプロイ。 - レート制限(IP ベース):
AsyncLoadingHandler(API-001-1〜4, API-001-9〜18、SC-015 の/async-kishu-count-delta-list)のWordPressAsyncLoadingPermissionChecker。読み取り系 GET は 60 秒あたり 300 回(日別記事の正当な閲覧を許容する値。Issue #3482 / #3938)でカウンタを取れないときは通す。warm 系 POST(API-001-10・API-001-18)は別カウンタで 60 秒あたり 60 回、カウンタを取れないときは拒否する(Issue #3865)。対象ルートの一覧は REST API レート制限の IP アドレス取得設定。API-001-7 も IP 単位の制限を持つ(上記 nonce の項を参照)。 - レート制限(ユーザー単位):
DailyArticleBotRestHandler(API-001-19〜27)はBotRestRateLimiterでユーザーごとに数える(項目更新 60 回 / 分・イベント登録・〇〇の日マスタ登録・ゴミ箱移動 各 20 回 / 分はカウンタを保存できないとき拒否、読み取り 120 回 / 分は通す)。詳細は API-001-19。
パラメータの validate_callback / sanitize_callback は各ハンドラー内の register_route 定義が正。
API-003 新台情報 REST(new-machine/v1)
path
/wp-json/new-machine/v1/
エンドポイント一覧
| code | path | method | 名称・役割 | 主な登録元 | 設計書 |
|---|---|---|---|---|---|
API-003-1 | /fetch | POST | 新台情報の取得・upsert | NewMachineRestHandler | API-003 |
API-003-2 | /items | GET | 新台情報一覧(未紐付け / 全件) | NewMachineRestHandler | API-003 |
API-003-3 | /links | POST | 機種マスタ紐付けの一括保存 | NewMachineRestHandler | API-003 |
API-003-4 | /visibility | POST | 表示 / 非表示の切替 | NewMachineRestHandler | API-003 |
全エンドポイントの permission_callback は WordPressNewMachineEditorPermissionChecker(manage_new_machine_info)。アプリケーションパスワード(Basic 認証)で呼ぶ前提のため、PermissionChecker 内で nonce は検証しない。Local バイパスの条件は API-001 の WordPressPermissionChecker と同じ。BotRestRateLimiter でユーザーごとに数える(一覧 120 回 / 分はカウンタを保存できないとき通す。紐付け・表示切替 20 回 / 分、取得 20 回 / 時はカウンタを保存できないとき拒否)。取得・紐付け・表示切替は監査ログ([bot-rest-audit])に残す。詳細は API-003。
API-004 イベントマスタ REST(event-master/v1)
path
/wp-json/event-master/v1/
エンドポイント一覧
| code | path | method | 名称・役割 | 主な登録元 | 設計書 |
|---|---|---|---|---|---|
API-004-1 | /list | GET | ホール別イベント一覧 | EventMasterRegistrationHandler | API-004 |
API-004-2 | /register | POST | イベントの新規登録 | EventMasterRegistrationHandler | API-004 |
API-004-3 | /update | POST | イベントの更新 | EventMasterRegistrationHandler | API-004 |
API-004-4 | /delete | POST | イベントの削除 | EventMasterRegistrationHandler | API-004 |
permission_callback はルートごとに異なる。全ルートで PermissionChecker 内で wp_rest nonce を検証する。
- API-004-1・API-004-2:
WordPressDailyArticleAdminPermissionChecker(edit_daily_articles)。日別記事編集画面から呼ぶため、daily_article_editor_botも許可する。 - API-004-3・API-004-4:
WordPressManageOptionsWithNonceChecker(manage_options)。Local バイパスの条件は同クラスの PHPDoc を参照。
API-005 外部データ取込 REST(data-import/v1)
path
/wp-json/data-import/v1/
エンドポイント一覧
| code | path | method | 名称・役割 | 主な登録元 | 設計書 |
|---|---|---|---|---|---|
API-005-1 | /{source}/preview | POST | HTML の検証・パースと紐付け状況の確認(DB に書かない) | DataImportRestHandler | API-005 |
API-005-2 | /{source}/import | POST | 紐付けの保存と db2023 への取込 | DataImportRestHandler | API-005 |
API-005-3 | /{source}/latest-day | GET | ホールの db2023 最新日と翌日 | DataImportRestHandler | API-005 |
API-005-4 | /history | GET | 取込履歴 | DataImportRestHandler | API-005 |
{source} は min-repo / ana-slo(取込元ごとに固定ルートを登録)。permission_callback は WordPressDataImportPermissionChecker({source} ありはルートの取込元の import_min_repo_html / import_ana_slo_html、/history はどちらか一方)。アプリケーションパスワード(Basic 認証)で呼ぶ前提のため、PermissionChecker 内で nonce は検証しない。Local バイパスの条件は API-001 の WordPressPermissionChecker と同じ。
API-006 運用確認 REST(ops-status/v1)
path
/wp-json/ops-status/v1/
エンドポイント一覧
| code | path | method | 名称・役割 | 主な登録元 | 設計書 |
|---|---|---|---|---|---|
API-006-1 | /summary | GET | 日次チェック用まとめ(日別記事・取込・新台情報) | OpsStatusRestHandler | API-006 |
API-006-2 | /daily-articles | GET | 期間内の日別記事の状態(下書き含む・最大 31 日) | OpsStatusRestHandler | API-006 |
API-006-3 | /daily-articles/{id} | GET | 日別記事 1 件の状態(include_body=1 で考察本文) | OpsStatusRestHandler | API-006 |
API-006-4 | /imports | GET | ホールごとの db2023 最新日と取込履歴 | OpsStatusRestHandler | API-006 |
API-006-5 | /new-machine | GET | 新台情報取得の最終実行結果と未紐付け件数 | OpsStatusRestHandler | API-006 |
API-006-6 | /birthday | GET | 誕生日紐付けの件数と sulocale の最終取得日時 | OpsStatusRestHandler | API-006 |
API-006-7 | /pworld-mails | GET | 記事対象日の P-WORLD メールとメール欄キャッシュ | OpsStatusRestHandler | API-006 |
全エンドポイントの permission_callback は WordPressOpsStatusPermissionChecker(read_ops_status)。GET のみで書き込みはしない。アプリケーションパスワード(Basic 認証)で呼ぶ前提のため、PermissionChecker 内で nonce は検証しない。ユーザー単位で 1 分あたり 120 回まで(超過時 429。カウンタを取れないときは通す)。Local バイパスの条件は API-001 の WordPressPermissionChecker と同じ。
API-007 X告知 REST(x-announce/v1)
path
/wp-json/x-announce/v1/
エンドポイント一覧
| code | path | method | 名称・役割 | 主な登録元 | 設計書 |
|---|---|---|---|---|---|
API-007-1 | /daily-articles | GET | 期間内の公開済み日別記事のメタ情報と告知履歴(31 日) | XAnnounceRestHandler | API-007 |
API-007-2 | /daily-articles/{id} | GET | 公開済み日別記事 1 件のメタ情報と告知履歴 | XAnnounceRestHandler | API-007 |
API-007-3 | /paid-articles | GET | 公開済み有料記事のメタ情報と告知履歴(更新日時の降順) | XAnnounceRestHandler | API-007 |
API-007-4 | /paid-articles/{id} | GET | 公開済み有料記事 1 件のメタ情報と告知履歴 | XAnnounceRestHandler | API-007 |
API-007-5 | /announcements | POST | X に投稿した結果(告知履歴)を記事に記録 | XAnnounceRestHandler | API-007 |
API-007-6 | /settings | GET | 記事の種類ごとの X への投稿方法(API / 人間)。変更は ADM-036 だけ | XAnnounceRestHandler | API-007 |
全エンドポイントの permission_callback は WordPressXAnnouncePermissionChecker。GET は read_x_announce、POST は record_x_announcement。記事の本文・考察欄・抜粋・有料記事のセクションは返さない。アプリケーションパスワード(Basic 認証)で呼ぶ前提のため、PermissionChecker 内で nonce は検証しない。ユーザー単位で GET は 1 分あたり 120 回(カウンタを取れないときは通す)、POST は 20 回(カウンタを取れないときは拒否)。Local バイパスの条件は API-001 の WordPressPermissionChecker と同じ。
API-008 誕生日 REST(birthday/v1)
path
/wp-json/birthday/v1/
エンドポイント一覧
| code | path | method | 名称・役割 | 主な登録元 | 設計書 |
|---|---|---|---|---|---|
API-008-1 | /titles | GET | 作品名マスタの一覧(誕生日・紐付けの件数付き) | BirthdayRestHandler | API-008 |
API-008-2 | /kishu | GET | 紐付け先に使えるアクティブな機種の一覧 | BirthdayRestHandler | API-008 |
API-008-3 | /birthdays | GET | 誕生日データの一覧 | BirthdayRestHandler | API-008 |
API-008-4 | /links | GET | 作品名と機種の紐付けの一覧 | BirthdayRestHandler | API-008 |
API-008-5 | /unlinked-titles | GET | 機種が紐付いていない作品名 | BirthdayRestHandler | API-008 |
API-008-6 | /upcoming | GET | 今日から N 日間の誕生日と紐付け有無 | BirthdayRestHandler | API-008 |
API-008-7 | /links | POST | 紐付けの追加 | BirthdayRestHandler | API-008 |
API-008-8 | /links | PATCH | 紐付けの付け替え | BirthdayRestHandler | API-008 |
API-008-9 | /links | DELETE | 紐付けの削除 | BirthdayRestHandler | API-008 |
API-008-10 | /birthdays | POST | 誕生日データの追加 | BirthdayRestHandler | API-008 |
API-008-11 | /birthdays/{id} | PATCH | 誕生日データの更新 | BirthdayRestHandler | API-008 |
API-008-12 | /birthdays/{id} | DELETE | 誕生日データの削除 | BirthdayRestHandler | API-008 |
API-008-13 | /titles | POST | 作品名の新規作成 | BirthdayRestHandler | API-008 |
API-008-14 | /titles/{id} | PATCH | 作品名の改名 | BirthdayRestHandler | API-008 |
API-008-15 | /titles/{id}/active | POST | 作品名の有効/無効の切り替え | BirthdayRestHandler | API-008 |
API-008-16 | /sulocale/preview | POST | スロカレ作品ページの取込プレビュー(書き込まない) | BirthdayRestHandler | API-008 |
API-008-17 | /sulocale/import | POST | スロカレ作品ページの取込 | BirthdayRestHandler | API-008 |
全エンドポイントの permission_callback は WordPressBirthdayPermissionChecker。GET は read_birthday_data、紐付けは link_birthday_kishu、追加・スロカレ取込は add_birthday_data、更新・削除・作品名の改名と有効/無効は update_birthday_data。書き込みは人間の確認後に bot が呼ぶ運用で、監査ログに残す。アプリケーションパスワード(Basic 認証)で呼ぶ前提のため、PermissionChecker 内で nonce は検証しない。ユーザー単位で GET は 1 分あたり 120 回(カウンタを取れないときは通す)、書き込みは 1 分あたり 30 回、スロカレ取得は 1 時間あたり 10 回(いずれもカウンタを取れないときは拒否)。Local バイパスの条件は API-001 の WordPressPermissionChecker と同じ。
API-009 おすすめ台 REST(recommend/v1)
path
/wp-json/recommend/v1/
エンドポイント一覧
| code | path | method | 名称・役割 | 主な登録元 | 設計書 |
|---|---|---|---|---|---|
API-009-1 | /drafts | GET | 保存済みのおすすめ案と対象日の結果(差枚・G 数) | RecommendRestHandler | API-009 |
API-009-2 | /drafts | POST | おすすめ案の下書き保存(承認・却下済みは 409) | RecommendRestHandler | API-009 |
API-009-3 | /coverage | GET | ホールごとの台データの最初の日・最新日と欠けている日 | RecommendRestHandler | API-009 |
API-009-4 | /units | GET | 期間内(最大 31 日)の台データ(ページ単位) | RecommendRestHandler | API-009 |
API-009-5 | /units/{dainum}/history | GET | 1 台の直近の台データと機種の入れ替わり | RecommendRestHandler | API-009 |
API-009-6 | /export | GET | 1 年分の台データを 1 か月ずつ NDJSON で一括取得 | RecommendRestHandler | API-009 |
API-009-7 | /kishu-daily | GET | 機種別・日別のサマリ(最大 92 日) | RecommendRestHandler | API-009 |
API-009-8 | /end-number | GET | 日ごとの末尾 0〜9・ゾロ目の台数・平均差枚・勝ち台数(最大 31 日) | RecommendRestHandler | API-009 |
API-009-9 | /calendar | GET | 曜日・〇〇の日・イベント・入替(先の日付も可、最大 92 日) | RecommendRestHandler | API-009 |
全エンドポイントの permission_callback は WordPressRecommendPermissionChecker。GET は read_recommend_data、POST は write_recommend_draft。台データは差枚・G 数だけで BB / RB は返さない。記事への反映・公開はしない(承認・却下は ADM-037 だけ)。アプリケーションパスワード(Basic 認証)で呼ぶ前提のため、PermissionChecker 内で nonce は検証しない。ユーザー単位で GET は 1 分あたり 120 回(カウンタを取れないときは通す)、/export は 20 回、POST は 20 回(どちらもカウンタを取れないときは拒否)。429 には Retry-After(秒)、数えた呼び出しには X-RateLimit-Limit / X-RateLimit-Remaining を付ける。Local バイパスの条件は API-001 の WordPressPermissionChecker と同じ。