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

# Update a verification period

> Replaces the period in full; omitted optional fields are cleared rather than left alone. Changing the scope changes who owes a verification: widening it adds PENDING entries, and narrowing it removes entries along with any answer already recorded for them.



## OpenAPI

````yaml /openapi/cortex_swagger.json put /api/v1/verification-periods/{periodCid}
openapi: 3.0.1
info:
  description: >-
    The Cortex REST API provides programmatic access to the data in the catalog,
    Scorecards, and more.
  title: Cortex API
  version: v1
servers:
  - url: https://api.getcortexapp.com
    description: Cortex Cloud API host
security:
  - bearerAuth: []
tags:
  - name: API Keys
  - name: Audit Logs
  - name: Catalog Entities
  - name: Catalogs
  - name: Custom Data
  - name: Custom Data [Advanced]
  - name: Custom Events
  - name: Custom Metrics
  - name: Dependencies
  - name: Deploys
  - name: Discovery Audit
  - name: Docs
  - name: 'Eng Intel: 1-Registry'
  - name: 'Eng Intel: 2-Metrics'
  - name: 'Eng Intel: 3-Trace'
  - name: 'Eng Intel: User Labels'
  - name: Entity Relationship Types
  - name: Entity Relationships
  - name: Entity Types
  - name: GitOps Logs
  - name: Groups
  - name: IP Allowlist
  - name: Initiatives
  - name: My Workspace
  - name: Notification Logs
  - name: On-call
  - name: Packages
  - name: Plugins
  - name: Queries
  - name: SCIM
  - name: Scaffolder
  - name: Scorecards
  - name: Secrets
  - name: Team Roles
  - name: Teams
  - name: Teams Hierarchies
  - name: Teams [Advanced]
  - name: Teams [Departments] (legacy)
  - name: Users
  - name: Verifications
  - name: Workflows
  - name: '[Integrations] AWS'
  - name: '[Integrations] Anthropic'
  - name: '[Integrations] Apiiro'
  - name: '[Integrations] ArgoCD'
  - name: '[Integrations] Azure Active Directory'
  - name: '[Integrations] Azure Devops'
  - name: '[Integrations] Azure Resources'
  - name: '[Integrations] BambooHR'
  - name: '[Integrations] Bitbucket'
  - name: '[Integrations] Bugsnag'
  - name: '[Integrations] Buildkite'
  - name: '[Integrations] Checkmarx SAST'
  - name: '[Integrations] CircleCI'
  - name: '[Integrations] ClickUp'
  - name: '[Integrations] Codecov'
  - name: '[Integrations] Coralogix'
  - name: '[Integrations] Datadog'
  - name: '[Integrations] Dynatrace'
  - name: '[Integrations] Firehydrant'
  - name: '[Integrations] GitHub'
  - name: '[Integrations] GitLab'
  - name: '[Integrations] Harness'
  - name: '[Integrations] Incident.io'
  - name: '[Integrations] Instana'
  - name: '[Integrations] Jenkins'
  - name: '[Integrations] Jira'
  - name: '[Integrations] Kubernetes'
  - name: '[Integrations] LaunchDarkly'
  - name: '[Integrations] Lightstep'
  - name: '[Integrations] Mend SAST'
  - name: '[Integrations] Mend SCA'
  - name: '[Integrations] New Relic'
  - name: '[Integrations] Okta'
  - name: '[Integrations] Opsgenie'
  - name: '[Integrations] PagerDuty'
  - name: '[Integrations] Prometheus'
  - name: '[Integrations] Rollbar'
  - name: '[Integrations] Rootly'
  - name: '[Integrations] Semgrep'
  - name: '[Integrations] Sentry'
  - name: '[Integrations] ServiceNow'
  - name: '[Integrations] SignalFx'
  - name: '[Integrations] Snyk'
  - name: '[Integrations] SonarQube'
  - name: '[Integrations] SumoLogic'
  - name: '[Integrations] Veracode'
  - name: '[Integrations] VictorOps'
  - name: '[Integrations] Wiz'
  - name: '[Integrations] Workday'
  - name: '[Integrations] xMatters'
  - name: dev-login-controller
  - name: public-scim-schema-controller
paths:
  /api/v1/verification-periods/{periodCid}:
    put:
      tags:
        - Verifications
      summary: Update a verification period
      description: >-
        Replaces the period in full; omitted optional fields are cleared rather
        than left alone. Changing the scope changes who owes a verification:
        widening it adds PENDING entries, and narrowing it removes entries along
        with any answer already recorded for them.
      operationId: updateVerificationPeriod
      parameters:
        - description: The CID of the verification period
          example: vp0a1b2c3d4e5f6789
          in: path
          name: periodCid
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertVerificationPeriodRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationPeriodSummary'
          description: The updated verification period
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: endDate is before startDate, or a named role does not exist
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Verification period not found
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    UpsertVerificationPeriodRequest:
      required:
        - endDate
        - name
        - requiredCustomRoleTags
        - requiredRoles
        - requiredTeamRoleTags
        - scope
        - startDate
      type: object
      properties:
        description:
          type: string
          description: What owners are being asked to confirm
        endDate:
          type: string
          description: The day the period closes, inclusive
          format: date-time
        name:
          type: string
          description: Display name
          example: Q3 Ownership Review
        reasonRequired:
          type: boolean
          description: >-
            Whether a reason is required to mark an entity incorrect. Marking an
            entity correct never requires one. Defaults to false.
          example: false
          default: false
        requiredCustomRoleTags:
          type: array
          description: Tags of custom Cortex roles a user must hold to verify
          items:
            type: string
            description: Tags of custom Cortex roles a user must hold to verify
        requiredRoles:
          type: array
          description: >-
            Cortex roles a user must hold to verify. Empty means any owner of
            the entity may verify.
          example:
            - OWNER
          items:
            type: string
            description: >-
              Cortex roles a user must hold to verify. Empty means any owner of
              the entity may verify.
            example: '["OWNER"]'
            enum:
              - VIEWER
              - USER
              - MANAGER
              - API
              - OWNER
        requiredTeamRoleTags:
          type: array
          description: >-
            Tags of team roles a user must hold on a team that owns the entity
            in order to verify
          items:
            type: string
            description: >-
              Tags of team roles a user must hold on a team that owns the entity
              in order to verify
        scope:
          $ref: '#/components/schemas/VerificationScope'
        startDate:
          type: string
          description: The day the period opens, inclusive
          format: date-time
      description: A verification period to create, or the full replacement state for one
    VerificationPeriodSummary:
      required:
        - cid
        - counts
        - endDate
        - isActive
        - name
        - reasonRequired
        - requiredCustomRoleTags
        - requiredRoles
        - requiredTeamRoleTags
        - scope
        - startDate
      type: object
      properties:
        cid:
          type: string
          description: Stable identifier, usable wherever a period CID is accepted
          example: vp0a1b2c3d4e5f6789
        counts:
          $ref: '#/components/schemas/VerificationCounts'
        description:
          type: string
          description: What owners are being asked to confirm
        endDate:
          type: string
          description: When the period closes
          format: date-time
        isActive:
          type: boolean
          description: >-
            Whether the period is open today, and so still accepting
            verifications
          example: true
        name:
          type: string
          description: Display name
          example: Q3 Ownership Review
        reasonRequired:
          type: boolean
          description: Whether a reason is required when an entity is marked incorrect
          example: false
        requiredCustomRoleTags:
          type: array
          description: Tags of custom Cortex roles a user must hold to verify
          items:
            type: string
            description: Tags of custom Cortex roles a user must hold to verify
        requiredRoles:
          type: array
          description: Cortex roles a user must hold to verify
          example:
            - OWNER
          items:
            type: string
            description: >-
              Cortex roles a user must hold to verify. Empty means any owner of
              the entity may verify.
            example: '["OWNER"]'
            enum:
              - VIEWER
              - USER
              - MANAGER
              - API
              - OWNER
        requiredTeamRoleTags:
          type: array
          description: Tags of team roles a user must hold on an owning team to verify
          items:
            type: string
            description: Tags of team roles a user must hold on an owning team to verify
        scope:
          $ref: '#/components/schemas/VerificationScope'
        startDate:
          type: string
          description: When the period opens
          format: date-time
      description: A verification period and how far along it is
    ErrorResponse:
      required:
        - message
        - type
      type: object
      properties:
        details:
          type: string
        errorCode:
          type: string
        gatewayHttpStatus:
          type: integer
          format: int32
        httpStatus:
          type: integer
          format: int32
        message:
          type: string
        requestId:
          type: string
        type:
          type: string
          enum:
            - INTEGRATION_MISSING
            - INTEGRATION_UNREGISTERED
            - INTEGRATION_UNSUPPORTED
            - INTEGRATION_GRAPHQL_ERROR
            - INTEGRATION_BAD_REQUEST
            - INTEGRATION_UNAUTHORIZED
            - INTEGRATION_FORBIDDEN
            - INTEGRATION_NOT_FOUND
            - INTEGRATION_UNPROCESSABLE_CONTENT
            - INTEGRATION_RATE_LIMITED
            - INTEGRATION_INTERNAL_ERROR
            - INTEGRATION_NOT_IMPLEMENTED
            - INTEGRATION_BAD_GATEWAY
            - INTEGRATION_UNAVAILABLE
            - INTEGRATION_GATEWAY_TIMEOUT
            - INTEGRATION_TIMED_OUT
            - INTEGRATION_CACHE_ERROR
            - INTEGRATION_UNHANDLED_HTTP_ERROR
            - INTEGRATION_UNHANDLED_EXCEPTION
            - INTEGRATION_UNEXPECTED_ERROR
            - ILLEGAL_ARGUMENT_ERROR
            - BAD_REQUEST
            - FORBIDDEN
            - NOT_FOUND
            - REQUEST_TIMEOUT
            - CONFLICT
            - UNHANDLED_EXCEPTION
            - UNCATEGORIZED
            - SERVICE_CREATOR
            - UNKNOWN_HOST
            - TOO_MANY_REQUESTS
    VerificationScope:
      required:
        - entityGroups
        - excludedEntityGroups
        - types
      type: object
      properties:
        cqlQuery:
          type: string
          description: >-
            Cover the entities this CQL query returns. Evaluated in the
            background, so a period created with one reports zero entities until
            that finishes.
          example: tag != null
        entityGroups:
          uniqueItems: true
          type: array
          description: Cover only entities in these entity groups. Empty means every group.
          items:
            type: string
            description: >-
              Cover only entities in these entity groups. Empty means every
              group.
        excludedEntityGroups:
          uniqueItems: true
          type: array
          description: Exclude entities in these entity groups
          items:
            type: string
            description: Exclude entities in these entity groups
        types:
          uniqueItems: true
          type: array
          description: Cover only entities of these types. Empty means every type.
          example:
            - service
          items:
            type: string
            description: Cover only entities of these types. Empty means every type.
            example: '["service"]'
      description: >-
        Which entities a verification period covers. An empty scope covers every
        entity. Combined conditions all have to hold.
    VerificationCounts:
      required:
        - pending
        - verifiedCorrect
        - verifiedIncorrect
      type: object
      properties:
        pending:
          type: integer
          description: Entities not yet verified
          format: int64
          example: 12
        verifiedCorrect:
          type: integer
          description: Entities confirmed correct
          format: int64
          example: 40
        verifiedIncorrect:
          type: integer
          description: Entities flagged incorrect
          format: int64
          example: 3
      description: Entity counts for one verification period
    TooManyRequestsProblemDetail:
      required:
        - type
        - title
        - status
      type: object
      properties:
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        retryAfter:
          minimum: 0
          type: integer
          description: The number of seconds until the rate limiting resets.
          format: int32
        status:
          maximum: 599
          minimum: 100
          type: integer
          format: int32
          enum:
            - 429
        title:
          type: string
        type:
          type: string
          format: uri-reference
  responses:
    TooManyRequests:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/TooManyRequestsProblemDetail'
      description: >-
        The client has exceeded the rate limit by performing too many requests
        in a short period. Retry the request after a delay.
      headers:
        Retry-After:
          description: The number of seconds until the rate limiting resets.
          schema:
            minimum: 0
            type: integer
            format: int32
  securitySchemes:
    bearerAuth:
      bearerFormat: JWT
      description: >-
        All requests to the Cortex API need to provide an `Authorization: Bearer
        <token>` header, where `<token>` is an API key created in the Settings
        page of your workspace.
      scheme: bearer
      type: http

````

## Related topics

- [Verifications](/api/rest/verifications.md)
- [Data verification](/configure/settings/entity-settings/verification.md)
- [Delete a verification period](/api/rest/verifications/delete-a-verification-period.md)
