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

> List every user's rules in the workspace, with their owners' names, for a builder's oversight



## OpenAPI

````yaml get /v2/api/projects/{projectId}/workspaces/{workspaceId}/rules
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}/rules:
    get:
      summary: List every user's rules in the workspace, with th…
      description: >-
        List every user's rules in the workspace, with their owners' names, for
        a builder's oversight
      operationId: GetV2ApiProjectsProjectIdWorkspacesWorkspaceIdRules
      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 the workspace belongs to.
          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 the workspace belongs to.
        - name: workspaceId
          in: path
          required: true
          description: The workspace the rule lives in.
          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 workspace the rule lives in.
        - name: limit
          in: query
          required: false
          description: How many rules to return. 1 to 100; 50 when omitted.
          schema:
            description: How many rules to return. 1 to 100; 50 when omitted.
            type: integer
            minimum: 1
            maximum: 100
        - name: offset
          in: query
          required: false
          description: >-
            How many rules to skip first, for the pages after the first. 0 when
            omitted.
          schema:
            description: >-
              How many rules to skip first, for the pages after the first. 0
              when omitted.
            type: integer
            minimum: 0
            maximum: 9007199254740991
      responses:
        '200':
          description: >-
            GET /v2/api/projects/:projectId/workspaces/:workspaceId/rules
            Positive response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: success
                  data:
                    type: object
                    properties:
                      rules:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The rule's id.
                            name:
                              type: string
                              description: What the rule is called.
                            description:
                              type:
                                - string
                                - 'null'
                            shape:
                              type:
                                - string
                                - 'null'
                              enum:
                                - interactive
                                - scheduled
                                - conditional
                              description: >-
                                What kind of rule this is, derived from its
                                trigger: 'interactive' (an element on the
                                canvas), 'scheduled' (a schedule, fires on every
                                tick) or 'conditional' (a schedule plus a
                                condition, fires per its firing mode).
                            status:
                              type: string
                              enum:
                                - draft
                                - active
                                - paused
                              description: >-
                                'draft' while being designed, 'active' once a
                                person has activated it, 'paused' by its owner,
                                a builder or the system.
                            pausedReason:
                              type:
                                - string
                                - 'null'
                              enum:
                                - owner_removed
                                - owner_inactive
                                - access_lost
                                - source_removed
                                - connection_lost
                                - too_many_failures
                                - builder_paused
                                - invalid
                              description: >-
                                Why the system or a builder paused a rule: its
                                owner was removed or has not been active for 14
                                days, the owner lost access to the canvas or to
                                the condition's tile, the tile or canvas was
                                removed, the destination connection needs
                                reconnecting, it failed too many times in a row,
                                a builder paused it, or it is incomplete or
                                corrupted (invalid; the reason is in
                                invalid_detail).
                            canvasId:
                              type: string
                              description: The canvas the rule lives on.
                            canvasName:
                              type:
                                - string
                                - 'null'
                            whenSummary:
                              type: string
                              description: >-
                                The 'When...' line in plain English, e.g. 'Every
                                day at 9:00', 'Button: Emails a PDF to
                                finance.'.
                            thenSummary:
                              type: string
                              description: >-
                                The 'Then...' line in plain English, naming the
                                tool and the pinned destination, e.g. 'Send to
                                #finance via Dana's Slack · post_message'.
                            lastFiredAt:
                              type:
                                - string
                                - 'null'
                            lastError:
                              type:
                                - string
                                - 'null'
                            ownerProjectUserId:
                              type:
                                - string
                                - 'null'
                            ownerName:
                              type:
                                - string
                                - 'null'
                            updatedAt:
                              type: string
                              description: When the rule last changed, ISO 8601.
                            version:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                              description: >-
                                The rule's version: 1 when created, and one more
                                each time it is saved. Runs record the version
                                they ran with.
                            hasPendingChanges:
                              type: boolean
                              description: >-
                                Whether the rule has unsaved changes. They do
                                nothing until the rule is saved.
                            invalidDetail:
                              type:
                                - string
                                - 'null'
                            onCanvas:
                              type:
                                - boolean
                                - 'null'
                          required:
                            - id
                            - name
                            - description
                            - shape
                            - status
                            - pausedReason
                            - canvasId
                            - canvasName
                            - whenSummary
                            - thenSummary
                            - lastFiredAt
                            - lastError
                            - ownerProjectUserId
                            - ownerName
                            - updatedAt
                            - version
                            - hasPendingChanges
                            - invalidDetail
                            - onCanvas
                          additionalProperties: false
                          description: A rule as one row of the Rules list.
                        description: >-
                          One page of every user's rules in the workspace, most
                          recently changed first, with their owners' names.
                      total:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                        description: >-
                          How many rules the workspace has in all, on every
                          page.
                    required:
                      - rules
                      - total
                    additionalProperties: false
                required:
                  - status
                  - data
                additionalProperties: false
        '400':
          description: >-
            GET /v2/api/projects/:projectId/workspaces/:workspaceId/rules
            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_2: []
components:
  securitySchemes:
    APIKEY_2:
      type: apiKey
      in: query
      name: apiKey

````

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