{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/crawlhive-xyz/json-schema/crawlhive-xyz-batch-report-schema.json",
  "title": "BatchReport",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/crawlhive-xyz-brain-openapi.yml#/components/schemas/BatchReport",
  "type": "object",
  "properties": {
    "checked": {
      "type": "integer"
    },
    "seen": {
      "type": "integer"
    },
    "highRisk": {
      "type": "integer",
      "description": "wallets with risk level high"
    },
    "operators": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "operator ids among the wallets"
    },
    "baselineDumpRate": {
      "type": [
        "number",
        "null"
      ]
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "wallet": {
            "type": "string"
          },
          "seen": {
            "type": "boolean"
          },
          "tokens": {
            "type": "integer"
          },
          "roles": {
            "$ref": "#/$defs/Roles"
          },
          "outcomes": {
            "$ref": "#/$defs/Outcomes"
          },
          "dumpRate": {
            "type": [
              "number",
              "null"
            ]
          },
          "risk": {
            "$ref": "#/$defs/Risk"
          },
          "operator": {
            "$ref": "#/$defs/OperatorBrief"
          }
        }
      }
    }
  },
  "$defs": {
    "OperatorBrief": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "wallets": {
          "type": "integer"
        },
        "tokens": {
          "type": "integer"
        },
        "dumpRate": {
          "type": [
            "number",
            "null"
          ]
        },
        "settled": {
          "type": "integer"
        },
        "strong": {
          "type": "boolean",
          "description": "true when the operator has bundles or dev money; false when it is linked mostly by shared funders (a connection",
          "not proof of common control)": null
        }
      }
    },
    "Outcomes": {
      "type": "object",
      "properties": {
        "settled": {
          "type": "integer",
          "description": "dumped + survived"
        },
        "dumped": {
          "type": "integer",
          "description": "rugs included"
        },
        "rugged": {
          "type": "integer"
        },
        "survived": {
          "type": "integer"
        },
        "open": {
          "type": "integer",
          "description": "tracked",
          "less than 24h old": null
        },
        "untracked": {
          "type": "integer",
          "description": "the swarm did not follow this token's price"
        }
      }
    },
    "Risk": {
      "type": "object",
      "description": "0-100 reading of past behaviour: dump rate shrunk toward the baseline (prior of 4 coins), heaviest role weight and operator record. high >= 65, medium 50-64, low < 50, unknown when nothing is graded.",
      "properties": {
        "score": {
          "type": [
            "integer",
            "null"
          ]
        },
        "level": {
          "type": "string",
          "enum": [
            "low",
            "medium",
            "high",
            "unknown"
          ]
        },
        "reasons": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Roles": {
      "type": "object",
      "description": "count of tokens per role",
      "additionalProperties": {
        "type": "integer"
      }
    }
  }
}