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

# Read the workspace's plan entitlements (any member)

> Return the plan entitlements for a workspace: its plan key, per-feature flags (`scheduled_scans`, `continuous_scans`, `api_production`, `artifact_dashboard`, `multi_org`), billable seat usage, the seat ceiling (`null` means unlimited), and whether plan limits are enforced on this deployment at all. Readable by every member including viewers, which is the point — the equivalent billing routes are owner-only, so non-owners had no way to learn what their plan allows and clients defaulted to allowing everything. Carries no billing identifiers, invoice data, or billing contact. Feature flags are *effective*: when `billing_enforced` is false every flag is true, matching what the API will actually serve.

Deliberately cheap: one COUNT for seat usage, with plan and features read off
the workspace row the auth dependency has already loaded. Every member hits
this on page load, so resist adding live usage counts here.



## OpenAPI

````yaml /openapi.json get /api/v1/workspaces/{workspace_id}/entitlements
openapi: 3.1.0
info:
  description: Change Impact Engine for multi-repo systems
  title: Riftmap
  version: 1.19.0
servers: []
security: []
paths:
  /api/v1/workspaces/{workspace_id}/entitlements:
    get:
      tags:
        - workspaces
      summary: Read the workspace's plan entitlements (any member)
      description: >-
        Return the plan entitlements for a workspace: its plan key, per-feature
        flags (`scheduled_scans`, `continuous_scans`, `api_production`,
        `artifact_dashboard`, `multi_org`), billable seat usage, the seat
        ceiling (`null` means unlimited), and whether plan limits are enforced
        on this deployment at all. Readable by every member including viewers,
        which is the point — the equivalent billing routes are owner-only, so
        non-owners had no way to learn what their plan allows and clients
        defaulted to allowing everything. Carries no billing identifiers,
        invoice data, or billing contact. Feature flags are *effective*: when
        `billing_enforced` is false every flag is true, matching what the API
        will actually serve.


        Deliberately cheap: one COUNT for seat usage, with plan and features
        read off

        the workspace row the auth dependency has already loaded. Every member
        hits

        this on page load, so resist adding live usage counts here.
      operationId: >-
        get_workspace_entitlements_api_v1_workspaces__workspace_id__entitlements_get
      parameters:
        - in: path
          name: workspace_id
          required: true
          schema:
            format: uuid
            title: Workspace Id
            type: string
        - in: header
          name: X-Workspace-Id
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Workspace-Id
        - in: cookie
          name: riftmap_access
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Riftmap Access
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkspaceEntitlements'
          description: Successful Response
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    WorkspaceEntitlements:
      description: What the caller's workspace plan allows — safe for any member to read.
      properties:
        billing_enforced:
          title: Billing Enforced
          type: boolean
        features:
          $ref: '#/components/schemas/PlanFeatureFlags'
        plan:
          title: Plan
          type: string
        seat_count:
          title: Seat Count
          type: integer
        seat_limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Seat Limit
      required:
        - plan
        - billing_enforced
        - features
        - seat_count
        - seat_limit
      title: WorkspaceEntitlements
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          title: Detail
          type: array
      title: HTTPValidationError
      type: object
    PlanFeatureFlags:
      description: >-
        The canonical paid-feature flags, named explicitly.


        Spelled out rather than typed ``dict[str, bool]`` because the published
        schema

        is the contract AI agents and CI pipelines read (see CLAUDE.md); an open

        ``additionalProperties: boolean`` map tells a reader nothing about which
        keys

        exist. Kept in lockstep with ``CANONICAL_FEATURE_KEYS`` by a test — a
        key added

        on one side and not the other would otherwise read as a silent
        ``false``.
      properties:
        api_production:
          title: Api Production
          type: boolean
        artifact_dashboard:
          title: Artifact Dashboard
          type: boolean
        continuous_scans:
          title: Continuous Scans
          type: boolean
        multi_org:
          title: Multi Org
          type: boolean
        scheduled_scans:
          title: Scheduled Scans
          type: boolean
      required:
        - scheduled_scans
        - continuous_scans
        - api_production
        - artifact_dashboard
        - multi_org
      title: PlanFeatureFlags
      type: object
    ValidationError:
      properties:
        ctx:
          title: Context
          type: object
        input:
          title: Input
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          title: Message
          type: string
        type:
          title: Error Type
          type: string
      required:
        - loc
        - msg
        - type
      title: ValidationError
      type: object
  securitySchemes:
    APIKeyHeader:
      in: header
      name: X-API-Key
      type: apiKey
    HTTPBearer:
      description: API key as Bearer token (rfm_live_... prefix)
      scheme: bearer
      type: http

````