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

# Update member project access

> Give a member access to every project, or limit them to selected projects. Owners always access every project, and you can't change your own access or give access to projects you can't access yourself.



## OpenAPI

````yaml /openapi.json put /workspace/{workspaceId}/members/{userId}/project-access
openapi: 3.1.0
info:
  title: Kaneo API
  version: 1.0.0
  description: Kaneo Project Management API - Manage projects, tasks, labels, and more
servers:
  - url: https://cloud.kaneo.app/api
    description: Kaneo API Server
security:
  - bearerAuth: []
paths:
  /workspace/{workspaceId}/members/{userId}/project-access:
    put:
      tags:
        - Workspaces
      summary: Update member project access
      description: >-
        Give a member access to every project, or limit them to selected
        projects. Owners always access every project, and you can't change your
        own access or give access to projects you can't access yourself.
      operationId: updateMemberProjectAccess
      parameters:
        - schema:
            type: string
          required: true
          name: workspaceId
          in: path
        - schema:
            type: string
          required: true
          name: userId
          in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                projectAccess:
                  type: string
                  enum:
                    - all
                    - selected
                  description: >-
                    "all" gives access to every project in the workspace,
                    including future ones. "selected" limits the member to
                    projectIds.
                projectIds:
                  type: array
                  items:
                    type: string
                  default: []
                  description: >-
                    Projects the member can access when projectAccess is
                    "selected".
              required:
                - projectAccess
      responses:
        '200':
          description: The member's project access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberProjectAccess'
        '400':
          description: >-
            Invalid body, the member is an owner, or a project is not in this
            workspace
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: >-
            Missing member:update permission, changing your own access, or
            granting a project you can't access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Workspace or member not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          $ref: '#/components/responses/ApiKeyRateLimited'
components:
  schemas:
    MemberProjectAccess:
      type: object
      properties:
        userId:
          type: string
        projectAccess:
          type: string
          enum:
            - all
            - selected
        projectIds:
          type: array
          items:
            type: string
      required:
        - userId
        - projectAccess
        - projectIds
    ApiError:
      type: object
      properties:
        message:
          type: string
          description: Human-readable description of the error.
          example: Task not found
        code:
          type: string
          description: >-
            Stable UPPER_SNAKE_CASE code. Derived from the status unless a more
            specific code applies, such as VALIDATION_ERROR or
            MISSING_PERMISSION.
          example: NOT_FOUND
        issues:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
                description: >-
                  Dotted path to the invalid input, prefixed with the request
                  part (body, query, params, header).
                example: body.title
              message:
                type: string
                example: Required
            required:
              - path
              - message
          description: Every validation issue, for VALIDATION_ERROR.
        missingPermissions:
          type: array
          items:
            type: string
          description: >-
            Permissions the caller lacks for this route, as resource:action, for
            MISSING_PERMISSION and API_KEY_SCOPE.
          example:
            - task:update
      required:
        - message
        - code
  responses:
    ApiKeyRateLimited:
      description: >-
        The API key exceeded its rate limit or usage quota. Wait the number of
        seconds in Retry-After before retrying. The X-RateLimit headers are sent
        only when the rate limit was hit.
      headers:
        Retry-After:
          description: >-
            Seconds to wait before retrying. Omitted when an exhausted usage
            quota never refills.
          schema:
            type: integer
        X-RateLimit-Limit:
          description: Requests the API key may make per window.
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests left in the current window.
          schema:
            type: integer
        X-RateLimit-Reset:
          description: Unix time in seconds when the current window resets.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or session token (Bearer)

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.