コンテンツにスキップ

プロジェクト更新

メソッド

RESTメソッドを採用しています。

HTTPメソッド

PUT: プロジェクト情報更新

命名規則

クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。

リクエストとレスポンス

ヘッダー

メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。

リクエストヘッダー

  • Authorization
  • Content-Type
  • Accept
  • Accept-language

レスポンスヘッダー

  • Content-Type

プロジェクト情報更新

URI

PUT /v1/organizations/{organization_id}/projects/{project_id}

パスパラメータ

名前 型 必須 説明
organization_id string 必須 組織UUID
project_id string 必須 プロジェクトUUID

リクエストボディ

リクエストボディはJSONです。

{
  "name": "Updated Project Name"
}

リクエストパラメータ

名前 型 必須 説明
name string 必須 プロジェクト名(1-255文字)

レスポンス

レスポンスはJSONです。

{
  "id": "project-uuid",
  "name": "Updated Project Name",
  "organizationId": "org-uuid",
  "codeCount": 15,
  "designCount": 8,
  "createdAt": 1234567890000,
  "updatedAt": 1234567899999,
  "deletedAt": null,
  "createdBy": "user-id",
  "updatedBy": "updater-id",
  "deletedBy": null
}

レスポンスフィールド

名前 型 説明
id string プロジェクトUUID
name string プロジェクト名
organizationId string 親組織UUID
codeCount number コード数
designCount number デザイン数
createdAt number 作成日時(エポックミリ秒)
updatedAt number 更新日時(エポックミリ秒)
deletedAt number | null 削除日時(エポックミリ秒)

認証

認証はAmazon Cognitoから発行されるJSON Web Tokens (JWT)を使用して行われます。

管理者にはロール権限を適用します。一般ユーザーには、読み取り・書き込み権限の有効な user_project 割り当てが必要です。

例外処理

例外処理のステータスコードは以下の通りです。

説明 ステータスコード ステータス名
無効な名前(空、長すぎるなど) 400 Bad Request
認証情報不足 401 Unauthorized
実行権限不足 403 Forbidden
プロジェクトまたは組織が見つかりません 404 Not Found
内部サーバーエラー 500 Internal Server Error

処理フロー

  1. パスパラメータから組織IDとプロジェクトIDを抽出
  2. リクエストボディから新しいプロジェクト名を抽出
  3. ユーザーが組織に属していることを検証
  4. プロジェクトが指定された組織に属していることを検証
  5. 一般ユーザーの場合、読み取り・書き込み権限の有効なプロジェクト割り当てを検証
  6. データベースでプロジェクトを更新
  7. 更新されたプロジェクト情報を返却

詳細フローチャート

flowchart TD
    Start([PUT Request]) --> Route[Route Handler]
    Route --> Auth[認証・パラメータ取得]
    Auth --> Service[Service Layer]

    Service --> AccessCheck[権限チェック]
    AccessCheck --> CheckOrg{組織存在確認}
    CheckOrg -->|なし| Err404[404 Not Found]
    CheckOrg -->|あり| CheckProject{プロジェクト確認}

    CheckProject -->|なし| Err404
    CheckProject -->|あり| CheckPerm{Write権限?}
    CheckPerm -->|なし| Err404
    CheckPerm -->|あり| ValidateName

    ValidateName{name検証<br/>1-255文字} -->|NG| Err400[400 Bad Request]
    ValidateName -->|OK| UpdateDB

    UpdateDB[DB更新<br/>Transaction] --> CheckExist[既存レコード確認]
    CheckExist --> Exists{存在?}
    Exists -->|なし| Rollback[Rollback]
    Rollback --> Err404

    Exists -->|あり| SetFields[フィールド更新<br/>name, updatedAt, updatedBy]
    SetFields --> Refetch[更新後レコード取得]
    Refetch --> Commit[Commit]
    Commit --> Success[200 OK]