Skip to content

Update Project

Method

REST method is adopted.

HTTP Method

PUT: Update project information

Naming Convention

To unify the naming of query parameters and nodes and improve readability, snake_case is used for URIs and JSON nodes in requests.

Request and Response

Headers

Meta information is set in HTTP headers, not in the response body.

Request Headers

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

Response Headers

  • Content-Type

Update Project Information

URI

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

Path Parameters

Name Type Required Description
organization_id string Required Organization UUID
project_id string Required Project UUID

Request Body

The request body is JSON.

{
  "name": "Updated Project Name"
}

Request Parameters

Name Type Required Description
name string Required Project name (1-255 characters)

Response

The response is 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
}

Response Fields

Name Type Description
id string Project UUID
name string Project name
organizationId string Parent organization UUID
codeCount number Number of code entries
designCount number Number of designs
createdAt number Creation timestamp (epoch milliseconds)
updatedAt number Update timestamp (epoch milliseconds)
deletedAt number | null Deletion timestamp (epoch milliseconds)

Authentication

Authentication is performed using JSON Web Tokens (JWT) issued by Amazon Cognito.

Admins use their role permissions. A regular user needs an active user_project assignment with read/write access.

Error Handling

The status codes for error handling are as follows.

Description Status Code Status Name
Invalid name (empty, too long, etc.) 400 Bad Request
Missing credentials 401 Unauthorized
Insufficient permissions 403 Forbidden
Project or organization not found 404 Not Found
Internal server error 500 Internal Server Error

Processing Flow

  1. Extract organization ID and project ID from path parameters
  2. Extract new project name from request body
  3. Verify the user belongs to the organization
  4. Verify the project belongs to the specified organization
  5. For a regular user, verify an active project assignment with read/write access
  6. Update the project in the database
  7. Return updated project information

Detailed Flowchart

flowchart TD
    Start([PUT Request]) --> Route[Route Handler]
    Route --> Auth[Auth & Parameter Extraction]
    Auth --> Service[Service Layer]

    Service --> AccessCheck[Access Check]
    AccessCheck --> CheckOrg{Organization exists?}
    CheckOrg -->|No| Err404[404 Not Found]
    CheckOrg -->|Yes| CheckProject{Project exists?}

    CheckProject -->|No| Err404
    CheckProject -->|Yes| CheckPerm{Write permission?}
    CheckPerm -->|No| Err404
    CheckPerm -->|Yes| ValidateName

    ValidateName{name validation<br/>1-255 chars} -->|NG| Err400[400 Bad Request]
    ValidateName -->|OK| UpdateDB

    UpdateDB[DB Update<br/>Transaction] --> CheckExist[Check existing record]
    CheckExist --> Exists{Exists?}
    Exists -->|No| Rollback[Rollback]
    Rollback --> Err404

    Exists -->|Yes| SetFields[Update fields<br/>name, updatedAt, updatedBy]
    SetFields --> Refetch[Fetch updated record]
    Refetch --> Commit[Commit]
    Commit --> Success[200 OK]