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

# Update a framework

> Update a governance framework.

The most common use is activating or deactivating a framework for the workspace by setting
`enabled`. Rules of a disabled framework are not evaluated and do not count towards compliance.

Frameworks that ship with Openlayer report `immutable: true`. For those, only `enabled`, `tags`,
and `projectSelector` can be changed -- their name and definition are managed by Openlayer.

Only the fields you send are changed.




## OpenAPI

````yaml put /frameworks/{frameworkId}
openapi: 3.0.3
info:
  contact:
    email: support@openlayer.com
    name: Openlayer
    url: https://openlayer.com/
  description: API for interacting with the Openlayer server.
  title: Openlayer API
  version: '1.0'
  x-logo:
    url: https://logo.clearbit.com/openlayer.com
servers:
  - url: https://api.openlayer.com/v1
    description: Our prod backend
security:
  - bearerAuth: []
paths:
  /frameworks/{frameworkId}:
    put:
      tags:
        - Governance
      summary: Update a framework
      description: >
        Update a governance framework.


        The most common use is activating or deactivating a framework for the
        workspace by setting

        `enabled`. Rules of a disabled framework are not evaluated and do not
        count towards compliance.


        Frameworks that ship with Openlayer report `immutable: true`. For those,
        only `enabled`, `tags`,

        and `projectSelector` can be changed -- their name and definition are
        managed by Openlayer.


        Only the fields you send are changed.
      operationId: updateFramework
      parameters:
        - $ref: '#/components/parameters/frameworkId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name: f04fa658-eae0-400c-ba02-a0ba9829cc7d
                description: 6a71c98a-0e49-420e-adfc-0ac8f95574a8
                enabled: 34415568-51db-4708-84d9-09956ce29470
                projectSelector: 6d4d3820-e19b-41d3-82d0-8836a6fe946c
                tags: d60504f3-fc50-43de-b928-92df0251e19a
                avatar: b4e64b1e-1618-4bfa-b1e8-67ee5cdd86cb
                extendedDescription: 5f1f121b-bfb7-4d2c-af65-ed13a9e47f49
                href: 7b168989-30f7-4e52-8857-acbfc8b467bf
      responses:
        '200':
          description: Status OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Framework'
        default:
          $ref: '#/components/responses/UnexpectedError'
      x-codeSamples:
        - lang: curl
          source: |
            curl --request PUT \
              --url https://api.openlayer.com/v1/frameworks/9f1b3c2d-4e5a-4f60-8a71-2b3c4d5e6f70 \
              --header 'Authorization: Bearer <token>' \
              --header 'Content-Type: application/json' \
              --data '{"enabled": true}'
components:
  parameters:
    frameworkId:
      name: frameworkId
      in: path
      description: The framework id.
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    Framework:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          description: The framework id.
          example: 9f1b3c2d-4e5a-4f60-8a71-2b3c4d5e6f70
        workspaceId:
          type: string
          format: uuid
          readOnly: true
          description: The id of the workspace the framework belongs to.
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        creatorId:
          type: string
          format: uuid
          nullable: true
          readOnly: true
          description: The user who created the framework. `null` for built-in frameworks.
        name:
          type: string
          maxLength: 255
          description: The framework name.
          example: EU AI Act
        description:
          type: string
          nullable: true
          maxLength: 5000
          description: A short description of the framework.
          example: Requirements for high-risk AI systems under the EU AI Act.
        extendedDescription:
          type: object
          nullable: true
          additionalProperties: true
          description: A longer, rich-text description, as a TipTap JSON document.
        href:
          type: string
          nullable: true
          maxLength: 2048
          description: >-
            A link to the external standard or regulation the framework is based
            on.
        enabled:
          type: boolean
          default: false
          description: >
            Whether the framework is active. Rules of a disabled framework are
            not evaluated and do not count towards compliance.
        avatar:
          type: object
          nullable: true
          description: The icon shown for the framework.
          required:
            - type
            - value
          properties:
            type:
              type: string
              enum:
                - emoji
                - imageUrl
                - builtinImage
              example: emoji
            value:
              type: string
              example: 🧭
        builtInSlug:
          type: string
          nullable: true
          description: >
            Identifies a framework that ships with Openlayer, for example
            `eu_ai_act`, `iso_42001`, `nist_ai_rmf`, or `traiga`. `null` for
            frameworks you create yourself.
          example: eu_ai_act
        immutable:
          type: boolean
          readOnly: true
          description: >-
            Whether the framework definition is managed by Openlayer and cannot
            be edited.
        projectSelector:
          type: object
          nullable: true
          description: >
            Determines which projects the framework applies to. An empty or
            `null` `match` array applies the framework to every project in the
            workspace.
          properties:
            match:
              type: array
              nullable: true
              maxItems: 10
              description: Match criteria, ANDed together.
              items:
                type: object
                required:
                  - property
                  - value
                properties:
                  property:
                    type: string
                    description: The project property to match against.
                    enum:
                      - taskType
                      - riskLevel
                      - riskTotalScore
                      - name
                      - ownerId
                      - modelTypes
                  operator:
                    type: string
                    default: equals
                    description: >
                      How to compare the project property with `value`. One of
                      `equals`, `notEquals`, `contains`, `notContains`,
                      `startsWith`, `endsWith`, `in`, `notIn`, `greaterThan`,
                      `greaterThanOrEqual`, `lessThan`, `lessThanOrEqual`,
                      `equalsIgnoreCase`, `containsIgnoreCase`, `matches`,
                      `exists`, or `notExists`.
                  value:
                    nullable: true
                    description: >
                      The value to match against. Pass an array to match any of
                      several values, or `null` to match projects where the
                      property is unset. Omit it for `exists` and `notExists`.
              example:
                - property: riskLevel
                  value:
                    - high
                    - critical
        tags:
          type: array
          default: []
          description: Free-form labels on the framework.
          items:
            type: string
          example:
            - regulation
            - eu
        dateCreated:
          type: string
          format: date-time
          readOnly: true
          description: The creation date.
          example: '2026-03-22T11:31:01.185Z'
        dateUpdated:
          type: string
          format: date-time
          readOnly: true
          description: The last update date.
          example: '2026-03-22T11:31:01.185Z'
        ruleStats:
          readOnly: true
          description: >
            Compliance roll-up for the framework. Present only on `GET
            /workspaces/{workspaceId}/frameworks` when the request sets
            `includeRuleStats=true`.
          allOf:
            - $ref: '#/components/schemas/FrameworkRuleStats'
      required:
        - id
        - workspaceId
        - name
        - enabled
        - tags
        - dateCreated
        - dateUpdated
    FrameworkRuleStats:
      type: object
      properties:
        ruleResults:
          description: >
            Rule result counts by status for this framework, matching what
            `/workspaces/{workspaceId}/rule-stats?frameworkId=<id>` reports.
            Narrowed to a single project when the request also carries
            `projectId`.
          allOf:
            - $ref: '#/components/schemas/RuleResultStatusCounts'
        projectCompletion:
          type: object
          description: >
            How many of the framework's projects fall into each completion band,
            where a project's completion is the share of its rule results that
            are passing or skipped. Projects with no evaluated results count as
            `low`.


            Zeroed when the request carries `projectId`: the bands compare a
            framework's projects against each other, which says nothing about a
            single project.
          properties:
            high:
              type: integer
              minimum: 0
              description: Projects at 80% completion or above.
            mid:
              type: integer
              minimum: 0
              description: Projects at or above 20% but below 80% completion.
            low:
              type: integer
              minimum: 0
              description: Projects below 20% completion.
          required:
            - high
            - mid
            - low
      required:
        - ruleResults
        - projectCompletion
    RuleResultStatusCounts:
      type: object
      properties:
        total:
          type: integer
          minimum: 0
          description: The total number of rule results.
        totalPassing:
          type: integer
          minimum: 0
          description: The number of passing rule results.
        totalFailing:
          type: integer
          minimum: 0
          description: The number of failing rule results.
        totalSkipped:
          type: integer
          minimum: 0
          description: The number of skipped rule results.
        totalRunning:
          type: integer
          minimum: 0
          description: The number of rule results currently being evaluated.
        totalError:
          type: integer
          minimum: 0
          description: The number of rule results that errored during evaluation.
        totalPending:
          type: integer
          minimum: 0
          description: The number of rule results that have not been satisfied yet.
        totalDueSoon:
          type: integer
          minimum: 0
          description: The number of rule results whose evidence is about to expire.
      required:
        - total
        - totalPassing
        - totalFailing
        - totalSkipped
        - totalRunning
        - totalError
        - totalPending
        - totalDueSoon
  responses:
    UnexpectedError:
      description: Unexpected error.
      content:
        application/json:
          schema:
            type: object
            required:
              - code
              - error
            properties:
              code:
                type: integer
                format: int32
              error:
                type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >
        Bearer authentication header of the form `Bearer <token>`, where
        `<token>` is your workspace API key. See [Find your API
        key](https://www.openlayer.com/docs/workspace-and-projects/find-your-api-key)
        for more information.

````