> ## Documentation index
> Fetch the complete documentation index at: https://context7.com/docs/llms.txt
> Ask it with GET https://context7.com/docs/ask?q=<keywords or question>. Short keywords rank best.
> Use these to discover all available pages before exploring further.
> Feature requests: https://context7.com/docs/resources/feature-requests.md lists what users asked for and how to vote for a request or add one.
> Page rating: `GET https://context7.com/docs/feedback?path=/docs/api-reference/teamspace-admin/update-library-policies&helpful=true` (or `false`) records whether this page helped. An optional `comment` (URL-encoded, at most 500 characters) says what was missing or wrong. It is anonymous and needs no key. Comments hold no code, secrets or personal data.

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

`PATCH /v2/teamspaces/{teamspaceId}/policies`

## 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
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 created with management
      access (other keys get 403 `management_access_required`), which reaches
      only its own teamspace, 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.
  - 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."
  - 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.'
  - 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."
  - name: Ask Sites
    description: "Manage a teamspace's Context7 Ask sites: add, verify, remove, and
      read their analytics and question log"
paths:
  /v2/teamspaces/{teamspaceId}/policies:
    patch:
      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
      tags:
        - Teamspace Admin
      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: []
      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.
components:
  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.
  schemas:
    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
    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
    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
    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'.
    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"
    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.
  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)"
    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
    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.
````
