euvd 0.0.1

API for querying recent vulnerabilities from the ENISA EUVD database.
Documentation
openapi: 3.0.3
info:
  title: EUVD API
  description: API for querying recent vulnerabilities from the ENISA EUVD database.
  version: 0.0.1
  license:
    name: MIT OR Apache-2.0
    url: https://opensource.org/licenses/MIT

externalDocs:
  description: Official EUVD API documentation
  url: https://euvd.enisa.europa.eu/apidoc

servers:
  - url: https://euvdservices.enisa.europa.eu

paths:
  /api/lastvulnerabilities:
    get:
      summary: Show latest vulnerabilities
      operationId: getLastVulnerabilities
      responses:
        '200':
          description: Successful response (max 8 records)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Vulnerability'

  /api/exploitedvulnerabilities:
    get:
      summary: Show latest exploited vulnerabilities
      operationId: getExploitedVulnerabilities
      responses:
        '200':
          description: Successful response (max 8 records)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Vulnerability'

  /api/criticalvulnerabilities:
    get:
      summary: Show latest critical vulnerabilities
      operationId: getCriticalVulnerabilities
      responses:
        '200':
          description: Successful response (max 8 records)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Vulnerability'

  /api/vulnerabilities:
    get:
      summary: Query vulnerabilities with flexible filters
      operationId: queryVulnerabilities
      parameters:
        - name: fromScore
          in: query
          schema:
            type: number
            format: float
        - name: toScore
          in: query
          schema:
            type: number
            format: float
        - name: fromEpss
          in: query
          schema:
            type: number
            format: float
        - name: toEpss
          in: query
          schema:
            type: number
            format: float
        - name: fromDate
          in: query
          schema:
            type: string
            format: date
        - name: toDate
          in: query
          schema:
            type: string
            format: date
        - name: product
          in: query
          schema:
            type: string
        - name: vendor
          in: query
          schema:
            type: string
        - name: assigner
          in: query
          schema:
            type: string
        - name: exploited
          in: query
          schema:
            type: boolean
        - name: page
          in: query
          schema:
            type: integer
        - name: text
          in: query
          schema:
            type: string
        - name: size
          in: query
          schema:
            type: integer
            default: 10
            maximum: 100
      responses:
        '200':
          description: Successful response (max 100 records)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Vulnerabilities'

  /api/enisaid:
    get:
      summary: Show EUVD by ID
      operationId: getByEnisaId
      parameters:
        - name: id
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response with EUVD record

  /api/vulnerability:
    get:
      summary: Show vulnerability by ID
      operationId: getVulnerabilityById
      parameters:
        - name: id
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response with vulnerability data

  /api/advisory:
    get:
      summary: Show advisory by ID
      operationId: getAdvisoryById
      parameters:
        - name: id
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response with advisory data

components:
  schemas:
    Vulnerability:
      type: object
      properties:
        id:
          type: string
        description:
          type: string
        datePublished:
          type: string
          format: date-time
        dateUpdated:
          type: string
          format: date-time
        baseScore:
          type: number
          format: float
        baseScoreVersion:
          type: string
        baseScoreVector:
          type: string
        references:
          type: string
        aliases:
          type: string
        assigner:
          type: string
        epss:
          type: number
          format: float
        exploitedSince:
          type: string
          format: date-time
          description: Date when the vulnerability has been known to be exploited
        enisaIdProduct:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              product:
                type: object
                properties:
                  name:
                    type: string
              product_version:
                type: string
        enisaIdVendor:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              vendor:
                type: object
                properties:
                  name:
                    type: string
    Vulnerabilities:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Vulnerability'
        total:
          type: integer