コンテンツにスキップ

組織更新

メソッド

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

HTTPメソッド

PUT: 組織情報更新

命名規則

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

リクエストとレスポンス

ヘッダー

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

リクエストヘッダー

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

レスポンスヘッダー

  • Content-Type

組織情報更新

URI

PUT /v1/organizations/{organization_id}

パスパラメータ

名前 型 必須 説明
organization_id string 必須 組織UUID

リクエストボディ

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

{
  "name": "Updated Organization Name"
}

リクエストパラメータ

名前 型 必須 説明
name string 必須 組織名(1-255文字)

レスポンス

レスポンスはJSONです。

{
  "id": "org-uuid",
  "name": "Updated Organization Name",
  "createdAt": 1234567890000,
  "updatedAt": 1234567899999,
  "createdBy": "creator-id",
  "updatedBy": "updater-id",
  "deletedAt": null,
  "deletedBy": null
}

レスポンスフィールド

名前 型 説明
id string 組織UUID
name string 組織名
createdAt number 作成日時(エポックミリ秒)
updatedAt number 更新日時(エポックミリ秒)
deletedAt number | null 削除日時(エポックミリ秒)

認証

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

例外処理

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

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

処理フロー

  1. パスパラメータから組織IDを抽出
  2. リクエストボディから名前を抽出
  3. リクエスト者のCognito subを取得
  4. サービスハンドラーで管理者/ユーザーアクセスチェックを実行
  5. リクエスト者が組織のメンバーであることを検証
  6. データベースで組織を更新
  7. 更新された組織情報を返却

詳細フローチャート

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

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

    AccessCheck --> IsAdmin{Admin?}
    IsAdmin -->|Yes| ValidateName
    IsAdmin -->|No| CheckUser{User?}

    CheckUser -->|なし| Err404
    CheckUser -->|あり| CheckOrgMatch{組織一致?}
    CheckOrgMatch -->|なし| Err404
    CheckOrgMatch -->|あり| ValidateName

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

    UpdateDB[DB更新<br/>Transaction] --> SetName[name更新]
    SetName --> SetUpdatedAt[updatedAt, updatedBy設定]
    SetUpdatedAt --> Refetch[更新後レコード取得]

    Refetch --> Commit[Commit]
    Commit --> Success[200 OK]

バリデーション

  • 名前は必須
  • 名前の最小長: 1文字
  • 名前の最大長: 255文字
  • 空白のみは不可
  • 前後の空白は自動的にトリム