{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/crawlhive-xyz/json-schema/crawlhive-xyz-token-report-schema.json",
  "title": "TokenReport",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/crawlhive-xyz-brain-openapi.yml#/components/schemas/TokenReport",
  "type": "object",
  "properties": {
    "token": {
      "type": "string"
    },
    "chain": {
      "type": [
        "string",
        "null"
      ]
    },
    "symbol": {
      "type": [
        "string",
        "null"
      ]
    },
    "latest": {
      "type": "object",
      "properties": {
        "verdict": {
          "type": "string"
        },
        "score": {
          "type": [
            "integer",
            "null"
          ]
        },
        "reason": {
          "type": [
            "string",
            "null"
          ]
        },
        "scannedAt": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "since": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "prevAt": {
          "type": "string",
          "format": "date-time"
        },
        "changes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "from": {
                "type": "string"
              },
              "to": {
                "type": "string"
              },
              "tone": {
                "type": "string",
                "enum": [
                  "bad",
                  "good",
                  "info"
                ]
              }
            }
          }
        }
      }
    },
    "snapshots": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "outcome": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/$defs/Outcome"
        },
        "verdictAtScan": {
          "type": "string"
        },
        "scannedAt": {
          "type": "string",
          "format": "date-time"
        },
        "peakPct": {
          "type": [
            "number",
            "null"
          ]
        },
        "lowPct": {
          "type": [
            "number",
            "null"
          ]
        },
        "lastPct": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    },
    "scanUrl": {
      "type": "string"
    }
  },
  "$defs": {
    "Outcome": {
      "type": "string",
      "enum": [
        "rugged",
        "dumped",
        "survived",
        "open",
        "untracked"
      ]
    }
  }
}