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

# List organization policy rules

> Returns your organization's policy rules in first-match order, with the Default Rule last. Requires the admin or owner role to read the rule set.

Returns every organization rule in the order the gateway evaluates them. Use it to review the policy that binds all workspaces. See [Rules](https://onecli.sh/docs/guides/rules.md) for how first-match evaluation works. Admin or owner.

The organization's rules in first-match order, the Default Rule last. Admin or owner.

> [!NOTE]
>
> **Availability:** Cloud · Community (self-hosted) · Enterprise (self-hosted)


## OpenAPI

````yaml /openapi.yaml get /org/policy/rules
openapi: 3.1.0
info:
  title: OneCLI API
  version: '1.0'
  description: >
    The OneCLI API manages everything behind the gateway: workspaces, agents and
    what each agent may use (grants), secrets, app connections, organization
    policy, hosted-agent conversations, schedules, memory, skills, Slack
    channels, and the organization's directory.


    **Base URL:** `https://api.onecli.sh/v1` (OneCLI Cloud) or
    `http://localhost:10254/v1` (self-hosted).


    ## Authentication


    Every endpoint takes an `Authorization: Bearer <token>` header unless its
    description says otherwise.


    - **Workspace API key** (`oc_…`) — acts inside one workspace. Read it from
    the dashboard or `GET /user/api-key`.

    - **Organization API key** (`oc_org_…`) — acts for the whole organization.
    Workspace-scoped endpoints additionally need an `X-Workspace-Id` header
    naming the workspace; without it they answer `401`.

    - **Dashboard session** — the browser's own session (Cloud: a bearer JWT;
    self-hosted: the session cookie).


    `X-Workspace-Id` replaced `X-Project-Id`. The old header, the `?_project`
    query bridge, and the `/v1/projects` path alias still work for a deprecation
    window and answer with a `Deprecation: true` header; migrate to the new
    names.


    ## Editions


    Each endpoint states where it is available. Unless marked otherwise an
    endpoint exists on **OneCLI Cloud**, the **Community** self-hosted edition,
    and the **Enterprise** self-hosted edition. Endpoints tagged **Enterprise**
    answer `403` with `error.type: "enterprise_license_required"` on a
    self-hosted deployment that has not set `ENTERPRISE_ENABLED=true`; on Cloud
    they are always present, though some features are additionally gated by the
    organization's plan. Endpoints tagged **Cloud** do not exist on self-hosted
    deployments at all.


    ## Roles


    Organization-level endpoints (`/org/…`) require the **admin** or **owner**
    role wherever roles are enforced (Cloud and Enterprise). The Community
    edition runs a flat team: every active member passes the role check.
servers:
  - url: https://api.onecli.sh/v1
    description: OneCLI Cloud
  - url: http://localhost:10254/v1
    description: Self-hosted
security:
  - bearerAuth: []
tags:
  - name: Workspaces
    description: >-
      Workspaces partition an organization's agents, secrets, and connections.
      Every workspace-scoped endpoint resolves its workspace from the API key
      (or `X-Workspace-Id` with an organization key).
  - name: Agents
    description: >-
      Manage agents, their gateway access tokens, and hosted-agent
      configuration.
  - name: Grants
    description: >-
      Which credentials each agent may use — attach app connections (with
      optional per-tool allow/approval lists and resource scoping) and secrets.
      Writes take effect immediately.
  - name: Secrets
    description: >-
      Credentials the gateway injects into outbound requests that match a host
      pattern.
  - name: Apps
    description: >-
      The app catalog, OAuth and direct-credential connects, your own OAuth
      client configuration, permission catalogs, and blocklists.
  - name: Connections
    description: Connected app accounts as a top-level resource.
  - name: Effective policy
    description: >-
      Read-only reflections of what the enforced policy means for an agent, a
      connection, or an app — workspace grants composed with organization rules.
  - name: Conversations
    description: >-
      Talk to a hosted agent. A conversation owns its turns, transcript, and
      attachments.
  - name: Schedules
    description: Cron-style schedules on a hosted agent.
  - name: Memories
    description: A hosted agent's memory files and their revision history.
  - name: Skills
    description: >-
      Skills reachable from a workspace — the organization's, the workspace's
      own, and per-agent ones.
  - name: Channels
    description: >-
      Where a hosted agent is reachable (Slack), who may reach it, who it may
      message, and which other agents it may talk to.
  - name: Approvals
    description: Long-poll for the gateway's manual-approval requests and submit decisions.
  - name: User
    description: Your profile, API keys, SSH keys, and account deletion.
  - name: Instance
    description: Unauthenticated deployment facts and bootstrap endpoints.
  - name: Utility
    description: Counts, vaults, and agent bootstrap helpers.
  - name: Organization
    description: The current organization and its invitations. Free on every edition.
  - name: Organization secrets
    description: Secrets shared into every workspace of the organization.
  - name: Organization policy
    description: >-
      The organization's first-match rule set — blocks, allows, rate limits,
      approvals, and app permissions that bind every workspace.
  - name: Organization connections
    description: App connections shared into every workspace of the organization.
  - name: Organization apps
    description: >-
      Connect apps and configure your own OAuth clients at the organization
      level.
  - name: Organization skills
    description: Skills every workspace in the organization receives.
  - name: Organization channels
    description: The organization's Slack integration and identity links.
  - name: Organization approvals
    description: Long-poll for manual-approval requests across every workspace.
  - name: Members
    description: The organization directory — list, provision, suspend, and remove members.
  - name: Groups
    description: Directory groups and group-to-role mappings.
  - name: Workspace access
    description: Share a workspace with people and groups.
  - name: Domains
    description: Verified email domains, the anchor for SSO and home-realm discovery.
  - name: SSO
    description: SAML and OIDC sign-in connections and organization-wide enforcement.
  - name: SCIM tokens
    description: Bearer tokens for the organization's SCIM endpoint.
  - name: App availability
    description: Restrict which apps each workspace may connect.
  - name: Provisioning
    description: >-
      Pre-create members with a ready workspace and API key, then let them claim
      the account.
  - name: Resource browsing
    description: Browse a connected account's folders to pick resource scopes for a grant.
  - name: SCIM
    description: >-
      The SCIM 2.0 provisioning endpoint for identity providers (Okta, Entra ID,
      and others).
paths:
  /org/policy/rules:
    get:
      tags:
        - Organization policy
      summary: List organization rules
      description: >-
        The organization's rules in first-match order, the Default Rule last.
        Admin or owner.
      operationId: listOrgPolicyRules
      parameters:
        - $ref: '#/components/parameters/policyStatus'
      responses:
        '200':
          description: Rules
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PolicyRule'
components:
  parameters:
    policyStatus:
      name: status
      in: query
      required: false
      schema:
        type: string
        enum:
          - draft
          - published
        default: draft
      description: >-
        Which copy to read. Every write publishes immediately, so the two are
        identical unless a write is in flight.
  schemas:
    PolicyRule:
      type: object
      description: >-
        A policy-engine rule. Every write is enforced immediately; the
        draft/published split survives only for older clients. Published row
        `id`s regenerate on every publish; `logicalId` is the identity stable
        across statuses and generations.
      properties:
        id:
          type: string
        scope:
          type: string
          enum:
            - organization
            - workspace
        status:
          type: string
          enum:
            - draft
            - published
        generation:
          type: integer
          description: >-
            0 for the draft working copy; the snapshot number for published
            rows.
        priority:
          type: integer
          description: First-match order (lower evaluates first).
        enabled:
          type: boolean
        isDefault:
          type: boolean
          description: True on the scope's terminal Default Rule.
        logicalId:
          type: string
          description: >-
            Generation-stable identity; compare rules across draft/published by
            this, never by `id`.
        source:
          type: string
          description: >-
            `custom` (user-owned, editable), `default` (the Default Rule), or
            system-managed rows: `blocklist` (compiled from app blocklists) and,
            at workspace scope, `grant` (compiled from agent grants; managed
            through the Grants endpoints, never edited as rules).
        name:
          type: string
        description:
          type: string
          nullable: true
        action:
          type: string
          enum:
            - allow
            - block
        rateLimit:
          type: integer
          nullable: true
        rateLimitWindow:
          type: string
          nullable: true
          enum:
            - minute
            - hour
            - day
            - null
        requireApproval:
          type: boolean
        conditions:
          description: >-
            A conditions array, a session-policy object (`{repositories}` /
            `{folders}` / `{driveFolders}`), or null.
          nullable: true
        identities:
          type: array
          items:
            $ref: '#/components/schemas/PolicyRuleIdentity'
        targets:
          type: array
          items:
            $ref: '#/components/schemas/PolicyRuleTarget'
        createdAt:
          type: string
          format: date-time
    PolicyRuleIdentity:
      type: object
      description: >-
        A principal the rule applies to. Organization rules take `user`/`group`
        identities (`agent` exists at workspace scope only). An empty identity
        list means the rule applies to everyone. Targeting a `group` is an
        Enterprise feature.
      required:
        - type
        - id
      properties:
        type:
          type: string
          enum:
            - agent
            - user
            - group
        id:
          type: string
    PolicyRuleTarget:
      type: object
      description: >-
        One destination the rule matches, a discriminated union on `kind`: an
        `app` target (provider, optionally narrowed by `tools`), a `connection`
        target (`connectionId`, optional `tools`), a `secret` target (a specific
        `secretId` XOR a `secretScope` level), or a `network` target
        (host/path/method patterns). A rule needs at least one target.
      required:
        - kind
      properties:
        kind:
          type: string
          enum:
            - app
            - connection
            - secret
            - network
        provider:
          type: string
          description: '`app` targets: the provider id (for example `gmail`).'
        tools:
          type: array
          maxItems: 100
          items:
            type: string
          description: >-
            `app`/`connection` targets: narrow matching to these catalog tool
            ids; empty = the whole app.
        connectionScope:
          type: string
          enum:
            - organization
            - workspace
          nullable: true
          description: >-
            `app` targets: set = inject all the agent's connections of the
            provider at that level; `null` (or omitted on write) = a block/allow
            layer with no injection.
        connectionId:
          type: string
          description: '`connection` targets: the connection id.'
        secretId:
          type: string
          description: >-
            `secret` targets: a specific secret (mutually exclusive with
            `secretScope`).
        secretScope:
          type: string
          enum:
            - organization
            - workspace
          description: '`secret` targets: all the agent''s secrets at that level.'
        hostPattern:
          type: string
          maxLength: 1000
          description: '`network` targets.'
        pathPattern:
          type: string
          nullable: true
          maxLength: 1000
        method:
          type: string
          nullable: true
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
            - null
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A workspace API key (`oc_…`) or organization API key (`oc_org_…`).
        Workspace-scoped endpoints called with an organization key also need
        `X-Workspace-Id`.

````

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