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

# Update Canvas Share

> Update a canvas's sharing settings



## OpenAPI

````yaml put /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/share
openapi: 3.1.0
info:
  title: Upsolve API
  version: 1.5.0
servers:
  - url: https://api.upsolve.ai
security: []
tags: []
paths:
  /v2/api/projects/{projectId}/workspaces/{workspaceId}/canvases/{canvasId}/share:
    put:
      summary: Update a canvas's sharing settings
      description: Update a canvas's sharing settings
      operationId: PutV2ApiProjectsProjectIdWorkspacesWorkspaceIdCanvasesCanvasIdShare
      parameters:
        - name: projectId
          in: path
          required: true
          description: The project in the URL. The caller's project user is read from it.
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
            description: The project in the URL. The caller's project user is read from it.
        - name: workspaceId
          in: path
          required: true
          description: >-
            PUT
            /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/share
            Parameter
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
        - name: canvasId
          in: path
          required: true
          description: >-
            PUT
            /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/share
            Parameter
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
      requestBody:
        description: >-
          PUT
          /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/share
          Request body
        content:
          application/json:
            schema:
              type: object
              properties:
                apiKey:
                  description: >-
                    Upsolve API key, generated under Account → Developer
                    settings in the Upsolve Hub. Keys are user-scoped: pass
                    organizationId alongside the key to select which org to act
                    on.
                  type: string
                  minLength: 1
                organizationId:
                  type: string
                  description: >-
                    The ID of the organization. Required when using Supabase JWT
                    authentication.
                connectionId:
                  type: string
                  description: The ID of the connection a guest has access to
                visibility:
                  type: string
                  enum:
                    - private
                    - organization
                    - users
                    - public
                    - workspace
                  description: >-
                    Who beyond the people in `people` can open the canvas:
                    `private` or `users` (nobody else), `organization` (everyone
                    in the owner's project organization, with
                    `organizationRole`), or `workspace` (everyone in the
                    workspace, view-only). `public` is read as `private`: a link
                    to the canvas is each owner's own, at
                    `…/canvases/:canvasId/link`.
                organizationRole:
                  description: >-
                    The role everyone in the owner's project organization gets.
                    With `organization` visibility it defaults to editor; with
                    `workspace` visibility it can raise them above viewer, and
                    null or absent leaves them viewers. Refused with any other
                    visibility.
                  type:
                    - string
                    - 'null'
                  enum:
                    - viewer
                    - editor
                    - owner
                people:
                  description: >-
                    Everyone the canvas is shared with by name, each with a
                    role; replaces the whole list. They must be in the owner's
                    project organization, and the canvas's creator, always its
                    owner, is not one of them. Sent with `sharedWithUserIds`,
                    the two must name the same people.
                  type: array
                  items:
                    type: object
                    properties:
                      projectUserId:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                        description: The project user the canvas is shared with.
                      role:
                        type:
                          - string
                          - 'null'
                        enum:
                          - viewer
                          - editor
                          - owner
                        description: >-
                          What the person may do with the canvas: viewer (read
                          it), editor (change it and save it, but not share or
                          delete it), or owner (everything, sharing and deleting
                          included).
                    required:
                      - projectUserId
                      - role
                sharedWithUserIds:
                  description: >-
                    Deprecated: the people the canvas is shared with, all as
                    editors. Use `people`.
                  type: array
                  items:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
              required:
                - visibility
        required: true
      responses:
        '200':
          description: >-
            PUT
            /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/share
            Positive response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: success
                  data:
                    type: object
                    properties:
                      visibility:
                        type: string
                        enum:
                          - private
                          - organization
                          - users
                          - public
                          - workspace
                      people:
                        type: array
                        items:
                          type: object
                          properties:
                            projectUserId:
                              type: string
                              format: uuid
                              pattern: >-
                                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                              description: The project user the canvas is shared with.
                            role:
                              type:
                                - string
                                - 'null'
                              enum:
                                - viewer
                                - editor
                                - owner
                              description: >-
                                What the person may do with the canvas: viewer
                                (read it), editor (change it and save it, but
                                not share or delete it), or owner (everything,
                                sharing and deleting included).
                          required:
                            - projectUserId
                            - role
                          additionalProperties: false
                        description: >-
                          Everyone the canvas is shared with by name, each with
                          their role. Its creator is always an owner and is not
                          listed.
                      organizationRole:
                        type:
                          - string
                          - 'null'
                        enum:
                          - viewer
                          - editor
                          - owner
                        description: >-
                          What the person may do with the canvas: viewer (read
                          it), editor (change it and save it, but not share or
                          delete it), or owner (everything, sharing and deleting
                          included).
                      sharedWithUserIds:
                        type: array
                        items:
                          type: string
                          format: uuid
                          pattern: >-
                            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                        description: 'Deprecated: the ids in `people`, without their roles.'
                      canShareWithWorkspace:
                        type: boolean
                        description: >-
                          Whether the caller may set visibility to `workspace`.
                          Echoed so a client replacing its cached settings with
                          this response keeps it.
                    required:
                      - visibility
                      - people
                      - organizationRole
                      - sharedWithUserIds
                      - canShareWithWorkspace
                    additionalProperties: false
                required:
                  - status
                  - data
                additionalProperties: false
        '400':
          description: >-
            PUT
            /v2/api/projects/:projectId/workspaces/:workspaceId/canvases/:canvasId/share
            Negative response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: error
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                      details:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                    required:
                      - message
                    additionalProperties: false
                required:
                  - status
                  - error
                additionalProperties: false
      security:
        - APIKEY_3: []
components:
  securitySchemes:
    APIKEY_3:
      type: apiKey
      in: header
      name: authorization

````

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