{
  "openapi": "3.0.0",
  "paths": {
    "/v3/currencies/map": {
      "get": {
        "description": "**Description**\n\n<Note>Light reference of all enabled currencies — `id`, `slug`, `symbol`, `name`.</Note> Useful as a client-side dictionary; refresh once per day and cache locally.\n\n**Pricing**\n- 1 credit per request.",
        "operationId": "CurrenciesController_getMap",
        "x-mint": {
          "metadata": {
            "title": "Custom title",
            "sidebarTitle": "sidebarTitle",
            "description": "Custom description",
            "og:title": "Custom title"
          }
        },
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CurrencyMapItemDto"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-Api-Key": []
          }
        ],
        "summary": "Currencies map (id reference)-test",
        "tags": [
          "Currencies",
          "x-group"
        ]
      }
    },
    "/v3/currencies/search": {
      "get": {
        "description": "**Description**\n\n<Note>Text search over `name`, `symbol`, `slug` (min 2 chars). </Note>Returns top-N matches ordered by symbol-prefix exact-match first, then `rank`.\n\n<Badge color=\"orange\">1 credit per request.</Badge>",
        "operationId": "CurrenciesController_search",
        "parameters": [
          {
            "name": "query",
            "required": true,
            "in": "query",
            "description": "Search by name / symbol / slug.",
            "schema": {
              "minLength": 2,
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 50,
              "default": 10,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CurrencySearchItemDto"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-Api-Key": []
          }
        ],
        "summary": "Search currencies-test",
        "x-mint": {
          "content": "## Prerequisites\n\ntest test test.\n\n<Note>test note</Note>"
        },
        "tags": [
          "Currencies"
        ]
      }
    },
    "/v3/currencies/fiat": {
      "get": {
        "x-mint": {
          "content": "<Note>This adds a note in the content</Note><Warning>This raises a warning to watch out for</Warning><Info>This draws attention to important information</Info><Tip>This suggests a helpful tip</Tip><Check>This brings us a checked status</Check><Danger>This is a danger callout</Danger>"
        },
        "description": "**Description**\n\nList of fiat currencies supported as quote (`convert`) targets. Returns ISO 4217 alpha-3 `symbol` and full `name`.\n\n**Pricing**\n- 1 credit per request.",
        "operationId": "CurrenciesController_getFiat",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CurrencyFiatItemDto"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-Api-Key": []
          }
        ],
        "summary": "Supported fiat currencies-test",
        "tags": [
          "Currencies"
        ]
      }
    },
    "/v3/token-unlocks/upcoming": {
      "get": {
        "description": "Paginated feed of the closest upcoming token unlock for every coin with a tracked vesting schedule, sorted across the whole list. One entry per coin — the next unlock date in the future and the token amount unlocked on that date (events scheduled for the same date are summed; TGE events are excluded). Each item exposes the project identity (`currencyId`, `currencyName`, `currencySymbol`, `currencyImages`), the unlock `date` (ISO 8601 UTC, time component fixed to `00:00:00.000Z`), `tokenAmount` (raw token units), `usdAmount` (USD value at the current coin price), `percentOfMcap` (unlock as a percent of the current circulating supply), `percentOfSupply` (percent of the max supply with a fallback to total supply), and the current coin `price`, `marketCap` and `circulatingSupply` for context. Filters: `daysAhead` window from today (default `30`, max `365`), `minUsdAmount` (USD threshold), `minPercentOfMcap` (percent threshold, e.g. `5` for 5%). Sorting (`date`, `usdAmount`, `percentOfMcap`, asc/desc) with `currencyId` ascending as a tie-breaker. <Tip>Coins with a hidden vesting schedule, a missing current price or zero circulating supply are excluded.</Tip>\n <Badge color=\"surface\">1 credit base + 1 credit per 50 items returned over the first 50.</Badge>",
        "operationId": "TokenUnlocksController_getUpcoming",
        "parameters": [
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 0,
              "maximum": 50000,
              "default": 0,
              "type": "number"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 200,
              "default": 50,
              "type": "number"
            }
          },
          {
            "name": "daysAhead",
            "required": false,
            "in": "query",
            "description": "Window for upcoming unlocks in days from today (inclusive).",
            "schema": {
              "minimum": 1,
              "maximum": 365,
              "default": 30,
              "type": "number"
            }
          },
          {
            "name": "minUsdAmount",
            "required": false,
            "in": "query",
            "description": "Lower bound on the unlock USD value (inclusive).",
            "schema": {
              "example": 1000000,
              "type": "number"
            }
          },
          {
            "name": "minPercentOfMcap",
            "required": false,
            "in": "query",
            "description": "Lower bound on the unlock size as a percent of the coin market capitalization (inclusive). Value is a percent, e.g. `5` means 5%.",
            "schema": {
              "example": 1,
              "type": "number"
            }
          },
          {
            "name": "sortBy",
            "required": false,
            "in": "query",
            "schema": {
              "default": "date",
              "type": "string",
              "enum": [
                "date",
                "usdAmount",
                "percentOfMcap"
              ]
            }
          },
          {
            "name": "sortOrder",
            "required": false,
            "in": "query",
            "schema": {
              "default": "asc",
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TokenUnlocksUpcomingItemDto"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-Api-Key": []
          }
        ],
        "summary": "Upcoming token unlocks across all coins-test",
        "tags": [
          "Token Unlocks"
        ]
      }
    }
  },
  "info": {
    "title": "Cryptorank API V3",
    "description": "# Overview\n\nCryptorank Public API v3 — comprehensive cryptocurrency data for B2B clients and partners.\n\nUseful Links:\n- [API Plans](https://cryptorank.io/public-api)\n- [Dashboard](https://cryptorank.io/public-api/dashboard)\n\n# Getting Started\n\nPrimary Server URL: [https://api.cryptorank.io/v3/](https://api.cryptorank.io/v3/)\n\n**Authentication**\n\nGenerate an API key in the [dashboard](https://cryptorank.io/public-api/dashboard) and pass it in the `X-Api-Key` header.\n\nKeep your keys secret — never commit them to public repositories or expose them in client-side code.\n",
    "version": "3.0.0",
    "contact": {
      "name": "Cryptorank Team",
      "url": "https://cryptorank.io",
      "email": "info@cryptorank.io"
    }
  },
  "tags": [
    {
      "name": "Token Unlocks",
      "description": "Token Unlocks desc",
      "x-group": "Token Unlocks"
    },
    {
      "name": "Coins",
      "description": ""
    },
    {
      "name": "Global",
      "description": ""
    },
    {
      "name": "x-group",
      "description": "Custom descc",
      "x-group": "x-group"
    }
  ],
  "servers": [
    {
      "url": "https://api.cryptorank.io"
    }
  ],
  "components": {
    "securitySchemes": {
      "X-Api-Key": {
        "name": "X-Api-Key",
        "type": "apiKey",
        "in": "header"
      }
    },
    "schemas": {
      "CurrencyMapItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "bitcoin"
          },
          "symbol": {
            "type": "object",
            "example": "BTC",
            "nullable": true
          },
          "name": {
            "type": "string",
            "example": "Bitcoin"
          }
        },
        "required": [
          "id",
          "slug",
          "symbol",
          "name"
        ]
      },
      "ImageUrlsDto": {
        "type": "object",
        "properties": {
          "icon": {
            "type": "string",
            "nullable": true
          },
          "x60": {
            "type": "string",
            "nullable": true
          },
          "x150": {
            "type": "string",
            "nullable": true
          },
          "native": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "icon",
          "x60",
          "x150",
          "native"
        ]
      },
      "CurrencySearchItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "bitcoin"
          },
          "symbol": {
            "type": "object",
            "example": "BTC",
            "nullable": true
          },
          "name": {
            "type": "string",
            "example": "Bitcoin"
          },
          "rank": {
            "type": "object",
            "example": 1,
            "nullable": true
          },
          "images": {
            "description": "Coin logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "slug",
          "symbol",
          "name",
          "rank",
          "images"
        ]
      },
      "CurrencyFiatItemDto": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "example": "USD",
            "description": "ISO 4217 alpha-3 code."
          },
          "name": {
            "type": "string",
            "example": "United States Dollar"
          }
        },
        "required": [
          "symbol",
          "name"
        ]
      },
      "PercentChangeDto": {
        "type": "object",
        "properties": {
          "h24": {
            "type": "object",
            "example": 1.23,
            "nullable": true
          },
          "d7": {
            "type": "object",
            "example": -4.56,
            "nullable": true
          },
          "d30": {
            "type": "object",
            "example": 12.34,
            "nullable": true
          },
          "m3": {
            "type": "object",
            "example": 8.9,
            "nullable": true,
            "description": "Approx 90 days — backed by `3M` row in coin_historical_value."
          },
          "ytd": {
            "type": "object",
            "example": 50.12,
            "nullable": true
          }
        },
        "required": [
          "h24",
          "d7",
          "d30",
          "m3",
          "ytd"
        ]
      },
      "CurrencyTagItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 12
          },
          "slug": {
            "type": "string",
            "example": "defi"
          },
          "name": {
            "type": "string",
            "example": "DeFi"
          }
        },
        "required": [
          "id",
          "slug",
          "name"
        ]
      },
      "CurrencyEcosystemItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 5
          },
          "slug": {
            "type": "string",
            "example": "ethereum"
          },
          "name": {
            "type": "string",
            "example": "Ethereum"
          }
        },
        "required": [
          "id",
          "slug",
          "name"
        ]
      },
      "CurrencyMarketItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "bitcoin"
          },
          "symbol": {
            "type": "object",
            "example": "BTC",
            "nullable": true
          },
          "name": {
            "type": "string",
            "example": "Bitcoin"
          },
          "rank": {
            "type": "object",
            "example": 1,
            "nullable": true
          },
          "categoryId": {
            "type": "object",
            "example": 12,
            "nullable": true
          },
          "images": {
            "$ref": "#/components/schemas/ImageUrlsDto"
          },
          "price": {
            "type": "string",
            "example": "65000.5"
          },
          "marketCap": {
            "type": "object",
            "example": "1280000000000",
            "nullable": true
          },
          "volume24h": {
            "type": "string",
            "example": "32000000000"
          },
          "volume24hBase": {
            "type": "string",
            "example": "492000",
            "description": "Volume in base currency (volume24h / price)."
          },
          "fullyDilutedValuation": {
            "type": "object",
            "example": "1300000000000",
            "nullable": true,
            "description": "Fully diluted valuation."
          },
          "high24h": {
            "type": "object",
            "example": "65500",
            "nullable": true
          },
          "low24h": {
            "type": "object",
            "example": "64000",
            "nullable": true
          },
          "percentChange": {
            "$ref": "#/components/schemas/PercentChangeDto"
          },
          "circulatingSupply": {
            "type": "object",
            "example": "19700000",
            "nullable": true
          },
          "totalSupply": {
            "type": "object",
            "example": "21000000",
            "nullable": true
          },
          "maxSupply": {
            "type": "object",
            "example": "21000000",
            "nullable": true
          },
          "isTraded": {
            "type": "boolean",
            "example": true
          },
          "sparkline7d": {
            "description": "Daily USD prices for last 7 days (when include=sparkline7d).",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CurrencyTagItemDto"
            }
          },
          "ecosystems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CurrencyEcosystemItemDto"
            }
          },
          "lastUpdated": {
            "type": "object",
            "example": "2026-05-06T12:34:56.000Z",
            "nullable": true
          }
        },
        "required": [
          "id",
          "slug",
          "symbol",
          "name",
          "rank",
          "categoryId",
          "images",
          "price",
          "marketCap",
          "volume24h",
          "volume24hBase",
          "fullyDilutedValuation",
          "high24h",
          "low24h",
          "percentChange",
          "circulatingSupply",
          "totalSupply",
          "maxSupply",
          "isTraded",
          "tags",
          "ecosystems",
          "lastUpdated"
        ]
      },
      "CurrencyLinkDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "example": "web",
            "description": "Link kind. Common values: `web`, `whitepaper`, `github`, `twitter`, `discord`, `telegram`, `reddit`, `medium`, `youtube`, `gitbook`, `farcaster`. Other values may appear over time."
          },
          "url": {
            "type": "string",
            "example": "https://bitcoin.org"
          }
        },
        "required": [
          "type",
          "url"
        ]
      },
      "CurrencyProfileDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "bitcoin"
          },
          "symbol": {
            "type": "object",
            "example": "BTC",
            "nullable": true
          },
          "name": {
            "type": "string",
            "example": "Bitcoin"
          },
          "rank": {
            "type": "object",
            "example": 1,
            "nullable": true
          },
          "type": {
            "type": "string",
            "example": "coin",
            "description": "Asset type. Common values: `coin`, `token`, `fiat`, `no-token`. May also be `etf`, `leveraged-token`, `derivative`, `undefined` for less common assets."
          },
          "lifecycle": {
            "type": "string",
            "example": "traded",
            "description": "Lifecycle stage. Values: `traded` (live market), `crowdsale` (active ICO/IDO), `funding` (raising), `scheduled` (announced TGE), `inactive` (not trading), `unknown`.",
            "enum": [
              "traded",
              "crowdsale",
              "funding",
              "scheduled",
              "inactive",
              "unknown"
            ]
          },
          "categoryId": {
            "type": "object",
            "example": 12,
            "nullable": true
          },
          "images": {
            "$ref": "#/components/schemas/ImageUrlsDto"
          },
          "description": {
            "type": "object",
            "nullable": true,
            "description": "Long English description."
          },
          "listingDate": {
            "type": "object",
            "example": "2009-01-03T00:00:00.000Z",
            "nullable": true,
            "description": "Listing date — first available of: explicit listing date, TGE start, first traded date."
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CurrencyLinkDto"
            }
          },
          "price": {
            "type": "string",
            "example": "65000.5"
          },
          "marketCap": {
            "type": "object",
            "example": "1280000000000",
            "nullable": true
          },
          "volume24h": {
            "type": "string",
            "example": "32000000000"
          },
          "volume24hBase": {
            "type": "string",
            "example": "492000",
            "description": "Volume in base currency (volume24h / price)."
          },
          "high24h": {
            "type": "object",
            "example": "65500",
            "nullable": true,
            "description": "USD high in last 24h (not affected by `convert`)."
          },
          "low24h": {
            "type": "object",
            "example": "64000",
            "nullable": true,
            "description": "USD low in last 24h (not affected by `convert`)."
          },
          "fullyDilutedValuation": {
            "type": "object",
            "example": "1300000000000",
            "nullable": true
          },
          "percentChange": {
            "$ref": "#/components/schemas/PercentChangeDto"
          },
          "volMcapRatio": {
            "type": "object",
            "example": 0.025,
            "nullable": true,
            "description": "Volume / MarketCap ratio. Null when market cap is unavailable or zero."
          },
          "volatility": {
            "type": "object",
            "example": 35.42,
            "nullable": true,
            "description": "30-day USD price volatility (percent), updated periodically."
          },
          "circulatingSupply": {
            "type": "object",
            "example": "19700000",
            "nullable": true
          },
          "totalSupply": {
            "type": "object",
            "example": "21000000",
            "nullable": true
          },
          "maxSupply": {
            "type": "object",
            "example": "21000000",
            "nullable": true
          },
          "athPrice": {
            "type": "object",
            "example": "69000",
            "nullable": true,
            "description": "USD price at ATH (not affected by `convert`)."
          },
          "athDate": {
            "type": "object",
            "example": "2021-11-10T14:24:00.000Z",
            "nullable": true
          },
          "atlPrice": {
            "type": "object",
            "example": "0.05",
            "nullable": true,
            "description": "USD price at ATL (not affected by `convert`)."
          },
          "atlDate": {
            "type": "object",
            "example": "2013-07-05T00:00:00.000Z",
            "nullable": true
          },
          "athMarketCap": {
            "type": "object",
            "example": "1380000000000",
            "nullable": true,
            "description": "USD market cap at ATH (not affected by `convert`)."
          },
          "athFdv": {
            "type": "object",
            "example": "1450000000000",
            "nullable": true,
            "description": "USD fully diluted valuation at ATH (not affected by `convert`)."
          },
          "fromAthPercent": {
            "type": "object",
            "example": -5.78,
            "nullable": true,
            "description": "Current price vs ATH, percent."
          },
          "fromAtlPercent": {
            "type": "object",
            "example": 130000.42,
            "nullable": true
          },
          "vcAvgRoi": {
            "type": "object",
            "example": 12.5,
            "nullable": true,
            "description": "Average ROI of VC investors based on disclosed funding rounds."
          },
          "icoRoi": {
            "type": "object",
            "example": 8500.4,
            "nullable": true,
            "description": "ROI from latest closed public sale (ICO/IDO/IEO). Null when no sale or untraded."
          },
          "isTraded": {
            "type": "boolean",
            "example": true
          },
          "hasFundingRounds": {
            "type": "boolean",
            "example": true
          },
          "hasTeams": {
            "type": "boolean",
            "example": true
          },
          "hasVesting": {
            "type": "boolean",
            "example": true
          },
          "hasNextUnlock": {
            "type": "boolean",
            "example": true
          },
          "hasContracts": {
            "type": "boolean",
            "example": true
          },
          "hasPublicSales": {
            "type": "boolean",
            "example": true
          },
          "hasDrophunting": {
            "type": "boolean",
            "example": false
          },
          "sparkline7d": {
            "type": "object",
            "nullable": true,
            "description": "URL of pre-rendered 7d sparkline image, null when no chart available."
          },
          "lastUpdated": {
            "type": "string",
            "example": "2026-05-06T12:34:56.000Z"
          }
        },
        "required": [
          "id",
          "slug",
          "symbol",
          "name",
          "rank",
          "type",
          "lifecycle",
          "categoryId",
          "images",
          "description",
          "listingDate",
          "links",
          "price",
          "marketCap",
          "volume24h",
          "volume24hBase",
          "high24h",
          "low24h",
          "fullyDilutedValuation",
          "percentChange",
          "volMcapRatio",
          "volatility",
          "circulatingSupply",
          "totalSupply",
          "maxSupply",
          "athPrice",
          "athDate",
          "atlPrice",
          "atlDate",
          "athMarketCap",
          "athFdv",
          "fromAthPercent",
          "fromAtlPercent",
          "vcAvgRoi",
          "icoRoi",
          "isTraded",
          "hasFundingRounds",
          "hasTeams",
          "hasVesting",
          "hasNextUnlock",
          "hasContracts",
          "hasPublicSales",
          "hasDrophunting",
          "sparkline7d",
          "lastUpdated"
        ]
      },
      "CurrencyBackerItemDto": {
        "type": "object",
        "properties": {
          "fundId": {
            "type": "number",
            "example": 1,
            "description": "Fund identifier."
          },
          "fundSlug": {
            "type": "string",
            "example": "a16z"
          },
          "fundName": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "fundLogo": {
            "type": "string",
            "nullable": true,
            "description": "Absolute URL to the 150×150 fund logo. Null when unavailable."
          },
          "fundTier": {
            "type": "object",
            "example": 1,
            "nullable": true,
            "description": "Editorial tier 1–5."
          },
          "fundType": {
            "type": "string",
            "nullable": true,
            "example": "Venture",
            "description": "Fund category label as stored (e.g. Venture, Angel Investor, Hedge Fund)."
          },
          "isLead": {
            "type": "boolean",
            "description": "True when the fund led at least one funding round of this project."
          },
          "roundsCount": {
            "type": "number",
            "example": 3,
            "description": "Number of funding rounds of this project in which the fund participated. Zero for funds listed as backers without a recorded round."
          },
          "firstInvestmentDate": {
            "type": "string",
            "nullable": true,
            "example": "2024-01-15T00:00:00.000Z",
            "description": "Date of the fund’s first known investment into this project (ISO 8601 UTC). Null when no funding round date is recorded."
          }
        },
        "required": [
          "fundId",
          "fundSlug",
          "fundName",
          "fundLogo",
          "fundTier",
          "fundType",
          "isLead",
          "roundsCount",
          "firstInvestmentDate"
        ]
      },
      "CurrencyCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 7
          },
          "slug": {
            "type": "string",
            "example": "smart-contracts"
          },
          "name": {
            "type": "string",
            "example": "Smart Contracts"
          }
        },
        "required": [
          "id",
          "slug",
          "name"
        ]
      },
      "LinkDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "referral",
              "web",
              "twitter",
              "reddit",
              "slack",
              "discord",
              "blog",
              "github",
              "gitlab",
              "linkedin",
              "facebook",
              "google+",
              "explorer",
              "weibo",
              "chat",
              "messageboard",
              "wechat",
              "telegram",
              "medium",
              "announcement",
              "youtube",
              "fees",
              "whitepaper",
              "gitbook",
              "farcaster"
            ],
            "example": "twitter"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "value"
        ]
      },
      "TeamMemberDto": {
        "type": "object",
        "properties": {
          "personId": {
            "type": "number",
            "example": 42
          },
          "fullName": {
            "type": "string",
            "example": "Vitalik Buterin"
          },
          "jobs": {
            "example": [
              "Co-Founder",
              "Researcher"
            ],
            "description": "Positions held, ordered as recorded.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "example": [
              "Founder",
              "Executive"
            ],
            "description": "Person classification tags. May be empty.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "priority": {
            "type": "number",
            "example": 1,
            "description": "Internal display order; lower comes first."
          },
          "isFormer": {
            "type": "boolean",
            "example": false,
            "description": "True when the member no longer works here."
          },
          "links": {
            "description": "Personal social and web links.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkDto"
            }
          },
          "images": {
            "description": "Photo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          }
        },
        "required": [
          "personId",
          "fullName",
          "jobs",
          "categories",
          "priority",
          "isFormer",
          "links",
          "images"
        ]
      },
      "CurrencyContractItemDto": {
        "type": "object",
        "properties": {
          "platformId": {
            "type": "number",
            "example": 1
          },
          "platformSlug": {
            "type": "string",
            "example": "ethereum"
          },
          "platformName": {
            "type": "string",
            "example": "Ethereum"
          },
          "address": {
            "type": "object",
            "example": "0xdac17f958d2ee523a2206206994597c13d831ec7",
            "nullable": true,
            "description": "Contract address. NULL for native currencies."
          },
          "decimals": {
            "type": "object",
            "example": 6,
            "nullable": true
          },
          "explorerUrl": {
            "type": "object",
            "example": "https://etherscan.io/",
            "nullable": true,
            "description": "Base URL of the platform explorer. Concatenate with `address` to produce a direct address link."
          }
        },
        "required": [
          "platformId",
          "platformSlug",
          "platformName",
          "address",
          "decimals",
          "explorerUrl"
        ]
      },
      "CurrencyHistoricalItemDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "number",
            "example": 1715000000000,
            "description": "Bucket start, Unix milliseconds."
          },
          "open": {
            "type": "string",
            "example": "65000.5",
            "description": "USD price at bucket open."
          },
          "high": {
            "type": "string",
            "example": "65500.123",
            "description": "Highest USD price during the bucket."
          },
          "low": {
            "type": "string",
            "example": "64500.4",
            "description": "Lowest USD price during the bucket."
          },
          "avg": {
            "type": "string",
            "example": "65100.21",
            "description": "Average USD price across the bucket."
          },
          "close": {
            "type": "string",
            "example": "65200.7",
            "description": "USD price at bucket close."
          },
          "volume": {
            "type": "string",
            "example": "32400000000",
            "description": "24-hour trading volume in USD reported at bucket close."
          },
          "circulatingSupply": {
            "type": "string",
            "example": "19500000",
            "description": "Circulating supply at bucket close."
          },
          "priceChangePercent": {
            "type": "number",
            "example": 0.31,
            "description": "Percent price change within the bucket: `(close - open) / open * 100`."
          },
          "volumeChangePercent": {
            "type": "object",
            "example": 0.42,
            "nullable": true,
            "description": "Percent change of `volume` vs the previous bucket. Null when no previous bucket exists."
          },
          "circulatingSupplyChangePercent": {
            "type": "object",
            "example": 0.001,
            "nullable": true,
            "description": "Percent change of `circulatingSupply` vs the previous bucket. Null when no previous bucket exists."
          }
        },
        "required": [
          "date",
          "open",
          "high",
          "low",
          "avg",
          "close",
          "volume",
          "circulatingSupply",
          "priceChangePercent",
          "volumeChangePercent",
          "circulatingSupplyChangePercent"
        ]
      },
      "CurrencyHistoricalQuarterlyItemDto": {
        "type": "object",
        "properties": {
          "year": {
            "type": "number",
            "example": 2024,
            "description": "Calendar year of the quarter."
          },
          "quarter": {
            "type": "number",
            "example": 4,
            "description": "Quarter number (1..4)."
          },
          "closingPrice": {
            "type": "string",
            "example": "93429.12",
            "description": "USD price at quarter close (last available price in the quarter)."
          },
          "changeQoQ": {
            "type": "object",
            "example": 47.32,
            "nullable": true,
            "description": "Percent change of `closingPrice` vs the previous quarter. Null when no previous quarter is available."
          }
        },
        "required": [
          "year",
          "quarter",
          "closingPrice",
          "changeQoQ"
        ]
      },
      "CurrencyHistoricalMonthlyItemDto": {
        "type": "object",
        "properties": {
          "year": {
            "type": "number",
            "example": 2024,
            "description": "Calendar year of the month."
          },
          "month": {
            "type": "number",
            "example": 11,
            "description": "Month number (1..12)."
          },
          "closingPrice": {
            "type": "string",
            "example": "93429.12",
            "description": "USD price at month close (last available price in the month)."
          },
          "changeMoM": {
            "type": "object",
            "example": 12.45,
            "nullable": true,
            "description": "Percent change of `closingPrice` vs the previous month. Null when no previous month is available."
          }
        },
        "required": [
          "year",
          "month",
          "closingPrice",
          "changeMoM"
        ]
      },
      "CurrencyHistoricalAnnualItemDto": {
        "type": "object",
        "properties": {
          "year": {
            "type": "number",
            "example": 2024,
            "description": "Calendar year."
          },
          "high": {
            "type": "string",
            "example": "108135.00",
            "description": "Highest USD price observed in the year."
          },
          "low": {
            "type": "string",
            "example": "38520.10",
            "description": "Lowest USD price observed in the year."
          },
          "change": {
            "type": "object",
            "example": 121.34,
            "nullable": true,
            "description": "Percent change from the first to the last available USD price in the year. Null when the opening price is zero."
          }
        },
        "required": [
          "year",
          "high",
          "low",
          "change"
        ]
      },
      "CurrencyTickerItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 12345
          },
          "exchangeId": {
            "type": "number",
            "example": 200,
            "description": "Exchange id."
          },
          "exchangeName": {
            "type": "string",
            "example": "Binance"
          },
          "exchangeType": {
            "type": "string",
            "example": "cex-spot",
            "enum": [
              "cex-spot",
              "cex-derivatives",
              "dex-spot",
              "dex-derivatives"
            ]
          },
          "marketType": {
            "type": "string",
            "example": "spot",
            "enum": [
              "spot",
              "perpetual",
              "futures"
            ],
            "description": "Market kind. `perpetual` is a derivative without an expiry date."
          },
          "pairName": {
            "type": "string",
            "example": "BTC/USDT"
          },
          "baseSymbol": {
            "type": "string",
            "example": "BTC"
          },
          "quoteSymbol": {
            "type": "string",
            "example": "USDT"
          },
          "lastPrice": {
            "type": "string",
            "example": "65000.5",
            "description": "Last price in the quote currency."
          },
          "priceUsd": {
            "type": "string",
            "example": "65000.5",
            "description": "Last price normalized to USD."
          },
          "change24h": {
            "type": "object",
            "example": 1.23,
            "nullable": true,
            "description": "24h change as a percent (open → last). Null when open price is unavailable."
          },
          "high24h": {
            "type": "object",
            "example": "65500",
            "nullable": true,
            "description": "24h high in the quote currency."
          },
          "low24h": {
            "type": "object",
            "example": "64000",
            "nullable": true,
            "description": "24h low in the quote currency."
          },
          "spread": {
            "type": "object",
            "example": 0.05,
            "nullable": true,
            "description": "Bid-ask spread as a percent: (ask − bid) / ask × 100. Null when bid/ask is unavailable."
          },
          "volume24hUsd": {
            "type": "string",
            "example": "12500000",
            "description": "24h trade volume in USD."
          },
          "volumeShare": {
            "type": "object",
            "example": 12.34,
            "nullable": true,
            "description": "Share of the coin's total 24h volume across all tickers (percent)."
          },
          "tradeUrl": {
            "type": "object",
            "example": "https://www.binance.com/en/trade/BTC_USDT",
            "nullable": true,
            "description": "Direct link to the trading pair on the exchange. Null when unavailable."
          },
          "lastUpdated": {
            "type": "string",
            "example": "2026-05-15T12:34:56.000Z",
            "description": "ISO 8601, UTC."
          }
        },
        "required": [
          "id",
          "exchangeId",
          "exchangeName",
          "exchangeType",
          "marketType",
          "pairName",
          "baseSymbol",
          "quoteSymbol",
          "lastPrice",
          "priceUsd",
          "change24h",
          "high24h",
          "low24h",
          "spread",
          "volume24hUsd",
          "volumeShare",
          "tradeUrl",
          "lastUpdated"
        ]
      },
      "CurrencyNewsTagDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "defi",
            "description": "Tag slug — stable identifier for filtering."
          },
          "name": {
            "type": "string",
            "example": "DeFi",
            "description": "Human-readable tag name for display."
          }
        },
        "required": [
          "key",
          "name"
        ]
      },
      "CurrencyNewsItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1234567
          },
          "title": {
            "type": "string",
            "example": "Bitcoin breaks new all-time high"
          },
          "heroText": {
            "type": "object",
            "nullable": true,
            "description": "Short preview / lead text. Null when the source did not provide one."
          },
          "source": {
            "type": "string",
            "example": "CoinDesk",
            "description": "Source name."
          },
          "sourceUrl": {
            "type": "object",
            "example": "https://www.coindesk.com/markets/2024/01/01/btc-ath",
            "nullable": true,
            "description": "Link to the original article. Null when the source URL is unavailable."
          },
          "previewImage": {
            "type": "object",
            "example": "https://img.cryptorank.io/news/abc.jpg",
            "nullable": true,
            "description": "Preview image URL. Null when the article has no image."
          },
          "publishedAt": {
            "type": "string",
            "example": "2024-01-01T12:34:56.000Z",
            "description": "Publication timestamp (ISO 8601)."
          },
          "language": {
            "type": "string",
            "example": "en",
            "enum": [
              "en",
              "ru",
              "es",
              "zh",
              "tr",
              "vi",
              "pt",
              "ko"
            ],
            "nullable": true,
            "description": "Article language. Null when the source did not declare one."
          },
          "tags": {
            "description": "Tags attached to the article. Each item has a stable `key` (slug) and a human-readable `name`.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CurrencyNewsTagDto"
            }
          }
        },
        "required": [
          "id",
          "title",
          "heroText",
          "source",
          "sourceUrl",
          "previewImage",
          "publishedAt",
          "language",
          "tags"
        ]
      },
      "CurrencySparklineDto": {
        "type": "object",
        "properties": {
          "interval": {
            "type": "string",
            "example": "1h",
            "enum": [
              "1h",
              "4h",
              "1d"
            ]
          },
          "days": {
            "type": "number",
            "example": 7,
            "enum": [
              7,
              14,
              30
            ]
          },
          "points": {
            "example": [
              [
                1715000000000,
                "65000.5"
              ],
              [
                1715003600000,
                "65100.2"
              ]
            ],
            "description": "Array of [timestamp_ms, price_usd] tuples. Timestamp is a number, price a string.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "interval",
          "days",
          "points"
        ]
      },
      "CurrencyVestingAllocationItemDto": {
        "type": "object",
        "properties": {
          "allocationName": {
            "type": "string",
            "example": "Private Sale Investors"
          },
          "totalAmount": {
            "type": "string",
            "example": "15000000",
            "description": "Total tokens allocated to this allocation."
          },
          "percentOfSupply": {
            "type": "object",
            "example": 15,
            "nullable": true,
            "description": "Allocation size relative to total supply, in percent."
          },
          "unlockedAmount": {
            "type": "string",
            "example": "5000000",
            "description": "Tokens already unlocked."
          },
          "unlockedPercent": {
            "type": "number",
            "example": 33.3333,
            "description": "unlockedAmount / totalAmount × 100."
          },
          "lockedAmount": {
            "type": "string",
            "example": "10000000",
            "description": "Tokens still locked."
          },
          "lockedPercent": {
            "type": "number",
            "example": 66.6667,
            "description": "lockedAmount / totalAmount × 100."
          },
          "groupDominance": {
            "type": "number",
            "example": 12.3456,
            "description": "Share of this allocation's lockedAmount across all locked tokens of the coin."
          },
          "nextUnlockDate": {
            "type": "object",
            "example": 1715000000000,
            "nullable": true,
            "description": "Closest upcoming unlock date for this allocation (Unix milliseconds)."
          },
          "nextUnlockTokenAmount": {
            "type": "object",
            "example": "125000",
            "nullable": true
          },
          "nextUnlockUsdAmount": {
            "type": "object",
            "example": "8125000",
            "nullable": true,
            "description": "nextUnlockTokenAmount valued at the current USD price."
          },
          "vestingType": {
            "type": "string",
            "example": "linear",
            "enum": [
              "linear",
              "cliff",
              "mixed"
            ],
            "description": "Vesting schedule type."
          }
        },
        "required": [
          "allocationName",
          "totalAmount",
          "percentOfSupply",
          "unlockedAmount",
          "unlockedPercent",
          "lockedAmount",
          "lockedPercent",
          "groupDominance",
          "nextUnlockDate",
          "nextUnlockTokenAmount",
          "nextUnlockUsdAmount",
          "vestingType"
        ]
      },
      "CurrencyVestingChartAllocationDto": {
        "type": "object",
        "properties": {
          "allocationName": {
            "type": "string",
            "example": "Private Sale Investors"
          },
          "unlocked": {
            "type": "string",
            "example": "125000",
            "description": "Tokens unlocked from this allocation specifically on this bucket date."
          }
        },
        "required": [
          "allocationName",
          "unlocked"
        ]
      },
      "CurrencyVestingChartItemDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "number",
            "example": 1715000000000,
            "description": "Bucket start date — Unix milliseconds."
          },
          "unlocked": {
            "type": "string",
            "example": "250000",
            "description": "Total tokens unlocked during the bucket across all allocations."
          },
          "byAllocation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CurrencyVestingChartAllocationDto"
            }
          }
        },
        "required": [
          "date",
          "unlocked",
          "byAllocation"
        ]
      },
      "CurrencyVestingEventItemDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "number",
            "example": 1715000000000,
            "description": "Event date — Unix milliseconds (start of day, UTC)."
          },
          "type": {
            "type": "string",
            "enum": [
              "cliff",
              "linear-start",
              "linear-tick",
              "dynamic"
            ],
            "example": "linear-tick",
            "description": "Event type. `linear-start` — TGE unlock of a linear allocation. `linear-tick` — periodic unlock of a linear allocation. `cliff` — single non-linear unlock. `dynamic` — event on an allocation with a dynamic vesting schedule."
          },
          "allocationName": {
            "type": "string",
            "example": "Private Sale Investors"
          },
          "tokenAmount": {
            "type": "string",
            "example": "125000",
            "description": "Tokens unlocked on `date` for this allocation (raw token units)."
          },
          "usdAmount": {
            "type": "string",
            "nullable": true,
            "example": "462500",
            "description": "USD value of the unlock — `tokenAmount * current price`, rounded to whole dollars. `null` when the coin price is unavailable."
          },
          "percentOfSupply": {
            "type": "number",
            "example": 0.1234,
            "description": "Unlock token amount as a percent of total supply (max supply with a fallback to total supply)."
          },
          "percentOfMcap": {
            "type": "object",
            "nullable": true,
            "example": 0.42,
            "description": "Unlock token amount as a percent of current circulating supply. `null` when circulating supply is unavailable."
          },
          "isPast": {
            "type": "boolean",
            "example": false,
            "description": "`true` when `date` is before today (UTC)."
          }
        },
        "required": [
          "date",
          "type",
          "allocationName",
          "tokenAmount",
          "usdAmount",
          "percentOfSupply",
          "percentOfMcap",
          "isPast"
        ]
      },
      "CurrencyFundingRoundInvestorDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "a16z"
          },
          "name": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "tier": {
            "type": "object",
            "example": 1,
            "nullable": true,
            "description": "Editorial tier 1–5."
          },
          "image": {
            "type": "string",
            "nullable": true,
            "description": "Absolute URL to the 150×150 fund logo. Null when unavailable."
          },
          "isLead": {
            "type": "boolean",
            "description": "True when the fund led the round."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "tier",
          "image",
          "isLead"
        ]
      },
      "CurrencyFundingRoundItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1234,
            "description": "Funding round identifier."
          },
          "type": {
            "type": "string",
            "example": "SERIES A",
            "description": "Crowdsale/round type label as stored (e.g. SEED, SERIES A, PRE SEED, Series E, Undisclosed)."
          },
          "date": {
            "type": "string",
            "example": "2024-08-15T00:00:00.000Z",
            "nullable": true,
            "description": "Date of the funding round (ISO 8601 UTC). Null when the date is unknown."
          },
          "dateAccuracy": {
            "type": "string",
            "enum": [
              "day",
              "year"
            ],
            "example": "day",
            "description": "`day` — full date is known; `year` — only the year portion of `date` is meaningful."
          },
          "raised": {
            "type": "string",
            "example": "5000000",
            "nullable": true,
            "description": "Total round size in USD. Null when the raised amount is undisclosed."
          },
          "valuation": {
            "type": "string",
            "example": "50000000",
            "nullable": true,
            "description": "Project valuation at the time of the round in USD. Null when undisclosed."
          },
          "sourceUrl": {
            "type": "string",
            "nullable": true,
            "description": "External URL to the source announcement of the round. Null when not available."
          },
          "investors": {
            "description": "Round investors ordered by fund id ascending.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CurrencyFundingRoundInvestorDto"
            }
          },
          "totalRaised": {
            "type": "string",
            "nullable": true,
            "example": "125000000",
            "description": "Total USD raised by the project across all funding rounds (same for every row). Null when no disclosed amounts exist."
          }
        },
        "required": [
          "id",
          "type",
          "date",
          "dateAccuracy",
          "raised",
          "valuation",
          "sourceUrl",
          "investors",
          "totalRaised"
        ]
      },
      "CurrencyTokenomicsDto": {
        "type": "object",
        "properties": {
          "totalSupply": {
            "type": "object",
            "example": "21000000",
            "nullable": true
          },
          "maxSupply": {
            "type": "object",
            "example": "21000000",
            "nullable": true
          },
          "circulatingSupply": {
            "type": "object",
            "example": "19700000",
            "nullable": true
          },
          "circulatingPercent": {
            "type": "object",
            "example": 93.81,
            "nullable": true,
            "description": "circulatingSupply / totalSupply × 100. Null when either value is missing."
          },
          "fullyDilutedValuation": {
            "type": "object",
            "example": "1300000000000",
            "nullable": true
          },
          "totalUnlockedAmount": {
            "type": "object",
            "example": "12500000",
            "nullable": true,
            "description": "Sum of tokens already unlocked across all allocations. Null when no vesting data."
          },
          "totalUnlockedPercent": {
            "type": "object",
            "example": 59.52,
            "nullable": true,
            "description": "totalUnlockedAmount / totalSupply × 100."
          },
          "totalLockedAmount": {
            "type": "object",
            "example": "8500000",
            "nullable": true,
            "description": "Sum of tokens still locked. Null when no vesting data."
          },
          "totalLockedPercent": {
            "type": "object",
            "example": 40.48,
            "nullable": true,
            "description": "totalLockedAmount / totalSupply × 100."
          },
          "nextUnlockDate": {
            "type": "object",
            "example": 1715000000000,
            "nullable": true,
            "description": "Closest upcoming unlock date (excluding TGE batches), Unix milliseconds."
          },
          "nextUnlockTokenAmount": {
            "type": "object",
            "example": "125000",
            "nullable": true
          },
          "nextUnlockUsdAmount": {
            "type": "object",
            "example": "8125000",
            "nullable": true
          },
          "nextUnlockPercentOfMcap": {
            "type": "object",
            "example": 0.62,
            "nullable": true,
            "description": "nextUnlockUsdAmount / marketCap × 100."
          },
          "nextUnlockPercentOfSupply": {
            "type": "object",
            "example": 0.59,
            "nullable": true,
            "description": "nextUnlockTokenAmount / totalSupply × 100."
          }
        },
        "required": [
          "totalSupply",
          "maxSupply",
          "circulatingSupply",
          "circulatingPercent",
          "fullyDilutedValuation",
          "totalUnlockedAmount",
          "totalUnlockedPercent",
          "totalLockedAmount",
          "totalLockedPercent",
          "nextUnlockDate",
          "nextUnlockTokenAmount",
          "nextUnlockUsdAmount",
          "nextUnlockPercentOfMcap",
          "nextUnlockPercentOfSupply"
        ]
      },
      "TopGainerPercentChangeDto": {
        "type": "object",
        "properties": {
          "h24": {
            "type": "object",
            "example": 1.23,
            "nullable": true
          },
          "d7": {
            "type": "object",
            "example": -4.56,
            "nullable": true
          },
          "d30": {
            "type": "object",
            "example": 12.34,
            "nullable": true
          }
        },
        "required": [
          "h24",
          "d7",
          "d30"
        ]
      },
      "DiscoveryTopGainerItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "bitcoin"
          },
          "symbol": {
            "type": "object",
            "example": "BTC",
            "nullable": true
          },
          "name": {
            "type": "string",
            "example": "Bitcoin"
          },
          "rank": {
            "type": "object",
            "example": 1,
            "nullable": true
          },
          "categoryId": {
            "type": "object",
            "example": 12,
            "nullable": true
          },
          "images": {
            "$ref": "#/components/schemas/ImageUrlsDto"
          },
          "price": {
            "type": "string",
            "example": "65000.5"
          },
          "marketCap": {
            "type": "object",
            "example": "1280000000000",
            "nullable": true
          },
          "volume24h": {
            "type": "string",
            "example": "32000000000"
          },
          "percentChange": {
            "$ref": "#/components/schemas/TopGainerPercentChangeDto"
          },
          "changePeriod": {
            "type": "number",
            "example": 5.42,
            "description": "Percent change over the requested `period` (mirrors the matching `percentChange.*`)."
          }
        },
        "required": [
          "id",
          "slug",
          "symbol",
          "name",
          "rank",
          "categoryId",
          "images",
          "price",
          "marketCap",
          "volume24h",
          "percentChange",
          "changePeriod"
        ]
      },
      "TopLoserPercentChangeDto": {
        "type": "object",
        "properties": {
          "h24": {
            "type": "object",
            "example": -1.23,
            "nullable": true
          },
          "d7": {
            "type": "object",
            "example": -4.56,
            "nullable": true
          },
          "d30": {
            "type": "object",
            "example": -12.34,
            "nullable": true
          }
        },
        "required": [
          "h24",
          "d7",
          "d30"
        ]
      },
      "DiscoveryTopLoserItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "bitcoin"
          },
          "symbol": {
            "type": "object",
            "example": "BTC",
            "nullable": true
          },
          "name": {
            "type": "string",
            "example": "Bitcoin"
          },
          "rank": {
            "type": "object",
            "example": 1,
            "nullable": true
          },
          "categoryId": {
            "type": "object",
            "example": 12,
            "nullable": true
          },
          "images": {
            "$ref": "#/components/schemas/ImageUrlsDto"
          },
          "price": {
            "type": "string",
            "example": "65000.5"
          },
          "marketCap": {
            "type": "object",
            "example": "1280000000000",
            "nullable": true
          },
          "volume24h": {
            "type": "string",
            "example": "32000000000"
          },
          "percentChange": {
            "$ref": "#/components/schemas/TopLoserPercentChangeDto"
          },
          "changePeriod": {
            "type": "number",
            "example": -5.42,
            "description": "Percent change over the requested `period` (mirrors the matching `percentChange.*`)."
          }
        },
        "required": [
          "id",
          "slug",
          "symbol",
          "name",
          "rank",
          "categoryId",
          "images",
          "price",
          "marketCap",
          "volume24h",
          "percentChange",
          "changePeriod"
        ]
      },
      "DrophuntingListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 42
          },
          "slug": {
            "type": "string",
            "example": "eigenlayer"
          },
          "name": {
            "type": "string",
            "example": "EigenLayer"
          },
          "images": {
            "description": "Activity coin logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "POTENTIAL",
              "CONFIRMED",
              "VERIFICATION",
              "REWARD_AVAILABLE",
              "DISTRIBUTED",
              "SNAPSHOT"
            ]
          },
          "rewardType": {
            "type": "string",
            "enum": [
              "airdrop",
              "ambassador",
              "fee",
              "nft",
              "points",
              "role",
              "spaceships",
              "whitelist"
            ]
          },
          "lastStatusUpdate": {
            "type": "string",
            "example": "2026-05-15T12:34:56.000Z",
            "description": "ISO 8601, UTC."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "images",
          "status",
          "rewardType",
          "lastStatusUpdate"
        ]
      },
      "DrophuntingLinksDto": {
        "type": "object",
        "properties": {
          "claim": {
            "type": "object",
            "nullable": true,
            "description": "URL where users claim the reward."
          },
          "verify": {
            "type": "object",
            "nullable": true,
            "description": "URL where users verify eligibility."
          }
        },
        "required": [
          "claim",
          "verify"
        ]
      },
      "DrophuntingByIdDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 42
          },
          "slug": {
            "type": "string",
            "example": "eigenlayer"
          },
          "name": {
            "type": "string",
            "example": "EigenLayer"
          },
          "images": {
            "description": "Activity coin logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "description": {
            "type": "object",
            "nullable": true,
            "description": "Long English description of the underlying coin."
          },
          "links": {
            "$ref": "#/components/schemas/DrophuntingLinksDto"
          },
          "status": {
            "type": "string",
            "enum": [
              "POTENTIAL",
              "CONFIRMED",
              "VERIFICATION",
              "REWARD_AVAILABLE",
              "DISTRIBUTED",
              "SNAPSHOT"
            ]
          },
          "rewardType": {
            "type": "string",
            "enum": [
              "airdrop",
              "ambassador",
              "fee",
              "nft",
              "points",
              "role",
              "spaceships",
              "whitelist"
            ]
          },
          "rewardDate": {
            "type": "object",
            "nullable": true,
            "example": "2026-09-30T00:00:00.000Z",
            "description": "Expected reward distribution date, ISO 8601 UTC. May be coarse — see `rewardDatePrecision`."
          },
          "rewardDatePrecision": {
            "type": "string",
            "nullable": true,
            "enum": [
              "YEAR",
              "QUARTER",
              "MONTH",
              "DATE",
              "DATE_TIME"
            ],
            "description": "Granularity of `rewardDate`. `YEAR`/`QUARTER`/`MONTH` mean only that part of the timestamp is meaningful."
          },
          "totalRaised": {
            "type": "object",
            "nullable": true,
            "example": "125000000",
            "description": "Total USD raised by the project across funding rounds and crowdsales."
          },
          "moniScore": {
            "type": "object",
            "nullable": true,
            "example": 87,
            "description": "Internal X (Twitter) score of the underlying coin."
          },
          "estimatedCost": {
            "type": "object",
            "nullable": true,
            "example": "0",
            "description": "Estimated USD cost to participate — sum of costs across all tasks. Null when no tasks have a declared cost."
          },
          "estimatedTimeMinutes": {
            "type": "object",
            "nullable": true,
            "example": 45,
            "description": "Estimated time in minutes to complete — sum across all tasks. Null when no tasks have a declared time."
          },
          "hasTasks": {
            "type": "boolean",
            "description": "True when at least one task is available."
          },
          "hasBackers": {
            "type": "boolean",
            "description": "True when the underlying coin has at least one disclosed backer (VC fund from a funding round)."
          },
          "hasFundingRounds": {
            "type": "boolean",
            "description": "True when the underlying coin has disclosed funding rounds."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "images",
          "description",
          "links",
          "status",
          "rewardType",
          "rewardDate",
          "rewardDatePrecision",
          "totalRaised",
          "moniScore",
          "estimatedCost",
          "estimatedTimeMinutes",
          "hasTasks",
          "hasBackers",
          "hasFundingRounds"
        ]
      },
      "DrophuntingTaskDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 17,
            "description": "Task ID."
          },
          "title": {
            "type": "string",
            "example": "Bridge to Scroll",
            "description": "English title."
          },
          "status": {
            "type": "string",
            "enum": [
              "UPCOMING",
              "OPEN",
              "CLOSED"
            ]
          },
          "types": {
            "description": "Task categories — `swap`, `bridge`, `mint`, `social`, `onchain-tx`, etc.",
            "example": [
              "bridge"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "type": "object",
            "nullable": true,
            "example": "2026-05-15T12:00:00.000Z",
            "description": "When the task became available, ISO 8601 UTC. Null when not scheduled."
          },
          "endDate": {
            "type": "object",
            "nullable": true,
            "example": "2026-06-15T12:00:00.000Z",
            "description": "When the task closes, ISO 8601 UTC. Null when open-ended."
          },
          "mainText": {
            "type": "object",
            "nullable": true,
            "description": "English instructions, Markdown-formatted."
          },
          "buttonUrl": {
            "type": "object",
            "nullable": true,
            "description": "URL where the user performs the task."
          }
        },
        "required": [
          "id",
          "title",
          "status",
          "types",
          "startDate",
          "endDate",
          "mainText",
          "buttonUrl"
        ]
      },
      "DrophuntingBackerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 42,
            "description": "Fund ID."
          },
          "slug": {
            "type": "string",
            "example": "a16z",
            "description": "Fund slug."
          },
          "name": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "images": {
            "description": "Fund logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "tier": {
            "type": "object",
            "nullable": true,
            "example": 1,
            "description": "Fund tier — lower is more prominent. Null when not tiered."
          },
          "isLead": {
            "type": "boolean",
            "description": "True when this fund led at least one funding round of the underlying coin."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "images",
          "tier",
          "isLead"
        ]
      },
      "DrophuntingFundingRoundInvestorDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "a16z"
          },
          "name": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "tier": {
            "type": "object",
            "example": 1,
            "nullable": true,
            "description": "Editorial tier 1–5."
          },
          "image": {
            "type": "string",
            "nullable": true,
            "description": "Absolute URL to the 150×150 fund logo. Null when unavailable."
          },
          "isLead": {
            "type": "boolean",
            "description": "True when the fund led the round."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "tier",
          "image",
          "isLead"
        ]
      },
      "DrophuntingFundingRoundDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1234,
            "description": "Funding round identifier."
          },
          "type": {
            "type": "string",
            "example": "SERIES A",
            "description": "Crowdsale/round type label as stored (e.g. SEED, SERIES A, PRE SEED, Series E, Undisclosed)."
          },
          "date": {
            "type": "string",
            "example": "2024-08-15T00:00:00.000Z",
            "nullable": true,
            "description": "Date of the funding round (ISO 8601 UTC). Null when the date is unknown."
          },
          "dateAccuracy": {
            "type": "string",
            "enum": [
              "day",
              "year"
            ],
            "example": "day",
            "description": "`day` — full date is known; `year` — only the year portion of `date` is meaningful."
          },
          "raised": {
            "type": "string",
            "example": "5000000",
            "nullable": true,
            "description": "Total round size in USD. Null when the raised amount is undisclosed."
          },
          "valuation": {
            "type": "string",
            "example": "50000000",
            "nullable": true,
            "description": "Project valuation at the time of the round in USD. Null when undisclosed."
          },
          "sourceUrl": {
            "type": "string",
            "nullable": true,
            "description": "External URL to the source announcement of the round. Null when not available."
          },
          "investors": {
            "description": "Round investors ordered by lead status first, then by fund id ascending.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DrophuntingFundingRoundInvestorDto"
            }
          },
          "totalRaised": {
            "type": "string",
            "nullable": true,
            "example": "125000000",
            "description": "Total USD raised by the project across all funding rounds and crowdsales (same for every row). Null when no disclosed amounts exist."
          }
        },
        "required": [
          "id",
          "type",
          "date",
          "dateAccuracy",
          "raised",
          "valuation",
          "sourceUrl",
          "investors",
          "totalRaised"
        ]
      },
      "EcosystemTagDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "name": {
            "type": "string",
            "example": "DeFi"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "EcosystemMapItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "ethereum",
            "description": "URL slug."
          },
          "name": {
            "type": "string",
            "example": "Ethereum"
          },
          "projectsCount": {
            "type": "number",
            "example": 1432,
            "description": "Number of enabled coins in the ecosystem."
          },
          "tags": {
            "description": "Tags assigned to the ecosystem.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EcosystemTagDto"
            }
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "projectsCount",
          "tags"
        ]
      },
      "EcosystemBackerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 42,
            "description": "Fund ID."
          },
          "slug": {
            "type": "string",
            "example": "a16z",
            "description": "Fund slug."
          },
          "name": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "images": {
            "description": "Fund logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "tier": {
            "type": "object",
            "nullable": true,
            "example": 1,
            "description": "Fund tier — lower is more prominent. Null when not tiered."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "images",
          "tier"
        ]
      },
      "EcosystemCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 17,
            "description": "Category ID — usable as a filter on related endpoints."
          },
          "name": {
            "type": "string",
            "example": "DeFi"
          },
          "count": {
            "type": "number",
            "example": 124,
            "description": "Number of enabled core projects in this category."
          }
        },
        "required": [
          "id",
          "name",
          "count"
        ]
      },
      "EcosystemByIdDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "ethereum",
            "description": "URL slug."
          },
          "name": {
            "type": "string",
            "example": "Ethereum"
          },
          "images": {
            "description": "Ecosystem logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "shortDescription": {
            "type": "string",
            "example": "Smart-contract platform launched in 2015."
          },
          "projectsCount": {
            "type": "number",
            "example": 1432,
            "description": "Number of enabled core projects in the ecosystem."
          },
          "newProjectsCount": {
            "type": "number",
            "example": 27,
            "description": "Core projects added to the ecosystem in the last 3 months."
          },
          "marketCap": {
            "type": "string",
            "nullable": true,
            "example": "420000000000",
            "description": "Total market cap of traded core projects, USD. Null when none have a price."
          },
          "marketCapChange24h": {
            "type": "number",
            "nullable": true,
            "example": 1.23,
            "description": "24-hour percent change of `marketCap`. Null when no 24h baseline is available."
          },
          "tvl": {
            "type": "string",
            "nullable": true,
            "example": "85000000000",
            "description": "Total value locked across the ecosystem, USD. Null when not tracked."
          },
          "tvlChange24h": {
            "type": "number",
            "nullable": true,
            "example": -0.42,
            "description": "24-hour percent change of `tvl`. Null when no 24h baseline is available."
          },
          "topBackers": {
            "description": "Top 6 funds backing projects in the ecosystem.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EcosystemBackerDto"
            }
          },
          "links": {
            "description": "Official links of the ecosystem.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkDto"
            }
          },
          "tags": {
            "description": "Tags assigned to the ecosystem.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EcosystemTagDto"
            }
          },
          "categories": {
            "description": "Project categories within the ecosystem with project counts.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EcosystemCategoryDto"
            }
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "images",
          "shortDescription",
          "projectsCount",
          "newProjectsCount",
          "marketCap",
          "marketCapChange24h",
          "tvl",
          "tvlChange24h",
          "topBackers",
          "links",
          "tags",
          "categories"
        ]
      },
      "EcosystemProjectCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 17,
            "description": "In-ecosystem category ID — usable as the `category` query param on this endpoint."
          },
          "name": {
            "type": "string",
            "example": "DeFi"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "EcosystemProjectItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1,
            "description": "Coin ID."
          },
          "key": {
            "type": "string",
            "example": "bitcoin",
            "description": "Coin URL key (slug)."
          },
          "name": {
            "type": "string",
            "example": "Bitcoin"
          },
          "logo": {
            "type": "string",
            "nullable": true,
            "example": "https://example.com/coins/60x60.bitcoin.png",
            "description": "Coin logo URL (60×60). Null when no logo is available."
          },
          "shortDescription": {
            "type": "string",
            "nullable": true,
            "example": "Peer-to-peer digital currency launched in 2009.",
            "description": "English short description. Null when not available."
          },
          "categories": {
            "description": "In-ecosystem categories the project belongs to.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EcosystemProjectCategoryDto"
            }
          },
          "price": {
            "type": "string",
            "nullable": true,
            "example": "63250.123456789012",
            "description": "Current USD price. Null when the project has no traded token."
          },
          "marketCap": {
            "type": "string",
            "nullable": true,
            "example": "1240000000000",
            "description": "Market cap, USD (`price × availableSupply`). Null when not computable."
          },
          "change24h": {
            "type": "number",
            "nullable": true,
            "example": 1.2345,
            "description": "24-hour USD price change, percent. Null when no 24h baseline is available."
          }
        },
        "required": [
          "id",
          "key",
          "name",
          "logo",
          "shortDescription",
          "categories",
          "price",
          "marketCap",
          "change24h"
        ]
      },
      "ExchangeMapItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "binance"
          },
          "name": {
            "type": "string",
            "example": "Binance"
          },
          "type": {
            "type": "string",
            "enum": [
              "cex-spot",
              "cex-derivatives",
              "dex-spot",
              "dex-derivatives"
            ],
            "example": "cex-spot"
          },
          "images": {
            "description": "Exchange logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "type",
          "images"
        ]
      },
      "ExchangeListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "binance"
          },
          "name": {
            "type": "string",
            "example": "Binance"
          },
          "type": {
            "type": "string",
            "enum": [
              "cex-spot",
              "cex-derivatives",
              "dex-spot",
              "dex-derivatives"
            ],
            "example": "cex-spot"
          },
          "images": {
            "description": "Exchange logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "yearOfFoundation": {
            "type": "object",
            "example": 2017,
            "nullable": true
          },
          "nativeTokenId": {
            "type": "object",
            "example": 1839,
            "nullable": true
          },
          "adjustedVolume24h": {
            "type": "string",
            "example": "12345678901",
            "description": "Adjusted 24h volume in USD"
          },
          "reportedVolume24h": {
            "type": "string",
            "example": "23456789012",
            "description": "Reported 24h volume in USD"
          },
          "marketShare": {
            "type": "number",
            "example": 12.34,
            "description": "% of 24h volume across exchanges of the same type"
          },
          "currenciesCount": {
            "type": "number",
            "example": 350
          },
          "pairsCount": {
            "type": "number",
            "example": 1820
          },
          "openInterest": {
            "type": "object",
            "example": "4567890123",
            "nullable": true,
            "description": "Open interest in USD. Only for derivatives."
          },
          "blockchain": {
            "type": "object",
            "example": null,
            "nullable": true,
            "description": "Only for DEX."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "type",
          "images",
          "yearOfFoundation",
          "nativeTokenId",
          "adjustedVolume24h",
          "reportedVolume24h",
          "marketShare",
          "currenciesCount",
          "pairsCount",
          "openInterest",
          "blockchain"
        ]
      },
      "ExchangeTickerItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 12345
          },
          "pairName": {
            "type": "string",
            "example": "BTC/USDT"
          },
          "baseSymbol": {
            "type": "string",
            "example": "BTC"
          },
          "quoteSymbol": {
            "type": "string",
            "example": "USDT"
          },
          "marketType": {
            "type": "string",
            "example": "spot",
            "enum": [
              "spot",
              "perpetual",
              "futures"
            ],
            "description": "Market kind. `perpetual` is a derivative without an expiry date."
          },
          "lastPrice": {
            "type": "string",
            "example": "65000.5",
            "description": "Last price in the quote currency."
          },
          "priceUsd": {
            "type": "string",
            "example": "65000.5",
            "description": "Last price normalized to USD."
          },
          "change24h": {
            "type": "object",
            "example": 1.23,
            "nullable": true,
            "description": "24h change as a percent (open → last). Null when open price is unavailable."
          },
          "high24h": {
            "type": "object",
            "example": "65500",
            "nullable": true,
            "description": "24h high in the quote currency."
          },
          "low24h": {
            "type": "object",
            "example": "64000",
            "nullable": true,
            "description": "24h low in the quote currency."
          },
          "spread": {
            "type": "object",
            "example": 0.05,
            "nullable": true,
            "description": "Bid-ask spread as a percent: (ask − bid) / ask × 100. Null when bid/ask is unavailable."
          },
          "volume24hUsd": {
            "type": "string",
            "example": "12500000",
            "description": "24h trade volume in USD."
          },
          "volumeShare": {
            "type": "object",
            "example": 12.34,
            "nullable": true,
            "description": "Share of the exchange's total 24h volume across all tickers (percent)."
          },
          "tradeUrl": {
            "type": "object",
            "example": "https://www.binance.com/en/trade/BTC_USDT",
            "nullable": true,
            "description": "Direct link to the trading pair on the exchange. Null when unavailable."
          },
          "lastUpdated": {
            "type": "string",
            "example": "2026-05-15T12:34:56.000Z",
            "description": "ISO 8601, UTC."
          }
        },
        "required": [
          "id",
          "pairName",
          "baseSymbol",
          "quoteSymbol",
          "marketType",
          "lastPrice",
          "priceUsd",
          "change24h",
          "high24h",
          "low24h",
          "spread",
          "volume24hUsd",
          "volumeShare",
          "tradeUrl",
          "lastUpdated"
        ]
      },
      "ExchangeProofOfReservesDto": {
        "type": "object",
        "properties": {
          "reserves": {
            "type": "string",
            "example": "12500000000",
            "description": "Publicly reported reserves across all supported blockchains, in USD."
          },
          "cleanReserves": {
            "type": "object",
            "example": "11200000000",
            "nullable": true,
            "description": "Reserves excluding assets issued by the exchange itself. Null when reserves is 0."
          },
          "stablecoinsPercent": {
            "type": "object",
            "example": 42.5,
            "nullable": true,
            "description": "Share of stablecoin holdings within total reserves, as a percent. Null when reserves is 0."
          },
          "sourceAudit": {
            "type": "object",
            "example": "https://www.binance.com/en/proof-of-reserves",
            "nullable": true,
            "description": "Link to the exchange page with reserve wallets / attestation report."
          }
        },
        "required": [
          "reserves",
          "cleanReserves",
          "stablecoinsPercent",
          "sourceAudit"
        ]
      },
      "ExchangeVolumeChartDto": {
        "type": "object",
        "properties": {
          "points": {
            "type": "array",
            "description": "Time-series of adjusted 24h trading volume in USD. Each entry is `[bucketStartIsoUtc, volumeUsd]`. `bucketStartIsoUtc` is the start of the bucket in UTC. `volumeUsd` is the last observed rolling 24h volume within the bucket.",
            "items": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 2,
              "maxItems": 2
            },
            "example": [
              [
                "2026-05-13T00:00:00.000Z",
                "38400000000"
              ],
              [
                "2026-05-13T01:00:00.000Z",
                "38520000000"
              ]
            ]
          }
        },
        "required": [
          "points"
        ]
      },
      "ExchangeProfileDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "binance"
          },
          "name": {
            "type": "string",
            "example": "Binance"
          },
          "type": {
            "type": "string",
            "enum": [
              "cex-spot",
              "cex-derivatives",
              "dex-spot",
              "dex-derivatives"
            ],
            "example": "cex-spot"
          },
          "images": {
            "description": "Exchange logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "yearOfFoundation": {
            "type": "object",
            "example": 2017,
            "nullable": true
          },
          "nativeTokenId": {
            "type": "object",
            "example": 1839,
            "nullable": true
          },
          "adjustedVolume24h": {
            "type": "string",
            "example": "12345678901",
            "description": "Adjusted 24h volume in USD"
          },
          "reportedVolume24h": {
            "type": "string",
            "example": "23456789012",
            "description": "Reported 24h volume in USD"
          },
          "marketShare": {
            "type": "number",
            "example": 12.34,
            "description": "% of 24h volume across exchanges of the same type"
          },
          "currenciesCount": {
            "type": "number",
            "example": 350
          },
          "pairsCount": {
            "type": "number",
            "example": 1820
          },
          "openInterest": {
            "type": "object",
            "example": "4567890123",
            "nullable": true,
            "description": "Open interest in USD. Only for derivatives."
          },
          "blockchain": {
            "type": "object",
            "example": null,
            "nullable": true,
            "description": "Only for DEX."
          },
          "description": {
            "type": "object",
            "example": "Binance is a global cryptocurrency exchange...",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkDto"
            }
          },
          "jurisdiction": {
            "type": "object",
            "example": "Cayman Islands",
            "nullable": true
          },
          "hasProofOfReserves": {
            "type": "boolean",
            "example": true,
            "description": "Only for CEX Spot."
          },
          "perpetualContractsAmount": {
            "type": "object",
            "example": null,
            "nullable": true,
            "description": "Only for derivatives."
          },
          "futuresContractsAmount": {
            "type": "object",
            "example": null,
            "nullable": true,
            "description": "Only for derivatives."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "type",
          "images",
          "yearOfFoundation",
          "nativeTokenId",
          "adjustedVolume24h",
          "reportedVolume24h",
          "marketShare",
          "currenciesCount",
          "pairsCount",
          "openInterest",
          "blockchain",
          "description",
          "links",
          "jurisdiction",
          "hasProofOfReserves",
          "perpetualContractsAmount",
          "futuresContractsAmount"
        ]
      },
      "FundingRoundCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 12
          },
          "name": {
            "type": "string",
            "example": "DeFi"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "FundingRoundInvestorDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "a16z"
          },
          "name": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "tier": {
            "type": "object",
            "example": 1,
            "nullable": true,
            "description": "Editorial tier 1–5."
          },
          "image": {
            "type": "string",
            "nullable": true,
            "description": "Absolute URL to the 150×150 fund logo. Null when unavailable."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "tier",
          "image"
        ]
      },
      "FundingRoundListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1234,
            "description": "Funding round identifier."
          },
          "currencyId": {
            "type": "number",
            "example": 28,
            "description": "Coin identifier in cryptorank."
          },
          "currencyName": {
            "type": "string",
            "example": "Ethereum"
          },
          "currencySymbol": {
            "type": "string",
            "example": "ETH",
            "nullable": true
          },
          "currencyImage": {
            "type": "string",
            "nullable": true,
            "description": "Absolute URL to the 150×150 coin logo. Null when unavailable."
          },
          "type": {
            "type": "string",
            "example": "SERIES A",
            "description": "Crowdsale/round type label as stored (e.g. SEED, SERIES A, PRE SEED, Series E, Undisclosed)."
          },
          "date": {
            "type": "string",
            "example": "2024-08-15T00:00:00.000Z",
            "nullable": true,
            "description": "Date of the funding round (ISO 8601 UTC). Null when the date is unknown."
          },
          "dateAccuracy": {
            "type": "string",
            "enum": [
              "day",
              "year"
            ],
            "example": "day",
            "description": "`day` — full date is known; `year` — only the year portion of `date` is meaningful."
          },
          "raised": {
            "type": "string",
            "example": "5000000",
            "nullable": true,
            "description": "Total round size in USD. Null when the raised amount is undisclosed."
          },
          "category": {
            "nullable": true,
            "description": "Coin primary category. Null when no category is assigned.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingRoundCategoryDto"
              }
            ]
          },
          "moniScore": {
            "type": "object",
            "example": 1273,
            "nullable": true,
            "description": "Twitter engagement score of the project (higher is better; no fixed upper bound). Null when the project has no linked Twitter account or no score is available."
          },
          "allInvestors": {
            "description": "All investors of the round, ordered by fund id ascending. Call `/funding-rounds/{id}` to get the round detail with investors split into `leadInvestors` and `otherInvestors`.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundingRoundInvestorDto"
            }
          }
        },
        "required": [
          "id",
          "currencyId",
          "currencyName",
          "currencySymbol",
          "currencyImage",
          "type",
          "date",
          "dateAccuracy",
          "raised",
          "category",
          "moniScore",
          "allInvestors"
        ]
      },
      "FundingRoundsTrendPointDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2024-08-01T00:00:00.000Z",
            "description": "Bucket start (ISO 8601 UTC). For `1w` the bucket starts on Monday; for `1m` on the 1st."
          },
          "totalRaisedUsd": {
            "type": "string",
            "example": "125000000",
            "description": "Sum of `raised` (USD) across all rounds in the bucket with disclosed raise."
          },
          "roundsCount": {
            "type": "number",
            "example": 42,
            "description": "Number of rounds in the bucket with disclosed `raised` amount."
          },
          "avgRoundSize": {
            "type": "string",
            "example": "2976190",
            "description": "Arithmetic mean of `raised` (USD) across the bucket."
          },
          "medianRoundSize": {
            "type": "string",
            "example": "1500000",
            "description": "Median of `raised` (USD) across the bucket (continuous percentile)."
          }
        },
        "required": [
          "date",
          "totalRaisedUsd",
          "roundsCount",
          "avgRoundSize",
          "medianRoundSize"
        ]
      },
      "FundingRoundsMostActiveInvestorDto": {
        "type": "object",
        "properties": {
          "fundId": {
            "type": "number",
            "example": 42,
            "description": "Fund identifier."
          },
          "fundName": {
            "type": "string",
            "example": "a16z crypto",
            "description": "Fund name."
          },
          "fundLogo": {
            "type": "string",
            "nullable": true,
            "example": "https://media.cryptorank.io/funds/150x150.a16z-crypto.png",
            "description": "Fund logo URL. `null` when the fund has no logo configured."
          },
          "totalInvestments": {
            "type": "number",
            "example": 124,
            "description": "Number of funding rounds the fund participated in within the requested date window (any role — lead or follow-on)."
          },
          "leadInvestments": {
            "type": "number",
            "example": 37,
            "description": "Number of funding rounds the fund led within the requested date window (subset of `totalInvestments`)."
          },
          "totalDeployed": {
            "type": "string",
            "example": "5800000000",
            "description": "Sum of `raised` (USD) across all funding rounds the fund participated in within the requested date window. Aggregates the full round size — the underlying data does not record per-investor check sizes. Rounds with an undisclosed `raised` amount contribute `0`."
          }
        },
        "required": [
          "fundId",
          "fundName",
          "fundLogo",
          "totalInvestments",
          "leadInvestments",
          "totalDeployed"
        ]
      },
      "FundingRoundByIdDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1234,
            "description": "Funding round identifier."
          },
          "currencyId": {
            "type": "number",
            "example": 28,
            "description": "Coin identifier in cryptorank."
          },
          "currencyName": {
            "type": "string",
            "example": "Ethereum"
          },
          "currencySymbol": {
            "type": "string",
            "example": "ETH",
            "nullable": true
          },
          "currencyImages": {
            "description": "Coin logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "type": {
            "type": "string",
            "example": "SERIES A",
            "description": "Crowdsale/round type label as stored (e.g. SEED, SERIES A, PRE SEED, Series E, Undisclosed)."
          },
          "date": {
            "type": "string",
            "example": "2024-08-15T00:00:00.000Z",
            "nullable": true,
            "description": "Date of the funding round (ISO 8601 UTC). Null when the date is unknown."
          },
          "dateAccuracy": {
            "type": "string",
            "enum": [
              "day",
              "year"
            ],
            "example": "day",
            "description": "`day` — full date is known; `year` — only the year portion of `date` is meaningful."
          },
          "raised": {
            "type": "string",
            "example": "5000000",
            "nullable": true,
            "description": "Total round size in USD. Null when the raised amount is undisclosed."
          },
          "valuation": {
            "type": "string",
            "example": "50000000",
            "nullable": true,
            "description": "Project valuation at the time of the round in USD. Null when undisclosed."
          },
          "sourceUrl": {
            "type": "string",
            "nullable": true,
            "description": "External URL to the source announcement of the round. Null when not available."
          },
          "category": {
            "nullable": true,
            "description": "Coin primary category. Null when no category is assigned.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingRoundCategoryDto"
              }
            ]
          },
          "moniScore": {
            "type": "object",
            "example": 1273,
            "nullable": true,
            "description": "Twitter engagement score of the project (higher is better; no fixed upper bound). Null when the project has no linked Twitter account or no score is available."
          },
          "leadInvestors": {
            "description": "Lead investors of the round (ordered by id ascending).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundingRoundInvestorDto"
            }
          },
          "otherInvestors": {
            "description": "Other investors of the round (ordered by id ascending).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundingRoundInvestorDto"
            }
          }
        },
        "required": [
          "id",
          "currencyId",
          "currencyName",
          "currencySymbol",
          "currencyImages",
          "type",
          "date",
          "dateAccuracy",
          "raised",
          "valuation",
          "sourceUrl",
          "category",
          "moniScore",
          "leadInvestors",
          "otherInvestors"
        ]
      },
      "FundMapItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "a16z"
          },
          "name": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "tier": {
            "type": "object",
            "example": 1,
            "nullable": true
          },
          "type": {
            "type": "string",
            "example": "Venture",
            "nullable": true
          },
          "images": {
            "description": "Fund logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "tier",
          "type",
          "images"
        ]
      },
      "FundListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "a16z"
          },
          "name": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "images": {
            "description": "Fund logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "tier": {
            "type": "object",
            "example": 1,
            "nullable": true,
            "description": "Editorial tier 1–5."
          },
          "type": {
            "type": "string",
            "example": "Venture",
            "nullable": true,
            "description": "Fund category."
          },
          "portfolioAmount": {
            "type": "number",
            "example": 412,
            "description": "Distinct coins in the fund portfolio."
          },
          "fundingRoundsAmount": {
            "type": "number",
            "example": 287,
            "description": "Funding rounds the fund participated in."
          },
          "leadInvestmentsAmount": {
            "type": "number",
            "example": 64,
            "description": "Rounds where the fund was lead."
          },
          "retailRoi": {
            "type": "object",
            "example": 12.34,
            "nullable": true,
            "description": "Average % ROI since listing across portfolio coins (retail entry price)."
          },
          "avgRoundSize": {
            "type": "string",
            "example": "2500000",
            "nullable": true,
            "description": "Average round size in USD across all rounds the fund participated in."
          },
          "location": {
            "type": "string",
            "example": "US",
            "nullable": true,
            "description": "ISO 3166-1 alpha-2 country code of the fund."
          },
          "preferredStage": {
            "type": "string",
            "example": "SEED",
            "nullable": true,
            "description": "Most frequent crowdsale type across the fund last 20 rounds."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "images",
          "tier",
          "type",
          "portfolioAmount",
          "fundingRoundsAmount",
          "leadInvestmentsAmount",
          "retailRoi",
          "avgRoundSize",
          "location",
          "preferredStage"
        ]
      },
      "FundTopPortfolioItemDto": {
        "type": "object",
        "properties": {
          "currencyId": {
            "type": "number",
            "example": 28,
            "description": "Coin identifier in cryptorank."
          },
          "currencyName": {
            "type": "string",
            "example": "Ethereum"
          },
          "currencySymbol": {
            "type": "string",
            "example": "ETH",
            "nullable": true
          },
          "currencyImage": {
            "type": "string",
            "nullable": true,
            "description": "Absolute URL to the 150×150 coin logo. Null when unavailable."
          },
          "isLead": {
            "type": "boolean",
            "example": true,
            "description": "True when the fund was a lead investor in any of this coin funding rounds."
          },
          "totalInvested": {
            "type": "string",
            "example": "5000000",
            "nullable": true,
            "description": "Total size (USD) of all funding rounds where the fund participated for this coin. Represents the full round size, not the fund's individual contribution. Null when no round raise amount is known."
          },
          "currentMarketCap": {
            "type": "string",
            "example": "450000000000",
            "nullable": true,
            "description": "Current coin market cap in USD. Null when price or supply is unavailable."
          },
          "retailRoi": {
            "type": "object",
            "example": 12.34,
            "nullable": true,
            "description": "Current price divided by the latest ICO/IDO/IEO USD price — a multiplier (1.0 = breakeven, 12.34 = 12.34×). Null when no listing price reference is available."
          },
          "latestRoundDate": {
            "type": "string",
            "example": "2024-08-15T00:00:00.000Z",
            "nullable": true,
            "description": "Date of the latest funding round between this fund and this coin (ISO 8601 UTC). Null when no participated round has a known date."
          }
        },
        "required": [
          "currencyId",
          "currencyName",
          "currencySymbol",
          "currencyImage",
          "isLead",
          "totalInvested",
          "currentMarketCap",
          "retailRoi",
          "latestRoundDate"
        ]
      },
      "FundRecentRoundItemDto": {
        "type": "object",
        "properties": {
          "roundId": {
            "type": "number",
            "example": 1234,
            "description": "Funding round identifier."
          },
          "currencyId": {
            "type": "number",
            "example": 28,
            "description": "Coin identifier in cryptorank."
          },
          "currencyName": {
            "type": "string",
            "example": "Ethereum"
          },
          "currencySymbol": {
            "type": "string",
            "example": "ETH",
            "nullable": true
          },
          "roundType": {
            "type": "string",
            "example": "Series A",
            "description": "Crowdsale/round type label (e.g. SEED, Series A, IDO, Undisclosed)."
          },
          "date": {
            "type": "string",
            "example": "2024-08-15T00:00:00.000Z",
            "nullable": true,
            "description": "Date of the funding round (ISO 8601 UTC). Null when the date is unknown."
          },
          "raised": {
            "type": "string",
            "example": "5000000",
            "nullable": true,
            "description": "Total round size in USD — the full round, not the fund individual contribution. Null when the raised amount is undisclosed."
          },
          "isLead": {
            "type": "boolean",
            "example": true,
            "description": "True when the fund was a lead investor in this round."
          }
        },
        "required": [
          "roundId",
          "currencyId",
          "currencyName",
          "currencySymbol",
          "roundType",
          "date",
          "raised",
          "isLead"
        ]
      },
      "FundFocusAreaItemDto": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "example": "DeFi",
            "description": "Narrative/category label of the coins funded."
          },
          "categoryId": {
            "type": "number",
            "example": 12,
            "description": "Narrative/category identifier in cryptorank."
          },
          "investmentsCount": {
            "type": "number",
            "example": 8,
            "description": "Number of coins tagged with this narrative across the fund last 20 funded rounds."
          },
          "percentOfTotal": {
            "type": "number",
            "example": 26.67,
            "description": "Share of this narrative across all tag occurrences in the same scope, in percent (0–100, two decimals)."
          }
        },
        "required": [
          "category",
          "categoryId",
          "investmentsCount",
          "percentOfTotal"
        ]
      },
      "FundCountryItemDto": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "example": "United States",
            "description": "Country full name."
          },
          "countryCode": {
            "type": "string",
            "example": "US",
            "description": "ISO 3166-1 alpha-2 country code."
          },
          "investmentsCount": {
            "type": "number",
            "example": 42,
            "description": "Number of funded rounds the fund participated in for projects located in this country."
          },
          "percentOfTotal": {
            "type": "number",
            "example": 31.58,
            "description": "Share of this country across all rounds with a known project country, in percent (0–100, two decimals)."
          }
        },
        "required": [
          "country",
          "countryCode",
          "investmentsCount",
          "percentOfTotal"
        ]
      },
      "FundCoInvestorItemDto": {
        "type": "object",
        "properties": {
          "coInvestorId": {
            "type": "number",
            "example": 5,
            "description": "Co-investor fund identifier in cryptorank."
          },
          "coInvestorName": {
            "type": "string",
            "example": "Paradigm"
          },
          "coInvestorImage": {
            "type": "string",
            "nullable": true,
            "description": "Absolute URL to the 150×150 co-investor fund logo. Null when unavailable."
          },
          "coInvestorTier": {
            "type": "object",
            "example": 1,
            "nullable": true,
            "description": "Editorial tier 1–5 of the co-investor fund."
          },
          "jointRoundsCount": {
            "type": "number",
            "example": 14,
            "description": "Number of funding rounds where both funds participated together."
          }
        },
        "required": [
          "coInvestorId",
          "coInvestorName",
          "coInvestorImage",
          "coInvestorTier",
          "jointRoundsCount"
        ]
      },
      "FundStageItemDto": {
        "type": "object",
        "properties": {
          "stage": {
            "type": "string",
            "example": "Seed",
            "description": "Crowdsale/round stage label (e.g. Pre-Seed, Seed, Series A, ICO)."
          },
          "count": {
            "type": "number",
            "example": 12,
            "description": "Number of funding rounds the fund participated in at this stage."
          },
          "percentOfTotal": {
            "type": "number",
            "example": 24.49,
            "description": "Share of this stage across all qualifying rounds, in percent (0–100, two decimals)."
          },
          "avgRoundSize": {
            "type": "string",
            "example": "2500000",
            "nullable": true,
            "description": "Average round size in USD across the fund rounds at this stage. Null when no round at this stage has a disclosed raise."
          }
        },
        "required": [
          "stage",
          "count",
          "percentOfTotal",
          "avgRoundSize"
        ]
      },
      "FundPortfolioPerformanceTopItemDto": {
        "type": "object",
        "properties": {
          "currencyId": {
            "type": "number",
            "example": 28,
            "description": "Coin identifier in cryptorank."
          },
          "currencySymbol": {
            "type": "string",
            "example": "ETH",
            "nullable": true
          },
          "change24h": {
            "type": "object",
            "example": 12.34,
            "nullable": true,
            "description": "24h USD price change in percent (two decimals). Null when no 24h data point is available."
          }
        },
        "required": [
          "currencyId",
          "currencySymbol",
          "change24h"
        ]
      },
      "FundPortfolioPerformanceDto": {
        "type": "object",
        "properties": {
          "portfolioMarketCap": {
            "type": "string",
            "example": "12500000000",
            "description": "Sum of current market caps (USD) across all portfolio coins with a known price and supply. \"0\" when no portfolio coin has a computable market cap."
          },
          "portfolioVolume24h": {
            "type": "string",
            "example": "450000000",
            "description": "Sum of 24h trading volume (USD) across all portfolio coins with a known price. \"0\" when no portfolio coin has a computable volume."
          },
          "change24h": {
            "type": "object",
            "example": 1.42,
            "nullable": true,
            "description": "24h USD price change in percent, weighted by each coin's current market cap (`priceUSD × availableSupply`). Larger holdings influence the average more. Null when no portfolio coin has both a 24h data point and a computable market cap."
          },
          "topGainers": {
            "description": "Top 3 portfolio coins by 24h price change (descending).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundPortfolioPerformanceTopItemDto"
            }
          },
          "topLosers": {
            "description": "Top 3 portfolio coins by 24h price change (ascending).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FundPortfolioPerformanceTopItemDto"
            }
          }
        },
        "required": [
          "portfolioMarketCap",
          "portfolioVolume24h",
          "change24h",
          "topGainers",
          "topLosers"
        ]
      },
      "FundByIdDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "a16z"
          },
          "name": {
            "type": "string",
            "example": "Andreessen Horowitz"
          },
          "images": {
            "description": "Logo URLs in four sizes; each may be null when unavailable.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "tier": {
            "type": "object",
            "example": 1,
            "nullable": true,
            "description": "Editorial tier 1–5."
          },
          "type": {
            "type": "string",
            "example": "Venture",
            "nullable": true,
            "description": "Fund category."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "English fund description."
          },
          "links": {
            "description": "Social and web links.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkDto"
            }
          },
          "location": {
            "type": "string",
            "example": "US",
            "nullable": true,
            "description": "ISO 3166-1 alpha-2 country code of the fund."
          },
          "preferredStage": {
            "type": "string",
            "example": "SEED",
            "nullable": true,
            "description": "Most frequent crowdsale type across the fund last 20 rounds."
          },
          "portfolioAmount": {
            "type": "number",
            "example": 412,
            "description": "Distinct coins in the fund portfolio."
          },
          "fundingRoundsAmount": {
            "type": "number",
            "example": 287,
            "description": "Funding rounds the fund participated in."
          },
          "leadInvestmentsAmount": {
            "type": "number",
            "example": 64,
            "description": "Rounds where the fund was lead."
          },
          "retailRoi": {
            "type": "object",
            "example": 12.34,
            "nullable": true,
            "description": "Average % ROI since listing across portfolio coins (retail entry price)."
          },
          "avgRoundSize": {
            "type": "string",
            "example": "2500000",
            "nullable": true,
            "description": "Average round size in USD across all rounds the fund participated in."
          },
          "hasPortfolio": {
            "type": "boolean",
            "example": true,
            "description": "True when the fund has any portfolio coins."
          },
          "hasRecentRounds": {
            "type": "boolean",
            "example": true,
            "description": "True when the fund participated in any funding rounds."
          },
          "hasTeam": {
            "type": "boolean",
            "example": true,
            "description": "True when the fund team section is populated."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "images",
          "tier",
          "type",
          "description",
          "links",
          "location",
          "preferredStage",
          "portfolioAmount",
          "fundingRoundsAmount",
          "leadInvestmentsAmount",
          "retailRoi",
          "avgRoundSize",
          "hasPortfolio",
          "hasRecentRounds",
          "hasTeam"
        ]
      },
      "GlobalMarketResponseDto": {
        "type": "object",
        "properties": {
          "totalMarketCap": {
            "type": "string",
            "example": "2543821345678",
            "description": "Total crypto market cap in USD"
          },
          "totalVolume24h": {
            "type": "string",
            "example": "87320456789",
            "description": "Total 24h trading volume in USD"
          },
          "btcMarketCap": {
            "type": "string",
            "example": "1334567890000",
            "description": "BTC market cap in USD"
          },
          "ethMarketCap": {
            "type": "string",
            "example": "412345678901",
            "description": "ETH market cap in USD"
          },
          "activeCurrencies": {
            "type": "number",
            "example": 14523,
            "description": "Active coins (enabled, priceUSD updated in 24h)"
          },
          "activeTickers": {
            "type": "number",
            "example": 32145,
            "description": "Active trading pairs"
          },
          "activeExchanges": {
            "type": "number",
            "example": 312,
            "description": "Active exchanges"
          },
          "marketCapChange24h": {
            "type": "number",
            "example": 1.42,
            "description": "Total market cap change over 24h in percent"
          }
        },
        "required": [
          "totalMarketCap",
          "totalVolume24h",
          "btcMarketCap",
          "ethMarketCap",
          "activeCurrencies",
          "activeTickers",
          "activeExchanges",
          "marketCapChange24h"
        ]
      },
      "GlobalDominanceResponseDto": {
        "type": "object",
        "properties": {
          "btcDominance": {
            "type": "number",
            "example": 52.34,
            "description": "BTC dominance %"
          },
          "ethDominance": {
            "type": "number",
            "example": 17.21,
            "description": "ETH dominance %"
          },
          "othersDominance": {
            "type": "number",
            "example": 30.45,
            "description": "Other coins dominance %"
          }
        },
        "required": [
          "btcDominance",
          "ethDominance",
          "othersDominance"
        ]
      },
      "ChartFearGreedDto": {
        "type": "object",
        "properties": {
          "timestamp": {
            "type": "number",
            "description": "Unix timestamp in milliseconds."
          },
          "value": {
            "type": "number",
            "description": "Fear & Greed index value, 0–100."
          }
        },
        "required": [
          "timestamp",
          "value"
        ]
      },
      "GlobalFearGreedChartResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChartFearGreedDto"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "GlobalFearGreedResponseDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "example": 64,
            "description": "Fear & Greed value 0..100"
          },
          "classification": {
            "type": "string",
            "example": "Greed",
            "description": "Extreme Fear | Fear | Neutral | Greed | Extreme Greed"
          }
        },
        "required": [
          "value",
          "classification"
        ]
      },
      "GlobalAltcoinIndexResponseDto": {
        "type": "object",
        "properties": {
          "currentValue": {
            "type": "number",
            "example": 71,
            "description": "Altcoin Season Index value 0..100"
          },
          "classification": {
            "type": "string",
            "example": "Altcoin Season",
            "description": "Bitcoin Season | Neutral | Altcoin Season"
          },
          "yesterdayValue": {
            "type": "object",
            "example": 68,
            "description": "Index value from yesterday; null when data unavailable"
          },
          "lastWeekValue": {
            "type": "object",
            "example": 55,
            "description": "Index value from 7 days ago; null when data unavailable"
          },
          "lastMonthValue": {
            "type": "object",
            "example": 42,
            "description": "Index value from 30 days ago; null when data unavailable"
          },
          "yearlyHighValue": {
            "type": "number",
            "example": 89,
            "description": "Highest index value in the past year"
          },
          "yearlyHighDate": {
            "type": "string",
            "example": "2025-11-15T00:00:00.000Z",
            "description": "Date of the yearly high"
          },
          "yearlyLowValue": {
            "type": "number",
            "example": 12,
            "description": "Lowest index value in the past year"
          },
          "yearlyLowDate": {
            "type": "string",
            "example": "2025-03-10T00:00:00.000Z",
            "description": "Date of the yearly low"
          }
        },
        "required": [
          "currentValue",
          "classification",
          "yearlyHighValue",
          "yearlyHighDate",
          "yearlyLowValue",
          "yearlyLowDate"
        ]
      },
      "GlobalDerivativesResponseDto": {
        "type": "object",
        "properties": {
          "totalOpenInterest": {
            "type": "string",
            "example": "78912345678",
            "description": "Total Open Interest in USD"
          },
          "totalVolume24h": {
            "type": "string",
            "example": "234567890123",
            "description": "Total derivatives 24h volume in USD"
          },
          "dexShare": {
            "type": "number",
            "example": 12.5,
            "description": "DEX share % of derivatives volume"
          },
          "cexShare": {
            "type": "number",
            "example": 87.5,
            "description": "CEX share % of derivatives volume"
          },
          "activeDerivativesExchanges": {
            "type": "number",
            "example": 42,
            "description": "Active derivatives exchanges count"
          }
        },
        "required": [
          "totalOpenInterest",
          "totalVolume24h",
          "dexShare",
          "cexShare",
          "activeDerivativesExchanges"
        ]
      },
      "ChartDominanceDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "number",
            "description": "Unix timestamp in milliseconds."
          },
          "dominance": {
            "type": "number",
            "description": "Dominance as % of total market cap, up to 4 decimal places."
          }
        },
        "required": [
          "date",
          "dominance"
        ]
      },
      "GlobalDominanceChartResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChartDominanceDto"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "LaunchpadMapItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "binance-launchpad"
          },
          "name": {
            "type": "string",
            "example": "Binance Launchpad"
          },
          "logoUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://images.cryptorank.io/ido-platforms/150x150.binance.png",
            "description": "Launchpad logo URL (150x150). Null when unavailable."
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "logoUrl"
        ]
      },
      "LaunchpadListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "rank": {
            "type": "number",
            "nullable": true,
            "example": 12,
            "description": "1Y rank. Null when not ranked for the last year."
          },
          "name": {
            "type": "string",
            "example": "Binance Launchpad"
          },
          "logoUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://images.cryptorank.io/ido-platforms/150x150.binance.png",
            "description": "Launchpad logo URL (150x150). Null when unavailable."
          },
          "salesCount": {
            "type": "number",
            "example": 42,
            "description": "Number of completed token sales in the last year."
          },
          "latestSaleDate": {
            "type": "string",
            "nullable": true,
            "example": "2026-04-12T00:00:00.000Z",
            "description": "End date of the most recent completed sale (ISO 8601 UTC). Null when none."
          },
          "popularCategories": {
            "example": [
              "DeFi",
              "GameFi",
              "Infrastructure"
            ],
            "description": "Top up to 5 category names across completed sales in the last year.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalRaised": {
            "type": "string",
            "nullable": true,
            "example": "12500000",
            "description": "Total raised in USD over completed sales in the last year. Null when none."
          },
          "blockchains": {
            "example": [
              "Ethereum",
              "BNB Chain"
            ],
            "description": "Blockchains the launchpad operates on.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "currentRoi": {
            "type": "number",
            "nullable": true,
            "example": 1.84,
            "description": "Average current ROI across completed sales in the last year (price / sale price). Null when not computable."
          },
          "athRoi": {
            "type": "number",
            "nullable": true,
            "example": 7.32,
            "description": "Average ATH ROI across completed sales in the last year (ATH price / sale price). Null when not computable."
          },
          "nativeTokenMarketCap": {
            "type": "string",
            "nullable": true,
            "example": "95000000000",
            "description": "Native token market cap in USD. Null when no native token or unpriced."
          },
          "nativeTokenVolume24h": {
            "type": "string",
            "nullable": true,
            "example": "1800000000",
            "description": "Native token 24-hour USD volume. Null when no native token or unpriced."
          }
        },
        "required": [
          "id",
          "rank",
          "name",
          "logoUrl",
          "salesCount",
          "latestSaleDate",
          "popularCategories",
          "totalRaised",
          "blockchains",
          "currentRoi",
          "athRoi",
          "nativeTokenMarketCap",
          "nativeTokenVolume24h"
        ]
      },
      "LaunchpadByIdDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "slug": {
            "type": "string",
            "example": "binance-launchpad"
          },
          "name": {
            "type": "string",
            "example": "Binance Launchpad"
          },
          "logoUrl": {
            "type": "string",
            "nullable": true,
            "example": "https://images.cryptorank.io/ido-platforms/150x150.binance.png",
            "description": "Launchpad logo URL (150x150). Null when unavailable."
          },
          "rank": {
            "type": "number",
            "nullable": true,
            "example": 12,
            "description": "1Y rank. Null when not ranked for the last year."
          },
          "salesCount": {
            "type": "number",
            "example": 42,
            "description": "Number of completed token sales in the last year."
          },
          "latestSaleDate": {
            "type": "string",
            "nullable": true,
            "example": "2026-04-12T00:00:00.000Z",
            "description": "End date of the most recent completed sale (ISO 8601 UTC). Null when none."
          },
          "popularCategories": {
            "example": [
              "DeFi",
              "GameFi",
              "Infrastructure"
            ],
            "description": "Top up to 5 category names across completed sales in the last year.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalRaised": {
            "type": "string",
            "nullable": true,
            "example": "12500000",
            "description": "Total raised in USD over completed sales in the last year. Null when none."
          },
          "blockchains": {
            "example": [
              "Ethereum",
              "BNB Chain"
            ],
            "description": "Blockchains the launchpad operates on.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "currentRoi": {
            "type": "number",
            "nullable": true,
            "example": 1.84,
            "description": "Average current ROI across completed sales in the last year (price / sale price). Null when not computable."
          },
          "athRoi": {
            "type": "number",
            "nullable": true,
            "example": 7.32,
            "description": "Average ATH ROI across completed sales in the last year (ATH price / sale price). Null when not computable."
          },
          "nativeTokenMarketCap": {
            "type": "string",
            "nullable": true,
            "example": "95000000000",
            "description": "Native token market cap in USD. Null when no native token or unpriced."
          },
          "nativeTokenVolume24h": {
            "type": "string",
            "nullable": true,
            "example": "1800000000",
            "description": "Native token 24-hour USD volume. Null when no native token or unpriced."
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "English launchpad description."
          },
          "links": {
            "description": "Social and web links.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkDto"
            }
          }
        },
        "required": [
          "id",
          "slug",
          "name",
          "logoUrl",
          "rank",
          "salesCount",
          "latestSaleDate",
          "popularCategories",
          "totalRaised",
          "blockchains",
          "currentRoi",
          "athRoi",
          "nativeTokenMarketCap",
          "nativeTokenVolume24h",
          "description",
          "links"
        ]
      },
      "PublicSaleListItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1234,
            "description": "Public sale round identifier."
          },
          "currencyId": {
            "type": "number",
            "example": 28,
            "description": "Coin identifier in cryptorank."
          },
          "currencyName": {
            "type": "string",
            "example": "Ethereum"
          },
          "currencySymbol": {
            "type": "string",
            "example": "ETH",
            "nullable": true
          },
          "type": {
            "type": "string",
            "enum": [
              "ICO",
              "IDO",
              "IEO"
            ],
            "example": "IDO"
          },
          "status": {
            "type": "string",
            "enum": [
              "upcoming",
              "active",
              "past"
            ],
            "example": "past"
          },
          "startDate": {
            "type": "string",
            "example": "2024-08-15T00:00:00.000Z",
            "nullable": true,
            "description": "Sale start date (ISO 8601 UTC). Null when the date is unknown."
          },
          "endDate": {
            "type": "string",
            "example": "2024-09-15T00:00:00.000Z",
            "nullable": true,
            "description": "Sale end date (ISO 8601 UTC). Null when the date is unknown."
          },
          "raised": {
            "type": "string",
            "example": "5000000",
            "nullable": true,
            "description": "Amount raised in this sale (USD). Null when undisclosed."
          },
          "salePrice": {
            "type": "string",
            "example": "0.25",
            "nullable": true,
            "description": "Token price during this sale (USD). Null when undisclosed."
          },
          "totalRaised": {
            "type": "string",
            "example": "125000000",
            "nullable": true,
            "description": "Cumulative funds raised by the project across all rounds (public sales + private funding + node sales), in USD. Null when no fundraising data is available."
          },
          "valuation": {
            "type": "string",
            "example": "150000000",
            "nullable": true,
            "description": "Project valuation at this sale (USD). Null when undisclosed."
          },
          "launchpadId": {
            "type": "number",
            "example": 42,
            "nullable": true,
            "description": "Launchpad identifier hosting the sale. Null when sold outside a launchpad."
          },
          "launchpadName": {
            "type": "string",
            "example": "CoinList",
            "nullable": true,
            "description": "Launchpad name. Null when sold outside a launchpad."
          },
          "category": {
            "type": "string",
            "example": "DeFi",
            "nullable": true,
            "description": "Project primary category. Null when no category is assigned."
          },
          "blockchains": {
            "example": [
              "Ethereum",
              "BNB Chain"
            ],
            "description": "Blockchain platforms the project token is deployed on. Empty array when none are assigned.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "moniScore": {
            "type": "number",
            "example": 1273,
            "nullable": true,
            "description": "Twitter engagement score of the project (higher is better; no fixed upper bound). Null when the project has no linked Twitter account or no score is available."
          },
          "listingDate": {
            "type": "string",
            "example": "2024-10-01T00:00:00.000Z",
            "nullable": true,
            "description": "Token listing date (ISO 8601 UTC). Populated only for sales with status `past`; null otherwise."
          },
          "listingPrice": {
            "type": "string",
            "example": "0.40",
            "nullable": true,
            "description": "Token listing price (USD). Populated only for sales with status `past`; null otherwise."
          },
          "currentMarketCap": {
            "type": "string",
            "example": "300000000",
            "nullable": true,
            "description": "Current project market capitalization (USD), based on the latest price and circulating supply. Populated only for sales with status `past`; null otherwise."
          }
        },
        "required": [
          "id",
          "currencyId",
          "currencyName",
          "currencySymbol",
          "type",
          "status",
          "startDate",
          "endDate",
          "raised",
          "salePrice",
          "totalRaised",
          "valuation",
          "launchpadId",
          "launchpadName",
          "category",
          "blockchains",
          "moniScore",
          "listingDate",
          "listingPrice",
          "currentMarketCap"
        ]
      },
      "PublicSalesTrendPointDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "example": "2024-08-01T00:00:00.000Z",
            "description": "Bucket start (ISO 8601 UTC). For `1w` the bucket starts on Monday; for `1m` on the 1st."
          },
          "totalRaisedUsd": {
            "type": "string",
            "example": "125000000",
            "description": "Sum of `raised` (USD) across all sales in the bucket with disclosed raise."
          },
          "salesCount": {
            "type": "number",
            "example": 42,
            "description": "Number of sales in the bucket with disclosed `raised` amount."
          },
          "ico": {
            "type": "number",
            "example": 8,
            "description": "Number of `ICO` sales in the bucket with disclosed `raised` amount."
          },
          "ido": {
            "type": "number",
            "example": 28,
            "description": "Number of `IDO` sales in the bucket with disclosed `raised` amount."
          },
          "ieo": {
            "type": "number",
            "example": 6,
            "description": "Number of `IEO` sales in the bucket with disclosed `raised` amount."
          }
        },
        "required": [
          "date",
          "totalRaisedUsd",
          "salesCount",
          "ico",
          "ido",
          "ieo"
        ]
      },
      "NewsFeedTagDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "example": "defi",
            "description": "Tag slug — pass to `tag` query param to filter."
          },
          "name": {
            "type": "string",
            "example": "DeFi",
            "description": "Human-readable tag name for display."
          }
        },
        "required": [
          "key",
          "name"
        ]
      },
      "NewsFeedAssignedTokenDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1
          },
          "symbol": {
            "type": "string",
            "example": "BTC"
          }
        },
        "required": [
          "id",
          "symbol"
        ]
      },
      "NewsFeedAssignedFundDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 12
          },
          "name": {
            "type": "string",
            "example": "Pantera Capital"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "NewsFeedItemDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "example": 1234567
          },
          "title": {
            "type": "string",
            "example": "Bitcoin breaks new all-time high"
          },
          "heroText": {
            "type": "object",
            "nullable": true,
            "description": "Short preview / lead text. Null when the source did not provide one."
          },
          "mainText": {
            "type": "object",
            "nullable": true,
            "description": "Full article body (HTML). Always null in `GET /news/feed` — use `GET /news/{id}` to fetch. On the detail endpoint, null when the article has no body (headline-only item)."
          },
          "source": {
            "type": "string",
            "example": "CoinDesk",
            "description": "Source name."
          },
          "sourceUrl": {
            "type": "object",
            "example": "https://www.coindesk.com/markets/2024/01/01/btc-ath",
            "nullable": true,
            "description": "Link to the original article. Null when the source URL is unavailable."
          },
          "previewImage": {
            "type": "object",
            "example": "https://img.cryptorank.io/news/abc.jpg",
            "nullable": true,
            "description": "Preview image URL. Null when the article has no image."
          },
          "publishedAt": {
            "type": "string",
            "example": "2024-01-01T12:34:56.000Z",
            "description": "Publication timestamp (ISO 8601)."
          },
          "language": {
            "type": "string",
            "example": "en",
            "enum": [
              "en",
              "ru",
              "es",
              "zh",
              "tr",
              "vi",
              "pt",
              "ko"
            ],
            "nullable": true,
            "description": "Article language. Null when the source did not declare one."
          },
          "hasMainText": {
            "type": "boolean",
            "example": true,
            "description": "Feed-only. True when the full article body is available — `mainText` will be populated by `GET /news/{id}`. False for headline-only items. Absent on `GET /news/{id}` (use `mainText` directly)."
          },
          "tags": {
            "description": "Tags attached to the article. Each item has a stable `key` (slug, usable as the `tag` filter) and a human-readable `name`.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NewsFeedTagDto"
            }
          },
          "assignedTokens": {
            "description": "Currencies referenced by the article.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NewsFeedAssignedTokenDto"
            }
          },
          "assignedFunds": {
            "description": "Funds referenced by the article.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NewsFeedAssignedFundDto"
            }
          }
        },
        "required": [
          "id",
          "title",
          "heroText",
          "mainText",
          "source",
          "sourceUrl",
          "previewImage",
          "publishedAt",
          "language",
          "tags",
          "assignedTokens",
          "assignedFunds"
        ]
      },
      "PingResponseDto": {
        "type": "object",
        "properties": {
          "response": {
            "type": "string",
            "example": "pong"
          }
        },
        "required": [
          "response"
        ]
      },
      "StatusResponseDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "example": "ok"
          },
          "plan": {
            "type": "string",
            "example": "Pro",
            "description": "Subscription plan name"
          },
          "creditsTotal": {
            "type": "number",
            "example": 100000,
            "description": "Monthly credit limit"
          },
          "creditsUsed": {
            "type": "number",
            "example": 4200,
            "description": "Credits used in the current billing period"
          },
          "creditsRemaining": {
            "type": "number",
            "example": 95800,
            "description": "Credits remaining in the current billing period"
          },
          "maxRPM": {
            "type": "number",
            "example": 60,
            "description": "Maximum requests per minute"
          },
          "currentPeriodStart": {
            "type": "string",
            "example": "2026-05-01T00:00:00.000Z",
            "description": "Start of the current billing period (inclusive)"
          },
          "currentPeriodEnd": {
            "type": "string",
            "example": "2026-06-01T00:00:00.000Z",
            "description": "End of the current billing period (inclusive)"
          }
        },
        "required": [
          "status",
          "plan",
          "creditsTotal",
          "creditsUsed",
          "creditsRemaining",
          "maxRPM",
          "currentPeriodStart",
          "currentPeriodEnd"
        ]
      },
      "TokenUnlocksUpcomingItemDto": {
        "type": "object",
        "properties": {
          "currencyId": {
            "type": "number",
            "example": 28,
            "description": "Coin identifier in cryptorank."
          },
          "currencyName": {
            "type": "string",
            "example": "Ethereum"
          },
          "currencySymbol": {
            "type": "string",
            "example": "ETH",
            "nullable": true
          },
          "currencyImages": {
            "description": "Coin logo URLs in all available sizes.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "date": {
            "type": "string",
            "example": "2026-06-01T00:00:00.000Z",
            "description": "Date of the upcoming unlock (ISO 8601 UTC, time component fixed to `00:00:00.000Z`). When several events fall on the same day for one coin their token amounts are aggregated into a single entry."
          },
          "tokenAmount": {
            "type": "string",
            "example": "1250000",
            "description": "Number of tokens that will be unlocked on `date` (raw token units)."
          },
          "usdAmount": {
            "type": "string",
            "example": "4625000",
            "description": "USD value of the unlock — `tokenAmount * price`, rounded to whole dollars."
          },
          "percentOfMcap": {
            "type": "number",
            "example": 0.42,
            "description": "Unlock token amount as a percent of the coin circulating supply. Example: `0.42` means 0.42%."
          },
          "percentOfSupply": {
            "type": "number",
            "example": 1.05,
            "description": "Unlock token amount as a percent of the coin total supply (max supply with a fallback to total supply). Example: `1.05` means 1.05%."
          },
          "price": {
            "type": "string",
            "example": "3.70",
            "description": "Current coin price in USD, twelve fractional digits."
          },
          "marketCap": {
            "type": "string",
            "example": "1100000000",
            "description": "Current coin market capitalization in USD, rounded to whole dollars."
          },
          "circulatingSupply": {
            "type": "string",
            "example": "297000000",
            "description": "Current coin circulating supply (raw token units)."
          }
        },
        "required": [
          "currencyId",
          "currencyName",
          "currencySymbol",
          "currencyImages",
          "date",
          "tokenAmount",
          "usdAmount",
          "percentOfMcap",
          "percentOfSupply",
          "price",
          "marketCap",
          "circulatingSupply"
        ]
      },
      "TokenUnlocksDailyEmissionByCurrencyDto": {
        "type": "object",
        "properties": {
          "currencyId": {
            "type": "number",
            "example": 28,
            "description": "Coin identifier in cryptorank."
          },
          "currencySymbol": {
            "type": "string",
            "example": "ETH",
            "nullable": true
          },
          "currencyName": {
            "type": "string",
            "example": "Ethereum"
          },
          "currencyImages": {
            "description": "Coin logo URLs in all available sizes.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageUrlsDto"
              }
            ]
          },
          "tokenAmount": {
            "type": "string",
            "example": "1250000",
            "description": "Number of tokens of this coin unlocked on `date` (raw token units)."
          },
          "usdAmount": {
            "type": "string",
            "example": "4625000",
            "nullable": true,
            "description": "USD value of this coin unlock at the current coin price, rounded to whole dollars. `null` when the current price is unavailable."
          }
        },
        "required": [
          "currencyId",
          "currencySymbol",
          "currencyName",
          "currencyImages",
          "tokenAmount",
          "usdAmount"
        ]
      },
      "TokenUnlocksDailyEmissionByCategoryDto": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "number",
            "example": 12,
            "description": "Category identifier."
          },
          "categorySlug": {
            "type": "string",
            "example": "gaming",
            "description": "Category slug."
          },
          "categoryName": {
            "type": "string",
            "example": "Gaming",
            "description": "Category display name."
          },
          "usdAmount": {
            "type": "string",
            "example": "4625000",
            "description": "USD value of unlocks across all coins in this category on `date`, rounded to whole dollars. Coins with no current price do not contribute."
          }
        },
        "required": [
          "categoryId",
          "categorySlug",
          "categoryName",
          "usdAmount"
        ]
      },
      "TokenUnlocksDailyEmissionItemDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "number",
            "example": 1748131200000,
            "description": "Bucket start date — Unix epoch milliseconds at UTC midnight of the calendar day."
          },
          "totalEmissionUsd": {
            "type": "string",
            "example": "125400000",
            "description": "USD value of all token unlocks across the requested coin set on `date`, computed at the current coin price and rounded to whole dollars. Coins with no current price do not contribute."
          },
          "byCurrency": {
            "description": "Per-coin breakdown of unlocks on `date`. Present only when `groupBy=currency`. Sorted by `currencyId` ascending.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenUnlocksDailyEmissionByCurrencyDto"
            }
          },
          "byCategory": {
            "description": "Per-category breakdown of unlocks on `date`. Present only when `groupBy=category`. Sorted by `categoryId` ascending. Coins without an assigned category are excluded from this breakdown but still contribute to `totalEmissionUsd`.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenUnlocksDailyEmissionByCategoryDto"
            }
          }
        },
        "required": [
          "date",
          "totalEmissionUsd"
        ]
      }
    }
  }
}