Appearance
API-004 イベントマスタ REST
概要
イベントマスタ(event_master)の一覧取得・新規登録・更新・削除を行う REST。日別記事編集画面の「各ホールのイベント」(HallEventsBlock.tsx / HallEventsField.tsx)が、ホール別のイベント一覧取得と未登録イベントの新規登録に使う。処理は EventMasterRegistrationHandler → EventMasterRegistrationController → EventMasterRegistrationServiceInterface / EventNameListServiceInterface の順に委譲する。
hall は HallEnum の値(island / espasu / bigapple / uno)。HallEnum::from_string() で解決できない値は 400 を返す。
API-004-1 GET /list
入力(リクエスト)
| param | 必須 | 型・制約 | 説明 |
|---|---|---|---|
hall | はい | string(空不可) | 対象ホール。sanitize_text_field 後に HallEnum で解決する |
出力(レスポンス)
| field | 型 | 説明 |
|---|---|---|
items | array | { id: int, name: string }[]。指定ホールのイベント名一覧 |
HTTP ステータス: 200
失敗・エラー条件
| 条件 | HTTP | message |
|---|---|---|
hall が HallEnum で解決できない | 400 | Messages::REST_INVALID_HALL_MESSAGE |
API-004-2 POST /register
入力(リクエスト)
JSON ボディ。WordPress の args 検証は使わず、Controller / Service で検証する。
| param | 必須 | 型・制約 | 説明 |
|---|---|---|---|
name | はい | string(1〜255 文字) | イベント名。前後の空白は除去してから検証する |
hall | はい | string | 対象ホール(HallEnum の値) |
出力(レスポンス)
| field | 型 | 説明 |
|---|---|---|
success | bool | true |
message | string | EventMasterRegistrationMessages::EVENT_REGISTRATION_SUCCESS |
errors | string[] | 空配列 |
id | int | 登録したイベントの ID |
HTTP ステータス: 200
失敗・エラー条件
| 条件 | HTTP | message |
|---|---|---|
hall 不正 | 400 | Messages::REST_INVALID_HALL_MESSAGE |
name が空・255 文字超 | 400 | EventMasterRegistrationMessages::EVENT_REGISTRATION_VALIDATION_ERROR(errors に詳細) |
同一の name + hall が登録済み | 400 | EventMasterRegistrationMessages::EVENT_REGISTRATION_DUPLICATE_MESSAGE |
| 登録に失敗 | 400 | EventMasterRegistrationMessages::EVENT_REGISTRATION_FAILED_MESSAGE |
| 登録したが登録結果の取得に失敗 | 500 | EventMasterRegistrationMessages::EVENT_REGISTRATION_REGISTERED_BUT_FETCH_FAILED |
API-004-3 POST /update
入力(リクエスト)
| param | 必須 | 型・制約 | 説明 |
|---|---|---|---|
id | はい | 正の整数 | イベント ID |
name | はい | string(1〜255 文字) | 更新後のイベント名 |
hall | はい | string(空不可) | 更新後のホール(HallEnum の値) |
is_show | いいえ | '1' / 1 / true | 表示フラグ。左記のいずれかのときのみ true、それ以外は false |
出力(レスポンス)
| field | 型 | 説明 |
|---|---|---|
success | bool | true |
message | string | EventMasterRegistrationMessages::EVENT_REGISTRATION_UPDATE_SUCCESS。変更が無いときは EVENT_REGISTRATION_NO_CHANGE |
errors | string[] | 空配列 |
id | int | イベント ID |
HTTP ステータス: 200
失敗・エラー条件
| 条件 | HTTP | message |
|---|---|---|
id 不正 | 400 | Messages::REST_INVALID_ID_MESSAGE |
hall 不正 | 400 | Messages::REST_INVALID_HALL_MESSAGE |
name が空・255 文字超 | 400 | EventMasterRegistrationMessages::EVENT_REGISTRATION_VALIDATION_ERROR |
| 対象が無い | 400 | EventMasterRegistrationMessages::EVENT_REGISTRATION_NOT_FOUND_MESSAGE |
同一の name + hall が別のイベントで登録済み | 400 | EventMasterRegistrationMessages::EVENT_REGISTRATION_DUPLICATE_UPDATE_MESSAGE |
| 更新に失敗 | 500 | EventMasterRegistrationMessages::EVENT_REGISTRATION_UPDATE_FAILED |
API-004-4 POST /delete
入力(リクエスト)
| param | 必須 | 型・制約 | 説明 |
|---|---|---|---|
id | はい | 正の整数 | イベント ID |
出力(レスポンス)
| field | 型 | 説明 |
|---|---|---|
success | bool | true |
message | string | EventMasterRegistrationMessages::EVENT_DELETE_SUCCESS |
errors | string[] | 空配列 |
id | int | 削除したイベント ID |
HTTP ステータス: 200
失敗・エラー条件
| 条件 | HTTP | message |
|---|---|---|
id 不正 | 400 | Messages::REST_INVALID_ID_MESSAGE |
| 対象が無い | 400 | EventMasterRegistrationMessages::EVENT_DELETE_NOT_FOUND |
| 削除に失敗 | 500 | EventMasterRegistrationMessages::EVENT_DELETE_FAILED |
権限・nonce
EventMasterRegistrationHandler にルート用の PermissionCheckerInterface を 2 つ注入し、ルートごとに使い分ける。どちらも X-WP-Nonce ヘッダー(または _wpnonce)の wp_rest nonce を先に検証する。
| ルート | checker | 必要な権限 | 想定する利用者 |
|---|---|---|---|
API-004-1 GET /list・API-004-2 POST /register | WordPressDailyArticleAdminPermissionChecker | edit_daily_articles | 日別記事を編集するユーザー(daily_article_editor_bot を含む) |
API-004-3 POST /update・API-004-4 POST /delete | WordPressManageOptionsWithNonceChecker | manage_options | 管理者 |
既存イベントの改変(更新・削除)は他の日別記事に影響するため管理者に限る。新規登録は重複チェック(同一 name + hall は 400)があるため、日別記事を編集できるユーザーに開放する。
| 条件 | HTTP | message |
|---|---|---|
| nonce が無い・不正 | 403 | Messages::AUTH_FAILED |
| 権限が無い | 403 | Messages::PERMISSION_DENIED |
WordPressManageOptionsWithNonceChecker の Local バイパス(LocalRestBypassGuard)の条件は同クラスの PHPDoc を参照。
関連
- API-一覧 § API-004
- ADM-007 イベントマスタ管理画面(管理画面の登録・更新・削除はフォーム POST、
is_showの即時切替のみ admin-ajax で行い、本 REST は使わない) - 日別記事投稿タイプ README(ホール別イベント
daily_article_events)