{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/atlasyield-club/json-schema/atlasyield-club-compact-score-schema.json",
  "title": "CompactScore",
  "description": "Returned by GET /scores when fields=compact. About 410 bytes per row (a full Score is about 820). No pillar, factor-quality or admin blobs. Fetch /vaults/{chainId}/{address}/factors for the breakdown.",
  "x-generated": "2026-11-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/atlasyield-club-openapi.json#/components/schemas/CompactScore",
  "type": "object",
  "properties": {
    "vaultId": {
      "type": "string"
    },
    "chainId": {
      "type": "integer"
    },
    "protocolId": {
      "type": "string"
    },
    "name": {
      "type": [
        "string",
        "null"
      ]
    },
    "asset": {
      "type": [
        "string",
        "null"
      ]
    },
    "composite": {
      "type": "number"
    },
    "label": {
      "type": "string"
    },
    "apy": {
      "type": [
        "number",
        "null"
      ],
      "description": "Live APY in percentage points."
    },
    "tvl": {
      "type": [
        "number",
        "null"
      ],
      "description": "Live TVL in USD."
    },
    "dataQuality": {
      "type": "string",
      "enum": [
        "sufficient",
        "partial",
        "fallback"
      ]
    },
    "routable": {
      "type": "boolean",
      "description": "True when the vault is in the live catalog and not flagged unroutable by the route screen. A vault missing from the live catalog is false (fail closed)."
    },
    "flags": {
      "type": "array",
      "description": "Cautions computed from fields we already hold. A flag is a prompt to look closer, never a verdict, and an empty list is not a statement of safety. thin_tvl (live TVL under $2M, or unknown); apy_outlier (live APY at least 10 and at least 3x the median of its chain and asset peers, with at least 5 peers); fallback_data and partial_data (dataQuality); stale_score (scored more than 8 hours ago).",
      "items": {
        "type": "string",
        "enum": [
          "thin_tvl",
          "apy_outlier",
          "fallback_data",
          "partial_data",
          "stale_score"
        ]
      }
    },
    "scoredAt": {
      "type": "string",
      "format": "date-time"
    },
    "pageUrl": {
      "type": "string",
      "description": "Citable vault page."
    }
  }
}