{
  "openapi": "3.0.1",
  "info": {
    "title": "CVE Security Advisory Triage",
    "description": "Rank CVEs and package vulnerabilities by priority using NVD, CISA KEV, EPSS and OSV, with a plain verdict and the reasons behind it.",
    "version": "1.0",
    "x-build-id": "H88V5vmUPALB5TTEp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jetlaunch~cve-security-triage/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jetlaunch-cve-security-triage",
        "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/jetlaunch~cve-security-triage/runs": {
      "post": {
        "operationId": "runs-sync-jetlaunch-cve-security-triage",
        "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/jetlaunch~cve-security-triage/run-sync": {
      "post": {
        "operationId": "run-sync-jetlaunch-cve-security-triage",
        "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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "cve-triage",
              "watchlist-scan"
            ],
            "type": "string",
            "description": "cve-triage looks up CVE ids (or a keyword) and returns scores, KEV and EPSS status, affected packages and a priority verdict. watchlist-scan checks up to 50 packages or CPE strings and returns known vulnerabilities ranked by priority.",
            "default": "cve-triage"
          },
          "cveIds": {
            "title": "CVE ids (cve-triage mode)",
            "maxItems": 100,
            "type": "array",
            "description": "CVE ids such as CVE-2021-44228. Up to 100 per run. Each CVE is looked up in NVD one at a time, so a run takes about 7 seconds per CVE without an NVD API key.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword search (cve-triage mode)",
            "type": "string",
            "description": "Optional. Searches NVD descriptions, for example \"openssl heap overflow\". Results are ranked by priority after enrichment. Used together with the CVE ids above, or on its own."
          },
          "maxKeywordResults": {
            "title": "Maximum keyword results",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many CVEs to take from a keyword search (1 to 50). Each CVE returned is billed as one cve-triage event.",
            "default": 10
          },
          "keywordExactMatch": {
            "title": "Exact phrase match for the keyword",
            "type": "boolean",
            "description": "Match the keyword as an exact phrase instead of all words anywhere in the description.",
            "default": false
          },
          "packages": {
            "title": "Packages (watchlist-scan mode)",
            "maxItems": 50,
            "type": "array",
            "description": "List of objects with name, ecosystem and version, for example {\"name\": \"lodash\", \"ecosystem\": \"npm\", \"version\": \"4.17.15\"}. Ecosystems follow OSV names: npm, PyPI, Maven, Go, crates.io, NuGet, RubyGems, Packagist, Hex, Pub and more. Up to 50 packages plus CPE strings per scan."
          },
          "cpes": {
            "title": "CPE 2.3 strings (watchlist-scan mode)",
            "maxItems": 20,
            "type": "array",
            "description": "Optional complete CPE 2.3 names, for example cpe:2.3:a:apache:log4j:2.14.1:*:*:*:*:*:*:*. Each one is one NVD request (about 7 seconds without an API key). Up to 20, and the combined total with packages must be 50 or fewer.",
            "items": {
              "type": "string"
            }
          },
          "maxVulnsPerPackage": {
            "title": "Maximum advisories analysed per package",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Caps how many OSV advisories are loaded for each package (1 to 500). Advisories are not ranked before they are loaded, so keep this high enough to cover old versions.",
            "default": 150
          },
          "minimumVerdict": {
            "title": "Minimum verdict to return (watchlist-scan mode)",
            "enum": [
              "all",
              "Medium",
              "High",
              "Act now"
            ],
            "type": "string",
            "description": "Hide findings below this priority. A scan is billed once if at least one finding is returned.",
            "default": "all"
          },
          "nvdApiKey": {
            "title": "NVD API key (optional)",
            "type": "string",
            "description": "Optional. Your own free NVD API key raises the NVD limit from 5 to 50 requests per 30 seconds, which makes cve-triage runs faster. Without a key the Actor keeps to the unauthenticated limit. Request a key at nvd.nist.gov/developers/request-an-api-key."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}