バージョン: 1.0.0 ・ 仕様: OpenAPI 3.0 ・ 定義ファイル: docs.json
認証
認証はAPIキーを使用し、Authorization: Bearer <api_key> ヘッダーで送信します。
APIキーはテナント管理画面から発行できます。
レート制限・利用上限
上限はテナント単位(同一テナントのAPIキーすべての合算)で適用されます。上限値はテナントのプラン(Free/Pro/Max)ごとにComdeskが設定しており、テナント個別には設定しません。| 種別 | Free | Pro | Max | デフォルト | 単位時間・リセット | 超過時 |
|---|---|---|---|---|---|---|
| 1分あたり | 60回 | 300回 | 1,000回 | 300回 | 固定ウィンドウ。毎分00秒にリセット | 429 rate_limit_exceeded |
| バースト | 20回 | 100回 | 333回 | 100回 | 固定10秒ウィンドウ(00/10/20…秒)でリセット | 429 rate_limit_exceeded |
| 1日あたり(APIリクエスト) | 1,000回 | 10,000回 | 100,000回 | 100,000回 | 毎日0時(Asia/Tokyo)にリセット。成功(2xx/3xx)したリクエストのみカウント | 429 quota_exceeded |
| 1日あたり(Webhook送信) | —(Webhook利用不可) | 5,000回 | 50,000回 | 無制限 | 毎日0時(Asia/Tokyo)にリセット | イベントが配信されない(Webhookの1日あたり送信上限) |
プランと利用できるエンドポイント
Freeプランでは/api/v1/reports/* と /api/v1/webhooks* を利用できず、403 license_required が返ります(Pro/Maxで利用可能)。
判定の順序
レスポンスヘッダー
/api/v1/* のすべてのレスポンスに付与されます。
integer
1分あたりの上限回数
integer
現在の1分ウィンドウでの残り回数
integer
現在の1分ウィンドウがリセットされるUNIX時刻(秒)。常に次の毎分00秒
429のレスポンス
Retry-After ヘッダーと error.details.retry_after に、再試行までの秒数が入ります。この秒数待ってから再試行してください。error.code は次の2種類です。
rate_limit_exceeded(1分あたり/バーストの上限超過)
quota_exceeded(1日あたりの上限超過)
details.retry_after— 翌日0時(Asia/Tokyo)までの秒数details.type— 超過した上限の種類。常にdailydetails.quota— 1日あたりの上限回数(プランの値)details.used— 当日に成功したリクエスト数- 同じ値が
X-RateLimit-Type/X-Quota-Limit/X-Quota-Usedヘッダーにも入ります
403のレスポンス
error.code は次の2種類です。
insufficient_scope— APIキーにエンドポイントが必要とするスコープがないlicense_required— テナントの契約でそのエンドポイントを利用できない(Open APIが無効、またはFreeプランで reports/webhooks を呼び出した)
license_required
Webhookの1日あたり送信上限
カウント単位
カウント単位
発生したイベント1件につき1カウントです。同じイベントを購読しているWebhookが複数あっても1カウントです。
上限到達後
上限到達後
その日の残りの時間に発生したイベントは配信されません。エラーは返らず、再試行や翌日の再送もなく、配信ログにも残りません。翌日0時(Asia/Tokyo)にリセットされ、それ以降に発生したイベントから配信が再開します。
接続テスト
接続テスト
POST /api/v1/webhooks/{webhookId}/test はWebhook送信数にカウントされず、上限到達後も実行できます(APIリクエストとしては1日あたりの上限にカウントされます)。確認方法
確認方法
当日の送信数と上限は「API使用状況」画面で確認できます。
Webhookのリクエストヘッダー
実際の配信とPOST /api/v1/webhooks/{webhookId}/test は同じヘッダーで送信されます。
Webhook署名の検証
Webhook配信(POST /api/v1/webhooks/{webhookId}/test を含む)には X-Comdesk-Signature: sha256=<hex> ヘッダーが付与されます。
1
鍵
Webhook登録時のレスポンス
data.secret の値をそのまま使います。whsec_ 接頭辞を含めた文字列全体が鍵です(接頭辞を外すと検証に失敗します)。2
署名対象
受信したHTTPリクエストボディの生のバイト列。パースしたJSONを再シリアライズすると、キー順・空白・エスケープ(例:
\/)が変わり、検証に失敗します。3
アルゴリズム
HMAC-SHA256、16進小文字。ヘッダー値は
sha256= の後ろに続きます。比較はタイミング攻撃を防ぐため定数時間比較で行ってください。PHP
