{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/getchord-xyz/json-schema/getchord-xyz-arc-trending-row-schema.json",
  "title": "ArcTrendingRow",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/getchord-xyz-arc-data-api-openapi.yml#/components/schemas/ArcTrendingRow",
  "allOf": [
    {
      "$ref": "#/$defs/ArcTokenRow"
    },
    {
      "type": "object",
      "properties": {
        "score": {
          "type": "number",
          "description": "Trending score (higher = hotter)."
        },
        "volNow": {
          "type": "number",
          "description": "USD in the 2-hour window."
        },
        "tradesNow": {
          "type": "integer",
          "description": ""
        },
        "change1hPct": {
          "type": [
            "number",
            "null"
          ],
          "description": ""
        },
        "momentum": {
          "type": [
            "number",
            "null"
          ],
          "description": ""
        }
      }
    }
  ],
  "$defs": {
    "ArcTokenRow": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "EVM address, hex, case-insensitive."
        },
        "symbol": {
          "type": [
            "string",
            "null"
          ],
          "description": ""
        },
        "name": {
          "type": [
            "string",
            "null"
          ],
          "description": ""
        },
        "decimals": {
          "type": [
            "integer",
            "null"
          ],
          "description": ""
        },
        "logoURI": {
          "type": [
            "string",
            "null"
          ],
          "description": "Logo through Chord's proxy (`/v1/logo/5042/{address}`, 128 px WebP)."
        },
        "logoUriRaw": {
          "type": [
            "string",
            "null"
          ],
          "description": "The upstream logo URL the proxy fetched, when there is one."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "`stablecoin`, `fx`, `stock`, … — from the curated list; empty for unlisted tokens."
        },
        "listed": {
          "type": "boolean",
          "description": "On the curated Arc token list (metadata and logo vetted)."
        },
        "priceUsd": {
          "type": [
            "number",
            "null"
          ],
          "description": "Last trade price on the token's dominant venue, USD."
        },
        "change24hPct": {
          "type": [
            "number",
            "null"
          ],
          "description": ""
        },
        "volume24h": {
          "type": "number",
          "description": "USD, every venue, no dust floor."
        },
        "buyVolume24h": {
          "type": "number",
          "description": ""
        },
        "sellVolume24h": {
          "type": "number",
          "description": ""
        },
        "trades24h": {
          "type": "integer",
          "description": ""
        },
        "buys24h": {
          "type": "integer",
          "description": ""
        },
        "sells24h": {
          "type": "integer",
          "description": ""
        },
        "traders": {
          "type": "integer",
          "description": "Distinct attributed wallets over the board's day window. Routers, executors and bots are not wallets."
        },
        "lastTradeTs": {
          "type": "integer",
          "description": "Unix time, seconds, UTC."
        },
        "totalSupply": {
          "type": [
            "number",
            "null"
          ],
          "description": "`totalSupply()` in whole tokens. Null when unreadable."
        },
        "marketCapUsd": {
          "type": [
            "number",
            "null"
          ],
          "description": "totalSupply × price — fully diluted, since nothing on-chain says what is locked."
        },
        "pools": {
          "type": "object",
          "properties": {
            "v3": {
              "type": "integer",
              "description": ""
            },
            "v2": {
              "type": "integer",
              "description": ""
            },
            "v4": {
              "type": "integer",
              "description": ""
            },
            "byDex": {
              "type": "object",
              "properties": {},
              "description": "Pool count per venue id (`uniswap_v3`, `uniswap_v4`, `pools_trade`, `slipstream_fork`, `v3fork_<8hex>`, …).",
              "additionalProperties": {
                "type": "integer"
              }
            }
          },
          "description": "Indexed pools holding the token."
        },
        "routable": {
          "type": "boolean",
          "description": "The engine can quote this token today (at least one pool against a routing anchor)."
        },
        "flags": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "wash",
              "impostor"
            ]
          },
          "description": "Honesty flags. `wash` = a day's volume carried by one or two wallets; `impostor` = an unlisted token wearing a listed symbol. Absent when clean."
        }
      },
      "description": "One token on Arc with its 24-hour tape."
    }
  }
}