English | 中文

API リファレンス

クラウド配信モードで使用する REST API のリファレンスです。

ベース URL: https://<API_ID>.execute-api.<REGION>.amazonaws.com/v1

認証が必要なエンドポイントは Cognito JWT(Authorization: Bearer <JWT>)を使用します。


通知受信

POST /webhooks/{token}

ゲームイベントの通知を受信してクラウドから Webhook に配信します。認証不要(トークンが認証の役割を担います)。

パスパラメータ

パラメータ 説明
token 通知トークン(設定画面で発行)

リクエストボディ

{
  "message": "遠征完了: 第1艦隊",
  "title": "遠征完了",
  "type": "expedition"
}
フィールド 説明
message string 通知メッセージ本文
title string 通知タイトル
type string expedition / repair / construction / default

レスポンス

{ "ok": true }

エラー

コード 原因
400 トークン未指定、Webhook 未設定
404 トークンが存在しない

タイマー同期

PUT /timers

ゲームのタイマー状態をクラウドに同期し、完了時刻に合わせた通知をスケジュールします。

認証: Cognito JWT 必須

リクエストボディ

{
  "timers": [
    {
      "type": "expedition",
      "slot": "1",
      "completesAt": "2024-01-01T12:00:00.000Z",
      "message": "遠征完了: 第1艦隊"
    }
  ],
  "enabled": {
    "expedition": true,
    "repair": true,
    "construction": true
  },
  "notifyBeforeMinutes": 1,
  "mobileOnly": false
}
フィールド 説明
timers array タイマー配列
timers[].type string expedition / repair / construction
timers[].slot string スロット番号
timers[].completesAt string 完了時刻(ISO 8601)
timers[].message string 通知メッセージ(省略時はデフォルトタイトル)
enabled object タイプごとの有効/無効(デフォルト: すべて true
notifyBeforeMinutes number 完了何分前に通知するか(0〜60、デフォルト: 1)
mobileOnly boolean true の場合 Webhook 配信なし(モバイルアプリのみ)。デフォルト: false

timers が空配列の場合、既存のスケジュールをすべてキャンセルします(ログアウト時に使用)。

GET /timers

同期済みのタイマー一覧を取得します(期限切れは除外)。モバイルアプリのバックグラウンド同期で使用します。

認証: Cognito JWT 必須

レスポンス

{
  "timers": [
    {
      "type": "expedition",
      "slot": "1",
      "completesAt": "2024-01-01T12:00:00.000Z",
      "message": "遠征完了: 第1艦隊",
      "notifyBeforeMinutes": 1
    }
  ]
}

アカウント管理

DELETE /account

アカウントと関連する全データを完全に削除します。DynamoDB の全テーブルからユーザーデータを削除し、EventBridge スケジュールをキャンセルし、Cognito ユーザーを削除します。

認証: Cognito JWT 必須

レスポンス

{ "ok": true }

削除されるデータ:

  • アカウント設定(Webhook 設定)
  • 通知トークン
  • タイマー状態と配信スケジュール
  • 通知統計
  • プッシュトークン
  • Cognito ユーザー

GET /account/config

Webhook 設定を取得します。認証: Cognito JWT 必須

レスポンス

{
  "webhookType": "discord",
  "webhookUrl": "https://discord.com/api/webhooks/..."
}

PUT /account/config

Webhook 設定を更新します。認証: Cognito JWT 必須

リクエストボディ

{
  "webhookType": "discord",
  "webhookUrl": "https://discord.com/api/webhooks/..."
}
フィールド 説明
webhookType string discord / slack / nonenone で Webhook 設定を削除)
webhookUrl string Webhook URL(webhookTypenone 以外の場合は必須)

プッシュトークン管理

PUT /push-tokens

モバイルアプリの Expo Push Token をサーバに登録します。サイレントプッシュ通知によるタイマー即時同期に使用されます。

認証: Cognito JWT 必須

リクエストボディ

{
  "pushToken": "ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]"
}
フィールド 説明
pushToken string Expo Push Token(expo-notifications で取得)

レスポンス

{ "ok": true }

エラー

コード 原因
400 pushToken が未指定または文字列でない
401 認証なし

DELETE /push-tokens

登録済みのプッシュトークンを削除します(ログアウト時に使用)。

認証: Cognito JWT 必須

リクエストボディ

{
  "pushToken": "ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]"
}

レスポンス

{ "ok": true }

トークン管理

POST /tokens

通知トークンを新規発行します。認証: Cognito JWT 必須

GET /tokens

発行済みトークンの一覧を返します。認証: Cognito JWT 必須

DELETE /tokens/{token}

トークンを削除します。認証: Cognito JWT 必須


エラーレポート

POST /errors

クライアント(モバイルアプリ・poi プラグイン)からエラーログを送信します。認証不要。

リクエストボディ

{
  "source": "mobile-app",
  "level": "error",
  "message": "Failed to sync timers",
  "stack": "Error: ...",
  "context": { "screen": "home" }
}
フィールド 説明
source string mobile-app / poi-plugin(必須)
level string error / warn(デフォルト: error
message string エラーメッセージ(必須、最大 1000 文字)
stack string スタックトレース(任意、最大 5000 文字)
context object 追加コンテキスト情報(任意)

レスポンス: { "ok": true }

エラー

コード 原因
400 不正な JSON、source / level / message が無効
413 リクエストボディが 10KB を超過

GET /errors

エラーログ一覧を取得します。認証: Cognito JWT 必須

クエリパラメータ

パラメータ 説明
source string mobile-app / poi-plugin(デフォルト: mobile-app
limit number 取得件数(最大 200、デフォルト: 50)
since string この日時以降のログを取得(ISO 8601)
cursor string ページネーション用カーソル

レスポンス

{
  "errors": [
    {
      "id": "...",
      "source": "mobile-app",
      "timestamp": "2024-01-01T12:00:00.000Z",
      "level": "error",
      "message": "Failed to sync timers",
      "stack": "Error: ...",
      "context": {}
    }
  ],
  "cursor": "..."
}

GET /dashboard

エラーログ閲覧用の HTML ダッシュボードを返します。認証不要(ダッシュボード内で Cognito OAuth ログインを実行)。