Nuclei Vulns API

The Vulns API from Nuclei — 2 operation(s) for vulns.

OpenAPI Specification

nuclei-vulns-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: PDCP agents Vulns API
  version: '1.0'
  summary: ProjectDiscovery Cloud Platform
  description: For more details, checkout https://docs.projectdiscovery.io/api-reference/editor/scan
servers:
- url: https://api.projectdiscovery.io
  description: Production
- url: https://api.dev.projectdiscovery.io
  description: Development
- url: http://localhost:8085
  description: Localhost
security:
- X-API-Key: []
tags:
- name: Vulns
paths:
  /v1/vulns/coverage:
    get:
      summary: Get Vulnerability Template Coverage Statistics
      tags:
      - Vulns
      operationId: get-v1-vulns-coverage
      description: Get template coverage statistics for vulnerabilities. Supports all search query filters to calculate coverage for specific subsets (e.g., by product, severity, etc.)
      parameters:
      - in: query
        name: q
        required: false
        schema:
          type: string
        description: SearchQL query to filter vulnerabilities (e.g., "severity:critical", "affected_products.product:wordpress")
      - in: query
        name: term_facets
        required: false
        schema:
          items:
            type: string
          type: array
        description: List of term facets to apply
      - in: query
        name: range_facets
        required: false
        schema:
          items:
            type: string
          type: array
        description: List of range facets to apply
      responses:
        '200':
          description: Coverage statistics response
          content:
            application/json:
              schema:
                type: object
                required:
                - cves
                - kevs
                - pocs
                - fts_query
                - filter_description
                properties:
                  cves:
                    type: object
                    properties:
                      coverage:
                        $ref: '#/components/schemas/CoverageStats'
                  kevs:
                    type: object
                    properties:
                      cisa:
                        type: object
                        properties:
                          all:
                            type: object
                            properties:
                              coverage:
                                $ref: '#/components/schemas/CoverageStats'
                          with_public_poc:
                            type: object
                            properties:
                              coverage:
                                $ref: '#/components/schemas/CoverageStats'
                          due_date_breakdown:
                            type: object
                            properties:
                              overdue:
                                type: object
                                properties:
                                  coverage:
                                    $ref: '#/components/schemas/CoverageStats'
                              next_7_days:
                                type: object
                                properties:
                                  coverage:
                                    $ref: '#/components/schemas/CoverageStats'
                              next_30_days:
                                type: object
                                properties:
                                  coverage:
                                    $ref: '#/components/schemas/CoverageStats'
                              after_30_days:
                                type: object
                                properties:
                                  coverage:
                                    $ref: '#/components/schemas/CoverageStats'
                      vulncheck:
                        type: object
                        properties:
                          all:
                            type: object
                            properties:
                              coverage:
                                $ref: '#/components/schemas/CoverageStats'
                          with_public_poc:
                            type: object
                            properties:
                              coverage:
                                $ref: '#/components/schemas/CoverageStats'
                          due_date_breakdown:
                            type: object
                            properties:
                              overdue:
                                type: object
                                properties:
                                  coverage:
                                    $ref: '#/components/schemas/CoverageStats'
                              next_7_days:
                                type: object
                                properties:
                                  coverage:
                                    $ref: '#/components/schemas/CoverageStats'
                              next_30_days:
                                type: object
                                properties:
                                  coverage:
                                    $ref: '#/components/schemas/CoverageStats'
                              after_30_days:
                                type: object
                                properties:
                                  coverage:
                                    $ref: '#/components/schemas/CoverageStats'
                  pocs:
                    type: object
                    properties:
                      coverage:
                        $ref: '#/components/schemas/CoverageStats'
                  fts_query:
                    type: string
                    description: The SearchQL query string used to calculate coverage (before adding the is_template filter)
                    example: is_remote:true AND (cvss_metrics:"pr:n" OR cvss_metrics:"au:n") AND NOT vuln_status:rejected
                  filter_description:
                    type: string
                    description: Human-readable description of the filters applied to calculate coverage statistics
                    example: 'Default filter: remotely exploitable vulnerabilities with no authentication required, excluding rejected/unconfirmed statuses and hardware/OS/consumer categories'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse'
        '500':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /v1/scans/vulns/score/metrics:
    get:
      summary: Get Vuln Score Metrics
      tags:
      - Vulns
      parameters:
      - in: query
        name: interval
        schema:
          type: string
          enum:
          - monthly
          default: monthly
        description: The time interval for the metrics
      - schema:
          type: string
        in: header
        description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
        name: X-Team-Id
      responses:
        '200':
          $ref: '#/components/responses/VulnScoreMetricsResponse'
        '400':
          $ref: '#/components/responses/MessageResponse'
        '401':
          $ref: '#/components/responses/MessageResponse'
        '404':
          $ref: '#/components/responses/MessageResponse'
        '500':
          $ref: '#/components/responses/MessageResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      operationId: get-v1-scans-vulns-score-metrics
components:
  responses:
    ErrorResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              message:
                type: string
              kind:
                type: string
              code:
                type: string
              error:
                type: string
              error_id:
                type: string
              param:
                type: string
              status:
                type: integer
    MessageResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - message
            properties:
              message:
                type: string
    VulnScoreMetricsResponse:
      description: Example response
      content:
        application/json:
          schema:
            type: object
            required:
            - security_score
            - security_state
            - open_vulnerability
            - total_scanned_assets
            - total_affected_assets
            - time_series
            properties:
              security_score:
                type: number
                format: double
              security_state:
                type: string
              open_vulnerability:
                $ref: '#/components/schemas/OpenVulnerabilityScoreMetrics'
              total_scanned_assets:
                type: integer
              total_affected_assets:
                type: integer
              time_series:
                type: array
                items:
                  $ref: '#/components/schemas/VulnScoreMetricsTimeSeries'
  schemas:
    VulnScoreMetricsTimeSeries:
      title: VulnScoreMetricsTimeSeries
      type: object
      properties:
        date:
          type: string
          format: date
        security_score:
          type: number
          format: double
        open_vulnerability:
          $ref: '#/components/schemas/OpenVulnerabilityScoreMetrics'
        total_scanned_assets:
          type: integer
        total_affected_assets:
          type: integer
      description: ''
    CoverageStats:
      title: CoverageStats
      description: Coverage statistics showing template availability
      type: object
      required:
      - percentage
      - total
      - covered
      properties:
        percentage:
          type: number
          format: float
          description: Coverage percentage
        total:
          type: integer
          description: Total number of items (CVEs, KEVs, or POCs)
        covered:
          type: integer
          description: Number of items with templates
        remaining:
          type: integer
          description: Number of items without templates (total - covered)
    OpenVulnerabilityScoreMetrics:
      title: OpenVulnerabilityScoreMetrics
      type: object
      properties:
        severity_breakdown:
          $ref: '#/components/schemas/SeverityBreakdown'
        total_cve:
          type: integer
        total_kev:
          type: integer
    SeverityBreakdown:
      title: SeverityBreakdown
      type: object
      properties:
        critical:
          type: integer
        high:
          type: integer
        medium:
          type: integer
        low:
          type: integer
        info:
          type: integer
        unknown:
          type: integer
  securitySchemes:
    X-API-Key:
      name: X-API-Key
      type: apiKey
      in: header
x-internal: false