> ## Documentation Index
> Fetch the complete documentation index at: https://developers.harvey.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Project Users

> Adds or updates workspace user shares on a Vault project. This endpoint uses an additive/partial-update model: users in the request are added or have their access level updated; users not in the request are left unchanged. The project owner cannot be included in the request.

Requires vault sharing to be enabled.

### Permissions

Requires `Vault API` and `Vault sharing` permissions.


## OpenAPI

````yaml /vault_api.json post /api/v1/vault/projects/{project_id}/users
openapi: 3.0.1
info:
  title: Vault - Upload Documents
  description: >-
    The Vault Upload Documents API enables users to programmatically upload and
    manage documents within Vault projects. This API allows organizations to
    maintain projects with their own internal files for their users to use
    within the Harvey app.
  version: 1.0.0
  contact:
    email: support@harvey.ai
servers:
  - url: https://api.harvey.ai
    description: Harvey API server
security: []
paths:
  /api/v1/vault/projects/{project_id}/users:
    post:
      tags:
        - Vault
      summary: Update Project Users
      description: >-
        Adds or updates workspace user shares on a Vault project. This endpoint
        uses an additive/partial-update model: users in the request are added or
        have their access level updated; users not in the request are left
        unchanged. The project owner cannot be included in the request.


        Requires vault sharing to be enabled.
      operationId: updateProjectUsers
      parameters:
        - name: project_id
          in: path
          required: true
          description: The unique identifier of the Vault project
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                users:
                  type: array
                  items:
                    type: object
                    properties:
                      email:
                        type: string
                        format: email
                        description: The email address of the workspace user
                      access_level:
                        type: string
                        enum:
                          - READ
                          - WRITE
                          - MANAGE
                        description: The desired access level for this user
                    required:
                      - email
                      - access_level
                  description: >-
                    The list of users and their desired access levels to add or
                    update. Users omitted from this list are left unchanged.
              required:
                - users
            examples:
              updateProjectUsers:
                summary: Example request to update project users
                value:
                  users:
                    - email: admin@example.com
                      access_level: MANAGE
                    - email: reviewer@example.com
                      access_level: READ
      responses:
        '200':
          description: Project users successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - COMPLETED
                    description: Status of the request
                  data:
                    type: object
                    properties:
                      project_id:
                        type: string
                        format: uuid
                        description: The project ID
                      added:
                        type: array
                        description: Users that were newly granted access
                        items:
                          type: object
                          properties:
                            email:
                              type: string
                              format: email
                            access_level:
                              type: string
                              enum:
                                - READ
                                - WRITE
                                - MANAGE
                          required:
                            - email
                            - access_level
                      updated:
                        type: array
                        description: Users whose access level was changed
                        items:
                          type: object
                          properties:
                            email:
                              type: string
                              format: email
                            access_level:
                              type: string
                              enum:
                                - READ
                                - WRITE
                                - MANAGE
                            previous_access_level:
                              type: string
                              enum:
                                - READ
                                - WRITE
                                - MANAGE
                          required:
                            - email
                            - access_level
                            - previous_access_level
                      failed:
                        type: array
                        description: Users whose share update failed, with the reason
                        items:
                          type: object
                          properties:
                            email:
                              type: string
                              format: email
                            reason:
                              type: string
                              description: Why the share update failed for this user
                          required:
                            - email
                            - reason
                    required:
                      - project_id
                      - added
                      - updated
                      - failed
                required:
                  - status
                  - data
        '400':
          description: >-
            Bad request - malformed request body (e.g. missing required fields,
            invalid JSON)
        '401':
          description: Unauthorized - Invalid or missing API token
        '403':
          description: >-
            Forbidden - User lacks required permissions, vault sharing is
            disabled, or project access is denied
        '404':
          description: Project not found
        '429':
          description: Rate limit exceeded
        '500':
          description: Internal server error
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````