> ## 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.

# List Project User Roles

> List the project's user roles. A role's id is what `user.userRoleId` takes on `POST /v1/api/projects/embed-token`; a role decides what its users may do on a dashboard, and a user with no role is view-only.



## OpenAPI

````yaml get /v1/api/projects/{projectId}/user-roles
openapi: 3.1.0
info:
  title: Upsolve API
  version: 1.5.0
servers:
  - url: https://api.upsolve.ai
security: []
tags: []
paths:
  /v1/api/projects/{projectId}/user-roles:
    get:
      summary: List the project's user roles. A role's id is wha…
      description: >-
        List the project's user roles. A role's id is what `user.userRoleId`
        takes on `POST /v1/api/projects/embed-token`; a role decides what its
        users may do on a dashboard, and a user with no role is view-only.
      operationId: GetV1ApiProjectsProjectIdUserRoles
      parameters:
        - name: apiKey
          in: query
          required: false
          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.
          schema:
            type: string
            minLength: 1
            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.
            examples:
              - up_embed_************
          examples:
            example1:
              value: up_embed_************
        - name: organizationId
          in: query
          required: false
          description: >-
            Your Upsolve organization's UUID — the org that owns the API key and
            project. This is NOT a project organization: do not pass a value
            registered via /projects/register-organization, and do not pass an
            `externalId` (only `projectOrganizationId` accepts those). Omit it
            when using an org-bound API key — the org is read from the key and
            any value sent here is ignored. Required only for user-scoped API
            keys (created under Account → Developer settings) and for the
            Supabase JWT path, where the org is ambiguous and membership is
            verified against it.
          schema:
            description: >-
              Your Upsolve organization's UUID — the org that owns the API key
              and project. This is NOT a project organization: do not pass a
              value registered via /projects/register-organization, and do not
              pass an `externalId` (only `projectOrganizationId` accepts those).
              Omit it when using an org-bound API key — the org is read from the
              key and any value sent here is ignored. Required only for
              user-scoped API keys (created under Account → Developer settings)
              and for the Supabase JWT path, where the org is ambiguous and
              membership is verified against it.
            examples:
              - 123e4567-e89b-12d3-a456-426614174000
            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})$
          examples:
            example1:
              value: 123e4567-e89b-12d3-a456-426614174000
        - name: projectId
          in: path
          required: true
          description: The project whose user roles to list.
          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 whose user roles to list.
      responses:
        '200':
          description: GET /v1/api/projects/:projectId/user-roles Positive response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: success
                  data:
                    type: object
                    properties:
                      userRoles:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              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:
                              type: string
                            organization_id:
                              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})$
                            project_id:
                              type:
                                - string
                                - 'null'
                              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})$
                            permissions:
                              type: object
                              properties:
                                addChart:
                                  description: >-
                                    Add existing charts to a dashboard. Grants
                                    editing. Unset: on, for a role that grants
                                    editing.
                                  type: boolean
                                addFilter:
                                  description: >-
                                    Add new filters to a dashboard. Grants
                                    editing. Using a dashboard's existing
                                    filters needs no permission. Unset: on, for
                                    a role that grants editing.
                                  type: boolean
                                createChart:
                                  description: >-
                                    Create new charts in the chart builder.
                                    Grants editing. Unset: on, for a role that
                                    grants editing.
                                  type: boolean
                                createChartSQL:
                                  description: >-
                                    Write a chart's SQL by hand. No effect
                                    unless createChart is on. Unset: off.
                                  type: boolean
                                editCharts:
                                  description: >-
                                    Edit the charts on a dashboard. Grants
                                    editing. Unset: off.
                                  type: boolean
                                removeChart:
                                  description: >-
                                    Remove charts from a dashboard. Grants
                                    editing. Unset: on, for a role that grants
                                    editing.
                                  type: boolean
                                disableTabs:
                                  description: >-
                                    Turn off the tabbed dashboard display.
                                    Unset: off.
                                  type: boolean
                                hideHeader:
                                  description: 'Hide the dashboard header. Unset: off.'
                                  type: boolean
                                hideDownloadButton:
                                  description: >-
                                    Hide the dashboard's PDF download button.
                                    Unset: off.
                                  type: boolean
                                aiCharts:
                                  description: 'Create charts by asking AI. Unset: off.'
                                  type: boolean
                                editMarketplace:
                                  description: 'Legacy. Has no effect. Unset: off.'
                                  type: boolean
                                readOnly:
                                  description: >-
                                    View only. Overrides every flag that grants
                                    editing: the dashboard shows no editing
                                    tools, and the API refuses the user's
                                    dashboard writes. Also turns off drill-down.
                                    Unset: off.
                                  type: boolean
                                aiInsight:
                                  description: >-
                                    Open the AI insights chat sidebar. Unset:
                                    off.
                                  type: boolean
                                drillDown:
                                  description: >-
                                    Drill into a chart's data. Off whenever
                                    readOnly is on. Unset: off.
                                  type: boolean
                                enableScheduleReport:
                                  description: >-
                                    Show the Schedule Report button on the
                                    dashboard header, where scheduled reports
                                    are enabled for the organization. Unset:
                                    off.
                                  type: boolean
                                canDuplicateDashboard:
                                  description: >-
                                    Duplicate a dashboard into a copy of the
                                    user's own. Grants editing. Unset: on, for a
                                    role that grants editing.
                                  type: boolean
                                canSetDefaultDashboard:
                                  description: >-
                                    Set a dashboard as the user's default.
                                    Unset: on.
                                  type: boolean
                                canEditChartFromSession:
                                  description: >-
                                    Edit an AI-generated chart from the agent
                                    chat session. Unset: on.
                                  type: boolean
                                hideFilters:
                                  description: 'Hide the dashboard''s filter bar. Unset: off.'
                                  type: boolean
                                addDashboard:
                                  description: >-
                                    Create new dashboards. Grants editing.
                                    Unset: on, for a role that grants editing.
                                  type: boolean
                              additionalProperties: false
                              description: >-
                                A project user role's permissions. A role grants
                                editing only through one of addChart, addFilter,
                                createChart, editCharts, removeChart,
                                addDashboard or canDuplicateDashboard set to
                                true, and never while readOnly is on. Any other
                                role, `{}` included, is view-only, and so is a
                                project user with no role. An edit never changes
                                the shared dashboard: it is saved to the user's
                                own copy.
                            created_at: {}
                            updated_at: {}
                          required:
                            - id
                            - name
                            - organization_id
                            - project_id
                            - permissions
                            - created_at
                            - updated_at
                          additionalProperties: false
                    required:
                      - userRoles
                    additionalProperties: false
                required:
                  - status
                  - data
                additionalProperties: false
        '400':
          description: GET /v1/api/projects/:projectId/user-roles 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: query
      name: apiKey

````

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