HoneyLabs · Schema

CveDetail

Counts cover both sensor types: first contact (requests matching the CVE's detection signatures) and the requests the interactive sensors answered that count as a probe for the CVE (the sensor's rule for that CVE was the only one the request matched, on a path first contact's exclusions accept, or the request or its session carried the exploit). A request that matched several CVE rules counts for none. UDP is left out on both sides.

HoneypotThreat IntelligenceMCPOpen Source

Properties

Name Type Description
cve_id string
title string The detection signature's title, else the KEV catalogue's vulnerabilityName, else a title HoneyLabs writes for an id the interactive sensors record that neither names. Empty when none applies.
severity string
actively_exploited boolean On the CISA Known Exploited Vulnerabilities catalogue, or flagged as listed by the CVE's detection signatures. The catalogue is the first source and covers CVEs without a signature.
events integer first_contact_events plus interactive_requests.
unique_ips integer Distinct addresses over both sensor types, each once.
first_contact_events integer
first_contact_ips integer
interactive_requests integer
interactive_sources integer
patterns array
actors array Top sources over both sensor types, most events first.
window_notice object
interaction object
known boolean probe_tags holds the CVE, or the interactive sensors saw it probed in the last 90 days. A known CVE with no activity in the window answers 200 with zeros.
body_patterns array
top_asns array At most 10, both sensor types.
top_countries array At most 10, both sensor types.
fingerprints object
sample_paths array First-contact request paths, at most 10.
timeline array One row per day either sensor type saw.
interactive object
window_hours integer
kev_date_added stringnull The date CISA added the CVE to the KEV catalogue (YYYY-MM-DD, its dateAdded). null when the catalogue does not list it.
kev objectnull The CVE's entry in the CISA KEV catalogue; null when the catalogue does not list it.
View JSON Schema on GitHub

JSON Schema

honeylabs-net-cve-detail-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/honeylabs-net/json-schema/honeylabs-net-cve-detail-schema.json",
  "title": "CveDetail",
  "description": "Counts cover both sensor types: first contact (requests matching the CVE's detection signatures) and the requests the interactive sensors answered that count as a probe for the CVE (the sensor's rule for that CVE was the only one the request matched, on a path first contact's exclusions accept, or the request or its session carried the exploit). A request that matched several CVE rules counts for none. UDP is left out on both sides.",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/honeylabs-net-openapi.json#/components/schemas/CveDetail",
  "type": "object",
  "properties": {
    "cve_id": {
      "type": "string"
    },
    "title": {
      "type": "string",
      "description": "The detection signature's title, else the KEV catalogue's vulnerabilityName, else a title HoneyLabs writes for an id the interactive sensors record that neither names. Empty when none applies."
    },
    "severity": {
      "type": "string"
    },
    "actively_exploited": {
      "type": "boolean",
      "description": "On the CISA Known Exploited Vulnerabilities catalogue, or flagged as listed by the CVE's detection signatures. The catalogue is the first source and covers CVEs without a signature."
    },
    "events": {
      "type": "integer",
      "description": "first_contact_events plus interactive_requests."
    },
    "unique_ips": {
      "type": "integer",
      "description": "Distinct addresses over both sensor types, each once."
    },
    "first_contact_events": {
      "type": "integer"
    },
    "first_contact_ips": {
      "type": "integer"
    },
    "interactive_requests": {
      "type": "integer"
    },
    "interactive_sources": {
      "type": "integer"
    },
    "patterns": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "actors": {
      "type": "array",
      "description": "Top sources over both sensor types, most events first.",
      "items": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string"
          },
          "events": {
            "type": "integer"
          },
          "first_contact_events": {
            "type": "integer"
          },
          "interactive_requests": {
            "type": "integer",
            "description": "Requests the interactive sensors answered from this address; 0 when none."
          },
          "country_code": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "org": {
            "type": "string"
          },
          "rdns": {
            "type": "string"
          },
          "scanner_tag": {
            "type": [
              "object",
              "null"
            ],
            "description": "The address's classification chip, hosting providers included; `scanner` says whether it is a recognised scanner."
          },
          "scanner": {
            "type": [
              "object",
              "null"
            ],
            "description": "Set when the platform recognises the address as a scanner, by the signals the address report's \"Recognized scanner\" verdict reads: a research, commercial or vendor rule matching its reverse DNS or network name, or its address inside a known scanner range. null for every other address, hosting providers included.",
            "properties": {
              "name": {
                "type": "string",
                "description": "The scanner's name in words, such as Censys. Empty when the range list names only a kind (university research scanners)."
              },
              "category": {
                "type": "string",
                "enum": [
                  "research",
                  "commercial",
                  "vendor",
                  ""
                ],
                "description": "The kind of scanner; empty when no rule or list entry says."
              }
            }
          }
        }
      }
    },
    "window_notice": {
      "$ref": "#/$defs/WindowNotice"
    },
    "interaction": {
      "$ref": "#/$defs/CveInteraction"
    },
    "known": {
      "type": "boolean",
      "description": "probe_tags holds the CVE, or the interactive sensors saw it probed in the last 90 days. A known CVE with no activity in the window answers 200 with zeros."
    },
    "body_patterns": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "top_asns": {
      "type": "array",
      "description": "At most 10, both sensor types.",
      "items": {
        "type": "object",
        "properties": {
          "asn": {
            "type": "integer"
          },
          "org": {
            "type": "string"
          },
          "events": {
            "type": "integer"
          },
          "ips": {
            "type": "integer"
          },
          "interactive_requests": {
            "type": "integer"
          }
        }
      }
    },
    "top_countries": {
      "type": "array",
      "description": "At most 10, both sensor types.",
      "items": {
        "type": "object",
        "properties": {
          "country_code": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "events": {
            "type": "integer"
          },
          "ips": {
            "type": "integer"
          },
          "interactive_requests": {
            "type": "integer"
          }
        }
      }
    },
    "fingerprints": {
      "type": "object",
      "properties": {
        "ja4": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "akin": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "sample_paths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "First-contact request paths, at most 10."
    },
    "timeline": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "description": "YYYY-MM-DD, UTC"
          },
          "events": {
            "type": "integer"
          },
          "ips": {
            "type": "integer",
            "description": "Distinct addresses that day over both sensor types."
          },
          "first_contact_events": {
            "type": "integer"
          },
          "interactive_requests": {
            "type": "integer"
          }
        }
      },
      "description": "One row per day either sensor type saw."
    },
    "interactive": {
      "$ref": "#/$defs/CveInteractive"
    },
    "window_hours": {
      "type": "integer"
    },
    "kev_date_added": {
      "type": [
        "string",
        "null"
      ],
      "description": "The date CISA added the CVE to the KEV catalogue (YYYY-MM-DD, its dateAdded). null when the catalogue does not list it."
    },
    "kev": {
      "type": [
        "object",
        "null"
      ],
      "description": "The CVE's entry in the CISA KEV catalogue; null when the catalogue does not list it.",
      "properties": {
        "date_added": {
          "type": "string",
          "description": "YYYY-MM-DD"
        },
        "vulnerability_name": {
          "type": "string"
        },
        "vendor_project": {
          "type": "string"
        },
        "product": {
          "type": "string"
        },
        "known_ransomware_campaign_use": {
          "type": "string",
          "description": "CISA's value: Known or Unknown."
        }
      }
    }
  },
  "$defs": {
    "CveInteraction": {
      "type": [
        "object",
        "null"
      ],
      "description": "What the interactive sensors recorded for this CVE: sessions in which a client went on to send the exploit after the sensor answered as the vulnerable service. null when there were none in the window. Hosts are defanged; render them as text, never as links.",
      "properties": {
        "window_days": {
          "type": "integer"
        },
        "sessions": {
          "type": "integer"
        },
        "sources": {
          "type": "integer",
          "description": "Distinct source addresses behind the sessions."
        },
        "top_asns": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "asn": {
                "type": "integer"
              },
              "org": {
                "type": "string"
              },
              "sessions": {
                "type": "integer"
              }
            }
          }
        },
        "followed_by": {
          "type": "object",
          "description": "What the client did after sending the exploit.",
          "properties": {
            "downloads": {
              "type": "integer"
            },
            "commands": {
              "type": "integer"
            },
            "uploads": {
              "type": "integer",
              "description": "Sessions that handed the sensor a file other than the exploit's own body."
            }
          }
        },
        "download_hosts": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "host": {
                "type": "string",
                "description": "Defanged, e.g. 203[.]0[.]113[.]9."
              },
              "sessions": {
                "type": "integer"
              }
            }
          }
        },
        "recent": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "ts": {
                "type": "string"
              },
              "country_code": {
                "type": "string"
              },
              "asn_org": {
                "type": "string"
              },
              "protocol": {
                "type": "string"
              },
              "dest_port": {
                "type": "integer"
              },
              "did": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "What the session did in words: logged in, tried logins, ran commands, named a download, uploaded a file, sent an exploit. The sensor's own labels are never published."
              }
            }
          }
        }
      }
    },
    "CveInteractive": {
      "type": [
        "object",
        "null"
      ],
      "description": "What the interactive sensors recorded of the probes for this CVE in the window. null when they answered none. Paths, user agents and payload excerpts are attacker text with every URL and address defanged; render them as text, never as links.",
      "properties": {
        "requests": {
          "type": "integer",
          "description": "Counted requests (as interactive_requests)."
        },
        "sources": {
          "type": "integer",
          "description": "Distinct source addresses behind them."
        },
        "payload_sources": {
          "type": "integer",
          "description": "How many of those sources sent the exploit payload."
        },
        "payload_sessions": {
          "type": "integer",
          "description": "Sessions whose payload proved the CVE, any transport."
        },
        "first_seen": {
          "type": [
            "string",
            "null"
          ]
        },
        "last_seen": {
          "type": [
            "string",
            "null"
          ]
        },
        "top_sources": {
          "type": "array",
          "description": "At most 25, most requests first.",
          "items": {
            "type": "object",
            "properties": {
              "ip": {
                "type": "string"
              },
              "requests": {
                "type": "integer"
              },
              "payload": {
                "type": "boolean",
                "description": "Sent the exploit payload."
              },
              "country_code": {
                "type": "string"
              },
              "country": {
                "type": "string"
              },
              "asn": {
                "type": "integer"
              },
              "org": {
                "type": "string"
              },
              "first_seen": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "last_seen": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "scanner": {
                "type": [
                  "object",
                  "null"
                ],
                "description": "Set when the platform recognises the address as a scanner, by the signals the address report's \"Recognized scanner\" verdict reads: a research, commercial or vendor rule matching its reverse DNS or network name, or its address inside a known scanner range. null for every other address, hosting providers included.",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The scanner's name in words, such as Censys. Empty when the range list names only a kind (university research scanners)."
                  },
                  "category": {
                    "type": "string",
                    "enum": [
                      "research",
                      "commercial",
                      "vendor",
                      ""
                    ],
                    "description": "The kind of scanner; empty when no rule or list entry says."
                  }
                }
              }
            }
          }
        },
        "paths": {
          "type": "array",
          "description": "Requests by method and path, at most 25.",
          "items": {
            "type": "object",
            "properties": {
              "method": {
                "type": "string"
              },
              "path": {
                "type": "string"
              },
              "requests": {
                "type": "integer"
              },
              "sources": {
                "type": "integer"
              }
            }
          }
        },
        "user_agents": {
          "type": "array",
          "description": "At most 10.",
          "items": {
            "type": "object",
            "properties": {
              "user_agent": {
                "type": "string"
              },
              "requests": {
                "type": "integer"
              }
            }
          }
        },
        "payloads": {
          "type": "array",
          "description": "Request bodies that carried the exploit, one per distinct body, with one of the paths it was sent to and how many.",
          "items": {
            "type": "object",
            "properties": {
              "method": {
                "type": "string"
              },
              "path": {
                "type": "string"
              },
              "paths": {
                "type": "integer"
              },
              "excerpt": {
                "type": "string",
                "description": "The body as sent, the first 4,000 characters, URLs and addresses defanged."
              },
              "requests": {
                "type": "integer"
              },
              "decoded": {
                "type": "string",
                "description": "An encoded stage in the body (PHP base64_decode('...'), echo ... | base64 -d) decoded to text, URLs and addresses defanged; empty when there is none."
              }
            }
          }
        },
        "bodies": {
          "type": "array",
          "description": "Other bodies of counted requests, same shape as payloads.",
          "items": {
            "type": "object"
          }
        },
        "after": {
          "type": "array",
          "description": "What these sources did on the interactive sensors from their first probe on (TCP sessions, any service), for sources that did more than probe. At most 25.",
          "items": {
            "type": "object",
            "properties": {
              "ip": {
                "type": "string"
              },
              "sessions": {
                "type": "integer"
              },
              "logged_in": {
                "type": "integer",
                "description": "Sessions that logged in."
              },
              "commands": {
                "type": "integer",
                "description": "Sessions that ran commands."
              },
              "downloads": {
                "type": "integer",
                "description": "Sessions that named a download."
              },
              "uploads": {
                "type": "integer",
                "description": "Sessions that uploaded a file."
              },
              "last_seen": {
                "type": "string"
              },
              "did": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "The same in words: logged in, ran commands, named a download, uploaded a file."
              }
            }
          }
        },
        "scanner_sources": {
          "type": "integer",
          "description": "How many of `sources` the platform recognises as scanners, counted over every source, not only the listed ones."
        },
        "payload_scanner_sources": {
          "type": "integer",
          "description": "How many of the recognised scanners sent the exploit payload."
        },
        "scanner_category": {
          "type": "string",
          "enum": [
            "research",
            "commercial",
            "vendor",
            ""
          ],
          "description": "The kind every recognised scanner among the sources shares; empty when they differ, none is known, or there are none."
        }
      }
    },
    "WindowNotice": {
      "type": "object",
      "description": "Present when the requested window exceeded the plan and the response was shortened.",
      "properties": {
        "requested_days": {
          "type": "integer"
        },
        "returned_days": {
          "type": "integer"
        },
        "reason": {
          "type": "string"
        },
        "upgrade": {
          "type": "string",
          "format": "uri"
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/honeylabs-net-cve-detail"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.