{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/aixbt-tech/json-schema/aixbt-tech-project-schema.json",
  "title": "Project",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/aixbt-tech-v3-openapi.yaml#/components/schemas/Project",
  "type": "object",
  "required": [
    "id",
    "slug",
    "name",
    "universe",
    "trend",
    "categories",
    "assets",
    "createdAt",
    "updatedAt"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "universe": {
      "type": "string",
      "enum": [
        "crypto"
      ],
      "description": "Entity universe; shares the Cluster enum."
    },
    "symbol": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "identifiers": {
      "$ref": "#/$defs/Identifiers"
    },
    "image": {
      "type": "string",
      "format": "uri"
    },
    "trend": {
      "type": "number",
      "description": "Canonical trend measurement from the shared trend model.\nComparable only within the same `meta.versions.trendModel`.\n"
    },
    "trendDelta": {
      "type": "object",
      "required": [
        "value",
        "window"
      ],
      "description": "Series-derived change over the stated window (PT24H), computed\nfrom the hourly trend history. Emitted on Project detail; absent\nwhen history is too shallow to state one.\n",
      "properties": {
        "value": {
          "type": "number"
        },
        "window": {
          "type": "string",
          "enum": [
            "PT24H"
          ]
        }
      }
    },
    "rank": {
      "type": "integer",
      "description": "Committed leaderboard rank within the Project's universe; absent while unranked."
    },
    "rankBand": {
      "type": "string",
      "enum": [
        "strong",
        "corroborated"
      ],
      "description": "Evidence band used before score in the Project leaderboard; absent while unranked."
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Canonical taxonomy slugs."
    },
    "assets": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Asset"
      }
    },
    "intel": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/IntelRef"
      },
      "description": "Bounded preview of current Intel, newest first."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "reinforcedAt": {
      "type": "string",
      "format": "date-time"
    }
  },
  "$defs": {
    "Asset": {
      "type": "object",
      "required": [
        "type",
        "primary"
      ],
      "description": "Canonical instrument identity owned by the Asset registry. Identity\nonly; v3 never attaches third-party market values to an asset.\nUniverse-specific fields are additive per type (crypto types carry\n`chain` and `address`).\n",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "token",
            "stablecoin",
            "nft-collection"
          ]
        },
        "chain": {
          "type": "string"
        },
        "address": {
          "type": "string"
        },
        "symbol": {
          "type": "string"
        },
        "primary": {
          "type": "boolean",
          "description": "The Project's primary instrument."
        }
      }
    },
    "Grade": {
      "type": "string",
      "enum": [
        "chipped",
        "flawed",
        "cut",
        "polished",
        "flawless"
      ],
      "description": "Evidence grade of an Intel item, lowest to highest. Grades describe\nthe shape of the evidence, never the truth of the claim.\n"
    },
    "Identifiers": {
      "type": "object",
      "description": "Stable external join keys for composing AIXBT data with sources the\nconsumer licenses directly. Keys are additive; values are\nidentifiers only; v3 never attaches the external source's data to\nthem.\n",
      "properties": {
        "coingecko": {
          "type": "string",
          "description": "CoinGecko API id of the primary asset."
        },
        "x": {
          "type": "string",
          "description": "X handle without the at sign."
        }
      }
    },
    "IntelRef": {
      "type": "object",
      "required": [
        "id",
        "grade",
        "detectedAt"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "headline": {
          "type": "string"
        },
        "grade": {
          "$ref": "#/$defs/Grade"
        },
        "detectedAt": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}