Skip to content

Replace Project Users

Method

REST method is adopted.

HTTP Method

PUT: Replace all active user assignments for a project

Naming Convention

snake_case is used for URI parameters. JSON fields use camelCase.

Request and Response

Headers

Request Headers

  • Authorization: Bearer <access_token>
  • Content-Type: application/json

URI

/api/v1/projects/{project_id}/users
Name Type Required Description
project_id integer Required Project ID

Request Body

{
  "assignments": [
    { "userId": 4, "projectAccess": "2" },
    { "userId": 7, "projectAccess": "1" }
  ]
}
Field Type Required Description
assignments array Required Complete desired assignment set; maximum 100 entries
assignments[].userId integer Required User record ID; duplicates are rejected
assignments[].projectAccess string Required "1" = read, "2" = read/write

An empty assignments array removes all active users from the project.

Response (200 OK)

{
  "list": [
    {
      "id": 12,
      "userId": 4,
      "projectId": 3,
      "projectAccess": "2",
      "createdAt": 1788422400000,
      "updatedAt": 1788422400000,
      "createdBy": "admin-cognito-sub",
      "updatedBy": "admin-cognito-sub",
      "deletedAt": null,
      "deletedBy": null
    }
  ]
}

Authentication

A valid admin Cognito Bearer token with read/write access to users and projects is required.

Exception Handling

Description Status Code Status Name
Invalid list, duplicate user ID, or organization mismatch 400 Bad Request
Missing or invalid token 401 Unauthorized
Insufficient user or project permission 403 Forbidden
User or project not found 404 Not Found

Process Flow

  1. Validate the admin session, request, and write permissions.
  2. Verify all active users belong to the project's organization.
  3. In one transaction, soft-delete omitted assignments and upsert requested assignments.
  4. Return the complete active assignment set.

Source: apps/admin/src/routes/v1/user-project.ts