MCP API キー削除
メソッド
RESTメソッドを採用しています。
HTTPメソッド
DELETE: MCP APIキー削除(論理削除)
命名規則
クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。
リクエストとレスポンス
ヘッダー
メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。
リクエストヘッダー
AuthorizationContent-TypeAcceptAccept-language
レスポンスヘッダー
Content-Type
MCP APIキー削除
URI
パスパラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| organization_id | integer | 必須 | 組織ID |
| project_id | integer | 必須 | プロジェクトID |
| mcp_api_key_id | integer | 必須 | MCP APIキーID |
レスポンス
レスポンスはJSONです。
{
"id": 1,
"userId": 1,
"projectId": 2,
"name": "mcp for project A",
"keyPrefix": "abc123",
"permission": 0,
"expiresAt": 1735689600000,
"revokedAt": null,
"lastUsedAt": 1234567890000,
"createdAt": 1234567890000,
"updatedAt": 1234567899999,
"deletedAt": 1234567899999,
"createdBy": "user-cognito-sub",
"updatedBy": "user-cognito-sub",
"deletedBy": "deleter-cognito-sub"
}
レスポンスフィールド
| 名前 | 型 | 説明 |
|---|---|---|
| id | integer | MCP APIキーID |
| userId | integer | null | ユーザーID(スコープがuserの場合) |
| projectId | integer | null | プロジェクトID(スコープがprojectの場合) |
| name | string | APIキーの名前 |
| keyPrefix | string | キープレフィックス |
| permission | integer | アクセス権限(0: READ、1: WRITE) |
| expiresAt | number | null | 有効期限(エポックミリ秒) |
| revokedAt | number | null | 無効化日時(エポックミリ秒) |
| lastUsedAt | number | null | 最終使用日時(エポックミリ秒) |
| createdAt | number | 作成日時(エポックミリ秒) |
| updatedAt | number | 更新日時(エポックミリ秒) |
| deletedAt | number | 削除日時(エポックミリ秒) |
| deletedBy | string | 削除者のCognito sub |
認証
認証はAmazon Cognitoから発行されるJSON Web Tokens (JWT)を使用して行われます。
例外処理
例外処理のステータスコードは以下の通りです。
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 認証情報不足 | 401 | Unauthorized |
| 実行権限不足 | 403 | Forbidden |
| MCP APIキーが見つかりません | 404 | Not Found |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- パスパラメータから組織ID、プロジェクトID、MCP APIキーIDを抽出
- ユーザーがプロジェクトへのアクセス権限を持つことを確認
- キーが存在することを確認
- キーが指定されたプロジェクトに関連していることを確認
- ユーザーがキーを削除する権限があることを確認
- 論理削除を実行(
deletedAtとdeletedByを設定) - 更新日時を設定
- 削除されたキー情報を返す
論理削除
- 物理削除ではなく、
deletedAtフィールドにタイムスタンプを設定します - 削除されたキーは通常のクエリから除外されます
- 削除者情報は
deletedByフィールドに記録されます
特記事項
このエンドポイントは論理削除を実行します。レコードはデータベースから物理的に削除されず、deletedAtとdeletedByフィールドが設定されます。
詳細フローチャート
flowchart TD
Start([DELETE Request]) --> Auth[認証・パラメータ取得]
Auth --> Service[Service Layer]
Service --> AccessCheck[権限チェック]
AccessCheck --> HasAccess{Write権限?}
HasAccess -->|なし| Err404[404 Not Found]
HasAccess -->|あり| CheckExist[既存確認]
CheckExist --> Exists{存在?}
Exists -->|なし| Err404
Exists -->|あり| SoftDelete[論理削除<br/>deletedAt設定]
SoftDelete --> Success[200 OK]