{
  "openapi": "3.0.1",
  "info": {
    "title": "Cyber Exposure Intelligence (NVD + CISA KEV + FIRST EPSS)",
    "description": "Joins the official NVD CVE API 2.0, the CISA Known Exploited Vulnerabilities catalog and FIRST EPSS into one deduplicated, risk-prioritized vulnerability record with incremental change tracking and durable cross-run state.",
    "version": "1.0",
    "x-build-id": "UScFk0wxIw0Mun9hv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/atlas_digital_assistant~cyber-exposure-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-atlas_digital_assistant-cyber-exposure-intelligence",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/atlas_digital_assistant~cyber-exposure-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-atlas_digital_assistant-cyber-exposure-intelligence",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/atlas_digital_assistant~cyber-exposure-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-atlas_digital_assistant-cyber-exposure-intelligence",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "Run mode",
            "enum": [
              "incremental",
              "full"
            ],
            "type": "string",
            "description": "incremental: only CVEs new/changed since the last run (or the lookback window on first run). full: a broad backfill over the lookback window (never advances the cursor).",
            "default": "incremental"
          },
          "cursorField": {
            "title": "Incremental cursor field",
            "enum": [
              "lastModified",
              "published"
            ],
            "type": "string",
            "description": "Which immutable NVD date the incremental keyset cursor orders by. lastModified surfaces re-analysed CVEs (recommended); published tracks only newly disclosed CVEs.",
            "default": "lastModified"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Upper bound on the number of records saved to the dataset (after filtering, enrichment and deduplication).",
            "default": 200
          },
          "lookbackDays": {
            "title": "Lookback window (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "First-run incremental window and full-mode backfill window. NVD limits a single query to a 120-day span, so longer windows are fetched as multiple sub-windows.",
            "default": 30
          },
          "recheckWindowDays": {
            "title": "Recheck window (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Incremental overlap: re-fetch and re-compare already-committed CVEs whose cursor date is within this many days below the cursor, so upstream NVD edits are surfaced as changed records. The cursor is never regressed by these re-checks. Set 0 to disable.",
            "default": 2
          },
          "maxNvdPages": {
            "title": "Max NVD pages per run",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard ceiling on NVD API pages fetched in one run (cost/runtime guard). When hit, the cursor is held below the uncaptured region and the remainder is picked up next run.",
            "default": 25
          },
          "nvdApiKey": {
            "title": "NVD API key (optional)",
            "type": "string",
            "description": "Optional NVD API key. Raises the NVD rate limit (~50 vs ~5 requests / 30 s) and is sent only as a request header — never logged. Leave empty to run unauthenticated."
          },
          "cveIds": {
            "title": "CVE IDs",
            "uniqueItems": true,
            "type": "array",
            "description": "Explicit CVE ID allow-list, e.g. CVE-2021-44228. When set, NVD is queried per-ID and only these CVEs are returned.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text keyword. Pushed to NVD server-side (keywordSearch) and re-checked against description / CPE client-side."
          },
          "vendor": {
            "title": "Vendor filter",
            "type": "string",
            "description": "Case-insensitive substring match against vendors parsed from CPE / KEV."
          },
          "product": {
            "title": "Product filter",
            "type": "string",
            "description": "Case-insensitive substring match against products parsed from CPE / KEV."
          },
          "cpe": {
            "title": "CPE filter",
            "type": "string",
            "description": "Case-insensitive substring match against CPE 2.3 match criteria, e.g. cpe:2.3:a:apache:log4j."
          },
          "cvssMin": {
            "title": "Minimum CVSS base score",
            "pattern": "^(10(\\.0+)?|[0-9](\\.\\d+)?)$",
            "type": "string",
            "description": "Keep only CVEs whose best-available CVSS base score is at least this value (0-10, decimals allowed, e.g. 7.5 or 9.8). CVEs with no CVSS score are excluded."
          },
          "kevOnly": {
            "title": "KEV only",
            "type": "boolean",
            "description": "Keep only CVEs on the CISA Known Exploited Vulnerabilities catalog. If the KEV fetch fails while this is on, the run emits nothing and holds the cursor rather than misclassifying records.",
            "default": false
          },
          "epssMin": {
            "title": "Minimum EPSS probability",
            "pattern": "^(0(\\.\\d+)?|1(\\.0+)?)$",
            "type": "string",
            "description": "Keep only CVEs whose EPSS exploit-probability is at least this value (0-1, e.g. 0.5). Requires the EPSS enrichment."
          },
          "epssPercentileMin": {
            "title": "Minimum EPSS percentile",
            "pattern": "^(0(\\.\\d+)?|1(\\.0+)?)$",
            "type": "string",
            "description": "Keep only CVEs whose EPSS percentile is at least this value (0-1, e.g. 0.95). Requires the EPSS enrichment."
          },
          "publishedFrom": {
            "title": "Published from (inclusive)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ].*)?$",
            "type": "string",
            "description": "ISO date, e.g. 2024-01-01. Keeps only CVEs published on/after this date. Invalid calendar dates are rejected."
          },
          "publishedTo": {
            "title": "Published to (inclusive)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ].*)?$",
            "type": "string",
            "description": "ISO date, e.g. 2024-12-31. Keeps only CVEs published on/before this date."
          },
          "modifiedFrom": {
            "title": "Modified from (inclusive)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ].*)?$",
            "type": "string",
            "description": "ISO date. Keeps only CVEs last modified on/after this date."
          },
          "modifiedTo": {
            "title": "Modified to (inclusive)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ].*)?$",
            "type": "string",
            "description": "ISO date. Keeps only CVEs last modified on/before this date."
          },
          "since": {
            "title": "Incremental since (override)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}([T ].*)?$",
            "type": "string",
            "description": "Optional ISO date/timestamp overriding the automatic incremental cursor for this run."
          },
          "includeRaw": {
            "title": "Include raw source fields",
            "type": "boolean",
            "description": "Include a compact `raw` object of selected upstream values for auditing. Disable for leaner output.",
            "default": true
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}