MCP API キー一覧
メソッド
RESTメソッドを採用しています。
HTTPメソッド
GET: MCP APIキーリスト取得
命名規則
クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。
リクエストとレスポンス
ヘッダー
メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。
リクエストヘッダー
AuthorizationContent-TypeAcceptAccept-language
レスポンスヘッダー
Content-Type
リスト取得
URI
パスパラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| organization_id | integer | 必須 | 組織ID |
| project_id | integer | 必須 | プロジェクトID |
クエリパラメータ
| 名前 | 型 | デフォルト | 説明 |
|---|---|---|---|
| page | integer | 1 | ページ番号(最小: 1) |
| limit | integer | 20 | ページあたりのアイテム数(最小: 1、最大: 100) |
| sort | string | asc | ソート順序(asc または desc) |
| scope | string | - | スコープでフィルタ(user または project) |
| permission | integer | - | 権限でフィルタ(0: READ、1: WRITE) |
| includeRevoked | boolean | false | 無効化されたキーを含めるか |
レスポンス
レスポンスはJSONです。
{
"currentPage": 1,
"totalCount": 50,
"list": [
{
"id": 1,
"userId": 1,
"projectId": 2,
"name": "mcp for project A",
"keyPrefix": "abc123",
"permission": 0,
"expiresAt": 1735689600000,
"revokedAt": null,
"lastUsedAt": 1234567890000,
"createdAt": 1234567890000,
"updatedAt": 1234567890000,
"deletedAt": null,
"createdBy": "user-cognito-sub",
"updatedBy": "user-cognito-sub",
"deletedBy": null
}
]
}
注意: apiKey、keyHash、saltはセキュリティ上の理由で返されません。
認証
認証はAmazon Cognitoから発行されるJSON Web Tokens (JWT)を使用して行われます。
例外処理
例外処理のステータスコードは以下の通りです。
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 認証情報不足 | 401 | Unauthorized |
| 実行権限不足 | 403 | Forbidden |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- パスパラメータから組織IDとプロジェクトIDを抽出
- クエリパラメータを抽出
- ユーザーがプロジェクトへのアクセス権限を持つことを確認
- プロジェクトIDとクエリパラメータに基づいてフィルタリング
- ページネーションを適用
- ソート順を適用
- 結果をフォーマット(日付をエポックミリ秒に変換)
- ページネーション情報と共に結果を返す
詳細フローチャート
flowchart TD
Start([GET Request]) --> Auth[認証・パラメータ取得<br/>page, limit, sort]
Auth --> Service[Service Layer]
Service --> AccessCheck[権限チェック]
AccessCheck --> HasAccess{Read権限?}
HasAccess -->|なし| Err404[404 Not Found]
HasAccess -->|あり| Validate{sort検証}
Validate -->|NG| Err400[400 Bad Request]
Validate -->|OK| QueryDB[Repository Layer]
QueryDB --> CountQuery[COUNT取得]
CountQuery --> ListQuery[レコード取得<br/>LIMIT, OFFSET, ORDER BY]
ListQuery --> Format[レスポンス整形]
Format --> Success[200 OK<br/>currentPage, totalCount, list]
フィルタリング
- デフォルトでは、削除されていない(
deletedAtがnull)キーのみを返します includeRevokedがfalseの場合、無効化されていない(revokedAtがnull)キーのみを返します- 指定された
project_idに関連するキーのみを返します scopeパラメータが指定された場合、そのスコープのキーのみを返します- ユーザーは自身が所有するキー、またはアクセス権限を持つプロジェクトのキーのみを閲覧できます