Kyverno Results API

Policy result query endpoints

OpenAPI Specification

kyverno-results-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kyverno Policy Reporter ClusterPolicyReports Results API
  description: The Kyverno Policy Reporter REST API provides endpoints for querying PolicyReport and ClusterPolicyReport custom resources generated by Kyverno. It exposes policy results, status counts, and resource-level violation data, serving as the backend for the Policy Reporter UI. The API enables programmatic access to policy compliance status across namespaces and clusters.
  version: 2.0.0
  contact:
    name: Kyverno Community
    url: https://kyverno.io/community/
  termsOfService: https://kyverno.io/
servers:
- url: http://localhost:8080
  description: Default Policy Reporter server
tags:
- name: Results
  description: Policy result query endpoints
paths:
  /api/v1/namespace-scoped/results:
    get:
      operationId: listNamespaceScopedResults
      summary: Kyverno List namespace-scoped policy results
      description: Returns a paginated list of individual policy result entries from PolicyReport resources. Results can be filtered by namespace, policy, rule, status, severity, category, source, and resource kind or name.
      tags:
      - Results
      parameters:
      - $ref: '#/components/parameters/namespaceParam'
      - $ref: '#/components/parameters/sourceParam'
      - $ref: '#/components/parameters/policyParam'
      - $ref: '#/components/parameters/ruleParam'
      - $ref: '#/components/parameters/statusParam'
      - $ref: '#/components/parameters/severityParam'
      - $ref: '#/components/parameters/categoryParam'
      - $ref: '#/components/parameters/kindParam'
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/perPageParam'
      responses:
        '200':
          description: Paginated policy results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyResultList'
        '400':
          description: Invalid query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v1/cluster-scoped/results:
    get:
      operationId: listClusterScopedResults
      summary: Kyverno List cluster-scoped policy results
      description: Returns a paginated list of individual policy result entries from ClusterPolicyReport resources. Results can be filtered by policy, rule, status, severity, category, source, and resource kind or name.
      tags:
      - Results
      parameters:
      - $ref: '#/components/parameters/sourceParam'
      - $ref: '#/components/parameters/policyParam'
      - $ref: '#/components/parameters/ruleParam'
      - $ref: '#/components/parameters/statusParam'
      - $ref: '#/components/parameters/severityParam'
      - $ref: '#/components/parameters/categoryParam'
      - $ref: '#/components/parameters/kindParam'
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/perPageParam'
      responses:
        '200':
          description: Paginated cluster-scoped policy results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyResultList'
        '400':
          description: Invalid query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v1/namespace-scoped/summary:
    get:
      operationId: getNamespaceScopedSummary
      summary: Kyverno Get namespace-scoped result summary
      description: Returns aggregated result counts grouped by status for namespace-scoped policy reports. Supports the same filtering options as the results endpoint. Useful for dashboard and summary views.
      tags:
      - Results
      parameters:
      - $ref: '#/components/parameters/namespaceParam'
      - $ref: '#/components/parameters/sourceParam'
      - $ref: '#/components/parameters/categoryParam'
      responses:
        '200':
          description: Result summary counts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultSummary'
  /api/v1/cluster-scoped/summary:
    get:
      operationId: getClusterScopedSummary
      summary: Kyverno Get cluster-scoped result summary
      description: Returns aggregated result counts grouped by status for cluster-scoped policy reports. Supports the same filtering options as the cluster results endpoint.
      tags:
      - Results
      parameters:
      - $ref: '#/components/parameters/sourceParam'
      - $ref: '#/components/parameters/categoryParam'
      responses:
        '200':
          description: Cluster result summary counts
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultSummary'
components:
  parameters:
    perPageParam:
      name: perPage
      in: query
      description: Number of results per page
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 250
        default: 20
    severityParam:
      name: severity
      in: query
      description: Filter results by severity level
      required: false
      schema:
        type: string
        enum:
        - info
        - low
        - medium
        - high
        - critical
    ruleParam:
      name: rule
      in: query
      description: Filter results by rule name
      required: false
      schema:
        type: string
        example: check-for-labels
    policyParam:
      name: policy
      in: query
      description: Filter results by policy name
      required: false
      schema:
        type: string
        example: require-labels
    kindParam:
      name: kind
      in: query
      description: Filter results by Kubernetes resource kind
      required: false
      schema:
        type: string
        example: Pod
    sourceParam:
      name: source
      in: query
      description: Filter results by policy source (e.g., kyverno, trivy)
      required: false
      schema:
        type: string
        example: kyverno
    namespaceParam:
      name: namespace
      in: query
      description: Filter results by Kubernetes namespace
      required: false
      schema:
        type: string
        example: default
    statusParam:
      name: status
      in: query
      description: Filter results by result status
      required: false
      schema:
        type: string
        enum:
        - pass
        - fail
        - warn
        - error
        - skip
    categoryParam:
      name: category
      in: query
      description: Filter results by policy category
      required: false
      schema:
        type: string
        example: Pod Security Standards
    pageParam:
      name: page
      in: query
      description: Page number for paginated results (1-based)
      required: false
      schema:
        type: integer
        minimum: 1
        default: 1
  schemas:
    PolicyResultList:
      type: object
      description: Paginated list of individual policy results
      properties:
        items:
          type: array
          description: List of individual policy result entries
          items:
            $ref: '#/components/schemas/PolicyResult'
        count:
          type: integer
          description: Total number of results matching the query
          example: 150
    PolicyResult:
      type: object
      description: An individual policy evaluation result for a specific resource
      properties:
        id:
          type: string
          description: Unique identifier for the result
          example: abc123
        policy:
          type: string
          description: Name of the policy that generated the result
          example: require-labels
        rule:
          type: string
          description: Name of the policy rule that generated the result
          example: check-for-labels
        message:
          type: string
          description: Human-readable message describing the result
          example: 'validation error: Label app is required.'
        status:
          type: string
          description: Outcome of the policy evaluation
          enum:
          - pass
          - fail
          - warn
          - error
          - skip
          example: fail
        severity:
          type: string
          description: Severity level of the result
          enum:
          - info
          - low
          - medium
          - high
          - critical
          example: medium
        category:
          type: string
          description: Category of the policy rule
          example: Best Practices
        source:
          type: string
          description: Policy engine source
          example: kyverno
        namespace:
          type: string
          description: Kubernetes namespace of the affected resource
          example: default
        resource:
          $ref: '#/components/schemas/ResourceReference'
        timestamp:
          type: string
          format: date-time
          description: Timestamp when the result was recorded
    ResourceReference:
      type: object
      description: A reference to the Kubernetes resource evaluated by the policy
      properties:
        apiVersion:
          type: string
          description: API version of the resource
          example: v1
        kind:
          type: string
          description: Kind of the Kubernetes resource
          example: Pod
        name:
          type: string
          description: Name of the resource
          example: my-pod
        namespace:
          type: string
          description: Namespace of the resource (empty for cluster-scoped)
          example: default
        uid:
          type: string
          description: UID of the Kubernetes resource
          example: 550e8400-e29b-41d4-a716-446655440000
    ResultSummary:
      type: object
      description: Aggregated summary of policy results
      properties:
        items:
          type: array
          description: List of status and count pairs
          items:
            type: object
            properties:
              status:
                type: string
                enum:
                - pass
                - fail
                - warn
                - error
                - skip
              count:
                type: integer
                description: Number of results with this status
    Error:
      type: object
      description: An error response
      properties:
        message:
          type: string
          description: Human-readable error message
          example: Invalid query parameter value
      required:
      - message
externalDocs:
  description: Policy Reporter API Reference
  url: https://kyverno.github.io/policy-reporter/core/api-reference/