id: qualys
name: Qualys VMDR
version: 1.0.0
description: "Qualys Vulnerability Management (API v2) — asset and vulnerability context: list hosts, list host vulnerability detections, look up vulnerability (QID) knowledge-base details, and list/launch VM scans. HTTP Basic authentication; stdlib-only, no extra Python dependencies."
changelog: "1.0.0 — Initial release: host list, host detections, knowledge-base vulnerability details, scan list, launch scan."
category: vulnerability

# Per-instance configuration. HTTP Basic auth against the Qualys API server
# (regional, e.g. https://qualysapi.qg2.apps.qualys.com). All requests send the
# required 'X-Requested-With' header. Responses are XML.
config_schema:
  properties:
    base_url:
      type: string
      description: "Qualys API server URL (e.g. https://qualysapi.qualys.com)"
    username:
      type: string
      description: "Qualys username"
    password:
      type: string
      description: "Qualys password"
      x-soar-sensitive: true
  required:
    - base_url
    - username
    - password

commands:
  - id: host_list
    name: qualys-host-list
    description: "List scanned hosts (optionally filtered by IP range)."
    risk: read
    inputs_schema:
      properties:
        ips: { type: string, description: "Optional IP/range filter (e.g. 10.0.0.1-10.0.0.50)" }
        truncation_limit: { type: number, description: "Max hosts (default 100)" }
      required: []
    outputs_schema: { properties: {} }
  - id: host_detections
    name: qualys-host-detections
    description: "List vulnerability detections on hosts (optionally filtered by IP and severity)."
    risk: read
    inputs_schema:
      properties:
        ips: { type: string, description: "Optional IP/range filter" }
        severities: { type: string, description: "Optional severity filter (e.g. 4,5)" }
        truncation_limit: { type: number, description: "Max hosts (default 100)" }
      required: []
    outputs_schema: { properties: {} }
  - id: vuln_details
    name: qualys-vuln-details
    description: "Get knowledge-base details for one or more vulnerabilities by QID."
    risk: read
    inputs_schema:
      properties:
        qids: { type: string, description: "Comma-separated QIDs" }
      required: [qids]
    outputs_schema: { properties: {} }
  - id: list_scans
    name: qualys-list-scans
    description: "List VM scans."
    risk: read
    inputs_schema:
      properties:
        state: { type: string, description: "Optional state filter (Running, Finished, Canceled, ...)" }
      required: []
    outputs_schema: { properties: {} }
  - id: launch_scan
    name: qualys-launch-scan
    description: "Launch a VM scan against a set of IPs."
    inputs_schema:
      properties:
        scan_title: { type: string, description: "Title for the scan" }
        ip: { type: string, description: "Comma-separated target IPs/ranges" }
        option_title: { type: string, description: "Option profile title (provide this or option_id)" }
        option_id: { type: string, description: "Option profile ID (provide this or option_title)" }
        iscanner_name: { type: string, description: "Scanner appliance name (optional)" }
      required: [ip]
    outputs_schema: { properties: {} }

  - id: test_connection
    name: qualys-test-connection
    description: "Verify connectivity and credentials (used by the Test button)."
    risk: read
    inputs_schema:
      properties: {}
      required: []
    outputs_schema: { properties: {} }
