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

# Update a policy override



## OpenAPI

````yaml /api-reference/services_docs_mintlify_enriched/waap_api.yaml patch /waap/v1/domains/{domain_id}/default-rule-overrides/{policy_override_id}
openapi: 3.1.0
info:
  title: Gcore OpenAPI – WAAP API
  description: >-
    This OpenAPI is an aggregated OpenAPI specification that unifies all Gcore
    products into a single file. It covers Cloud, CDN, DNS, WAAP, DDoS
    Protection, Object Storage, Streaming, and FastEdge services.
  contact:
    email: support@gcore.com
  version: 24def0a6626b
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: API Discovery
  - name: Advanced Rules
  - name: Analytics
  - name: Custom Page Sets
  - name: Custom Rules
  - name: Domains
  - name: Filter Templates
  - name: Firewall Rules
  - name: IP Reputation
  - name: IP Spotlight
  - name: Network Organizations
  - name: Policies
  - name: Policy Overrides
  - name: Pre-billing
  - name: Security Insights
  - name: Tags
  - name: WAAP Service
paths:
  /waap/v1/domains/{domain_id}/default-rule-overrides/{policy_override_id}:
    patch:
      tags:
        - Policy Overrides
      summary: Update a policy override
      operationId: >-
        update_policy_override_v1_domains__domain_id__default_rule_overrides__policy_override_id__patch
      parameters:
        - name: domain_id
          in: path
          required: true
          schema:
            type: integer
            exclusiveMinimum: 0
            description: The domain ID
            title: Domain Id
          description: The domain ID
        - name: policy_override_id
          in: path
          required: true
          schema:
            type: integer
            exclusiveMinimum: 0
            description: Policy override ID
            title: Policy Override Id
          description: Policy override ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyOverrideUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyOverrideResponse'
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APIError'
              example:
                type: http-bad-request
                title: Bad Request
                status: 400
                detail: 'Invalid domain name: '''''''''
          description: Bad Request
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              example:
                detail: Auth token is missing or invalid
        '403':
          description: Quota limit exceeded
          content:
            application/problem+json:
              example:
                title: Quota limit exceeded
                type: quota-check-limit-exceeded
                status: 403
                detail: >-
                  You have reached the maximum limit allowed for your current
                  plan. Please upgrade your plan to add more.
        '404':
          description: Resource not found
          content:
            application/problem+json:
              example:
                title: Resource not found
                type: quota-check-no-resource
                status: 404
                detail: >-
                  The quota resource requested does not exist. Cannot enable
                  WAAP for this domain. Please reach out to our support team.
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/APICompositeError'
              example:
                type: request-validation-failed
                title: Request validation error.
                status: 422
                detail: One or more fields have validation errors.
                errors:
                  - loc:
                      - body
                      - name
                    detail: Input should be a valid string
                  - loc:
                      - body
                      - date
                    detail: Field required
                  - loc:
                      - query
                      - limit
                    detail: Field required
          description: Unprocessable Entity
        '500':
          description: Internal server error.
          content:
            application/problem+json:
              example:
                title: Internal server error.
                type: internal-server-error
                status: 500
                detail: >-
                  Something went wrong. Cannot enable WAAP for this domain.
                  Please try again later or reach out to our support team.
components:
  schemas:
    PolicyOverrideUpdate:
      properties:
        name:
          anyOf:
            - type: string
              maxLength: 100
              minLength: 1
              description: The policy override's display name
            - type: 'null'
          title: Name
        description:
          anyOf:
            - type: string
              maxLength: 1000
            - type: 'null'
          title: Description
          description: An optional note explaining the override
        conditions:
          anyOf:
            - items:
                $ref: '#/components/schemas/PolicyOverrideCondition-Input'
              type: array
              maxItems: 5
              description: >-
                The conditions required for the override to apply. An override
                may have up to 5 conditions; all must pass for the override to
                apply. Without conditions the override applies to every request
                on the owning domain that hits a linked target.
            - type: 'null'
          title: Conditions
        enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enabled
          description: Whether the override is active
      additionalProperties: false
      type: object
      title: PolicyOverrideUpdate
    PolicyOverrideResponse:
      properties:
        id:
          type: integer
          title: Id
          description: The policy override's ID
        domain_id:
          type: integer
          title: Domain Id
          description: The domain this override belongs to
        name:
          type: string
          title: Name
          description: The policy override's display name
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: An optional note explaining the override
        target_type:
          $ref: '#/components/schemas/PolicyOverrideTargetType'
          description: Whether targets are detectors or rules
        targets:
          items:
            $ref: '#/components/schemas/PolicyOverrideTarget'
          type: array
          title: Targets
          description: The detectors or rules this override suppresses
        conditions:
          items:
            $ref: '#/components/schemas/PolicyOverrideCondition-Output'
          type: array
          title: Conditions
          description: >-
            The conditions required for the override to apply. Empty means the
            override applies to every request on the owning domain that hits a
            linked target.
        enabled:
          type: boolean
          title: Enabled
          description: Whether the override is active
        stale:
          type: boolean
          title: Stale
          description: >-
            Whether a linked target has been deleted, disabled, or otherwise
            become invalid. A stale override is not published and does not
            suppress anything until it's edited.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the override was created
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: When the override was last updated
      type: object
      required:
        - id
        - domain_id
        - name
        - target_type
        - targets
        - conditions
        - enabled
        - stale
        - created_at
        - updated_at
      title: PolicyOverrideResponse
    APIError:
      properties:
        type:
          type: string
          title: Type
          description: A URI identifier that categorizes the type of error.
        title:
          type: string
          title: Title
          description: A brief, human-readable title for the error.
        status:
          type: integer
          title: Status
          description: The HTTP status code applicable to this error.
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
          description: A detailed human-readable explanation of the error.
      type: object
      required:
        - type
        - title
        - status
        - detail
      title: APIError
    APICompositeError:
      properties:
        type:
          type: string
          title: Type
          description: A URI identifier that categorizes the type of error.
        title:
          type: string
          title: Title
          description: A brief, human-readable title for the error.
        status:
          type: integer
          title: Status
          description: The HTTP status code applicable to this error.
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
          description: A detailed human-readable explanation of the error.
        errors:
          items:
            $ref: '#/components/schemas/APIFieldError'
          type: array
          title: Errors
          description: A list of detailed errors for individual fields.
      type: object
      required:
        - type
        - title
        - status
        - detail
        - errors
      title: APICompositeError
    PolicyOverrideCondition-Input:
      properties:
        ip:
          $ref: '#/components/schemas/IpCondition'
        ip_range:
          $ref: '#/components/schemas/IpRangeCondition'
        country:
          $ref: '#/components/schemas/CountryCondition'
        organization:
          $ref: '#/components/schemas/OrganizationCondition'
        header:
          $ref: '#/components/schemas/HeaderCondition'
        header_exists:
          $ref: '#/components/schemas/HeaderExistsCondition'
        user_agent:
          $ref: '#/components/schemas/UserAgentCondition'
        url:
          $ref: '#/components/schemas/UrlCondition'
        http_method:
          $ref: '#/components/schemas/HttpMethodCondition'
        ja3:
          $ref: '#/components/schemas/Ja3Condition-Input'
        ja4:
          $ref: '#/components/schemas/Ja4Condition-Input'
      additionalProperties: false
      type: object
      title: PolicyOverrideCondition
      description: >-
        A single policy override condition. Only one of the fields below may be
        set.


        Limited to the subset of `CustomRuleConditionScope` scopes that policy
        overrides

        support (Lime wire-format translation is reused from Custom Rules' own

        `app.models.customer_rules.lime_translation.ConditionMapper`).
    PolicyOverrideTargetType:
      type: string
      enum:
        - detector
        - rule
      title: PolicyOverrideTargetType
    PolicyOverrideTarget:
      properties:
        id:
          type: integer
          title: Id
          description: The policy override target's ID
        detector_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Detector Id
          description: The linked detector's ID, if `target_type` is detector
        rule_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rule Id
          description: The linked rule's ID, if `target_type` is rule
        ref:
          type: string
          title: Ref
          description: The stable reference edge uses to match this target
        snapshot:
          $ref: '#/components/schemas/PolicyOverrideTargetSnapshot'
          description: >-
            A point-in-time record of the target's details, retained for display
            after the linked object is deleted
      type: object
      required:
        - id
        - ref
        - snapshot
      title: PolicyOverrideTarget
    PolicyOverrideCondition-Output:
      properties:
        ip:
          $ref: '#/components/schemas/IpCondition'
        ip_range:
          $ref: '#/components/schemas/IpRangeCondition'
        country:
          $ref: '#/components/schemas/CountryCondition'
        organization:
          $ref: '#/components/schemas/OrganizationCondition'
        header:
          $ref: '#/components/schemas/HeaderCondition'
        header_exists:
          $ref: '#/components/schemas/HeaderExistsCondition'
        user_agent:
          $ref: '#/components/schemas/UserAgentCondition'
        url:
          $ref: '#/components/schemas/UrlCondition'
        http_method:
          $ref: '#/components/schemas/HttpMethodCondition'
        ja3:
          $ref: '#/components/schemas/Ja3Condition-Output'
        ja4:
          $ref: '#/components/schemas/Ja4Condition-Output'
      additionalProperties: false
      type: object
      title: PolicyOverrideCondition
      description: >-
        A single policy override condition. Only one of the fields below may be
        set.


        Limited to the subset of `CustomRuleConditionScope` scopes that policy
        overrides

        support (Lime wire-format translation is reused from Custom Rules' own

        `app.models.customer_rules.lime_translation.ConditionMapper`).
    APIFieldError:
      properties:
        loc:
          anyOf:
            - items:
                anyOf:
                  - type: integer
                  - type: string
              type: array
            - {}
          title: Loc
          description: The location of the field or a character number causing the error.
        detail:
          type: string
          title: Detail
          description: A human-readable message describing the error.
      type: object
      required:
        - loc
        - detail
      title: APIFieldError
    IpCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        ip_address:
          type: string
          format: ipvanyaddress
          title: Ip Address
          description: A single IPv4 or IPv6 address
      type: object
      required:
        - ip_address
      title: IpCondition
      description: Match the incoming request against a single IP address
    IpRangeCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        lower_bound:
          type: string
          format: ipvanyaddress
          title: Lower Bound
          description: The lower bound IPv4 or IPv6 address to match against
        upper_bound:
          type: string
          format: ipvanyaddress
          title: Upper Bound
          description: The upper bound IPv4 or IPv6 address to match against
      type: object
      required:
        - lower_bound
        - upper_bound
      title: IpRangeCondition
      description: Match the incoming request against an IP range
    CountryCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        country_code:
          items:
            type: string
            pattern: ^\w{2}$
          type: array
          maxItems: 100
          minItems: 1
          title: Country Code
          description: >-
            A list of ISO 3166-1 alpha-2 formatted strings representing the
            countries to match against
          example: CN
          examples:
            - CN
            - TW
      type: object
      required:
        - country_code
      title: CountryCondition
      description: Match the country that the request originated from
    OrganizationCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        organization:
          type: string
          maxLength: 100
          title: Organization
          description: The organization to match against
          example: UptimeRobot s.r.o
          examples:
            - UptimeRobot s.r.o
      type: object
      required:
        - organization
      title: OrganizationCondition
      description: >-
        Match the organization the request originated from, as determined by a
        WHOIS lookup of the requesting IP
    HeaderCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        header:
          type: string
          maxLength: 50
          minLength: 1
          pattern: ^[a-zA-Z0-9-]+$
          title: Header
          description: The request header name
          example: Origin
          examples:
            - Origin
        value:
          type: string
          maxLength: 100
          pattern: ^[a-zA-Z0-9-_ :;.\/\"'?!(){}\[\]@<>=\-\+\*#$&`|~^%]+$
          title: Value
          description: The request header value
        match_type:
          type: string
          enum:
            - Exact
            - Contains
          title: Match Type
          description: The type of matching condition for header and value.
          default: Contains
      type: object
      required:
        - header
        - value
      title: HeaderCondition
      description: Match an incoming request header
    HeaderExistsCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        header:
          type: string
          maxLength: 50
          minLength: 1
          pattern: ^[a-zA-Z0-9-]+$
          title: Header
          description: The request header name
          example: Origin
          examples:
            - Origin
      type: object
      required:
        - header
      title: HeaderExistsCondition
      description: Match when an incoming request header is present
    UserAgentCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        user_agent:
          type: string
          maxLength: 300
          title: User Agent
          description: The user agent value to match
          example: curl/
          examples:
            - curl/
        match_type:
          type: string
          enum:
            - Exact
            - Contains
          title: Match Type
          description: The type of matching condition.
          default: Contains
      type: object
      required:
        - user_agent
      title: UserAgentCondition
      description: Match the user agent making the request
    UrlCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        match_type:
          type: string
          enum:
            - Exact
            - Contains
            - Regex
          title: Match Type
          description: The type of matching condition.
          default: Contains
        url:
          type: string
          maxLength: 500
          minLength: 1
          title: Url
          description: >-
            The pattern to match against the request URL.

            Constraints depend on `match_type`:


            - **Exact/Contains**: plain text matching (e.g., `/admin`, must
            comply with `^[\w!\$~:#\[\]@\(\)*\+,=\/\-\.\%]+$`).

            - **Regex**: a valid regular expression (e.g.,
            `^/upload(/\d+)?/\w+`). Lookahead/lookbehind constructs are
            forbidden.
          example: /wp-admin/
          examples:
            - /wp-admin/
      type: object
      required:
        - url
      title: UrlCondition
      description: Match the incoming request URL
    HttpMethodCondition:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        http_method:
          $ref: '#/components/schemas/HTTPMethod'
          description: HTTP methods of a request
          examples:
            - CONNECT
      type: object
      required:
        - http_method
      title: HttpMethodCondition
      description: Match the incoming HTTP method
    Ja3Condition-Input:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        ja3_fingerprints:
          items:
            type: string
            description: >-
              A JA3 TLS client fingerprint (32-character MD5 hash, mixed case
              allowed and normalized to lowercase)
            example: e7d705a3286e19ea42f587b344ee6865
            examples:
              - e7d705a3286e19ea42f587b344ee6865
          type: array
          maxItems: 10
          minItems: 1
          title: Ja3 Fingerprints
          description: A list of JA3 TLS client fingerprints to match against the request
      type: object
      required:
        - ja3_fingerprints
      title: Ja3Condition
      description: Match the JA3 TLS client fingerprint of the request
    Ja4Condition-Input:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        ja4_fingerprints:
          items:
            type: string
            description: >-
              A JA4 TLS client fingerprint in the form __ (10-character prefix
              and two 12-character hexadecimal hashes, mixed case allowed and
              normalized to lowercase)
            example: t13d3113h2_e8f1e7e78f70_ce5650b735ce
            examples:
              - t13d3113h2_e8f1e7e78f70_ce5650b735ce
          type: array
          maxItems: 10
          minItems: 1
          title: Ja4 Fingerprints
          description: A list of JA4 TLS client fingerprints to match against the request
      type: object
      required:
        - ja4_fingerprints
      title: Ja4Condition
      description: Match the JA4 TLS client fingerprint of the request
    PolicyOverrideTargetSnapshot:
      properties:
        name:
          type: string
          title: Name
          description: The target's display name when it was linked
        category:
          anyOf:
            - type: string
            - type: 'null'
          title: Category
          description: The target's detection category, if `target_type` is detector
        action:
          anyOf:
            - type: string
            - type: 'null'
          title: Action
          description: >-
            The action the target took when it triggered, if `target_type` is
            rule
        attack_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Attack Type
          description: The attack category the target detected, if `target_type` is rule
      type: object
      required:
        - name
      title: PolicyOverrideTargetSnapshot
      description: >-
        Point-in-time record of the linked target's identifying details, kept so
        a

        stale override -- whose live target may since have been deleted -- still
        shows

        what it used to point at.
    Ja3Condition-Output:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        ja3_fingerprints:
          items:
            type: string
            pattern: ^[a-f0-9]{32}$
            description: >-
              A JA3 TLS client fingerprint (32-character MD5 hash, mixed case
              allowed and normalized to lowercase)
            example: e7d705a3286e19ea42f587b344ee6865
            examples:
              - e7d705a3286e19ea42f587b344ee6865
          type: array
          maxItems: 10
          minItems: 1
          title: Ja3 Fingerprints
          description: A list of JA3 TLS client fingerprints to match against the request
      type: object
      required:
        - ja3_fingerprints
      title: Ja3Condition
      description: Match the JA3 TLS client fingerprint of the request
    Ja4Condition-Output:
      properties:
        negation:
          type: boolean
          title: Negation
          description: >-
            Whether or not to apply a boolean NOT operation to the rule's
            condition
          default: false
        ja4_fingerprints:
          items:
            type: string
            pattern: >-
              ^[tq][0-9]{2}[di][0-9]{2}[0-9]{2}[a-z0-9_]{2}_[a-f0-9]{12}_[a-f0-9]{12}$
            description: >-
              A JA4 TLS client fingerprint in the form __ (10-character prefix
              and two 12-character hexadecimal hashes, mixed case allowed and
              normalized to lowercase)
            example: t13d3113h2_e8f1e7e78f70_ce5650b735ce
            examples:
              - t13d3113h2_e8f1e7e78f70_ce5650b735ce
          type: array
          maxItems: 10
          minItems: 1
          title: Ja4 Fingerprints
          description: A list of JA4 TLS client fingerprints to match against the request
      type: object
      required:
        - ja4_fingerprints
      title: Ja4Condition
      description: Match the JA4 TLS client fingerprint of the request
    HTTPMethod:
      type: string
      enum:
        - CONNECT
        - DELETE
        - GET
        - HEAD
        - OPTIONS
        - PATCH
        - POST
        - PUT
        - TRACE
      title: HTTPMethod
      description: |-
        HTTP methods and descriptions

        Methods from the following RFCs are all observed:

         - RFC 7231: Hypertext Transfer Protocol (HTTP/1.1), obsoletes 2616
        - RFC 5789: PATCH Method for HTTP
  securitySchemes:
    APIKey:
      description: >-
        API key for authentication. Make sure to include the word `apikey`,
        followed by a single space and then your token.

        Example: `apikey 1234_abcdef`
      type: apiKey
      in: header
      name: Authorization

````