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

# Update library policies

> Incremental update with the same body as `PATCH /v2/policies`. With `dryRun: true` nothing is saved and the response shows the result and its library count. Owners and admins only. Teamspace name and deletion are not part of this API.



## OpenAPI

````yaml https://context7.com/openapi.json patch /v2/teamspaces/{teamspaceId}/policies
openapi: 3.0.0
info:
  title: Context7 Public API
  description: >-
    The Context7 Public API provides programmatic access to library
    documentation and search functionality. Get up-to-date documentation and
    code examples for any library.
  version: 2.0.0
  contact:
    name: Context7 Support
    url: https://context7.com
    email: support@context7.com
servers:
  - url: https://context7.com/api
    description: Production server
security: []
tags:
  - name: Search
    description: Search for libraries in the Context7 database
  - name: Context
    description: Retrieve documentation context for queries
  - name: Ask
    description: Answer questions from a website registered with Context7 Ask
  - name: Refresh
    description: Refresh existing libraries to fetch latest documentation
  - name: Policies
    description: Manage teamspace access policies and filters
  - name: Add Library
    description: Submit new libraries for documentation processing
  - name: Metrics
    description: Retrieve usage metrics for libraries
  - name: Usage
    description: See member and teamspace API usage
  - name: Teamspaces
    description: >-
      Teamspaces the caller is a member of. The management API
      (`/v2/teamspaces/*`) accepts a Context7 API key, which reaches only its
      own teamspace and can make changes or read personal data only when it was
      created with write access (other keys can only read and get 403
      `write_access_required` on writes and on personal data), or an OAuth token
      issued for the Context7 Admin MCP server
      (`https://admin.mcp.context7.com/mcp`), which reaches every teamspace of
      the user. A browser session is not accepted.
  - name: Teamspace Admin
    description: >-
      Members, invitations, rules, library policies and requests, usage and the
      spending limit of a teamspace. Every API key can read rules, policies,
      usage and the spending limit. Changes, and reading members, invitations,
      the invite link and library requests (they name people), need an API key
      created with **Write access** ticked (other keys get 403
      `write_access_required`), or the Context7 Admin MCP sign-in.
  - name: Teamspace Libraries
    description: >-
      A teamspace's libraries: its private sources and the libraries it has
      claimed. Add, refresh, configure, version, claim and remove them, and read
      their parse state and usage. A library id `/owner/repo` is two path
      segments. Every API key can read. Changes need an API key created with
      **Write access** ticked (other keys get 403 `write_access_required`), or
      the Context7 Admin MCP sign-in.
  - name: Docs7 Sites
    description: >-
      Docs7 documentation sites of a teamspace: settings, custom domains,
      deployments, previews and the Docs7 agents. Any member can read; owners
      and admins can change; developers can add a site, publish one added for
      the agents only, and rebuild. Sites deployed with the `docs7 deploy` CLI
      have `source: "local"`; operations marked GitHub-only answer 404 for them.
      Every API key can read, except feature requests and the GitHub account
      behind a build (personal data). Changes, and those reads, need an API key
      created with **Write access** ticked (other keys get 403
      `write_access_required`), or the Context7 Admin MCP sign-in.
  - name: Docs7 Analytics
    description: >-
      Traffic of one Docs7 site: visitors, AI crawlers, searches, assistant
      questions and page feedback. Docs7 Free reads the last 7 days, Docs7 Pro
      the last 90. Every API key can read the visitor, crawler and path reports.
      Searches, questions, conversations, feedback and the raw records
      (`explore`) are personal data and need an API key created with **Write
      access** ticked, or the Context7 Admin MCP sign-in.
  - name: Ask Sites
    description: >-
      Manage a teamspace's Context7 Ask sites: add, verify, remove, and read
      their analytics and question log. Every API key can read the sites.
      Changes, and reading the analytics and question log (visitor questions),
      need an API key created with **Write access** ticked (other keys get 403
      `write_access_required`), or the Context7 Admin MCP sign-in.
paths:
  /v2/teamspaces/{teamspaceId}/policies:
    parameters:
      - name: teamspaceId
        in: path
        required: true
        description: Teamspace id (from `GET /v2/teamspaces`).
        schema:
          type: string
          format: uuid
    patch:
      tags:
        - Teamspace Admin
      summary: Update library policies
      description: >-
        Incremental update with the same body as `PATCH /v2/policies`. With
        `dryRun: true` nothing is saved and the response shows the result and
        its library count. Owners and admins only. Teamspace name and deletion
        are not part of this API.
      operationId: updateTeamspacePolicies
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/PatchPoliciesRequest'
                - type: object
                  properties:
                    dryRun:
                      type: boolean
                      description: Preview the change and its library count without saving.
      responses:
        '200':
          description: Updated policies, or the dry-run preview
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/PolicyResponse'
                  - $ref: '#/components/schemas/TeamspacePolicyDryRunResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    PatchPoliciesRequest:
      type: object
      description: >-
        Incremental policy update. All fields are optional — only provided
        fields are modified. At least one of 'sourceTypes' or 'libraryFilters'
        must be provided.
      minProperties: 1
      properties:
        dryRun:
          type: boolean
          description: Preview the change and its library count without saving.
        sourceTypes:
          type: object
          description: >-
            Enable or disable specific source types. Both can be provided in one
            request, but the same type cannot appear in both arrays.
          properties:
            enable:
              type: array
              items:
                type: string
                enum:
                  - public_repos
                  - private_sources
                  - confluence
                  - uploaded_files
                  - websites
                  - llmstxt
              description: Source types to enable
            disable:
              type: array
              items:
                type: string
                enum:
                  - public_repos
                  - private_sources
                  - confluence
                  - uploaded_files
                  - websites
                  - llmstxt
              description: Source types to disable
        libraryFilters:
          type: object
          description: Update library access filters.
          properties:
            mode:
              type: string
              nullable: true
              enum:
                - quality
                - select
                - null
              description: Filter mode (null to clear)
            quality:
              type: object
              description: Update quality-mode settings.
              properties:
                requireVerified:
                  type: boolean
                  description: Restrict to verified libraries only
                minTrustScore:
                  type: integer
                  nullable: true
                  minimum: 0
                  maximum: 10
                  description: Minimum trust score, 0-10 (null to clear)
                maxAgeDays:
                  type: integer
                  nullable: true
                  minimum: 1
                  description: Maximum age in days (null to clear)
                blockedLibraries:
                  $ref: '#/components/schemas/ListOperation'
                exceptedLibraries:
                  $ref: '#/components/schemas/ListOperation'
                repoFilters:
                  type: object
                  description: Update repo-specific quality filters.
                  properties:
                    minStars:
                      type: integer
                      nullable: true
                      minimum: 0
                      description: Minimum stars threshold (null to clear)
                    allowedLicenses:
                      $ref: '#/components/schemas/LicenseListOperation'
                websiteFilters:
                  type: object
                  description: Update website-specific quality filters.
                  properties:
                    minBacklinks:
                      type: integer
                      nullable: true
                      minimum: 0
                      description: Minimum backlinks threshold (null to clear)
                    minReferringDomains:
                      type: integer
                      nullable: true
                      minimum: 0
                      description: Minimum referring domains threshold (null to clear)
                    minOrganicTraffic:
                      type: integer
                      nullable: true
                      minimum: 0
                      description: Minimum organic traffic threshold (null to clear)
            select:
              type: object
              description: Update select-mode settings.
              properties:
                allowedLibraries:
                  $ref: '#/components/schemas/ListOperation'
    PolicyResponse:
      type: object
      description: Complete teamspace policy configuration
      properties:
        sourceTypes:
          type: object
          description: Access settings for each documentation source type
          properties:
            public_repos:
              $ref: '#/components/schemas/SourceTypeStatus'
            private_sources:
              $ref: '#/components/schemas/SourceTypeStatus'
            confluence:
              $ref: '#/components/schemas/SourceTypeStatus'
            uploaded_files:
              $ref: '#/components/schemas/SourceTypeStatus'
            websites:
              $ref: '#/components/schemas/SourceTypeStatus'
            llmstxt:
              $ref: '#/components/schemas/SourceTypeStatus'
          required:
            - public_repos
            - private_sources
            - confluence
            - uploaded_files
            - websites
            - llmstxt
        libraryFilters:
          type: object
          description: Library access filters. Mode determines which sub-object is active.
          properties:
            mode:
              type: string
              nullable: true
              enum:
                - quality
                - select
                - null
              description: >-
                Filter mode: 'quality' for threshold-based filtering, 'select'
                for manual library selection
            quality:
              type: object
              description: Quality-mode settings (active when mode is 'quality')
              properties:
                requireVerified:
                  type: boolean
                  description: Restrict to verified libraries only
                minTrustScore:
                  type: integer
                  nullable: true
                  description: Minimum trust score, 0-10
                maxAgeDays:
                  type: integer
                  nullable: true
                  description: Maximum days since last update
                blockedLibraries:
                  type: array
                  items:
                    type: string
                  description: Libraries excluded from results
                exceptedLibraries:
                  type: array
                  items:
                    type: string
                  description: >-
                    Libraries that bypass all quality filters, blocked list, and
                    source type restrictions
                repoFilters:
                  type: object
                  description: Repo-specific quality filters
                  properties:
                    minStars:
                      type: integer
                      nullable: true
                      description: Minimum GitHub stars required
                    allowedLicenses:
                      type: array
                      items:
                        type: string
                      description: >-
                        SPDX license identifiers (e.g. 'MIT', 'Apache-2.0') that
                        are allowed. Empty array means no license restriction.
                        Applies to public repos only; non-repo source types pass
                        through.
                  required:
                    - minStars
                    - allowedLicenses
                websiteFilters:
                  type: object
                  description: Website-specific quality filters
                  properties:
                    minBacklinks:
                      type: integer
                      nullable: true
                      description: Minimum number of backlinks required
                    minReferringDomains:
                      type: integer
                      nullable: true
                      description: Minimum number of referring domains required
                    minOrganicTraffic:
                      type: integer
                      nullable: true
                      description: Minimum monthly organic traffic required
                  required:
                    - minBacklinks
                    - minReferringDomains
                    - minOrganicTraffic
              required:
                - requireVerified
                - minTrustScore
                - maxAgeDays
                - blockedLibraries
                - exceptedLibraries
                - repoFilters
                - websiteFilters
            select:
              type: object
              description: Select-mode settings (active when mode is 'select')
              properties:
                allowedLibraries:
                  type: array
                  items:
                    type: string
                  description: Libraries explicitly allowed
              required:
                - allowedLibraries
          required:
            - mode
            - quality
            - select
        accessibleLibraryCount:
          type: integer
          description: Number of public libraries currently accessible under these filters
      required:
        - sourceTypes
        - libraryFilters
        - accessibleLibraryCount
    TeamspacePolicyDryRunResponse:
      allOf:
        - $ref: '#/components/schemas/PolicyResponse'
        - type: object
          properties:
            dryRun:
              type: boolean
              enum:
                - true
            currentAccessibleLibraryCount:
              type: integer
              description: Libraries the saved policies allow now.
      description: >-
        The policies the patch would give. `accessibleLibraryCount` counts the
        libraries they would allow. Nothing is saved.
    ListOperation:
      type: object
      description: >-
        Incremental add/remove operation on a list of library identifiers or
        domains. Use 'clear' to remove all entries at once.
      properties:
        add:
          type: array
          items:
            type: string
          description: >-
            Identifiers to add — library paths (e.g. '/org/repo', '/org') or
            domains (e.g. 'stripe.com')
        remove:
          type: array
          items:
            type: string
          description: >-
            Identifiers to remove — library paths (e.g. '/org/repo', '/org') or
            domains (e.g. 'stripe.com')
        clear:
          type: boolean
          description: >-
            Set to true to remove all entries. Cannot be used together with
            'add' or 'remove'.
    LicenseListOperation:
      type: object
      description: >-
        Incremental add/remove operation on a list of SPDX license identifiers.
        Use 'clear' to remove all entries at once.
      properties:
        add:
          type: array
          items:
            type: string
            pattern: ^[A-Za-z0-9.+\-_]+$
            maxLength: 64
          description: >-
            SPDX license identifiers to add (e.g. 'MIT', 'Apache-2.0',
            'BSD-3-Clause')
        remove:
          type: array
          items:
            type: string
            pattern: ^[A-Za-z0-9.+\-_]+$
            maxLength: 64
          description: SPDX license identifiers to remove
        clear:
          type: boolean
          description: >-
            Set to true to remove all entries. Cannot be used together with
            'add' or 'remove'.
    SourceTypeStatus:
      type: object
      description: Whether a source type is enabled or disabled
      properties:
        enabled:
          type: boolean
          description: Whether this source type is enabled
      required:
        - enabled
    Error:
      type: object
      description: Standard error response
      properties:
        error:
          type: string
          description: Error code identifier
        message:
          type: string
          description: Human-readable error message
      required:
        - error
        - message
  responses:
    BadRequestError:
      description: Bad Request - Invalid input parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            validationError:
              summary: Validation error
              value:
                error: validation_error
                message: Library name is required
            invalidLibraryId:
              summary: Invalid library ID format
              value:
                error: invalid_library_id
                message: >-
                  Invalid library ID format. Expected: `/owner/repo` for GitHub
                  repositories, or `/<source>/<id>` for other sources (the URL
                  path of the library on context7.com)
    UnauthorizedError:
      description: Unauthorized - Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: invalid_api_key
            message: >-
              Invalid API key. Please check your API key. API keys should start
              with 'ctx7sk' prefix.
    ForbiddenError:
      description: Forbidden - Insufficient permissions or plan restrictions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            accessDenied:
              summary: Library not in allowed list
              value:
                error: access_denied
                message: >-
                  Access denied: Library /owner/repo is not included in your
                  allowed libraries
            insufficientRole:
              summary: Insufficient team role
              value:
                error: forbidden
                message: Only team owners and admins can add private repositories
            planRequired:
              summary: Plan upgrade required
              value:
                error: forbidden
                message: >-
                  Private repositories require a pro plan or team. Upgrade at
                  https://context7.com/plans
    NotFoundError:
      description: Not Found - Resource doesn't exist
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            libraryNotFound:
              summary: Library not found
              value:
                error: library_not_found
                message: >-
                  Library "/owner/repo" not found. Please check the library ID
                  or your access permissions.
            versionNotFound:
              summary: Version not found
              value:
                error: version_not_found
                message: >-
                  Version "canary" not found for library "/owner/repo".
                  Available versions: v2.0.0, v1.5.0
            noSnippetsFound:
              summary: No snippets found
              value:
                error: no_snippets_found
                message: Could not fetch documentation snippets from the library.
            noRelevantSnippets:
              summary: No snippets matched the query
              value:
                error: no_relevant_snippets
                message: >-
                  No documentation in "/owner/repo" matched this query. Try a
                  more specific query with different terms, or search for
                  another library that covers this topic.
            teamNotFound:
              summary: Team not found
              value:
                error: team_not_found
                message: Team not found or access denied
            userNotFound:
              summary: User not found
              value:
                error: user_not_found
                message: User not found
            noLibrariesFound:
              summary: No libraries matched search query
              value:
                error: no_libraries_found
                message: >-
                  No libraries found for "nonexistent-lib". Try a different
                  search term.
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: internal_error
            message: An error occurred while processing your request
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Get your API key at
        [context7.com/dashboard](https://context7.com/dashboard). Treat your API
        key like a password and store it securely. Every key can read the
        management API (`/v2/teamspaces/*`), except personal data: member and
        invitation emails, library requesters, visitor questions, Docs7 reader
        searches, conversations, feedback and feature requests, and the GitHub
        account behind a build. To read those or make changes there, the key
        must be created with **Write access** ticked; other keys get 403
        `write_access_required`.

````

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