{
  "openapi": "3.0.0",
  "paths": {
    "/v2/accounts": {
      "get": {
        "description": "Returns the list of accounts for the caller workspace.",
        "operationId": "getAccounts",
        "parameters": [
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Opaque cursor for the next page of results",
            "schema": {
              "example": "workspace1-solana-BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG",
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "default": 50,
              "example": 50,
              "type": "number"
            }
          },
          {
            "name": "group_id",
            "required": false,
            "in": "query",
            "description": "Filter accounts by membership in a specific group (account_groups.id)",
            "schema": {
              "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
              "type": "string"
            }
          },
          {
            "name": "type",
            "required": false,
            "in": "query",
            "schema": {
              "example": "bank",
              "type": "string",
              "enum": [
                "eoa",
                "multisig",
                "contract",
                "custodian",
                "exchange",
                "bank"
              ]
            }
          },
          {
            "name": "provider",
            "required": false,
            "in": "query",
            "description": "Filter to accounts held under a connection of this provider",
            "schema": {
              "example": "utila",
              "type": "string",
              "enum": [
                "utila",
                "kraken",
                "plaid",
                "squads",
                "realms",
                "safe"
              ]
            }
          },
          {
            "name": "chain",
            "required": false,
            "in": "query",
            "description": "Network/chain identifier (e.g. ethereum, solana, stellar)",
            "schema": {
              "example": "ethereum",
              "type": "string"
            }
          },
          {
            "name": "connection_id",
            "required": false,
            "in": "query",
            "schema": {
              "example": "utila-123",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchAccountsResponseDto"
                }
              }
            }
          }
        },
        "summary": "List accounts",
        "tags": [
          "Accounts"
        ]
      },
      "put": {
        "description": "Batch add, update, or remove accounts for the caller workspace. Remove returns 404 when the account id is not found in the workspace.",
        "operationId": "updateAccounts",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAccountsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccountsResponseDto"
                }
              }
            }
          }
        },
        "summary": "Add or remove accounts",
        "tags": [
          "Accounts"
        ]
      }
    },
    "/v2/accounts/{id}": {
      "get": {
        "description": "Returns a single account matching the given address for the caller workspace.",
        "operationId": "getAccountByAddress",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDto"
                }
              }
            }
          }
        },
        "summary": "Get account by address",
        "tags": [
          "Accounts"
        ]
      }
    },
    "/v2/accounts/refresh": {
      "post": {
        "description": "Synchronously refreshes balances for every account in the caller workspace — connection-backed (Wise/Kraken/Safe/etc.) and standalone on-chain wallets alike — and persists them.",
        "operationId": "refreshAccounts",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefreshAccountsResponseDto"
                }
              }
            }
          }
        },
        "summary": "Refresh balances for the workspace",
        "tags": [
          "Accounts"
        ]
      }
    },
    "/v2/groups": {
      "get": {
        "operationId": "list",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupsResponseDto"
                }
              }
            }
          }
        },
        "summary": "List all groups for a workspace (including system groups)",
        "tags": [
          "Groups"
        ]
      },
      "post": {
        "operationId": "create",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGroupDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupDto"
                }
              }
            }
          }
        },
        "summary": "Create a new custom group",
        "tags": [
          "Groups"
        ]
      }
    },
    "/v2/groups/{id}": {
      "put": {
        "operationId": "update",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGroupDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceGroupDto"
                }
              }
            }
          }
        },
        "summary": "Rename a custom group",
        "tags": [
          "Groups"
        ]
      },
      "delete": {
        "operationId": "delete",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Delete a custom group (associations removed, addresses kept)",
        "tags": [
          "Groups"
        ]
      }
    },
    "/v2/account-connections/plaid/link-token": {
      "post": {
        "description": "Returns a short-lived link_token the client passes to Plaid Link. Optionally scope which institutions Link shows by passing country_codes (e.g. the country of the customer being onboarded); defaults to all approved countries. After the user completes the flow, POST /account-connections with the returned public_token.",
        "operationId": "createPlaidLinkToken",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePlaidLinkTokenDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": ""
          }
        },
        "summary": "Create a Plaid Link token",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections": {
      "post": {
        "description": "Stores connection credentials for later use in preview and sync.",
        "operationId": "createConnection",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAccountConnectionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountConnectionDto"
                }
              }
            }
          }
        },
        "summary": "Create account connection",
        "tags": [
          "Account Connections"
        ]
      },
      "get": {
        "description": "Returns the list of account connections for the caller workspace.",
        "operationId": "getConnections",
        "parameters": [
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Opaque cursor for the next page of results",
            "schema": {
              "example": "workspace1-solana-BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG",
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "default": 50,
              "example": 50,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchAccountConnectionsResponseDto"
                }
              }
            }
          }
        },
        "summary": "List account connections",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/transactions": {
      "get": {
        "description": "Fans out across every connection-linked account in the caller workspace and returns the merged list of transactions, sorted newest-first, capped at `size` (default 5). No pagination — this is a recent-activity overview. Connections whose provider does not support transactions, or that fail to fetch, are skipped.",
        "operationId": "getWorkspaceConnectionTransactions",
        "parameters": [
          {
            "name": "size",
            "required": false,
            "in": "query",
            "description": "Maximum number of transactions to return after merging and sorting newest-first across all connections. Also passed to each connection fetch as a per-source limit.",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 5,
              "example": 5,
              "type": "number"
            }
          },
          {
            "name": "tokens",
            "required": false,
            "in": "query",
            "description": "Comma-separated asset symbols to filter by. A transaction is kept when its displayed asset matches one of these symbols (case-insensitive) — for a trade that is the base asset, otherwise the first transfer leg. Applied to the merged result.",
            "schema": {
              "example": "USDC,ETH",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchWorkspaceConnectionTransactionsResponseDto"
                }
              }
            }
          }
        },
        "summary": "List transactions across all account connections in the workspace",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/{id}/status": {
      "get": {
        "description": "Returns the connection status for a specific account connection.",
        "operationId": "getConnectionStatus",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Connection status retrieved successfully"
          }
        },
        "summary": "Verify Account Connection",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/{id}": {
      "get": {
        "description": "Fetches connection accounts by id.",
        "operationId": "previewConnection",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Connection account data retrieved successfully"
          }
        },
        "summary": "Preview account-connection data",
        "tags": [
          "Account Connections"
        ]
      },
      "patch": {
        "description": "Updates mutable connection fields. Currently supports renaming only.",
        "operationId": "updateConnection",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAccountConnectionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountConnectionDto"
                }
              }
            }
          }
        },
        "summary": "Update account connection",
        "tags": [
          "Account Connections"
        ]
      },
      "delete": {
        "description": "Deletes an account connection by id for the caller workspace.",
        "operationId": "deleteConnection",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Connection deleted successfully"
          }
        },
        "summary": "Delete account connection",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/{id}/transactions": {
      "get": {
        "description": "Returns paginated transactions for a single account belonging to this connection. The account is resolved to a provider-specific object (e.g. a Utila wallet). Pagination is opaque token (cursor) based — pass meta.next_cursor back as ?cursor to fetch the next page; null next_cursor means no more results. Providers without transaction support return a not-implemented error.",
        "operationId": "getConnectionTransactions",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "account_id",
            "required": true,
            "in": "query",
            "description": "Account id (in this API) to scope transactions to. Must belong to the connection. This is the Range account UUID, not the wallet address.",
            "schema": {
              "format": "uuid",
              "example": "27347428-643d-4bff-837f-ab209e0df987",
              "type": "string"
            }
          },
          {
            "name": "wallet_address",
            "required": false,
            "in": "query",
            "description": "Realms wallet address to fetch history for. Must be a NativeTreasury PDA or Governance PDA belonging to this connection. Required when the Realm has more than one treasury.",
            "schema": {
              "example": "B56RWQGf9RFw7t8gxPzrRvk5VRmB5DoF94aLoJ25YtvG",
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Opaque cursor returned in meta.next_cursor of a previous response.",
            "schema": {
              "example": "eyJwYWdlVG9rZW4iOiJYWVoifQ==",
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "default": 100,
              "example": 100,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchConnectionTransactionsResponseDto"
                }
              }
            }
          }
        },
        "summary": "List transactions for an account on a connection",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/cubist/login/start": {
      "post": {
        "description": "Authenticates with CubeSigner via email/password. Returns login_id for MFA or refresh_token when MFA is not required.",
        "operationId": "startLogin",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CubistLoginStartDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CubistLoginStatusResponseDto"
                }
              }
            }
          }
        },
        "summary": "Start Cubist login",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/cubist/login/{loginId}": {
      "get": {
        "operationId": "getLoginStatus",
        "parameters": [
          {
            "name": "loginId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CubistLoginStatusResponseDto"
                }
              }
            }
          }
        },
        "summary": "Poll Cubist login status",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/cubist/login/{loginId}/mfa/totp": {
      "post": {
        "operationId": "completeTotp",
        "parameters": [
          {
            "name": "loginId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CubistLoginTotpDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CubistLoginStatusResponseDto"
                }
              }
            }
          }
        },
        "summary": "Complete Cubist login with TOTP code",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/cubist/login/{loginId}/mfa/fido/init": {
      "post": {
        "operationId": "initFido",
        "parameters": [
          {
            "name": "loginId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CubistLoginFidoInitResponseDto"
                }
              }
            }
          }
        },
        "summary": "Initiate FIDO MFA for Cubist login",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/account-connections/cubist/login/{loginId}/mfa/fido/complete": {
      "post": {
        "operationId": "completeFido",
        "parameters": [
          {
            "name": "loginId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CubistLoginFidoCompleteDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CubistLoginStatusResponseDto"
                }
              }
            }
          }
        },
        "summary": "Complete FIDO MFA for Cubist login",
        "tags": [
          "Account Connections"
        ]
      }
    },
    "/v2/transactions/humanize": {
      "post": {
        "description": "Given a transaction hash and its network, returns a plain-language explanation of what the transaction does — the action, the parties involved, and any token/native transfers with resolved amounts and USD value. Supports Solana and Ethereum.",
        "operationId": "humanize",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HumanizeTransactionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Human-readable explanation of the transaction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HumanizeTransactionResponseDto"
                }
              }
            }
          }
        },
        "summary": "Humanize a transaction",
        "tags": [
          "Blockchain transactions"
        ]
      }
    },
    "/v2/transactions": {
      "get": {
        "description": "Returns a list of transactions that match the specified search term.",
        "operationId": "searchTransfers",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Only find transfers on one specific network",
            "schema": {
              "example": "cosmoshub-4",
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "schema": {
              "example": "n0192376853",
              "type": "string"
            }
          },
          {
            "name": "types",
            "required": false,
            "in": "query",
            "schema": {
              "example": "ExecuteContract",
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 25,
              "example": 10,
              "type": "number"
            }
          },
          {
            "name": "tx_hash",
            "required": false,
            "in": "query",
            "schema": {
              "example": "0xbe667b06979c46e186cebb4ad2c6fb6af8fb034e4723518416b2e7d3aeeb4753",
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": false,
            "in": "query",
            "description": "Only find transactions on one specific address",
            "schema": {
              "example": "C6RarBbo5zxMzFiVhYAvbGUWiJGuVsSczawdXdGzeEoj",
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Filter by transaction status SUCCEEDED or ERROR",
            "schema": {
              "example": "SUCCEEDED",
              "type": "string",
              "enum": [
                "SUCCEEDED",
                "ERROR"
              ]
            }
          },
          {
            "name": "start_time",
            "required": false,
            "in": "query",
            "description": "Start time (ISO 8601). Converted to Date.",
            "schema": {
              "format": "date-time",
              "example": "2025-01-01T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "end_time",
            "required": false,
            "in": "query",
            "description": "End time (ISO 8601). Converted to Date.",
            "schema": {
              "format": "date-time",
              "example": "2025-12-31T23:59:59Z",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of transactions that match the specified search term.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchTransactionsResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get transactions list",
        "tags": [
          "Blockchain transactions"
        ]
      }
    },
    "/v2/transactions/by-network/{network}/{hash}": {
      "get": {
        "description": "Returns a transaction with full source data that matches the specified network and hash.",
        "operationId": "getTransactionByNetworkAndHash",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hash",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction with full source data that matches the specified network and hash.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDto"
                }
              }
            }
          }
        },
        "summary": "Get transaction by network and hash",
        "tags": [
          "Blockchain transactions"
        ]
      }
    },
    "/v2/transactions/{id}": {
      "get": {
        "description": "Returns a transaction that matches the specified ID.",
        "operationId": "getTransfer",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction that matches the specified ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDto"
                }
              }
            }
          }
        },
        "summary": "Get transaction by ID",
        "tags": [
          "Blockchain transactions"
        ]
      }
    },
    "/v2/addresses": {
      "get": {
        "description": "Returns a list of addresses that match the specified search term.",
        "operationId": "searchAddressLabels",
        "parameters": [
          {
            "name": "networks",
            "required": false,
            "in": "query",
            "description": "Comma-separated list of blockchain networks to filter by (e.g., ethereum, solana). Repeats also allowed.",
            "schema": {
              "example": [
                "ethereum",
                "solana"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Comma-separated list of address statuses. Repeats also allowed.",
            "schema": {
              "example": [
                "malicious",
                "sanctioned"
              ],
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "malicious",
                  "blacklisted",
                  "sanctioned"
                ]
              }
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Opaque cursor for pagination, obtained from a previous response meta field.",
            "schema": {
              "example": "n51",
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "description": "Number of results per page (1–200, default 50).",
            "schema": {
              "minimum": 1,
              "maximum": 200,
              "example": 50,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of addresses that match the specified search term.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressIndexResponseDto"
                }
              }
            }
          }
        },
        "summary": "Search Address Details",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v2/addresses/list": {
      "post": {
        "description": "Caches a list of addresses and returns a stable SHA-256 hash that identifies the list.",
        "operationId": "postAddressList",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAddressListDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Hash identifying the stored address list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostAddressListResponseDto"
                }
              }
            }
          }
        },
        "summary": "Store Address List",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v2/addresses/workspace/balances": {
      "get": {
        "description": "Returns current balances for all accounts stored in the workspace.",
        "operationId": "getWorkspaceBalances",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Balances for each account in the workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressListBalancesResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get Balances for Workspace Accounts",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v2/addresses/list/{hash}/balances": {
      "get": {
        "description": "Returns current balances for all addresses in a stored list. Each address entry includes all native and token balances.",
        "operationId": "getAddressListBalances",
        "parameters": [
          {
            "name": "hash",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Balances for each address in the list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressListBalancesResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Address list not found for the given hash."
          }
        },
        "summary": "Get Balances for Address List",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v2/addresses/last-activity": {
      "post": {
        "description": "Returns the last on-chain activity timestamp for each supplied address.",
        "operationId": "getLastActivity",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAddressLastActivityDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Last activity results for each address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressLastActivityResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request payload."
          }
        },
        "summary": "Get Last Activity for Addresses",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v2/entities": {
      "get": {
        "description": "Returns a list of entities that match the specified search term.",
        "operationId": "searchEntities",
        "parameters": [
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "schema": {
              "example": "n0192376853",
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 10,
              "example": 10,
              "type": "number"
            }
          },
          {
            "name": "networks",
            "required": false,
            "in": "query",
            "description": "Comma-separated list of blockchain networks to filter by (e.g., ethereum, solana). Repeats also allowed.",
            "schema": {
              "example": [
                "ethereum",
                "solana"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of entities that match the specified search term.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityIndexResponseDto"
                }
              }
            }
          }
        },
        "summary": "Search Entity Details",
        "tags": [
          "Entity Information"
        ]
      }
    },
    "/v1/address": {
      "get": {
        "description": "Returns information about the specified address, including the network and labels associated with it.",
        "operationId": "getAddressLabels",
        "parameters": [
          {
            "name": "network",
            "required": false,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": false,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Address Information as an array with one item per network",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Address"
                }
              }
            }
          }
        },
        "summary": "Get Address Information",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/info": {
      "get": {
        "description": "Returns information about the specified address, including the network and labels associated with it.",
        "operationId": "getAddressInfo",
        "parameters": [
          {
            "name": "network",
            "required": false,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": false,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Address Information",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Address"
                }
              }
            }
          }
        },
        "summary": "Get Address Information",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/labels/search": {
      "get": {
        "description": "Returns a list of addresses that match the specified search term.",
        "operationId": "searchAddressLabels",
        "parameters": [
          {
            "name": "networks",
            "required": false,
            "in": "query",
            "description": "Comma-separated list of blockchain networks to filter addresses by (e.g., ethereum, solana)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "addresses",
            "required": false,
            "in": "query",
            "description": "Comma-separated list of blockchain addresses to filter (e.g., 0x123, 0x456)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "searchString",
            "required": false,
            "in": "query",
            "description": "Substring to search for in addresses or labels (case insensitive)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeNft",
            "required": false,
            "in": "query",
            "description": "Include NFT addresses in the search results",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "validateSearch",
            "required": true,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of addresses that match the specified search term.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AddressDetails"
                  }
                }
              }
            }
          }
        },
        "summary": "Search Address Labels",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/connections": {
      "get": {
        "description": "Returns a list of addresses that the specified address has interacted with.",
        "operationId": "getAddressCounterparties",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "groupBy",
            "required": true,
            "in": "query",
            "description": "\"address\" mode or \"entity\" mode",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": false,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": false,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of addresses that the specified address has interacted with.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressConnection"
                }
              }
            }
          }
        },
        "summary": "Get Address Counterparties",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/stats": {
      "get": {
        "description": "Returns date of last and first interaction of this address with the network.",
        "operationId": "getAddressStats",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Address interaction dates.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressStats"
                }
              }
            }
          }
        },
        "summary": "Get Address Statistics",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/fundedBy": {
      "get": {
        "description": "Returns funding  details of this address with the network.",
        "operationId": "getAddressFundedBy",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Address Funding Details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressStats"
                }
              }
            }
          }
        },
        "summary": "Get Address Funding Details",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/transactions": {
      "get": {
        "description": "Returns a list of transactions associated with the specified address.",
        "operationId": "getAddressTransactions",
        "parameters": [
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items to return",
            "schema": {
              "default": 50,
              "type": "number"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "Number of items to skip",
            "schema": {
              "default": 0,
              "type": "number"
            }
          },
          {
            "name": "startTime",
            "required": false,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": false,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "msgTypes",
            "required": false,
            "in": "query",
            "description": "Message types separated by comma",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Status of transaction",
            "schema": {
              "type": "string",
              "enum": [
                "success",
                "failed"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transactions associated with a specific address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionsInfo"
                }
              }
            }
          }
        },
        "summary": "Get Address Transactions",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/transactionsCount": {
      "get": {
        "description": "Returns a list of counts of transactions associated with the specified address.",
        "operationId": "getTxnsCount",
        "parameters": [
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": false,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": false,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "msgTypes",
            "required": false,
            "in": "query",
            "description": "Message types separated by comma",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Status of transaction",
            "schema": {
              "type": "string",
              "enum": [
                "success",
                "failed"
              ]
            }
          },
          {
            "name": "interval",
            "required": false,
            "in": "query",
            "description": "Interval of count",
            "schema": {
              "type": "string",
              "enum": [
                "hour",
                "day",
                "month"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Counts of transactions  associated with a specific address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TxnCounts"
                }
              }
            }
          }
        },
        "summary": "Get Transactions Count",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/transaction": {
      "get": {
        "description": "Returns details of a transactions associated with the specified hash.",
        "operationId": "getTransaction",
        "parameters": [
          {
            "name": "hash",
            "required": true,
            "in": "query",
            "description": "hash to search",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction associated with a specific hash.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Transaction"
                }
              }
            }
          }
        },
        "summary": "Get Transaction Details",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/payments": {
      "get": {
        "description": "Returns a list of transactions associated with the specified address.",
        "operationId": "getAddressPayments",
        "parameters": [
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network",
            "required": false,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "default": "address",
              "type": "string"
            }
          },
          {
            "name": "groupBy",
            "required": false,
            "in": "query",
            "description": "\"address\" mode or \"entity\" mode",
            "schema": {
              "default": "address",
              "type": "string"
            }
          },
          {
            "name": "receiver",
            "required": false,
            "in": "query",
            "description": "Another address involved in the transaction",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "receiverNetwork",
            "required": false,
            "in": "query",
            "description": "Network of Another address involved in the transaction",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": false,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": false,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "msgType",
            "required": false,
            "in": "query",
            "description": "msg types separated by comma",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items to return",
            "schema": {
              "default": 50,
              "type": "number"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "Number of items to skip",
            "schema": {
              "default": 0,
              "type": "number"
            }
          },
          {
            "name": "direction",
            "required": false,
            "in": "query",
            "description": "direction of payment (incoming, outgoing, both)",
            "schema": {
              "default": "both",
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "sort order (asc, desc)",
            "schema": {
              "default": "desc",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payments associated with a specific address. This includes both incoming and outgoing transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsInfo"
                }
              }
            }
          }
        },
        "summary": "Get Address Payments",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/payment": {
      "get": {
        "description": "Returns a payment transaction associated with the specified hash.",
        "operationId": "getPayment",
        "parameters": [
          {
            "name": "hash",
            "required": true,
            "in": "query",
            "description": "Txn Hash",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment associated with a specific hash. This includes both incoming and outgoing transaction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Transaction"
                }
              }
            }
          }
        },
        "summary": "Get Payment",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/transactions/counts": {
      "get": {
        "description": "Returns a list of transaction counts aggregated by day.",
        "operationId": "getTxCounts",
        "parameters": [
          {
            "name": "addresses",
            "required": true,
            "in": "query",
            "description": "Comma separated list of addresses to include",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Aggregated transaction counts for the specified addresses.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressTxCount"
                }
              }
            }
          }
        },
        "summary": "Get Transaction Counts for the specified addresses",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/balance": {
      "get": {
        "description": "Returns a list of token balances of given address.",
        "operationId": "getBalance",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network_type",
            "required": true,
            "in": "query",
            "description": "network type: evm, solana, cosmos, etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token_contracts",
            "required": true,
            "in": "query",
            "description": "Comma separated list of token contract addresses",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of token balances of given address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalancesInfo"
                }
              }
            }
          }
        },
        "summary": "Get Current Token Balances of an Address",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/address/assetFlow": {
      "get": {
        "description": "Returns a list of token balances of given address.",
        "operationId": "getAssetFlow",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network_type",
            "required": true,
            "in": "query",
            "description": "network type: evm, solana, cosmos, etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token_contracts",
            "required": true,
            "in": "query",
            "description": "Comma separated list of token contract addresses",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payments associated with a specific address. This includes both incoming and outgoing transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalancesInfo"
                }
              }
            }
          }
        },
        "summary": "Get Current Token Balances of an Address",
        "tags": [
          "Address Information"
        ]
      }
    },
    "/v1/network/payments": {
      "get": {
        "description": "Returns a list of payments associated with the specified transaction.",
        "operationId": "getAddressPayments",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of transaction",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hash",
            "required": true,
            "in": "query",
            "description": "Txn Hash",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Number of items to return",
            "schema": {
              "default": 50,
              "type": "number"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "Number of items to skip",
            "schema": {
              "default": 0,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payments associated with a specific transaction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsInfo"
                }
              }
            }
          }
        },
        "summary": "Get payments for a transaction",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/msg-types": {
      "get": {
        "description": "Returns a list of msg types associated with the transactions of a network.",
        "operationId": "getMsgTypes",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of MsgType",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Msg types associated with the transactions of a network.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MsgTypesInfo"
                }
              }
            }
          }
        },
        "summary": "Get msg types in a network",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/transactions/counts": {
      "get": {
        "description": "Returns a list of transaction counts for each specified interval across all requested networks.",
        "operationId": "getTxCounts",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Networks with their respective number of transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TxCounts"
                }
              }
            }
          }
        },
        "summary": "Get Transaction Counts",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/volume": {
      "get": {
        "description": "Returns a list of aggregated volumes for each network.",
        "operationId": "getNetworkVolume",
        "parameters": [
          {
            "name": "interval",
            "required": true,
            "in": "query",
            "description": "Size of one bucket in seconds",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "buckets",
            "required": true,
            "in": "query",
            "description": "Number of buckets",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "networks",
            "required": true,
            "in": "query",
            "description": "Comma separated list of network ids",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "required": false,
            "in": "query",
            "description": "Category, e.g. ibc",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Get network volume aggregated by interval",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/transactions/search": {
      "get": {
        "description": "Retrieves a list of transactions along with their metadata that correspond to the specified search string.",
        "operationId": "getTxSearch",
        "parameters": [
          {
            "name": "hash",
            "required": true,
            "in": "query",
            "description": "Transaction hash",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of transactions with metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionSearchResults"
                }
              }
            }
          }
        },
        "summary": "Get Search Results",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/{network}/payments": {
      "post": {
        "description": "Returns a list of payments for the specified network. Supports both traditional pagination and scroll API for large datasets.",
        "operationId": "getPaymentsByNetwork",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number \"offset\"",
            "schema": {
              "example": "0",
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Page size",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "useScroll",
            "required": false,
            "in": "query",
            "description": "Whether to use scroll API for pagination",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "scrollBatchSize",
            "required": false,
            "in": "query",
            "description": "Batch size for scroll requests",
            "schema": {
              "default": 100,
              "type": "number"
            }
          },
          {
            "name": "hasMore",
            "required": false,
            "in": "query",
            "description": "Whether there are more results available (only when useScroll=true)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "addressParams",
            "required": false,
            "in": "query",
            "description": "Array of address parameters",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/AddressParamDTO"
              }
            }
          },
          {
            "name": "direction",
            "required": false,
            "in": "query",
            "description": "Direction of payment (incoming, outgoing) default is both",
            "schema": {
              "default": "",
              "type": "string",
              "enum": [
                "incoming",
                "outgoing"
              ]
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "description": "Sort order (asc, desc)",
            "schema": {
              "default": "desc",
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "groupBy",
            "required": false,
            "in": "query",
            "description": "\"address\" mode or \"entity\" mode",
            "schema": {
              "default": "address",
              "type": "string",
              "enum": [
                "address",
                "entity"
              ]
            }
          },
          {
            "name": "startTime",
            "required": false,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": false,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sortBy",
            "required": false,
            "in": "query",
            "description": "Sort By Field",
            "schema": {
              "default": "ti",
              "type": "string",
              "enum": [
                "ti",
                "usd"
              ]
            }
          },
          {
            "name": "msgTypes",
            "required": false,
            "in": "query",
            "description": "Array of message types",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "senderSymbols",
            "required": false,
            "in": "query",
            "description": "sender symbols seperated by comma",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScrollIdDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of payments for the specified network.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkPaymentsResponseDTO"
                }
              }
            }
          }
        },
        "summary": "Get all payments by network",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/{network}/transactions": {
      "post": {
        "description": "Returns a list of transactions for the specified network. Supports both traditional pagination and scroll API for large datasets.",
        "operationId": "getTransactionsByNetwork",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "Page number \"offset\"",
            "schema": {
              "example": "0",
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "required": false,
            "in": "query",
            "description": "Page size",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "useScroll",
            "required": false,
            "in": "query",
            "description": "Whether to use scroll API for pagination",
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "name": "scrollBatchSize",
            "required": false,
            "in": "query",
            "description": "Batch size for scroll requests",
            "schema": {
              "default": 100,
              "type": "number"
            }
          },
          {
            "name": "hasMore",
            "required": false,
            "in": "query",
            "description": "Whether there are more results available (only when useScroll=true)",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "network",
            "required": false,
            "in": "query",
            "description": "Network identifier",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": false,
            "in": "query",
            "description": "Address to filter transactions",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": false,
            "in": "query",
            "description": "Start time filter (ISO format)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": false,
            "in": "query",
            "description": "End time filter (ISO format)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "msgTypes",
            "required": false,
            "in": "query",
            "description": "Comma-separated message types to filter",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Transaction status (e.g., \"success\", \"failed\")",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScrollIdDTO"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of transactions for the specified network.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionsResponseDTO"
                }
              }
            }
          }
        },
        "summary": "Get all transactions by network",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/volume-by-time-range": {
      "get": {
        "description": "Returns a aggregated volume for network within time range.",
        "operationId": "getNetworkVolumeByTimeRange",
        "parameters": [
          {
            "name": "startTime",
            "required": true,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": true,
            "in": "query",
            "description": "End Time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "network id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Get network volume within time range",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/active-accounts": {
      "get": {
        "description": "Returns total active accounts for network within time range.",
        "operationId": "getActiveAccounts",
        "parameters": [
          {
            "name": "startTime",
            "required": true,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": true,
            "in": "query",
            "description": "End Time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "network id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "summary": "Get Active Accounts within time range",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/whale-moves": {
      "get": {
        "description": "Returns addresses with maximum transfer volumes in the network",
        "operationId": "getWhaleMoves",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": true,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": true,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": true,
            "in": "query",
            "description": "Number of items to return",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "symbol",
            "required": false,
            "in": "query",
            "description": "Symbol",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns addresses with maximum transfer volumes in the network"
          }
        },
        "summary": "Get Whale Moves",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/payment-aggs-by-address": {
      "get": {
        "description": "Returns addresses with maximum aggregated field value in the network",
        "operationId": "getPaymentAggsByAddress",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": true,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": true,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": true,
            "in": "query",
            "description": "Number of items to return",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "field",
            "required": true,
            "in": "query",
            "description": "Field to sort by",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "symbol",
            "required": false,
            "in": "query",
            "description": "Symbol",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns addresses with maximum aggregated field value in the network"
          }
        },
        "summary": "Get Aggregated Payment field grouped by address",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/usd-balance-by-address": {
      "get": {
        "description": "Returns addresses with maximum balances in the network",
        "operationId": "getUSDBalances",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": true,
            "in": "query",
            "description": "Number of items to return",
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns addresses with maximum balances in the network"
          }
        },
        "summary": "Get Address Balances for a given network",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/asset-balance-by-address": {
      "get": {
        "description": "Returns addresses with maximum balances in the network",
        "operationId": "getAssetBalances",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": true,
            "in": "query",
            "description": "Number of items to return",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "symbol",
            "required": false,
            "in": "query",
            "description": "Symbol",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns addresses with maximum balances in the network"
          }
        },
        "summary": "Get Address Balances for a given network",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/txn-count-by-time-range": {
      "get": {
        "description": "Returns a transaction count for given time range and network.",
        "operationId": "getTxCount",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": true,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": true,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Networks with their respective number of transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TxCounts"
                }
              }
            }
          }
        },
        "summary": "Get Transaction Count by time range",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/txn-count-by-address": {
      "get": {
        "description": "Returns a transaction count for given time range and network grouped by address.",
        "operationId": "getTxCountByAddress",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": true,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": true,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": true,
            "in": "query",
            "description": "Limit",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Networks with their respective number of transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TxCounts"
                }
              }
            }
          }
        },
        "summary": "Get Transaction Count by address",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/balances": {
      "get": {
        "description": "Returns a list of balance changes associated with the specified address.",
        "operationId": "getBalancesByNetwork",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": true,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": true,
            "in": "query",
            "description": "End Time",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Balance Changes Day wise By Network. This includes both incoming and outgoing transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalancesInfo"
                }
              }
            }
          }
        },
        "summary": "Get Balance Changes Day wise By Network",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v1/network/net-flow-by-protocol": {
      "get": {
        "description": "Returns a list net flow amounts associated with the specified protocol.",
        "operationId": "getBalancesByProtocol",
        "parameters": [
          {
            "name": "protocol",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startTime",
            "required": true,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "required": true,
            "in": "query",
            "description": "End Time",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": " Net Flow Day wise By Protocols. This includes both incoming and outgoing transactions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalancesInfo"
                }
              }
            }
          }
        },
        "summary": "Get Net Flow Day wise By Protocol",
        "tags": [
          "Network Information"
        ]
      }
    },
    "/v2/transfers": {
      "get": {
        "description": "Returns a list of token transfers that match the specified search term.",
        "operationId": "searchTransfers",
        "parameters": [
          {
            "name": "explorer",
            "required": false,
            "in": "query",
            "schema": {
              "example": "solana",
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "schema": {
              "example": "n0192376853",
              "type": "string"
            }
          },
          {
            "name": "sort",
            "required": false,
            "in": "query",
            "schema": {
              "example": "usd",
              "type": "string",
              "enum": [
                "usd"
              ]
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 25,
              "example": 10,
              "type": "number"
            }
          },
          {
            "name": "tx_hash",
            "required": false,
            "in": "query",
            "schema": {
              "example": "0xbe667b06979c46e186cebb4ad2c6fb6af8fb034e4723518416b2e7d3aeeb4753",
              "type": "string"
            }
          },
          {
            "name": "tx_hashes",
            "required": false,
            "in": "query",
            "description": "Comma-separated list of transaction hashes to filter by",
            "schema": {
              "example": "0xbe667b06979c46e186cebb4ad2c6fb6af8fb034e4723518416b2e7d3aeeb4753,0xabc123",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "source_networks",
            "required": false,
            "in": "query",
            "schema": {
              "example": "eth,solana",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "destination_networks",
            "required": false,
            "in": "query",
            "schema": {
              "example": "eth,solana",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "network",
            "required": false,
            "in": "query",
            "description": "Only find transfers on one specific network",
            "schema": {
              "example": "cosmoshub-4",
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": false,
            "in": "query",
            "description": "Only find transfers on one specific address",
            "schema": {
              "example": "C6RarBbo5zxMzFiVhYAvbGUWiJGuVsSczawdXdGzeEoj",
              "type": "string"
            }
          },
          {
            "name": "addresses",
            "required": false,
            "in": "query",
            "description": "Only find transfers involving this specific address as sender and reciever",
            "schema": {
              "example": "C6RarBbo5zxMzFiVhYAvbGUWiJGuVsSczawdXdGzeEoj,C6RarBbo5zxMzFiVhYAvbGUWiJGuVsSczawdXdGzeEoj",
              "type": "string"
            }
          },
          {
            "name": "search_string",
            "required": false,
            "in": "query",
            "schema": {
              "example": "e.g. partial address",
              "type": "string"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "Current status(es) of the transfer, comma-separated (e.g. 'SUCCEEDED,FAILED')",
            "schema": {
              "example": "SUCCEEDED,FAILED",
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "SUCCEEDED",
                  "PENDING",
                  "ERROR_ON_DESTINATION",
                  "TIMEOUT"
                ]
              }
            }
          },
          {
            "name": "bridges",
            "required": false,
            "in": "query",
            "description": "Bridges or networks used for the transfer",
            "schema": {
              "example": "ibc,cctp",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "token_symbols",
            "required": false,
            "in": "query",
            "description": "Token symbols involved in the transfer",
            "schema": {
              "example": "USDC,DAI",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "group_ids",
            "required": false,
            "in": "query",
            "description": "Limit workspace address entries to those belonging to these group IDs (comma-separated UUIDs)",
            "schema": {
              "example": "uuid1,uuid2",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "min_usd",
            "required": false,
            "in": "query",
            "description": "Minimum USD amount (decimal). Converted to number.",
            "schema": {
              "example": "100.50",
              "type": "number"
            }
          },
          {
            "name": "max_usd",
            "required": false,
            "in": "query",
            "description": "Maximum USD amount (decimal). Converted to number.",
            "schema": {
              "example": "1000",
              "type": "number"
            }
          },
          {
            "name": "categories",
            "required": false,
            "in": "query",
            "description": "Comma-separated category names to filter by (workspace-specific enrichment). Requires workspace authentication.",
            "schema": {
              "example": "defi,exchange",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "start_time",
            "required": false,
            "in": "query",
            "description": "Start time (ISO 8601). Converted to Date.",
            "schema": {
              "format": "date-time",
              "example": "2025-01-01T00:00:00Z",
              "type": "string"
            }
          },
          {
            "name": "end_time",
            "required": false,
            "in": "query",
            "description": "End time (ISO 8601). Converted to Date.",
            "schema": {
              "format": "date-time",
              "example": "2025-12-31T23:59:59Z",
              "type": "string"
            }
          },
          {
            "name": "internal_transfer_ids",
            "required": false,
            "in": "query",
            "description": "Comma-separated category names. Only returns transfers that the authenticated workspace has labelled with one of these categories.",
            "schema": {
              "example": "Revenue,Payroll",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "only_workspace",
            "required": false,
            "in": "query",
            "description": "If true, only returns transfers that the authenticated workspace has labelled with a category. If false, returns all transfers regardless of whether they have a category.",
            "schema": {
              "default": false,
              "example": "true",
              "type": "boolean"
            }
          },
          {
            "name": "scope",
            "required": false,
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "INTERCHAIN",
                "INTRACHAIN",
                "ALL"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of token transfers that match the specified search term.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchTransfersResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get token transfers",
        "tags": [
          "Token transfers"
        ]
      }
    },
    "/v2/transfers/top-networks": {
      "get": {
        "description": "Returns the top 1000 sender networks and top 1000 receiver networks for interchain transfers matching the given filters.",
        "operationId": "getTopNetworks",
        "parameters": [
          {
            "name": "explorer",
            "required": false,
            "in": "query",
            "schema": {
              "example": "solana",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Top 1000 sender and receiver networks by transfer count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopNetworksResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get top sender and receiver networks",
        "tags": [
          "Token transfers"
        ]
      }
    },
    "/v2/transfers/top-assets": {
      "get": {
        "description": "Returns the top 1000 assets by transfer count over the last 7 days.",
        "operationId": "getTopAssets",
        "parameters": [
          {
            "name": "explorer",
            "required": false,
            "in": "query",
            "schema": {
              "example": "solana",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Top 1000 assets by transfer count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopAssetsResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get top assets",
        "tags": [
          "Token transfers"
        ]
      }
    },
    "/v2/transfers/{id}": {
      "get": {
        "description": "Returns a token transfer that matches the specified ID.",
        "operationId": "getTransfer",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Token transfer that matches the specified ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferDto"
                }
              }
            }
          }
        },
        "summary": "Get token transfer by ID",
        "tags": [
          "Token transfers"
        ]
      }
    },
    "/v1/protocols/stats": {
      "post": {
        "operationId": "getProtocolStats",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProtocolStatsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns protocol statistics including transaction counts and denomination sums",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtocolStatsResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get protocol statistics for a given time range",
        "tags": [
          "Protocols"
        ]
      }
    },
    "/v2/connections/byAddress": {
      "get": {
        "description": "Returns a list of addresses that the specified address has interacted with.",
        "operationId": "getAddressCounterparties",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network of Address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "required": true,
            "in": "query",
            "description": "Address to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 10,
              "example": 10,
              "type": "number"
            }
          },
          {
            "name": "start_time",
            "required": false,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "end_time",
            "required": false,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of addresses that the specified address has interacted with.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionsByAddressResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get Address Counterparties",
        "tags": [
          "Connections Information"
        ]
      }
    },
    "/v2/connections/transfers": {
      "get": {
        "description": "Returns a list of transfers between two specified addresses on their respective networks.",
        "operationId": "getTransfersBetweenAddresses",
        "parameters": [
          {
            "name": "network_a",
            "required": true,
            "in": "query",
            "description": "Network of Address A",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address_a",
            "required": true,
            "in": "query",
            "description": "Address A to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network_b",
            "required": true,
            "in": "query",
            "description": "Network of Address B",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address_b",
            "required": true,
            "in": "query",
            "description": "Address B to search",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 10,
              "example": 10,
              "type": "number"
            }
          },
          {
            "name": "start_time",
            "required": false,
            "in": "query",
            "description": "Start time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "end_time",
            "required": false,
            "in": "query",
            "description": "End time",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "types",
            "required": false,
            "in": "query",
            "description": "Transfer types (comma-separated, e.g., \"ibc,cctp\")",
            "schema": {
              "example": "ibc,cctp",
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pagination cursor",
            "schema": {
              "example": "A",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of transfers between the two specified addresses.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchTransfersResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get transfers between two addresses",
        "tags": [
          "Connections Information"
        ]
      }
    },
    "/v2/tokens/total-supply": {
      "get": {
        "description": "Returns the total supply of a token on the specified network. Supports Solana (SPL mint address) and EVM-compatible networks (ERC-20 contract address).",
        "operationId": "getTotalSupply",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network name (e.g. eth, solana)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "required": true,
            "in": "query",
            "description": "Token contract address (EVM) or mint address (Solana)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenSupplyResponse"
                }
              }
            }
          }
        },
        "summary": "Get total supply for a token",
        "tags": [
          "Token Information"
        ]
      }
    },
    "/v2/tokens/mints-burns": {
      "get": {
        "description": "Returns mint and burn Transfer events for a token. For EVM networks these are Transfer events from/to the zero address. For Solana these are mintTo/burn SPL-token instructions.",
        "operationId": "getMintsBurns",
        "parameters": [
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network name (e.g. eth, solana)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "required": true,
            "in": "query",
            "description": "Token name, e.g. USDtb",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "Max number of events to return (default 50, max 1000)",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "default": 50,
              "type": "number"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Pagination cursor (next_cursor value from previous page)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenMintBurnResponse"
                }
              }
            }
          }
        },
        "summary": "Get mint and burn events for a token",
        "tags": [
          "Token Information"
        ]
      }
    },
    "/v2/tokens/top-holders": {
      "get": {
        "description": "Returns top holders ordered by balance from the token-holders index. Only considers the latest snapshot (nonce=1).",
        "operationId": "getTopHolders",
        "parameters": [
          {
            "name": "token",
            "required": true,
            "in": "query",
            "description": "Token symbol or identifier (e.g. USDtb)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network name (e.g. eth)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "required": false,
            "in": "query",
            "description": "Max number of holders per page (default 100, max 1000)",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "default": 100,
              "type": "number"
            }
          },
          {
            "name": "cursor",
            "required": false,
            "in": "query",
            "description": "Opaque pagination cursor. Use \"A\" for the first page, \"Z\" for the last page, or a cursor from a previous response.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenTopHoldersResponse"
                }
              }
            }
          }
        },
        "summary": "Get top holders for a token",
        "tags": [
          "Token Information"
        ]
      }
    },
    "/v2/tokens/summary": {
      "get": {
        "description": "Returns the latest token summary (supply, holders, etc.) from Elasticsearch for a given token and chain.",
        "operationId": "getTokenSummary",
        "parameters": [
          {
            "name": "token",
            "required": true,
            "in": "query",
            "description": "Token symbol or identifier (e.g. USDtb)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "network",
            "required": true,
            "in": "query",
            "description": "Network name (e.g. eth)",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenSummary"
                }
              }
            }
          }
        },
        "summary": "Get token summary",
        "tags": [
          "Token Information"
        ]
      }
    }
  },
  "info": {
    "title": "Range Data API",
    "description": "The Range Data API for crypto addresses, networks, transactions, and entities.",
    "version": "1.7.9",
    "contact": {}
  },
  "tags": [
    {
      "name": "Address Information",
      "description": "Get information about a crypto address."
    },
    {
      "name": "Entity Information",
      "description": "Get information about entities."
    },
    {
      "name": "Network Information",
      "description": "Get information about networks."
    },
    {
      "name": "Protocols",
      "description": "Get information about cross-chain protocols."
    },
    {
      "name": "Token transfers",
      "description": "Get information about token transfers."
    }
  ],
  "servers": [
    {
      "url": "https://api.range.org",
      "description": "Range API Server"
    }
  ],
  "components": {
    "securitySchemes": {
      "Authorization": {
        "scheme": "bearer",
        "bearerFormat": "API Key",
        "description": "Use Authorization: Bearer <api-key>",
        "type": "http"
      }
    },
    "schemas": {
      "WalletDetails": {
        "type": "object",
        "properties": {
          "network": {
            "type": "string",
            "example": "solana"
          },
          "address": {
            "type": "string",
            "example": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG"
          },
          "funded_by": {
            "type": "object",
            "properties": {
              "sender": {
                "type": "string"
              },
              "tx_hash": {
                "type": "string"
              },
              "tx_time": {
                "type": "string"
              }
            },
            "required": [
              "sender",
              "tx_hash",
              "tx_time"
            ]
          }
        },
        "required": [
          "network",
          "address"
        ]
      },
      "ContractDetails": {
        "type": "object",
        "properties": {
          "network": {
            "type": "string",
            "example": "solana"
          },
          "address": {
            "type": "string",
            "example": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG"
          },
          "cosmos_contract": {
            "type": "object",
            "properties": {
              "admin": {
                "type": "string",
                "nullable": true
              },
              "code_id": {
                "type": "number"
              },
              "creator": {
                "type": "string"
              }
            },
            "required": [
              "admin",
              "code_id",
              "creator"
            ]
          },
          "solana_contract": {
            "type": "object",
            "properties": {
              "owner": {
                "type": "string"
              },
              "is_on_curve": {
                "type": "boolean"
              },
              "space": {
                "type": "number"
              },
              "executable_data": {
                "type": "string"
              },
              "upgradeable": {
                "type": "boolean"
              },
              "upgrade_authority": {
                "type": "string",
                "nullable": true
              },
              "upgrade_authority_type": {
                "type": "string"
              },
              "last_deployed_slot": {
                "type": "number"
              },
              "last_deployed_at": {
                "type": "string"
              },
              "last_deployed_by": {
                "type": "string"
              },
              "last_deployed_tx": {
                "type": "string"
              },
              "verified": {
                "type": "boolean"
              },
              "repo_url": {
                "type": "string"
              },
              "security_txt_included": {
                "type": "boolean"
              }
            },
            "required": [
              "owner",
              "is_on_curve",
              "space",
              "executable_data",
              "upgradeable",
              "upgrade_authority",
              "upgrade_authority_type",
              "verified",
              "security_txt_included"
            ]
          }
        }
      },
      "AccountConnectionDetails": {
        "type": "object",
        "properties": {
          "connection_provider": {
            "type": "string",
            "example": "kraken"
          },
          "connection_id": {
            "type": "string",
            "example": "utila-123",
            "description": "Account-connection holding this account"
          },
          "connection_object_id": {
            "type": "string",
            "example": "12345678"
          }
        },
        "required": [
          "connection_provider",
          "connection_object_id"
        ]
      },
      "AccountConnectionSquadsPendingProposalDto": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "example": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG"
          },
          "transaction_index": {
            "type": "number",
            "example": 42
          },
          "status": {
            "type": "string",
            "example": "active",
            "enum": [
              "draft",
              "active",
              "executeReady",
              "approved",
              "executing",
              "executed",
              "rejected",
              "cancelled",
              "unknown"
            ],
            "description": "V3: draft/active/executeReady/executed/rejected/cancelled. V4 adds: approved/executing."
          },
          "approved_count": {
            "type": "number",
            "example": 2
          },
          "rejected_count": {
            "type": "number",
            "example": 0
          },
          "timestamp": {
            "type": "number",
            "nullable": true,
            "example": 1712345678
          }
        },
        "required": [
          "address",
          "transaction_index",
          "status",
          "approved_count",
          "rejected_count"
        ]
      },
      "AccountConnectionSquadsPublicDataDto": {
        "type": "object",
        "properties": {
          "multisig_address": {
            "type": "string",
            "example": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG"
          },
          "resolved_from_address": {
            "type": "string",
            "example": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG",
            "description": "Original address provided by the customer (may be a vault)"
          },
          "resolved_vault_index": {
            "type": "number",
            "example": 0,
            "description": "Vault index if input was a vault address"
          },
          "threshold": {
            "type": "number",
            "example": 2
          },
          "version": {
            "type": "string",
            "example": "v4",
            "enum": [
              "v3",
              "v4"
            ]
          },
          "program_id": {
            "type": "string",
            "example": "SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf"
          },
          "create_key": {
            "type": "string",
            "example": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG"
          },
          "config_authority": {
            "type": "string",
            "nullable": true,
            "example": null,
            "description": "V4 only"
          },
          "time_lock": {
            "type": "number",
            "example": 0,
            "description": "V4 only — seconds"
          },
          "members": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "pending_proposals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountConnectionSquadsPendingProposalDto"
            }
          },
          "vaults": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        },
        "required": [
          "multisig_address",
          "resolved_from_address",
          "threshold",
          "version",
          "program_id",
          "create_key",
          "members",
          "pending_proposals",
          "vaults"
        ]
      },
      "SquadsConnectionDetails": {
        "type": "object",
        "properties": {
          "connection_provider": {
            "type": "string",
            "example": "kraken"
          },
          "connection_id": {
            "type": "string",
            "example": "utila-123",
            "description": "Account-connection holding this account"
          },
          "connection_object_id": {
            "type": "string",
            "example": "12345678"
          },
          "multisig": {
            "$ref": "#/components/schemas/AccountConnectionSquadsPublicDataDto"
          }
        },
        "required": [
          "connection_provider",
          "connection_object_id",
          "multisig"
        ]
      },
      "AccountConnectionRealmsTokenAccountDto": {
        "type": "object",
        "properties": {
          "pubkey": {
            "type": "string",
            "example": "8iD9rdetvTqb9ooxrYbMESi9nRsGReYSBpCXqaj8G3r"
          },
          "owner": {
            "type": "string",
            "example": "BHkk3RTd4Ue6JnqXpa9QHTXbn575ycR8hxVmYx4E254k"
          },
          "owner_kind": {
            "type": "string",
            "example": "native_treasury",
            "enum": [
              "native_treasury",
              "governance"
            ]
          },
          "mint": {
            "type": "string",
            "example": "So11111111111111111111111111111111111111112"
          },
          "balance": {
            "type": "string",
            "example": "1000000"
          },
          "decimals": {
            "type": "number",
            "example": 6
          },
          "ui_amount": {
            "type": "string",
            "example": "1.000000"
          }
        },
        "required": [
          "pubkey",
          "owner",
          "owner_kind",
          "mint",
          "balance",
          "decimals",
          "ui_amount"
        ]
      },
      "AccountConnectionRealmsTreasuryDto": {
        "type": "object",
        "properties": {
          "governance": {
            "type": "string",
            "example": "8cEhQQm3MW5YQiiZ7sB6YkmFHcLXPAFSp7i4e48Kt4PK"
          },
          "native_treasury": {
            "type": "string",
            "example": "BHkk3RTd4Ue6JnqXpa9QHTXbn575ycR8hxVmYx4E254k"
          },
          "lamports": {
            "type": "string",
            "example": "131992814522"
          },
          "token_accounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountConnectionRealmsTokenAccountDto"
            }
          }
        },
        "required": [
          "governance",
          "native_treasury",
          "lamports",
          "token_accounts"
        ]
      },
      "AccountConnectionRealmsLatestActiveProposalDto": {
        "type": "object",
        "properties": {
          "pubkey": {
            "type": "string",
            "example": "F7xP...abc"
          },
          "governance": {
            "type": "string",
            "example": "8cEhQQm3MW5YQiiZ7sB6YkmFHcLXPAFSp7i4e48Kt4PK"
          },
          "governing_token_mint": {
            "type": "string",
            "example": "METAewgxyPbgwsseH8T16a39CQ5VyVxZi9zXiDPY18m"
          },
          "track": {
            "type": "string",
            "example": "community",
            "enum": [
              "community",
              "council"
            ]
          },
          "name": {
            "type": "string",
            "example": "Increase staking rewards to 8%"
          },
          "state": {
            "type": "string",
            "example": "Voting"
          },
          "draft_at": {
            "type": "number",
            "example": 1700000000
          }
        },
        "required": [
          "pubkey",
          "governance",
          "governing_token_mint",
          "track",
          "name",
          "state",
          "draft_at"
        ]
      },
      "AccountConnectionRealmsPublicDataDto": {
        "type": "object",
        "properties": {
          "realm_address": {
            "type": "string",
            "example": "DA5G7QQbFioZ6K33wQcH8fVdgFcnaDjLD7DLQkapZg5X"
          },
          "resolved_from_address": {
            "type": "string",
            "example": "DA5G7QQbFioZ6K33wQcH8fVdgFcnaDjLD7DLQkapZg5X"
          },
          "program_id": {
            "type": "string",
            "example": "AEauWRrpn9Cs6GXujzdp1YhMmv2288kBt3SdEcPYEerr"
          },
          "version": {
            "type": "string",
            "example": "v2",
            "enum": [
              "v2"
            ]
          },
          "realm_name": {
            "type": "string",
            "example": "Metaplex"
          },
          "community_mint": {
            "type": "string",
            "example": "METAewgxyPbgwsseH8T16a39CQ5VyVxZi9zXiDPY18m"
          },
          "council_mint": {
            "type": "string",
            "nullable": true,
            "example": null
          },
          "authority": {
            "type": "string",
            "nullable": true,
            "example": null
          },
          "min_community_weight_to_create_governance": {
            "type": "string",
            "example": "1"
          },
          "council_members": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "community_members_count": {
            "type": "number",
            "example": 42
          },
          "governances": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "treasuries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountConnectionRealmsTreasuryDto"
            }
          },
          "latest_active_proposal": {
            "nullable": true,
            "description": "Most recently created proposal currently in Draft, SigningOff, or Voting state. null when no active proposals exist.",
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountConnectionRealmsLatestActiveProposalDto"
              }
            ]
          }
        },
        "required": [
          "realm_address",
          "resolved_from_address",
          "program_id",
          "version",
          "realm_name",
          "community_mint",
          "min_community_weight_to_create_governance",
          "council_members",
          "community_members_count",
          "governances",
          "treasuries"
        ]
      },
      "RealmsConnectionDetails": {
        "type": "object",
        "properties": {
          "connection_provider": {
            "type": "string",
            "example": "kraken"
          },
          "connection_id": {
            "type": "string",
            "example": "utila-123",
            "description": "Account-connection holding this account"
          },
          "connection_object_id": {
            "type": "string",
            "example": "12345678"
          },
          "realms": {
            "$ref": "#/components/schemas/AccountConnectionRealmsPublicDataDto"
          }
        },
        "required": [
          "connection_provider",
          "connection_object_id",
          "realms"
        ]
      },
      "AccountConnectionSafeConfirmationDto": {
        "type": "object",
        "properties": {
          "owner": {
            "type": "string",
            "example": "0xabc..."
          },
          "submission_date": {
            "type": "string",
            "example": "2026-01-01T00:00:00.000Z"
          }
        },
        "required": [
          "owner",
          "submission_date"
        ]
      },
      "AccountConnectionSafePendingProposalDto": {
        "type": "object",
        "properties": {
          "safe_tx_hash": {
            "type": "string",
            "example": "0xabcdef1234..."
          },
          "nonce": {
            "type": "number",
            "example": 42
          },
          "destination_address": {
            "type": "string",
            "example": "0xabc..."
          },
          "value": {
            "type": "string",
            "example": "0.5",
            "description": "Native asset amount, human-readable (raw wei divided by 10^18)."
          },
          "data_payload": {
            "type": "string",
            "nullable": true,
            "example": null
          },
          "operation": {
            "type": "number",
            "example": 0,
            "description": "0 = call, 1 = delegatecall"
          },
          "confirmations_required": {
            "type": "number",
            "example": 2
          },
          "confirmations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountConnectionSafeConfirmationDto"
            }
          },
          "submission_date": {
            "type": "string",
            "nullable": true,
            "example": "2026-01-01T00:00:00.000Z"
          }
        },
        "required": [
          "safe_tx_hash",
          "nonce",
          "destination_address",
          "value",
          "operation",
          "confirmations_required",
          "confirmations"
        ]
      },
      "AccountConnectionSafePublicDataDto": {
        "type": "object",
        "properties": {
          "safe_address": {
            "type": "string",
            "example": "0xfF501B324DC6d78dC9F983f140B9211c3EdB4dc7",
            "description": "EIP-55 checksummed Safe address"
          },
          "network": {
            "type": "string",
            "example": "ethereum",
            "enum": [
              "ethereum",
              "arbitrum",
              "base",
              "optimism",
              "polygon",
              "bnb"
            ]
          },
          "version": {
            "type": "string",
            "example": "1.4.1",
            "description": "Safe contract version (e.g. 1.3.0, 1.4.1)"
          },
          "threshold": {
            "type": "number",
            "example": 2
          },
          "nonce": {
            "type": "number",
            "example": 42
          },
          "owners": {
            "type": "array",
            "example": [
              "0xabc...",
              "0xdef..."
            ],
            "items": {
              "type": "string"
            }
          },
          "pending_proposals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountConnectionSafePendingProposalDto"
            }
          }
        },
        "required": [
          "safe_address",
          "network",
          "version",
          "threshold",
          "nonce",
          "owners",
          "pending_proposals"
        ]
      },
      "SafeConnectionDetails": {
        "type": "object",
        "properties": {
          "connection_provider": {
            "type": "string",
            "example": "kraken"
          },
          "connection_id": {
            "type": "string",
            "example": "utila-123",
            "description": "Account-connection holding this account"
          },
          "connection_object_id": {
            "type": "string",
            "example": "12345678"
          },
          "safe": {
            "$ref": "#/components/schemas/AccountConnectionSafePublicDataDto"
          }
        },
        "required": [
          "connection_provider",
          "connection_object_id",
          "safe"
        ]
      },
      "PrivyConnectionDetails": {
        "type": "object",
        "properties": {
          "connection_provider": {
            "type": "string",
            "example": "kraken"
          },
          "connection_id": {
            "type": "string",
            "example": "utila-123",
            "description": "Account-connection holding this account"
          },
          "connection_object_id": {
            "type": "string",
            "example": "12345678"
          },
          "privy_custody": {
            "type": "string",
            "example": "app",
            "enum": [
              "app",
              "embedded",
              "external"
            ],
            "description": "Custody origin of the wallet: app/server-controlled, Privy-managed embedded, or user self-custody (external)."
          }
        },
        "required": [
          "connection_provider",
          "connection_object_id",
          "privy_custody"
        ]
      },
      "DfnsConnectionDetails": {
        "type": "object",
        "properties": {
          "connection_provider": {
            "type": "string",
            "example": "kraken"
          },
          "connection_id": {
            "type": "string",
            "example": "utila-123",
            "description": "Account-connection holding this account"
          },
          "connection_object_id": {
            "type": "string",
            "example": "12345678"
          },
          "dfns_custody": {
            "type": "string",
            "example": "organization",
            "enum": [
              "organization",
              "end_user"
            ],
            "description": "Custody of the Dfns wallet: owned by the organization (custodial) or delegated to an end user (non-custodial)."
          }
        },
        "required": [
          "connection_provider",
          "connection_object_id",
          "dfns_custody"
        ]
      },
      "AccountBalance": {
        "type": "object",
        "properties": {
          "asset": {
            "type": "string",
            "example": "USDC"
          },
          "amount": {
            "type": "string",
            "example": "100.50",
            "description": "Raw quantity reported by the provider, in asset units."
          },
          "usd": {
            "type": "string",
            "nullable": true,
            "example": "100.50",
            "description": "USD equivalent of `amount`. `null` when no USD price is available. For fiat accounts, equals `amount`."
          },
          "updated_at": {
            "type": "string",
            "example": "2024-01-01T00:00:00.000Z"
          }
        },
        "required": [
          "asset",
          "amount",
          "updated_at"
        ]
      },
      "AccountDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "bje5mmbqxjvwjaf7oxwpyxntxdyspzZyt4vwennw5rug"
          },
          "name": {
            "type": "string",
            "example": "Treasury wallet"
          },
          "type": {
            "type": "string",
            "example": "eoa",
            "enum": [
              "eoa",
              "multisig",
              "contract",
              "custodian",
              "exchange",
              "bank"
            ]
          },
          "network": {
            "type": "string",
            "example": "solana"
          },
          "address": {
            "type": "string",
            "example": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG"
          },
          "provider": {
            "type": "string",
            "example": "ledger, kraken, wallet, ..."
          },
          "groups": {
            "type": "array",
            "example": [
              {
                "id": "uuid-1",
                "name": "Finance"
              }
            ],
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              }
            }
          },
          "status": {
            "type": "string",
            "example": "active",
            "enum": [
              "active",
              "updating"
            ]
          },
          "balances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountBalance"
            }
          },
          "balances_usd": {
            "type": "string",
            "nullable": true,
            "example": "1234.56",
            "description": "Total USD value across all of the account balances. `null` when no asset has a known price."
          },
          "balances_updated_at": {
            "type": "string",
            "example": "2024-01-01T00:00:00.000Z"
          },
          "details": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/WalletDetails"
              },
              {
                "$ref": "#/components/schemas/ContractDetails"
              },
              {
                "$ref": "#/components/schemas/AccountConnectionDetails"
              },
              {
                "$ref": "#/components/schemas/SquadsConnectionDetails"
              },
              {
                "$ref": "#/components/schemas/RealmsConnectionDetails"
              },
              {
                "$ref": "#/components/schemas/SafeConnectionDetails"
              },
              {
                "$ref": "#/components/schemas/PrivyConnectionDetails"
              },
              {
                "$ref": "#/components/schemas/DfnsConnectionDetails"
              }
            ]
          },
          "notes": {
            "type": "string",
            "example": "Primary treasury wallet"
          },
          "role": {
            "type": "string",
            "example": "Treasury"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "provider",
          "groups",
          "status",
          "balances"
        ]
      },
      "CursorMetaDto": {
        "type": "object",
        "properties": {
          "next_cursor": {
            "type": "string",
            "nullable": true,
            "description": "Opaque string cursor pointing to the next page of results. null if there is no next page.",
            "example": "eyJpZCI6IjkxeFFlV3Z..."
          },
          "previous_cursor": {
            "type": "string",
            "nullable": true,
            "description": "Opaque string cursor pointing to the previous page of results. null if there is no previous page.",
            "example": "eyJpZCI6IjkxeFFlV3Z..."
          },
          "first_page_cursor": {
            "type": "string",
            "description": "Opaque string cursor pointing to the very first page in the entire dataset with respect to the current filter.",
            "example": "eyJpZCI6IjkxeFFlV3Z..."
          },
          "last_page_cursor": {
            "type": "string",
            "nullable": true,
            "description": "Opaque string cursor pointing to the very last page in the entire dataset with respect to the current filter.",
            "example": "eyJpZCI6IjkxeFFlV3Z..."
          },
          "total_count": {
            "type": "number",
            "nullable": true,
            "description": "Total number of results.",
            "example": 100
          },
          "page_number": {
            "type": "number",
            "description": "Current page number.",
            "example": 1
          }
        }
      },
      "SearchAccountsResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountDto"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CursorMetaDto"
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "RefreshAccountsResponseDto": {
        "type": "object",
        "properties": {
          "refreshed": {
            "type": "number",
            "example": 12,
            "description": "Number of accounts whose balances were refreshed."
          },
          "failed": {
            "type": "number",
            "example": 1,
            "description": "Number of accounts whose balance refresh failed (e.g. provider error)."
          }
        },
        "required": [
          "refreshed",
          "failed"
        ]
      },
      "AccountDataDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "123"
          },
          "name": {
            "type": "string",
            "example": "Treasury wallet"
          },
          "type": {
            "type": "string",
            "enum": [
              "eoa",
              "multisig",
              "contract",
              "custodian",
              "exchange",
              "bank"
            ],
            "example": "eoa",
            "default": "eoa"
          },
          "network": {
            "type": "string",
            "example": "solana",
            "description": "Network identifier, e.g. solana, stellar, eth, usd"
          },
          "address": {
            "type": "string",
            "example": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG"
          },
          "category": {
            "type": "string",
            "example": "exchange"
          },
          "group_ids": {
            "example": [
              "uuid-1",
              "uuid-2"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "connection_id": {
            "type": "string",
            "example": "utila-123",
            "description": "Account connection holding this account"
          },
          "connection_object_id": {
            "type": "string",
            "example": "vaults/abc/wallets/xyz",
            "description": "External object ID (e.g., wallet) from the connection provider"
          },
          "notes": {
            "type": "string",
            "example": "Primary treasury wallet"
          },
          "role": {
            "type": "string",
            "example": "Treasury"
          },
          "balances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountBalance"
            }
          }
        },
        "required": [
          "balances"
        ]
      },
      "AccountOperationDto": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "add",
              "remove",
              "update"
            ],
            "example": "add"
          },
          "account": {
            "$ref": "#/components/schemas/AccountDataDto"
          }
        },
        "required": [
          "action",
          "account"
        ]
      },
      "UpdateAccountsDto": {
        "type": "object",
        "properties": {
          "operations": {
            "minItems": 1,
            "maxItems": 1000,
            "example": [
              {
                "action": "add",
                "account": {
                  "name": "Treasury wallet",
                  "network": "solana",
                  "address": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG",
                  "category": "Multisig",
                  "group_ids": [
                    "uuid-1"
                  ]
                }
              },
              {
                "action": "remove",
                "account": {
                  "network": "stellar",
                  "address": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"
                }
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountOperationDto"
            }
          }
        },
        "required": [
          "operations"
        ]
      },
      "UpdateAccountsResponseDto": {
        "type": "object",
        "properties": {
          "acknowledged": {
            "type": "boolean",
            "example": true
          }
        },
        "required": [
          "acknowledged"
        ]
      },
      "WorkspaceGroupDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "workspace_id": {
            "type": "string",
            "nullable": true,
            "example": "workspace-123"
          },
          "name": {
            "type": "string",
            "example": "Finance"
          },
          "is_system": {
            "type": "boolean",
            "example": false
          },
          "created_at": {
            "type": "string",
            "example": "2025-01-01T00:00:00.000Z"
          },
          "updated_at": {
            "type": "string",
            "example": "2025-01-01T00:00:00.000Z"
          }
        },
        "required": [
          "id",
          "name",
          "is_system",
          "created_at",
          "updated_at"
        ]
      },
      "ListGroupsResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkspaceGroupDto"
            }
          }
        },
        "required": [
          "items"
        ]
      },
      "CreateGroupDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Finance"
          }
        },
        "required": [
          "name"
        ]
      },
      "UpdateGroupDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Finance"
          }
        },
        "required": [
          "name"
        ]
      },
      "CreatePlaidLinkTokenDto": {
        "type": "object",
        "properties": {
          "country_codes": {
            "description": "ISO 3166-1 alpha-2 country codes that scope which institutions Plaid Link shows (e.g. the country of the customer being onboarded). Must be a subset of the countries the Plaid account is approved for; defaults to all approved countries when omitted.",
            "example": [
              "GB"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CreateAccountConnectionUtilaCredentialsDto": {
        "type": "object",
        "properties": {
          "service_account_email": {
            "type": "string"
          }
        },
        "required": [
          "service_account_email"
        ]
      },
      "CreateAccountConnectionKrakenCredentialsDto": {
        "type": "object",
        "properties": {
          "api_key": {
            "type": "string"
          },
          "api_secret": {
            "type": "string"
          }
        },
        "required": [
          "api_key",
          "api_secret"
        ]
      },
      "CreateAccountConnectionPlaidCredentialsDto": {
        "type": "object",
        "properties": {
          "public_token": {
            "type": "string"
          }
        },
        "required": [
          "public_token"
        ]
      },
      "CreateAccountConnectionSquadsCredentialsDto": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          }
        },
        "required": [
          "address"
        ]
      },
      "CreateAccountConnectionCoinbaseCredentialsDto": {
        "type": "object",
        "properties": {
          "key_id": {
            "type": "string"
          },
          "private_key": {
            "type": "string"
          }
        },
        "required": [
          "key_id",
          "private_key"
        ]
      },
      "CreateAccountConnectionRealmsCredentialsDto": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          }
        },
        "required": [
          "address"
        ]
      },
      "CreateAccountConnectionSafeCredentialsDto": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "example": "0xAbCd...1234",
            "description": "EVM Safe address"
          },
          "network": {
            "type": "string",
            "enum": [
              "ethereum",
              "arbitrum",
              "base",
              "optimism",
              "polygon",
              "bnb"
            ],
            "example": "ethereum"
          }
        },
        "required": [
          "address",
          "network"
        ]
      },
      "CreateAccountConnectionWiseCredentialsDto": {
        "type": "object",
        "properties": {
          "api_token": {
            "type": "string"
          },
          "profile_id": {
            "type": "string"
          }
        },
        "required": [
          "api_token",
          "profile_id"
        ]
      },
      "CreateAccountConnectionHyperliquidCredentialsDto": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          }
        },
        "required": [
          "address"
        ]
      },
      "CreateAccountConnectionCubistCredentialsDto": {
        "type": "object",
        "properties": {
          "login_id": {
            "type": "string"
          },
          "refresh_token": {
            "type": "string"
          },
          "org_id": {
            "type": "string"
          },
          "environment": {
            "type": "object",
            "enum": [
              "gamma",
              "prod"
            ]
          }
        }
      },
      "CreateAccountConnectionAnchorageCredentialsDto": {
        "type": "object",
        "properties": {
          "api_access_key": {
            "type": "string"
          }
        },
        "required": [
          "api_access_key"
        ]
      },
      "CreateAccountConnectionPrivyCredentialsDto": {
        "type": "object",
        "properties": {
          "app_id": {
            "type": "string"
          },
          "app_secret": {
            "type": "string"
          }
        },
        "required": [
          "app_id",
          "app_secret"
        ]
      },
      "CreateAccountConnectionDfnsCredentialsDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Dfns service account token"
          },
          "base_url": {
            "type": "string",
            "example": "https://api.dfns.io",
            "description": "Dfns API host. Must be an official Dfns cluster: https://api.dfns.io (default) or https://api.uae.dfns.io for UAE-hosted orgs."
          }
        },
        "required": [
          "token"
        ]
      },
      "CreateAccountConnectionDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "utila",
              "kraken",
              "plaid",
              "squads",
              "coinbase",
              "realms",
              "wise",
              "safe",
              "hyperliquid",
              "cubist",
              "anchorage",
              "privy",
              "dfns"
            ]
          },
          "utila": {
            "$ref": "#/components/schemas/CreateAccountConnectionUtilaCredentialsDto"
          },
          "kraken": {
            "$ref": "#/components/schemas/CreateAccountConnectionKrakenCredentialsDto"
          },
          "plaid": {
            "$ref": "#/components/schemas/CreateAccountConnectionPlaidCredentialsDto"
          },
          "squads": {
            "$ref": "#/components/schemas/CreateAccountConnectionSquadsCredentialsDto"
          },
          "coinbase": {
            "$ref": "#/components/schemas/CreateAccountConnectionCoinbaseCredentialsDto"
          },
          "realms": {
            "$ref": "#/components/schemas/CreateAccountConnectionRealmsCredentialsDto"
          },
          "safe": {
            "$ref": "#/components/schemas/CreateAccountConnectionSafeCredentialsDto"
          },
          "wise": {
            "$ref": "#/components/schemas/CreateAccountConnectionWiseCredentialsDto"
          },
          "hyperliquid": {
            "$ref": "#/components/schemas/CreateAccountConnectionHyperliquidCredentialsDto"
          },
          "cubist": {
            "$ref": "#/components/schemas/CreateAccountConnectionCubistCredentialsDto"
          },
          "anchorage": {
            "$ref": "#/components/schemas/CreateAccountConnectionAnchorageCredentialsDto"
          },
          "privy": {
            "$ref": "#/components/schemas/CreateAccountConnectionPrivyCredentialsDto"
          },
          "dfns": {
            "$ref": "#/components/schemas/CreateAccountConnectionDfnsCredentialsDto"
          }
        },
        "required": [
          "name",
          "type"
        ]
      },
      "AccountConnectionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "conn_abc123"
          },
          "name": {
            "type": "string",
            "example": "My Utila Account"
          },
          "type": {
            "type": "string",
            "example": "utila",
            "enum": [
              "utila",
              "kraken",
              "plaid",
              "squads",
              "coinbase",
              "realms",
              "wise",
              "safe",
              "hyperliquid",
              "cubist",
              "anchorage",
              "privy",
              "dfns"
            ]
          },
          "public_data": {
            "type": "object",
            "description": "Non-sensitive public metadata",
            "additionalProperties": true,
            "example": {
              "public_key": "pk_abc123"
            }
          },
          "created_at": {
            "format": "date-time",
            "type": "string",
            "example": "2026-01-01T00:00:00.000Z"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string",
            "example": "2026-01-01T00:00:00.000Z"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "public_data",
          "created_at",
          "updated_at"
        ]
      },
      "SearchAccountConnectionsResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountConnectionDto"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CursorMetaDto"
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "TransferEventDto": {
        "type": "object",
        "properties": {
          "direction": {
            "type": "string",
            "enum": [
              "IN",
              "OUT",
              "SELF"
            ],
            "example": "IN"
          },
          "asset": {
            "type": "string",
            "nullable": true,
            "example": "USDC"
          },
          "amount": {
            "type": "string",
            "nullable": true,
            "example": "100.50",
            "description": "Quantity moved, in asset units."
          },
          "usd_amount": {
            "type": "string",
            "nullable": true,
            "example": "9.831",
            "description": "USD valuation at event time. Unsigned magnitude; direction conveys sign."
          },
          "source_address": {
            "type": "string",
            "nullable": true,
            "example": "0xabc..."
          },
          "destination_address": {
            "type": "string",
            "nullable": true,
            "example": "0xdef..."
          }
        },
        "required": [
          "direction"
        ]
      },
      "TradeEventDto": {
        "type": "object",
        "properties": {
          "side": {
            "type": "string",
            "enum": [
              "BUY",
              "SELL"
            ],
            "example": "BUY"
          },
          "base_asset": {
            "type": "string",
            "nullable": true,
            "example": "BTC"
          },
          "base_amount": {
            "type": "string",
            "nullable": true,
            "example": "0.01"
          },
          "quote_asset": {
            "type": "string",
            "nullable": true,
            "example": "USDC"
          },
          "quote_amount": {
            "type": "string",
            "nullable": true,
            "example": "500.0",
            "description": "Notional in quote asset units (price × base amount)."
          },
          "price": {
            "type": "string",
            "nullable": true,
            "example": "50000.0"
          },
          "fee": {
            "type": "string",
            "nullable": true,
            "example": "0.45"
          },
          "fee_asset": {
            "type": "string",
            "nullable": true,
            "example": "USDC",
            "description": "Asset the fee was charged in, when known."
          },
          "realized_pnl": {
            "type": "string",
            "nullable": true,
            "example": "25.11",
            "description": "Realised PnL for a position-closing fill (perps). Null/absent for opens and spot."
          },
          "liquidation": {
            "type": "boolean",
            "example": false,
            "description": "True when the fill was a forced liquidation rather than a user-initiated trade."
          }
        },
        "required": [
          "side"
        ]
      },
      "CanonicalConnectionTransactionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "0x9a3f...",
            "description": "Provider-native unique identifier for this event."
          },
          "account_id": {
            "type": "string",
            "example": "acc_abc123",
            "description": "Account (in this API) the event belongs to."
          },
          "provider": {
            "type": "object",
            "example": "hyperliquid",
            "description": "Connection provider that produced this event."
          },
          "kind": {
            "type": "string",
            "enum": [
              "TRANSFER",
              "TRADE"
            ],
            "example": "TRADE",
            "description": "Discriminator: which event-specific payload is populated."
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "CONFIRMED",
              "FAILED"
            ],
            "example": "CONFIRMED"
          },
          "timestamp": {
            "type": "string",
            "nullable": true,
            "example": "2026-01-15T10:00:00.000Z",
            "description": "Canonical event time (ISO 8601)."
          },
          "hash": {
            "type": "string",
            "nullable": true,
            "example": "0xabc..."
          },
          "network": {
            "type": "string",
            "nullable": true,
            "example": "networks/ethereum-mainnet"
          },
          "block_number": {
            "type": "string",
            "nullable": true,
            "example": "21000000"
          },
          "transfers": {
            "nullable": true,
            "description": "Value movement legs. Populated when kind === 'TRANSFER' (may be empty when the provider has not parsed the underlying transfers yet).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransferEventDto"
            }
          },
          "trade": {
            "nullable": true,
            "description": "Populated when kind === 'TRADE'.",
            "type": "object",
            "allOf": [
              {
                "$ref": "#/components/schemas/TradeEventDto"
              }
            ]
          },
          "raw": {
            "type": "object",
            "additionalProperties": true,
            "example": {},
            "description": "Provider-native fields that are not part of the canonical shape (escape hatch; never relied upon by consumers)."
          }
        },
        "required": [
          "id",
          "account_id",
          "provider",
          "kind",
          "status",
          "raw"
        ]
      },
      "SearchWorkspaceConnectionTransactionsResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CanonicalConnectionTransactionDto"
            }
          }
        },
        "required": [
          "items"
        ]
      },
      "SearchConnectionTransactionsResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CanonicalConnectionTransactionDto"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CursorMetaDto"
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "UpdateAccountConnectionDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "My Kraken Trading Account"
          }
        },
        "required": [
          "name"
        ]
      },
      "CubistLoginStartDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": "alice@example.com"
          },
          "password": {
            "type": "string"
          },
          "org_id": {
            "type": "string",
            "example": "Org#4d021518-db7d-4b16-8fea-fb7c59e100cb"
          },
          "environment": {
            "type": "string",
            "enum": [
              "gamma",
              "prod"
            ],
            "example": "gamma"
          }
        },
        "required": [
          "email",
          "password",
          "org_id",
          "environment"
        ]
      },
      "CubistLoginStatusResponseDto": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "mfa_required",
              "complete",
              "expired"
            ]
          },
          "login_id": {
            "type": "string"
          },
          "mfa_types": {
            "description": "MFA types required (e.g. Totp, Fido)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "refresh_token": {
            "type": "string",
            "description": "Present when status is complete; use for connection create or direct bootstrap"
          },
          "expiration": {
            "type": "number"
          }
        },
        "required": [
          "status"
        ]
      },
      "CubistLoginTotpDto": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 6,
            "maxLength": 8,
            "example": "482913"
          }
        },
        "required": [
          "code"
        ]
      },
      "CubistLoginFidoInitResponseDto": {
        "type": "object",
        "properties": {
          "options": {
            "type": "object",
            "additionalProperties": true
          },
          "challenge_id": {
            "type": "string"
          }
        },
        "required": [
          "options",
          "challenge_id"
        ]
      },
      "CubistLoginFidoCompleteDto": {
        "type": "object",
        "properties": {
          "assertion": {
            "type": "object",
            "description": "WebAuthn assertion payload from navigator.credentials.get",
            "additionalProperties": true
          }
        },
        "required": [
          "assertion"
        ]
      },
      "HumanizeTransactionDto": {
        "type": "object",
        "properties": {
          "hash": {
            "type": "string",
            "description": "Transaction hash",
            "example": "5UfDuX..."
          },
          "network": {
            "type": "string",
            "description": "Blockchain network identifier",
            "example": "solana"
          }
        },
        "required": [
          "hash",
          "network"
        ]
      },
      "HumanizeTransactionResponseDto": {
        "type": "object",
        "properties": {
          "output": {
            "type": "object",
            "description": "Prompt-defined output (JSON object or string), passed through untouched."
          },
          "model": {
            "type": "string",
            "description": "Model that produced the output."
          },
          "trace_id": {
            "type": "string",
            "description": "Upstream trace identifier (observability handle)."
          },
          "latency_ms": {
            "type": "number",
            "description": "Upstream latency in milliseconds."
          }
        },
        "required": [
          "output",
          "model",
          "trace_id",
          "latency_ms"
        ]
      },
      "TransactionTransferDto": {
        "type": "object",
        "properties": {
          "sender": {
            "description": "Information about the sender of the transfer",
            "example": {
              "address": "AuZrspySopxfZUiXY6YxDyfS211KvXLe197kj3M2cLpq",
              "network": "solana",
              "label": "Scammer",
              "malicious": true,
              "icon_urls": [
                "https://example.com/solana.png"
              ],
              "token": {
                "amount": 27.18,
                "symbol": "USDC",
                "usd": 27.24,
                "icon_url": "https://example.com/usdc.png"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountDto"
              }
            ]
          },
          "receiver": {
            "description": "Information about the receiver of the transfer",
            "example": {
              "address": "noble14h2xp3fcfsgwmr24wrurfpv5t0chaal238k9wq",
              "network": "noble-1",
              "icon_urls": [
                "https://example.com/noble.png"
              ],
              "token": {
                "amount": 27.18,
                "symbol": "USDC",
                "usd": 27.24,
                "icon_url": "https://example.com/usdc.png"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountDto"
              }
            ]
          }
        },
        "required": [
          "sender",
          "receiver"
        ]
      },
      "TransactionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "3891709-0"
          },
          "time": {
            "type": "string",
            "example": "2024-05-08T13:05:57.779Z"
          },
          "height": {
            "type": "string",
            "example": "3891709"
          },
          "hash": {
            "type": "string",
            "example": "8c288a1b3006b4c129af06c7603a6bb624a482d5dc1b7b4cf3791cb84ade3554"
          },
          "success": {
            "type": "boolean",
            "example": true
          },
          "types": {
            "example": [
              "MsgSend",
              "MsgDelegate"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "signers": {
            "example": [
              "cosmos1z6rh9mu9qggl2mugavyfu8h5td92d9y92r9ttc"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "transfers": {
            "description": "Information about the sender of the transfer",
            "example": {
              "address": "AuZrspySopxfZUiXY6YxDyfS211KvXLe197kj3M2cLpq",
              "network": "solana",
              "label": "Scammer",
              "malicious": true,
              "icon_urls": [
                "https://example.com/solana.png"
              ],
              "token": {
                "amount": 27.18,
                "symbol": "USDC",
                "usd": 27.24,
                "icon_url": "https://example.com/usdc.png"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionTransferDto"
              }
            ]
          }
        },
        "required": [
          "id",
          "time",
          "height",
          "hash",
          "success",
          "types",
          "signers",
          "transfers"
        ]
      },
      "SearchTransactionsResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionDto"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CursorMetaDto"
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "EntityDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "dao-alpha"
          },
          "name": {
            "type": "string",
            "example": "DAO Alpha"
          },
          "icon_url": {
            "type": "string",
            "example": "https://cdn.example.com/icons/dao-alpha.png"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "BalanceDto": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "string",
            "example": "5000000000"
          },
          "denom": {
            "type": "string",
            "example": "SOL"
          }
        },
        "required": [
          "amount",
          "denom"
        ]
      },
      "AddressDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "solana:9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
            "description": "Record id"
          },
          "address": {
            "type": "string",
            "example": "9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",
            "description": "Address"
          },
          "network": {
            "type": "string",
            "example": "solana",
            "description": "Blockchain network identifier (e.g. solana, stellar)"
          },
          "type": {
            "type": "string",
            "enum": [
              "account",
              "validator",
              "contract",
              "module",
              "multisig"
            ],
            "example": "multisig"
          },
          "status": {
            "type": "array",
            "example": [
              "blacklisted"
            ],
            "items": {
              "type": "string",
              "enum": [
                "malicious",
                "blacklisted",
                "sanctioned"
              ]
            }
          },
          "label": {
            "type": "string",
            "example": "Treasury Multisig"
          },
          "entity": {
            "type": "string",
            "example": "DAO Alpha"
          },
          "blocked_by": {
            "example": [
              {
                "id": "dao-alpha",
                "name": "DAO Alpha",
                "icon_url": "https://cdn.example.com/icons/dao-alpha.png"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDto"
            }
          },
          "tags": {
            "example": [
              "DAO",
              "Squads v3 Multisig"
            ],
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "balances": {
            "example": [
              {
                "denom": "SOL",
                "amount": "5000000000"
              }
            ],
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceDto"
            }
          },
          "last_active_at": {
            "type": "string",
            "example": "2025-08-20T12:34:56.000Z"
          }
        },
        "required": [
          "id",
          "address",
          "network",
          "type",
          "status",
          "label",
          "entity",
          "blocked_by",
          "tags",
          "balances",
          "last_active_at"
        ]
      },
      "AddressIndexResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressDto"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CursorMetaDto"
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "AddressEntryDto": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 1,
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "Blockchain address"
          },
          "network": {
            "type": "string",
            "minLength": 1,
            "example": "solana",
            "description": "Blockchain network identifier"
          }
        },
        "required": [
          "address",
          "network"
        ]
      },
      "PostAddressListDto": {
        "type": "object",
        "properties": {
          "addresses": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressEntryDto"
            }
          }
        },
        "required": [
          "addresses"
        ]
      },
      "PostAddressListResponseDto": {
        "type": "object",
        "properties": {
          "hash": {
            "type": "string",
            "example": "a3f1b2c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2",
            "description": "Stable SHA-256 hash identifying this address list"
          }
        },
        "required": [
          "hash"
        ]
      },
      "AssetBalanceDto": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string",
            "example": "uatom",
            "description": "Asset symbol / denom"
          },
          "amount": {
            "type": "number",
            "example": 1000000,
            "description": "Available balance (raw units)"
          },
          "usd": {
            "type": "number",
            "example": 12.5,
            "description": "USD value"
          }
        },
        "required": [
          "symbol",
          "amount"
        ]
      },
      "AddressBalanceDto": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "example": "cosmos1abc..."
          },
          "network": {
            "type": "string",
            "example": "cosmoshub-4"
          },
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetBalanceDto"
            }
          },
          "updated_at": {
            "type": "string",
            "example": "2024-01-01T00:00:00.000Z",
            "description": "When these balances were last refreshed. Omitted when never refreshed."
          }
        },
        "required": [
          "address",
          "network",
          "assets"
        ]
      },
      "AddressListBalancesResponseDto": {
        "type": "object",
        "properties": {
          "balances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressBalanceDto"
            }
          }
        },
        "required": [
          "balances"
        ]
      },
      "PostAddressLastActivityDto": {
        "type": "object",
        "properties": {
          "addresses": {
            "minItems": 1,
            "maxItems": 50,
            "example": [
              "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
              "GsbwXfJraMomNxBcjYLcG3mxkBUiyWXAB32fGbSMQRdW"
            ],
            "description": "Blockchain addresses to look up. Between 1 and 50 items.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "addresses"
        ]
      },
      "AddressLastActivityResultDto": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "example": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "description": "The queried blockchain address."
          },
          "status": {
            "type": "string",
            "enum": [
              "ok",
              "unsupported",
              "unavailable"
            ],
            "description": "\"ok\" — lookup succeeded; \"unsupported\" — network not supported; \"unavailable\" — data source error."
          },
          "last_active_at": {
            "type": "string",
            "nullable": true,
            "example": "2024-06-15T12:34:56.789Z",
            "description": "ISO 8601 timestamp of the last on-chain transaction, or null if the address has no recorded activity."
          }
        },
        "required": [
          "address",
          "status",
          "last_active_at"
        ]
      },
      "AddressLastActivityResponseDto": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressLastActivityResultDto"
            }
          }
        },
        "required": [
          "results"
        ]
      },
      "EntityIndexResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDto"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CursorMetaDto"
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "Address": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          },
          "is_validator": {
            "type": "boolean"
          },
          "malicious": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "network": {
            "type": "string"
          },
          "tags_source": {
            "type": "string"
          },
          "tags": {
            "type": "object"
          },
          "type": {
            "type": "object"
          }
        },
        "required": [
          "address",
          "is_validator",
          "malicious",
          "name",
          "network",
          "type"
        ]
      },
      "AddressDetails": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          },
          "network": {
            "type": "string"
          },
          "ecosystem": {
            "type": "string"
          },
          "name_tag": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "address_role": {
            "type": "string"
          },
          "entity": {
            "type": "string"
          },
          "attributes": {
            "type": "object"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "entity_icon_url": {
            "type": "string"
          },
          "malicious": {
            "type": "boolean"
          },
          "is_validator": {
            "type": "boolean"
          }
        },
        "required": [
          "address",
          "network",
          "ecosystem",
          "malicious",
          "is_validator"
        ]
      },
      "AddressConnection": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          },
          "network": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "malicous": {
            "type": "boolean"
          },
          "tags": {
            "type": "object"
          },
          "is_validator": {
            "type": "boolean"
          },
          "total_payments": {
            "type": "number"
          },
          "payment_counts": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "earliest_payment": {
            "type": "string"
          },
          "latest_payment": {
            "type": "string"
          },
          "last_transaction": {
            "type": "object",
            "properties": {
              "time": {
                "type": "string"
              },
              "amount": {
                "type": "string"
              },
              "denom": {
                "type": "string"
              }
            },
            "required": [
              "time",
              "amount",
              "denom"
            ]
          },
          "is_sender": {
            "type": "boolean"
          },
          "is_receiver": {
            "type": "boolean"
          }
        },
        "required": [
          "address",
          "network",
          "name",
          "type",
          "malicous",
          "tags",
          "is_validator",
          "total_payments",
          "payment_counts",
          "earliest_payment",
          "latest_payment",
          "last_transaction",
          "is_sender",
          "is_receiver"
        ]
      },
      "AddressStats": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          },
          "network": {
            "type": "string"
          },
          "earliest_tx": {
            "type": "string"
          },
          "latest_tx": {
            "type": "string"
          }
        },
        "required": [
          "address",
          "network",
          "earliest_tx",
          "latest_tx"
        ]
      },
      "Transaction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "version": {
            "type": "number"
          },
          "network": {
            "type": "string"
          },
          "height": {
            "type": "string"
          },
          "index": {
            "type": "number"
          },
          "timestamp": {
            "type": "string"
          },
          "hash": {
            "type": "string"
          },
          "sender": {
            "type": "string"
          },
          "message_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "addresses": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "success": {
            "type": "boolean"
          },
          "gas": {
            "type": "object",
            "properties": {
              "wanted": {
                "type": "number"
              },
              "used": {
                "type": "number"
              }
            },
            "required": [
              "wanted",
              "used"
            ]
          },
          "fees": {
            "type": "object",
            "properties": {
              "amount": {
                "type": "string"
              },
              "denom": {
                "type": "string"
              }
            },
            "required": [
              "amount",
              "denom"
            ]
          },
          "amounts": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "memo": {
            "type": "string"
          },
          "signers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "version",
          "network",
          "height",
          "index",
          "timestamp",
          "hash",
          "sender",
          "message_types",
          "addresses",
          "success",
          "gas",
          "fees",
          "amounts",
          "memo",
          "signers",
          "messages"
        ]
      },
      "TransactionsInfo": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number"
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Transaction"
            }
          }
        },
        "required": [
          "total",
          "transactions"
        ]
      },
      "TxnCount": {
        "type": "object",
        "properties": {
          "count": {
            "type": "number"
          },
          "timestamp": {
            "type": "string"
          }
        },
        "required": [
          "count",
          "timestamp"
        ]
      },
      "TxnCounts": {
        "type": "object",
        "properties": {
          "transactionsCount": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TxnCount"
            }
          }
        },
        "required": [
          "transactionsCount"
        ]
      },
      "Payment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "time": {
            "type": "string"
          },
          "denom": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "sender_tx_hash": {
            "type": "string"
          },
          "sender_entity": {
            "type": "string"
          },
          "sender_height": {
            "type": "string"
          },
          "sender_network": {
            "type": "string"
          },
          "sender_address_id": {
            "type": "string"
          },
          "sender_address_details": {
            "$ref": "#/components/schemas/AddressDetails"
          },
          "receiver_address_details": {
            "$ref": "#/components/schemas/AddressDetails"
          }
        },
        "required": [
          "id",
          "time",
          "denom",
          "amount",
          "sender_tx_hash",
          "sender_entity",
          "sender_height",
          "sender_network",
          "sender_address_id"
        ]
      },
      "PaymentsInfo": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number"
          },
          "payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Payment"
            }
          }
        },
        "required": [
          "total",
          "payments"
        ]
      },
      "AddressTxCount": {
        "type": "object",
        "properties": {}
      },
      "Balance": {
        "type": "object",
        "properties": {
          "denom": {
            "type": "string"
          },
          "net_balance_change": {
            "type": "number"
          },
          "date": {
            "type": "string"
          },
          "total_received": {
            "type": "number"
          },
          "total_sent": {
            "type": "number"
          }
        },
        "required": [
          "denom",
          "net_balance_change",
          "date",
          "total_received",
          "total_sent"
        ]
      },
      "BalancesInfo": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number"
          },
          "balances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Balance"
            }
          }
        },
        "required": [
          "total",
          "balances"
        ]
      },
      "MsgType": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "count": {
            "type": "number"
          }
        },
        "required": [
          "type",
          "count"
        ]
      },
      "MsgTypesInfo": {
        "type": "object",
        "properties": {
          "total": {
            "type": "number"
          },
          "msg_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MsgType"
            }
          }
        },
        "required": [
          "total",
          "msg_types"
        ]
      },
      "TxCounts": {
        "type": "object",
        "properties": {}
      },
      "TransactionSearchResult": {
        "type": "object",
        "properties": {
          "hash": {
            "type": "string"
          },
          "height": {
            "type": "string"
          },
          "network": {
            "type": "string"
          },
          "time": {
            "type": "string"
          }
        },
        "required": [
          "hash",
          "height",
          "network",
          "time"
        ]
      },
      "TransactionSearchResults": {
        "type": "object",
        "properties": {
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionSearchResult"
            }
          }
        },
        "required": [
          "transactions"
        ]
      },
      "AddressParamDTO": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Key for the address parameter"
          },
          "value": {
            "type": "string",
            "description": "Value for the address parameter"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "ScrollIdDTO": {
        "type": "object",
        "properties": {
          "scrollId": {
            "type": "string",
            "description": "Scroll ID for pagination (only when useScroll=true)"
          }
        }
      },
      "NetworkPaymentsResponseDTO": {
        "type": "object",
        "properties": {
          "scrollId": {
            "type": "string",
            "description": "Scroll ID for pagination (only when useScroll=true)"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more results available (only when useScroll=true)"
          },
          "payments": {
            "type": "array",
            "description": "Array of payment objects",
            "items": {
              "type": "object"
            }
          },
          "count": {
            "type": "number",
            "description": "Total count of payments (only in initial request or traditional pagination)"
          }
        },
        "required": [
          "payments"
        ]
      },
      "TransactionsResponseDTO": {
        "type": "object",
        "properties": {
          "scrollId": {
            "type": "string",
            "description": "Scroll ID for pagination (only when useScroll=true)"
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether there are more results available (only when useScroll=true)"
          },
          "transactions": {
            "type": "array",
            "description": "Array of transactions",
            "items": {
              "type": "object"
            }
          },
          "count": {
            "type": "number",
            "description": "Total count of transactions"
          }
        },
        "required": [
          "transactions"
        ]
      },
      "TransferDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "9359/AX/2352"
          },
          "time": {
            "type": "string",
            "example": "2024-05-08T13:05:57.779Z"
          },
          "status": {
            "enum": [
              "SUCCEEDED",
              "PENDING",
              "ERROR_ON_DESTINATION",
              "TIMEOUT"
            ],
            "type": "string",
            "example": "SUCCEEDED",
            "description": "Current status of the transfer"
          },
          "type": {
            "type": "string",
            "example": "cctp",
            "description": "Type of transfer (e.g., ibc, cctp, etc.)"
          },
          "sender": {
            "description": "Information about the sender of the transfer",
            "example": {
              "address": "AuZrspySopxfZUiXY6YxDyfS211KvXLe197kj3M2cLpq",
              "network": "solana",
              "label": "Scammer",
              "malicious": true,
              "icon_urls": [
                "https://example.com/solana.png"
              ],
              "token": {
                "amount": 27.18,
                "symbol": "USDC",
                "usd": 27.24,
                "icon_url": "https://example.com/usdc.png"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountDto"
              }
            ]
          },
          "receiver": {
            "description": "Information about the receiver of the transfer",
            "example": {
              "address": "noble14h2xp3fcfsgwmr24wrurfpv5t0chaal238k9wq",
              "network": "noble-1",
              "icon_urls": [
                "https://example.com/noble.png"
              ],
              "token": {
                "amount": 27.18,
                "symbol": "USDC",
                "usd": 27.24,
                "icon_url": "https://example.com/usdc.png"
              }
            },
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountDto"
              }
            ]
          },
          "sender_tx_hash": {
            "type": "string",
            "example": "76b9922b6c8968d328e56930b4bbe26665d2ed12f2bdff45b2e9a43b09f5ab9c"
          },
          "receiver_tx_hash": {
            "type": "string",
            "example": "e607dba4c1e138dabb1d534ba0e14645786ca892907563c388d7de7f65ba7bb3"
          },
          "note": {
            "type": "string",
            "description": "Workspace note for this transfer"
          },
          "category": {
            "type": "string",
            "description": "Workspace category for this transfer"
          }
        },
        "required": [
          "id",
          "time",
          "status",
          "type",
          "sender",
          "receiver"
        ]
      },
      "SearchTransfersResponseDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransferDto"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CursorMetaDto"
          }
        },
        "required": [
          "items",
          "meta"
        ]
      },
      "NetworkCountDto": {
        "type": "object",
        "properties": {
          "network": {
            "type": "string",
            "example": "ethereum"
          },
          "count": {
            "type": "number",
            "example": 42000
          }
        },
        "required": [
          "network",
          "count"
        ]
      },
      "TopNetworksResponseDto": {
        "type": "object",
        "properties": {
          "sender_networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkCountDto"
            }
          },
          "receiver_networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkCountDto"
            }
          }
        },
        "required": [
          "sender_networks",
          "receiver_networks"
        ]
      },
      "AssetCountDto": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "example": "USDC"
          },
          "count": {
            "type": "number",
            "example": 18500
          }
        },
        "required": [
          "token",
          "count"
        ]
      },
      "TopAssetsResponseDto": {
        "type": "object",
        "properties": {
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetCountDto"
            }
          }
        },
        "required": [
          "assets"
        ]
      },
      "ProtocolStatsDto": {
        "type": "object",
        "properties": {
          "beginTimestamp": {
            "type": "string",
            "description": "Start timestamp for the query range",
            "example": "2024-04-09T00:00:00Z"
          },
          "endTimestamp": {
            "type": "string",
            "description": "End timestamp for the query range",
            "example": "2024-04-10T00:00:00Z"
          },
          "protocol": {
            "type": "string",
            "description": "Protocol name to filter by",
            "example": "interchain_payments"
          }
        },
        "required": [
          "beginTimestamp",
          "endTimestamp",
          "protocol"
        ]
      },
      "DenomSumDto": {
        "type": "object",
        "properties": {
          "denom": {
            "type": "string",
            "description": "Denomination name",
            "example": "uatom"
          },
          "total": {
            "type": "number",
            "description": "Total amount for this denomination",
            "example": 1000.5
          },
          "totalUsd": {
            "type": "number",
            "description": "Total amount for this denomination in USD",
            "example": 1000.5
          }
        },
        "required": [
          "denom",
          "total",
          "totalUsd"
        ]
      },
      "TimeRangeDto": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Start timestamp",
            "example": "2024-04-09T00:00:00Z"
          },
          "end": {
            "type": "string",
            "description": "End timestamp",
            "example": "2024-04-10T00:00:00Z"
          }
        },
        "required": [
          "start",
          "end"
        ]
      },
      "ProtocolStatsResponseDto": {
        "type": "object",
        "properties": {
          "totalTransactions": {
            "type": "number",
            "description": "Total number of transactions",
            "example": 1234
          },
          "totalUsd": {
            "type": "number",
            "description": "Total amount for all denominations in USD",
            "example": 1000.5
          },
          "denomSums": {
            "description": "Sum of amounts for each denomination",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DenomSumDto"
            }
          },
          "timeRange": {
            "description": "Time range of the query",
            "allOf": [
              {
                "$ref": "#/components/schemas/TimeRangeDto"
              }
            ]
          },
          "protocol": {
            "type": "string",
            "description": "Protocol name",
            "example": "interchain_payments"
          }
        },
        "required": [
          "totalTransactions",
          "totalUsd",
          "denomSums",
          "timeRange",
          "protocol"
        ]
      },
      "ConnectionsByAddressResponseDto": {
        "type": "object",
        "properties": {
          "nodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressConnection"
            }
          }
        },
        "required": [
          "nodes"
        ]
      },
      "TokenSupplyResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token name"
          },
          "network": {
            "type": "string",
            "description": "Network name"
          },
          "symbol": {
            "type": "string",
            "description": "Token ticker symbol"
          },
          "name": {
            "type": "string",
            "description": "Token name"
          },
          "total_supply": {
            "type": "number",
            "description": "Total supply with decimals applied"
          },
          "total_supply_raw": {
            "type": "string",
            "description": "Raw total supply as integer string"
          },
          "decimals": {
            "type": "number",
            "description": "Number of decimal places"
          }
        },
        "required": [
          "token",
          "network",
          "total_supply",
          "total_supply_raw"
        ]
      },
      "TokenMintBurnEvent": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "mint",
              "burn"
            ]
          },
          "amount_raw": {
            "type": "string",
            "description": "Raw integer amount (no decimals applied)"
          },
          "amount": {
            "type": "number",
            "description": "Human-readable amount (decimals applied where known)"
          },
          "tx_hash": {
            "type": "string",
            "description": "Transaction hash (EVM) or signature (Solana)"
          },
          "block_number": {
            "type": "number",
            "description": "EVM block number"
          },
          "slot": {
            "type": "number",
            "description": "Solana slot"
          },
          "timestamp": {
            "type": "number",
            "description": "Unix timestamp (seconds)"
          },
          "account": {
            "type": "string",
            "description": "Token account involved (recipient for mints, sender for burns)"
          }
        },
        "required": [
          "type",
          "amount_raw",
          "amount",
          "tx_hash"
        ]
      },
      "TokenMintBurnResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "Token contract or mint address"
          },
          "network": {
            "type": "string",
            "description": "Network name"
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenMintBurnEvent"
            }
          },
          "next_cursor": {
            "type": "string",
            "description": "Cursor to pass as cursor for the next page"
          }
        },
        "required": [
          "token",
          "network",
          "events"
        ]
      },
      "TokenHolder": {
        "type": "object",
        "properties": {
          "rank": {
            "type": "number"
          },
          "address": {
            "type": "string"
          },
          "balance": {
            "type": "number"
          },
          "pct_of_supply": {
            "type": "number"
          },
          "name_tag": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "entity": {
            "type": "string",
            "nullable": true
          },
          "is_contract": {
            "type": "boolean"
          },
          "is_multisig": {
            "type": "boolean"
          },
          "num_sends": {
            "type": "number"
          },
          "num_receives": {
            "type": "number"
          },
          "unique_senders": {
            "type": "number"
          },
          "unique_receivers": {
            "type": "number"
          },
          "address_role": {
            "type": "string",
            "nullable": true
          },
          "malicious": {
            "type": "boolean",
            "nullable": true
          }
        },
        "required": [
          "rank",
          "address",
          "balance",
          "pct_of_supply",
          "is_contract",
          "is_multisig"
        ]
      },
      "TokenTopHoldersResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "network": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TokenHolder"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/CursorMetaDto"
          }
        },
        "required": [
          "token",
          "network",
          "items",
          "meta"
        ]
      },
      "TokenSummary": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "chain": {
            "type": "string"
          },
          "nonce": {
            "type": "number"
          },
          "total_supply": {
            "type": "string"
          },
          "total_supply_usd": {
            "type": "number"
          },
          "circulating_supply": {
            "type": "string"
          },
          "circulating_supply_usd": {
            "type": "number"
          },
          "holders": {
            "type": "number"
          },
          "timestamp": {
            "type": "string"
          }
        }
      }
    }
  },
  "security": [
    {
      "Authorization": []
    }
  ]
}