changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "additionalProperties": true,
+ "properties": {
+ "avgFeeUsd": {
+ "type": "string"
+ },
+ "bucket": {
+ "enum": [
+ "day",
+ "week",
+ "month"
+ ],
+ "type": "string"
+ },
+ "byAsset": {
+ "description": "Largest first.",
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "asset": {
+ "type": "string"
+ },
+ "count": {
+ "type": "number"
+ },
+ "qty": {
+ "description": "Native units.",
+ "type": "string"
+ },
+ "usd": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "asset",
+ "usd",
+ "qty",
+ "count"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "byType": {
+ "description": "Largest first.",
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "count": {
+ "type": "number"
+ },
+ "type": {
+ "enum": [
+ "trading",
+ "network",
+ "withdrawal",
+ "fiat",
+ "other"
+ ],
+ "type": "string"
+ },
+ "usd": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "usd",
+ "count"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "byVenue": {
+ "description": "Largest first.",
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "count": {
+ "type": "number"
+ },
+ "rateBps": {
+ "description": "Trading fees / traded volume, basis points.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "tradedVolumeUsd": {
+ "type": "string"
+ },
+ "usd": {
+ "type": "string"
+ },
+ "venue": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "venue",
+ "usd",
+ "count",
+ "tradedVolumeUsd",
+ "rateBps"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "error": {
+ "description": "Present ONLY when the call was refused instead of answered: upgrade_required (Pro plan needed), not_found, profile_not_found, profile_ambiguous, invalid_arguments, write_not_permitted. No data fields come with it; read `message` to the user rather than retrying the same call.",
+ "type": "string"
+ },
+ "feeCount": {
+ "description": "Fee-bearing events counted.",
+ "type": "number"
+ },
+ "message": {
+ "description": "Plain-language explanation that accompanies `error` or a proposed change.",
+ "type": "string"
+ },
+ "notes": {
+ "description": "What the coverage leaves out.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "partial": {
+ "description": "true when some fees could not be valued or are not tracked.",
+ "type": "boolean"
+ },
+ "points": {
+ "description": "Oldest bucket first.",
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "byType": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "fee type -> USD in the bucket.",
+ "type": "object"
+ },
+ "rateBps": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "t": {
+ "type": "string"
+ },
+ "tradedVolumeUsd": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "t",
+ "byType",
+ "tradedVolumeUsd",
+ "rateBps"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "points_note": {
+ "description": "Present only when `points` was cut; says how many rows were kept and which.",
+ "type": "string"
+ },
+ "profile": {
+ "additionalProperties": true,
+ "description": "The portfolio these figures belong to (absent on list_profiles).",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "name"
+ ],
+ "type": "object"
+ },
+ "source_url": {
+ "description": "Link to the page in the WhereItGoes app that shows this data.",
+ "type": "string"
+ },
+ "stock_assets": {
+ "additionalProperties": true,
+ "description": "Present when the answer mentions Binance Stocks shares (EQ_<ticker>): they are US stocks, not crypto.",
+ "properties": {
+ "assets": {
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "asset": {
+ "type": "string"
+ },
+ "ticker": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "asset",
+ "ticker"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "note": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "note",
+ "assets"
+ ],
+ "type": "object"
+ },
+ "totalUsd": {
+ "description": "All fees in the window, USD, each valued on the day paid.",
+ "type": "string"
+ },
+ "truncated": {
+ "additionalProperties": {
+ "additionalProperties": true,
+ "properties": {
+ "from": {
+ "description": "Day or bucket of the first kept row, for a dated series.",
+ "type": "string"
+ },
+ "keep": {
+ "description": "Which rows survived the cut.",
+ "enum": [
+ "first",
+ "most_recent",
+ "evenly_spaced",
+ "best_and_worst"
+ ],
+ "type": "string"
+ },
+ "kept": {
+ "description": "Rows returned.",
+ "type": "number"
+ },
+ "to": {
+ "description": "Day or bucket of the last kept row, for a dated series.",
+ "type": "string"
+ },
+ "total": {
+ "description": "Rows the full answer had.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "total",
+ "kept",
+ "keep"
+ ],
+ "type": "object"
+ },
+ "description": "Present only when a list was longer than the 200-row cap and was cut: list field name -> {total, kept, keep, from, to}. A `<field>_note` string beside that list says the same in words. Never present a cut list as complete.",
+ "type": "object"
+ },
+ "unpricedAssets": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "upgrade_url": {
+ "description": "Where the user can upgrade, on an upgrade_required refusal.",
+ "type": "string"
+ },
+ "window": {
+ "additionalProperties": true,
+ "description": "The time window these figures cover.",
+ "properties": {
+ "from": {
+ "description": "Window start, epoch ms; null = from the first record.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "fromDay": {
+ "description": "First UTC day covered, YYYY-MM-DD.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "to": {
+ "description": "Window end, epoch ms; null = now.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "toDay": {
+ "description": "Last UTC day covered, YYYY-MM-DD.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "from",
+ "to",
+ "fromDay",
+ "toDay"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+}