リクエストとレスポンス
リクエスト形式
HTTPメソッド
| メソッド | 用途 |
|---|---|
GET | リソースの取得 |
POST | リソースの作成、アクションの実行 |
PUT | リソースの更新(全体置換) |
PATCH | リソースの部分更新 |
DELETE | リソースの削除 |
リクエストヘッダー
すべてのリクエストに以下のヘッダーを含めてください:
Authorization: Bearer {admin-api-token}Content-Type: application/jsonAccept: application/jsonリクエストボディ
POST、PUT、PATCHリクエストではJSON形式のボディを送信します:
curl -X POST "https://{tenant-domain}/api/admin/users" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -d '{ "email": "[email protected]", "name": "山田 太郎", "role": "user" }'レスポンス形式
成功レスポンス
単一リソースの取得
{ "id": "usr_abc123", "name": "山田 太郎", "created_at": 1705881600, "updated_at": 1705881600}リソースリストの取得
{ "items": [ { "id": "usr_abc123", "name": "山田 太郎" }, { "id": "usr_def456", "name": "佐藤 花子" } ], "total": 150, "cursor": "eyJpZCI6InVzcl9kZWY0NTYifQ=="}リソースの作成
リソース作成時は、作成されたリソースの完全な情報が返されます:
{ "id": "usr_xyz789", "name": "新規 ユーザー", "created_at": 1705968000, "updated_at": 1705968000}HTTPステータスコード: 201 Created
リソースの削除
削除成功時は空のレスポンスボディとステータスコード 204 No Content が返されます。
HTTPステータスコード
| コード | 説明 |
|---|---|
200 OK | リクエスト成功 |
201 Created | リソース作成成功 |
204 No Content | 削除成功(ボディなし) |
400 Bad Request | リクエストが不正 |
401 Unauthorized | 認証失敗 |
403 Forbidden | 権限不足 |
404 Not Found | リソースが見つからない |
409 Conflict | リソースの競合 |
422 Unprocessable Entity | バリデーションエラー |
429 Too Many Requests | レート制限超過 |
500 Internal Server Error | サーバーエラー |
ページネーション
リスト系APIはカーソルベースのページネーションを採用しています。
リクエストパラメータ
| パラメータ | 型 | デフォルト | 説明 |
|---|---|---|---|
limit | integer | 20 | 取得する件数(最大100) |
cursor | string | - | 次のページのカーソル |
ページネーションの例
最初のページを取得
curl -X GET "https://{tenant-domain}/api/admin/users?limit=20" \ -H "Authorization: Bearer {token}"レスポンス:
{ "items": [...], "total": 150, "cursor": "eyJpZCI6InVzcl9hYmMxMjMifQ=="}次のページを取得
curl -X GET "https://{tenant-domain}/api/admin/users?limit=20&cursor=eyJpZCI6InVzcl9hYmMxMjMifQ==" \ -H "Authorization: Bearer {token}"ページネーションの終了判定
cursor が null または空の場合、それ以上のデータはありません:
{ "items": [...], "total": 150, "cursor": null}フィルタリングとソート
フィルタリング
多くのリスト系APIはクエリパラメータによるフィルタリングをサポートしています:
# ステータスでフィルタcurl -X GET "https://{tenant-domain}/api/admin/users?status=active" \ -H "Authorization: Bearer {token}"
# 作成日時でフィルタcurl -X GET "https://{tenant-domain}/api/admin/users?created_after=1705881600" \ -H "Authorization: Bearer {token}"
# 複合フィルタcurl -X GET "https://{tenant-domain}/api/admin/users?status=active&role=admin" \ -H "Authorization: Bearer {token}"検索
テキスト検索が可能なエンドポイントでは q または search パラメータを使用します:
curl -X GET "https://{tenant-domain}/api/admin/users?search=yamada" \ -H "Authorization: Bearer {token}"ソート
ソートは sort パラメータで指定します:
# 昇順curl -X GET "https://{tenant-domain}/api/admin/users?sort=created_at" \ -H "Authorization: Bearer {token}"
# 降順(-プレフィックス)curl -X GET "https://{tenant-domain}/api/admin/users?sort=-created_at" \ -H "Authorization: Bearer {token}"日時形式
タイムスタンプ
APIのタイムスタンプはUNIXエポック秒で表現されます:
{ "created_at": 1705881600, "updated_at": 1705968000}日時パラメータ
フィルタリングパラメータとして日時を指定する場合も、UNIXエポック秒を使用します:
# 2024年1月22日以降に作成されたユーザーcurl -X GET "https://{tenant-domain}/api/admin/users?created_after=1705881600" \ -H "Authorization: Bearer {token}"日付範囲
統計APIなどでは日付範囲を指定できます:
curl -X GET "https://{tenant-domain}/api/admin/stats/auth?start_date=2024-01-01&end_date=2024-01-31" \ -H "Authorization: Bearer {token}"レート制限
APIにはレート制限が適用されます。制限を超過すると 429 Too Many Requests が返されます。
レート制限ヘッダー
レスポンスには以下のヘッダーが含まれます:
X-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1705885200| ヘッダー | 説明 |
|---|---|
X-RateLimit-Limit | ウィンドウあたりの最大リクエスト数 |
X-RateLimit-Remaining | 残りリクエスト数 |
X-RateLimit-Reset | 制限がリセットされるUNIXタイムスタンプ |
レート制限超過時
{ "error": "rate_limit_exceeded", "error_description": "レート制限を超過しました。しばらく待ってから再試行してください。", "retry_after": 60}retry_after は再試行可能になるまでの秒数を示します。
べき等性
べき等なリクエスト
GET、PUT、DELETE リクエストはべき等です。同じリクエストを複数回送信しても、結果は同じになります。
Idempotency-Key
POST リクエストでべき等性を確保したい場合は、Idempotency-Key ヘッダーを使用できます:
curl -X POST "https://{tenant-domain}/api/admin/users" \ -H "Authorization: Bearer {token}" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: unique-request-id-12345" \同じ Idempotency-Key を持つリクエストは、最初のリクエストの結果をキャッシュして返します。