{"openapi":"3.0.0","paths":{"/health":{"get":{"operationId":"HealthController_healthCheck","parameters":[],"responses":{"200":{"description":"The Health Check is successful","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"info":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"error":{"type":"object","example":{},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"details":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true}}}}}}},"503":{"description":"The Health Check is not successful","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"error"},"info":{"type":"object","example":{"database":{"status":"up"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"error":{"type":"object","example":{"redis":{"status":"down","message":"Could not connect"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true},"nullable":true},"details":{"type":"object","example":{"database":{"status":"up"},"redis":{"status":"down","message":"Could not connect"}},"additionalProperties":{"type":"object","required":["status"],"properties":{"status":{"type":"string"}},"additionalProperties":true}}}}}}}},"tags":["Health"]}},"/kcc20/build/deploy":{"post":{"operationId":"PublicKcc20DeployBuildController_buildDeploy","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildDeployTokenDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedWalletPayloadDto"}}}}},"summary":"Build an unsigned public KCC20 Token V1 deploy payload.","tags":["public-kcc20-build"]}},"/metadata/{covenantId}":{"get":{"operationId":"TokenMetadataController_getByCovenantId","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"example":"abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenMetadataResponseDto"}}}}},"summary":"Get app-owned KCC20 metadata by covenant ID.","tags":["metadata"]}},"/tokens":{"get":{"operationId":"TokensController_getTokens","parameters":[{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20TokenDetailDto"}}}}}},"summary":"Get public KCC20 token catalog rows.","tags":["tokens"]}},"/tokens/mints":{"get":{"operationId":"TokensController_getMintDiscovery","parameters":[{"name":"mintMode","required":false,"in":"query","schema":{"enum":["publicMint","controlledMint","fixedSupply","any"],"type":"string"}},{"name":"mintStatus","required":false,"in":"query","description":"Filter mint discovery by current availability. paused means supply remains but public minting is owner-paused.","schema":{"enum":["live","paused","ended","all"],"type":"string"}},{"name":"wrapperStatus","required":false,"in":"query","schema":{"enum":["active","missing","any"],"type":"string"}},{"name":"from","required":false,"in":"query","description":"Inclusive ISO-8601 token creation/deploy time lower bound. Applies to sortBy=createdAtMs and regular mint discovery filters.","schema":{"type":"string"}},{"name":"to","required":false,"in":"query","description":"Inclusive ISO-8601 token creation/deploy time upper bound. Applies to sortBy=createdAtMs and regular mint discovery filters.","schema":{"type":"string"}},{"name":"mintVelocityWindow","required":false,"in":"query","description":"Window used when sorting by mintVelocityAmount or mintVelocityPercentBps.","schema":{"default":"24h","type":"string","enum":["1h","6h","12h","24h"]}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}},{"name":"sortBy","required":false,"in":"query","schema":{"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20MintDiscoveryResponseDto"}}}}},"summary":"Get public KCC20 mint discovery rows.","tags":["tokens"]}},"/tokens/mints/v2":{"get":{"operationId":"TokensController_getMintDiscoveryV2","parameters":[{"name":"mintMode","required":false,"in":"query","schema":{"enum":["publicMint","controlledMint","fixedSupply","any"],"type":"string"}},{"name":"mintStatus","required":false,"in":"query","description":"Filter mint discovery by current availability. paused means supply remains but public minting is owner-paused.","schema":{"enum":["live","paused","ended","all"],"type":"string"}},{"name":"wrapperStatus","required":false,"in":"query","schema":{"enum":["active","missing","any"],"type":"string"}},{"name":"from","required":false,"in":"query","description":"Inclusive ISO-8601 token creation/deploy time lower bound. Applies to sortBy=createdAtMs and regular mint discovery filters.","schema":{"type":"string"}},{"name":"to","required":false,"in":"query","description":"Inclusive ISO-8601 token creation/deploy time upper bound. Applies to sortBy=createdAtMs and regular mint discovery filters.","schema":{"type":"string"}},{"name":"mintVelocityWindow","required":false,"in":"query","description":"Window used when sorting by mintVelocityAmount or mintVelocityPercentBps.","schema":{"default":"24h","type":"string","enum":["1h","6h","12h","24h"]}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}},{"name":"sortBy","required":false,"in":"query","schema":{"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20MintDiscoveryV2ResponseDto"}}}}},"summary":"Get lean public KCC20 mint discovery rows.","tags":["tokens"]}},"/tokens/owners/{ownerIdentifier}/deployed":{"get":{"operationId":"TokensController_getDeployedTokens","parameters":[{"name":"ownerIdentifier","required":true,"in":"path","description":"KCC20 owner identifier from indexed KCC20 Token V1 state.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}},{"name":"sortBy","required":false,"in":"query","schema":{"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20DeployedTokensResponseDto"}}}}},"summary":"Get KCC20 tokens deployed or administered by one owner.","tags":["tokens"]}},"/tokens/{covenantId}/page-data":{"get":{"operationId":"TokensController_getTokenPageData","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20TokenPageDataDto"}}}}},"summary":"Get one consolidated KCC20 token page response for frontend pages.","tags":["tokens"]}},"/tokens/{covenantId}/identity":{"get":{"operationId":"TokensController_getTokenIdentity","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20TokenIdentityDto"}}}}},"summary":"Get lightweight KCC20 token identity for page shells.","tags":["tokens"]}},"/tokens/{covenantId}/trading-summary":{"get":{"operationId":"TokensController_getTokenTradingSummary","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20TokenTradingSummaryDto"}}}}},"summary":"Get lightweight KCC20 token wrapper and market summary.","tags":["tokens"]}},"/tokens/{covenantId}/page-actions":{"get":{"operationId":"TokensController_getTokenPageActions","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20TokenPageActionsResponseDto"}}}}},"summary":"Get KCC20 token page action availability.","tags":["tokens"]}},"/tokens/{covenantId}/supply-summary":{"get":{"operationId":"TokensController_getTokenSupplySummary","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20TokenSupplySummaryDto"}}}}},"summary":"Get KCC20 token supply summary.","tags":["tokens"]}},"/tokens/{covenantId}/holders-summary":{"get":{"operationId":"TokensController_getTokenHoldersSummary","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20TokenHoldersSummaryDto"}}}}},"summary":"Get lightweight KCC20 token holder summary.","tags":["tokens"]}},"/tokens/{covenantId}":{"get":{"operationId":"TokensController_getToken","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20TokenDetailDto"}}}}},"summary":"Get public KCC20 token detail.","tags":["tokens"]}},"/tokens/{covenantId}/holders":{"get":{"operationId":"TokensController_getTokenHolders","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}},{"name":"sortBy","required":false,"in":"query","schema":{"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20TokenHoldersResponseDto"}}}}},"summary":"Get current KCC20 token holders.","tags":["tokens"]}},"/tokens/{covenantId}/wrappers":{"get":{"operationId":"TokensController_getTokenWrappers","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}},{"name":"includePending","required":false,"in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"}}}}}},"summary":"Get wrapped trading markets for a canonical KCC20 token.","tags":["tokens"]}},"/kcc20/build/tokens/{covenantId}/mint":{"post":{"operationId":"PublicKcc20TokenBuildController_buildMint","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildMintTokenActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public KCC20 Token V1 mint payload.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/transfer":{"post":{"operationId":"PublicKcc20TokenBuildController_buildTransfer","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildTransferTokenActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public KCC20 Token V1 transfer payload.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/consolidate":{"post":{"operationId":"PublicKcc20TokenBuildController_buildConsolidate","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildTokenConsolidateActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public KCC20 holder consolidation payload.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/wrap":{"post":{"operationId":"PublicKcc20TokenBuildController_buildWrap","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildWrappedTokenActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public KCC20 Token V1 -> DEX Orderbook V1 payload.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/unwrap":{"post":{"operationId":"PublicKcc20TokenBuildController_buildUnwrap","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildWrappedTokenActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public DEX Orderbook V1 -> KCC20 Token V1 payload.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/consolidate/status":{"get":{"operationId":"PublicKcc20TokenBuildController_getConsolidationStatus","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}},{"name":"asset","required":true,"in":"query","schema":{"type":"string","enum":["v2","v3-wrapped"]}},{"name":"tokenAmount","required":true,"in":"query","description":"Requested action amount in display token units. Backend converts it using the immutable token decimals.","schema":{"example":"10.5","type":"string"}},{"name":"operation","required":false,"in":"query","description":"Action being prepared. unwrap also checks wrapper-owned V2 reserve fragmentation and returns a sequential execution plan when one reserve output cannot cover the request.","schema":{"default":"spend","type":"string","enum":["spend","unwrap"]}},{"name":"wrappedMarketId","required":false,"in":"query","description":"KCC20 Wrapper Reserve V1 covenant ID. Required when asset is v3-wrapped.","schema":{"type":"string"}},{"name":"walletAddress","required":true,"in":"query","description":"Kaspa wallet address that will sign and fund the PSKT.","schema":{"type":"string"}},{"name":"ownerIdentifier","required":false,"in":"query","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenConsolidationStatusDto"}}}}},"summary":"Check whether a public token action needs holder UTXO consolidation.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/orders":{"post":{"operationId":"PublicKcc20TokenBuildController_buildOrder","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildTokenOrderActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public DEX orderbook buy/sell order payload.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/orders/fill":{"post":{"operationId":"PublicKcc20TokenBuildController_buildFill","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildTokenFillActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public wrapped order fill payload.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/orders/sweep":{"post":{"operationId":"PublicKcc20TokenBuildController_buildSweep","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildTokenSweepActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public wrapped multi-order sweep payload.","tags":["public-kcc20-build"]}},"/kcc20/build/tokens/{covenantId}/orders/cancel":{"post":{"operationId":"PublicKcc20TokenBuildController_buildCancel","parameters":[{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 covenant ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicBuildTokenCancelActionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnsignedTokenActionPayloadDto"}}}}},"summary":"Build an unsigned public wrapped order cancel payload.","tags":["public-kcc20-build"]}},"/trading/markets":{"get":{"operationId":"TradingController_getMarkets","parameters":[{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"KCC20 market summaries.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20MarketResponseDto"}}}}}},"summary":"Get KCC20 markets from the TN10 indexer.","tags":["trading"]}},"/trading/markets/discovery":{"get":{"operationId":"TradingController_getMarketsDiscovery","parameters":[{"name":"authorization","required":false,"in":"header","description":"Optional payment voucher/header for paid public API routes. Not wallet authentication.","schema":{"type":"string"}},{"name":"search","required":false,"in":"query","description":"Search token id, ticker, or token name.","schema":{}},{"name":"tokenId","required":false,"in":"query","schema":{}},{"name":"refresh","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"sortBy","required":false,"in":"query","schema":{"enum":["tokenIdHex","bestAskUnitPriceSompi","bestBidUnitPriceSompi","spreadSompi","openAskCount","openBidCount","totalTrades","totalVolumeSompi","volume24hSompi","volume7dSompi","tradeCount24h","tradeCount7d","lastTradeTimeMs"],"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"enum":["asc","desc"],"type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 500.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20MarketDiscoveryResponseDto"}}}}},"summary":"Get paged KCC20 market discovery rows.","tags":["trading"]}},"/trading/freshness":{"get":{"operationId":"TradingController_getFreshness","parameters":[{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20FreshnessResponseDto"}}}}},"summary":"Get TN10 indexer freshness and polling guidance.","tags":["trading"]}},"/trading/tokens/{tokenId}/orderbook":{"get":{"operationId":"TradingController_getOrderbook","parameters":[{"name":"tokenId","required":true,"in":"path","description":"KCC20 token covenant ID hex.","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}},{"name":"status","required":false,"in":"query","schema":{"enum":["open","closed"],"type":"string"}},{"name":"depthLimit","required":false,"in":"query","description":"Maximum aggregated price levels per side. Raw asks/bids pagination is controlled by limit/offset.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20OrderbookResponseDto"}}}}},"summary":"Get open asks/bids for a KCC20 token.","tags":["trading"]}},"/trading/tokens/{tokenId}/stats":{"get":{"operationId":"TradingController_getStats","parameters":[{"name":"tokenId","required":true,"in":"path","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}},{"name":"windowMs","required":false,"in":"query","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20StatsResponseDto"}}}}},"summary":"Get windowed KCC20 market stats.","tags":["trading"]}},"/trading/tokens/{tokenId}/candles":{"get":{"operationId":"TradingController_getCandles","parameters":[{"name":"tokenId","required":true,"in":"path","schema":{"type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}},{"name":"to","required":false,"in":"query","description":"Exclusive upper bound on bucketTimeMs (epoch ms).","schema":{"type":"number"}},{"name":"from","required":false,"in":"query","description":"Inclusive lower bound on bucketTimeMs (epoch ms).","schema":{"type":"number"}},{"name":"intervalMs","required":false,"in":"query","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20CandleResponseDto"}}}}}},"summary":"Get OHLCV candles for a KCC20 token.","tags":["trading"]}},"/trading/tokens/{tokenId}/activity":{"get":{"operationId":"TradingController_getActivity","parameters":[{"name":"tokenId","required":true,"in":"path","schema":{"type":"string"}},{"name":"address","required":false,"in":"query","deprecated":true,"description":"Deprecated alias for owner.","schema":{}},{"name":"type","required":false,"in":"query","deprecated":true,"description":"Deprecated alias for kind or side.","schema":{}},{"name":"orderId","required":false,"in":"query","schema":{}},{"name":"txid","required":false,"in":"query","schema":{}},{"name":"owner","required":false,"in":"query","schema":{}},{"name":"entrypoint","required":false,"in":"query","schema":{}},{"name":"side","required":false,"in":"query","description":"Preferred values are ask or bid. buy, sell, and trade are deprecated aliases.","schema":{"enum":["ask","bid","buy","sell","trade"],"type":"string"}},{"name":"scope","required":false,"in":"query","schema":{"enum":["all","token","trading"],"type":"string"}},{"name":"kind","required":false,"in":"query","schema":{"enum":["deploy","mint","transfer","burn","wrap","unwrap","orderCreated","orderCancelled","trade","feeTicketCreate","feeTicketBurn","feeTicketConfig","action"],"type":"string"}},{"name":"to","required":false,"in":"query","description":"Exclusive upper bound on blockTimeMs.","schema":{"type":"number"}},{"name":"from","required":false,"in":"query","description":"Inclusive lower bound on blockTimeMs.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20ActivityResponseDto"}}}}}},"summary":"Get recent KCC20 trading activity.","tags":["trading"]}},"/trading/tokens/{tokenId}/quote":{"get":{"operationId":"TradingController_getQuote","parameters":[{"name":"tokenId","required":true,"in":"path","schema":{"type":"string"}},{"name":"orderId","required":false,"in":"query","schema":{}},{"name":"limitUnitPriceSompi","required":false,"in":"query","schema":{}},{"name":"mode","required":false,"in":"query","schema":{"enum":["market","limit"],"type":"string"}},{"name":"amount","required":true,"in":"query","schema":{}},{"name":"side","required":true,"in":"query","schema":{"enum":["buy","sell"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20QuoteResponseDto"}}}}},"summary":"Validate and quote a proposed KCC20 fill.","tags":["trading"]}},"/trading/tokens/{tokenId}/orders/{orderId}":{"get":{"operationId":"TradingController_getOrder","parameters":[{"name":"tokenId","required":true,"in":"path","schema":{"type":"string"}},{"name":"orderId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20OrderDetailResponseDto"}}}}},"summary":"Get KCC20 order detail, lineage, and fills.","tags":["trading"]}},"/trading/owners/{owner}/orders":{"get":{"operationId":"TradingController_getOwnerOrders[0]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}},{"name":"tokenId","required":false,"in":"query","schema":{}},{"name":"status","required":false,"in":"query","schema":{"enum":["open","filled","cancelled","closed"],"type":"string"}},{"name":"to","required":false,"in":"query","description":"Exclusive upper bound on createdAtMs.","schema":{"type":"number"}},{"name":"from","required":false,"in":"query","description":"Inclusive lower bound on createdAtMs.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20AddressOrdersResponseDto"}}}}},"summary":"Get KCC20 orders for an owner identifier.","tags":["trading"]}},"/trading/addresses/{owner}/orders":{"get":{"operationId":"TradingController_getOwnerOrders[1]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}},{"name":"tokenId","required":false,"in":"query","schema":{}},{"name":"status","required":false,"in":"query","schema":{"enum":["open","filled","cancelled","closed"],"type":"string"}},{"name":"to","required":false,"in":"query","description":"Exclusive upper bound on createdAtMs.","schema":{"type":"number"}},{"name":"from","required":false,"in":"query","description":"Inclusive lower bound on createdAtMs.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20AddressOrdersResponseDto"}}}}},"summary":"Get KCC20 orders for an owner identifier.","tags":["trading"]}},"/trading/owners/{owner}/trades":{"get":{"operationId":"TradingController_getOwnerTrades[0]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}},{"name":"tokenId","required":false,"in":"query","schema":{}},{"name":"side","required":false,"in":"query","schema":{"enum":["buy","sell","cross","trade"],"type":"string"}},{"name":"to","required":false,"in":"query","description":"Exclusive upper bound on blockTimeMs.","schema":{"type":"number"}},{"name":"from","required":false,"in":"query","description":"Inclusive lower bound on blockTimeMs.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20AddressTradesResponseDto"}}}}},"summary":"Get KCC20 trades for an owner identifier.","tags":["trading"]}},"/trading/addresses/{owner}/trades":{"get":{"operationId":"TradingController_getOwnerTrades[1]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}},{"name":"tokenId","required":false,"in":"query","schema":{}},{"name":"side","required":false,"in":"query","schema":{"enum":["buy","sell","cross","trade"],"type":"string"}},{"name":"to","required":false,"in":"query","description":"Exclusive upper bound on blockTimeMs.","schema":{"type":"number"}},{"name":"from","required":false,"in":"query","description":"Inclusive lower bound on blockTimeMs.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20AddressTradesResponseDto"}}}}},"summary":"Get KCC20 trades for an owner identifier.","tags":["trading"]}},"/trading/owners/{owner}/history":{"get":{"operationId":"TradingController_getOwnerTradingHistory[0]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}},{"name":"tokenId","required":false,"in":"query","schema":{}},{"name":"status","required":false,"in":"query","schema":{"enum":["filled","cancelled","closed"],"type":"string"}},{"name":"side","required":false,"in":"query","schema":{"enum":["buy","sell","cross","trade"],"type":"string"}},{"name":"to","required":false,"in":"query","description":"Exclusive upper bound on timeMs.","schema":{"type":"number"}},{"name":"from","required":false,"in":"query","description":"Inclusive lower bound on timeMs.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20AddressTradingHistoryResponseDto"}}}}},"summary":"Get unified KCC20 trading history for an owner identifier.","tags":["trading"]}},"/trading/addresses/{owner}/history":{"get":{"operationId":"TradingController_getOwnerTradingHistory[1]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}},{"name":"tokenId","required":false,"in":"query","schema":{}},{"name":"status","required":false,"in":"query","schema":{"enum":["filled","cancelled","closed"],"type":"string"}},{"name":"side","required":false,"in":"query","schema":{"enum":["buy","sell","cross","trade"],"type":"string"}},{"name":"to","required":false,"in":"query","description":"Exclusive upper bound on timeMs.","schema":{"type":"number"}},{"name":"from","required":false,"in":"query","description":"Inclusive lower bound on timeMs.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum rows to return. Must be between 1 and 1000.","schema":{"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20AddressTradingHistoryResponseDto"}}}}},"summary":"Get unified KCC20 trading history for an owner identifier.","tags":["trading"]}},"/trading/owners/{owner}/balances":{"get":{"operationId":"TradingController_getOwnerBalances[0]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20BalanceResponseDto"}}}}}},"summary":"Get KCC20 balances for an owner identifier.","tags":["trading"]}},"/trading/addresses/{owner}/balances":{"get":{"operationId":"TradingController_getOwnerBalances[1]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20BalanceResponseDto"}}}}}},"summary":"Get KCC20 balances for an owner identifier.","tags":["trading"]}},"/trading/owners/{owner}/positions":{"get":{"operationId":"TradingController_getOwnerPositions[0]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20AccountPositionResponseDto"}}}}}},"summary":"Get canonical and wrapped KCC20 account positions for an owner identifier.","tags":["trading"]}},"/trading/addresses/{owner}/positions":{"get":{"operationId":"TradingController_getOwnerPositions[1]","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20AccountPositionResponseDto"}}}}}},"summary":"Get canonical and wrapped KCC20 account positions for an owner identifier.","tags":["trading"]}},"/trading/tx/{txid}/settlement-status":{"get":{"operationId":"TradingController_getSettlementStatus","parameters":[{"name":"txid","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Kcc20SettlementStatusResponseDto"}}}}},"summary":"Get settlement/indexing status for a transaction.","tags":["trading"]}},"/wallet-provider/owners/{owner}/balances":{"get":{"operationId":"WalletProviderController_getOwnerBalances","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","description":"Maximum balance rows to return. Must be between 1 and 500.","schema":{"minimum":1,"maximum":500,"default":100,"type":"number"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"minimum":0,"default":0,"type":"number"}},{"name":"sortBy","required":false,"in":"query","schema":{"enum":["canonicalCovenantId","ticker","name","nativeAmount","wrappedAmount","totalAmount","lastChangeMs"],"type":"string"}},{"name":"sortDirection","required":false,"in":"query","schema":{"enum":["asc","desc"],"type":"string"}},{"name":"q","required":false,"in":"query","description":"Search covenant id, ticker, or token name.","schema":{"example":"KCOM","type":"string"}},{"name":"covenantId","required":false,"in":"query","description":"Filter to one canonical KCC20 V2 covenant id.","schema":{"example":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","type":"string"}},{"name":"asset","required":false,"in":"query","schema":{"enum":["all","native","wrapped"],"type":"string"}},{"name":"hasBalance","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"transferable","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"wrappable","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"tradeable","required":false,"in":"query","schema":{"type":"boolean"}},{"name":"minNativeAmount","required":false,"in":"query","description":"Minimum native KCC20V2 balance in base token units.","schema":{"example":"100000000","type":"string"}},{"name":"minWrappedAmount","required":false,"in":"query","description":"Minimum wrapped KCC20V3 balance in base token units.","schema":{"example":"100000000","type":"string"}},{"name":"minTotalAmount","required":false,"in":"query","description":"Minimum native plus wrapped balance in base token units.","schema":{"example":"100000000","type":"string"}},{"name":"refresh","required":false,"in":"query","description":"Bypass the short-lived API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletProviderBalancesResponseDto"}}}}},"summary":"Get wallet-provider KCC20 balances grouped by canonical V2 token.","tags":["wallet-provider"]}},"/wallet-provider/owners/{owner}/tokens/{covenantId}/activity":{"get":{"operationId":"WalletProviderController_getOwnerTokenActivity","parameters":[{"name":"owner","required":true,"in":"path","description":"64 hex KCC20 owner identifier or Kaspa P2PK address.","schema":{"type":"string"}},{"name":"covenantId","required":true,"in":"path","description":"Canonical KCC20 V2 covenant id.","schema":{"type":"string"}},{"name":"type","required":false,"in":"query","deprecated":true,"description":"Deprecated alias for kind or side.","schema":{}},{"name":"orderId","required":false,"in":"query","schema":{}},{"name":"txid","required":false,"in":"query","schema":{}},{"name":"entrypoint","required":false,"in":"query","schema":{}},{"name":"side","required":false,"in":"query","description":"Preferred values are ask or bid. buy, sell, and trade are deprecated aliases.","schema":{"enum":["ask","bid","buy","sell","trade"],"type":"string"}},{"name":"scope","required":false,"in":"query","schema":{"enum":["all","token","trading"],"type":"string"}},{"name":"kind","required":false,"in":"query","schema":{"enum":["deploy","mint","transfer","burn","wrap","unwrap","orderCreated","orderCancelled","trade","feeTicketCreate","feeTicketBurn","feeTicketConfig","action"],"type":"string"}},{"name":"offset","required":false,"in":"query","description":"Zero-based row offset for pagination.","schema":{"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum activity rows to return.","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20ActivityResponseDto"}}}}}},"summary":"Get wallet-provider KCC20 activity for one owner and token.","tags":["wallet-provider"]}},"/wallet-provider/tokens":{"get":{"operationId":"WalletProviderController_getTokens","parameters":[{"name":"refresh","required":false,"in":"query","description":"Bypass the token-directory API cache for this request.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletProviderTokenDirectoryResponseDto"}}}}},"summary":"Get wallet-provider KCC20 V2 token metadata directory.","tags":["wallet-provider"]}}},"info":{"title":"KCC20 Public Testnet API","description":"Public KCC20 testnet reads and unsigned transaction builders for third-party agents and wallet providers.","version":"0.1.0","contact":{}},"tags":[],"servers":[{"url":"http://127.0.0.1:3107","description":"Local"},{"url":"https://dev-api-kcc20.kaspa.com","description":"Dev"}],"components":{"schemas":{"TokenMetadataResponseDto":{"type":"object","properties":{"covenantId":{"type":"string"},"tokenIdHex":{"type":"string"},"name":{"type":"string"},"ticker":{"type":"string"},"decimals":{"type":"number"},"description":{"type":"string"},"websiteUrl":{"type":"string"},"xUrl":{"type":"string"},"telegramUrl":{"type":"string"},"discordUrl":{"type":"string"},"githubUrl":{"type":"string"},"mediumUrl":{"type":"string"},"logoUrl":{"type":"string"},"bannerUrl":{"type":"string"},"source":{"type":"string","example":"app-submitted"},"verificationStatus":{"type":"string","example":"unverified"},"submittedByOwner":{"type":"string"}},"required":["covenantId","source","verificationStatus","submittedByOwner"]},"PublicBuildDeployTokenDto":{"type":"object","properties":{"ticker":{"type":"string"},"tokenName":{"type":"string"},"maxSupply":{"type":"string","example":"1000000"},"premintSupply":{"type":"string","example":"1000000"},"premintRecipient":{"type":"string","description":"Optional premint recipient as a 64-hex KCC20 owner or Kaspa P2PK wallet address. Defaults to the authenticated wallet owner. Applies only when controlled/public mint deploys create a premint holder output.","example":"kaspatest:qr8zzq8xsxtu3e54h4up6plzh4w70mth7k5hv6yggxg9xx7uvvkqzt3rrs0zx"},"mintMode":{"type":"string","enum":["fixedSupply","controlledMint","publicMint"]},"mintPricePerTokenSompi":{"type":"string","example":"0"},"treasuryRecipient":{"type":"string","description":"Optional treasury recipient as a 64-hex KCC20 owner or Kaspa P2PK wallet address. Defaults to the authenticated wallet owner.","example":"kaspatest:qr8zzq8xsxtu3e54h4up6plzh4w70mth7k5hv6yggxg9xx7uvvkqzt3rrs0zx"},"protocolFeeRecipient":{"type":"string","deprecated":true,"description":"Ignored. KCC20 Token V1 deploys use the embedded KaspaCom TN10 protocol fee recipient."},"protocolFeeBps":{"type":"number","deprecated":true,"description":"Ignored. KCC20 Token V1 deploys use KCC20_PROTOCOL_FEE_BPS configured by KaspaCom.","example":200},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["maxSupply","premintSupply","mintMode","mintPricePerTokenSompi","walletAddress"]},"UnsignedWalletPayloadDto":{"type":"object","properties":{"requestId":{"type":"string"},"description":{"type":"string"},"payload":{"type":"object"}},"required":["requestId","description","payload"]},"Kcc20ActiveCovenantUtxoDto":{"type":"object","properties":{"txidHex":{"type":"string"},"vout":{"type":"number"},"outpoint":{"type":"string"},"address":{"type":"string"},"amountSompi":{"type":"string"},"action":{"type":"string"}},"required":["txidHex","vout","outpoint","address","amountSompi","action"]},"Kcc20WrapperSummaryDto":{"type":"object","properties":{"wrapperId":{"type":"string"},"marketId":{"type":"string"},"activeCovenantId":{"type":"string","nullable":true},"genesisTxidHex":{"type":"string","nullable":true},"wrapperRole":{"type":"string","enum":["controller","wrappedRootCandidate","unknown"]},"canonicalTokenId":{"type":"string","nullable":true},"contractCanonicalTokenId":{"type":"string","nullable":true},"claimedCanonicalTokenId":{"type":"string","nullable":true},"canonicalMismatch":{"type":"boolean"},"feeTicketSupported":{"type":"boolean"},"enabled":{"type":"boolean"},"pendingReveal":{"type":"boolean"},"classificationStatus":{"type":"string"},"activeUtxos":{"type":"number"},"buildable":{"type":"boolean"},"buildableReason":{"type":"string","nullable":true}},"required":["wrapperId","marketId","feeTicketSupported","enabled"]},"Kcc20MintPolicyDto":{"type":"object","properties":{"mintable":{"type":"boolean"},"mintMode":{"type":"string"},"mintModeValue":{"type":"number"},"publicMintActive":{"type":"boolean","description":"True while public wallets may mint. False when the token owner has paused public minting. Omitted for non-public mint policies."},"publicMintControlSupported":{"type":"boolean","description":"Whether this token artifact lets the active minter owner enable or pause public minting."},"remainingAmount":{"type":"string"},"mintPricePerTokenSompi":{"type":"string"},"treasuryRecipient":{"type":"string"},"protocolFeeRecipient":{"type":"string"},"protocolFeeBps":{"type":"number"}},"required":["mintable"]},"Kcc20TokenSupplyDto":{"type":"object","properties":{"maxSupply":{"type":"string","nullable":true},"premintSupply":{"type":"string","nullable":true},"mintedSupply":{"type":"string","nullable":true},"remainingMintSupply":{"type":"string","nullable":true},"canonicalV2Supply":{"type":"string","nullable":true},"burnedSupply":{"type":"string","description":"Raw token units missing from active canonical V2 plus minter supply; present when active canonical V2 supply is available.","nullable":true},"wrapperReserveSupply":{"type":"string","nullable":true},"v3TradeableSupply":{"type":"string","nullable":true}}},"Kcc20TokenHolderDto":{"type":"object","properties":{"ownerIdentifier":{"type":"string"},"identifierType":{"type":"number"},"identifierTypeName":{"type":"string","enum":["pubkey","scriptHash","covenantId","unknown"]},"ownerKind":{"type":"string","enum":["pubkey","scriptHash","covenantId","unknown"]},"ownerAddress":{"type":"string","nullable":true},"ownerLabel":{"type":"string","nullable":true},"displayOwner":{"type":"string"},"amount":{"type":"string"},"shareBps":{"type":"number","description":"Holder share of canonical minted supply, floored to basis points."},"sharePercent":{"type":"string","description":"Holder share of canonical minted supply as a decimal percent string.","example":"12.3456"},"utxoCount":{"type":"number"}},"required":["ownerIdentifier","identifierType","amount","utxoCount"]},"Kcc20MarketResponseDto":{"type":"object","properties":{"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"bestAskUnitPriceSompi":{"type":"string","example":"1000000","nullable":true},"bestBidUnitPriceSompi":{"type":"string","example":"1000000","nullable":true},"spreadSompi":{"type":"string","example":"0","nullable":true},"openAskCount":{"type":"number","example":1},"openBidCount":{"type":"number","example":1},"totalTrades":{"type":"number","example":2},"totalVolumeSompi":{"type":"string","example":"50000000"},"volume24hSompi":{"type":"string","example":"25000000","nullable":true},"volume7dSompi":{"type":"string","example":"40000000","nullable":true},"tradeCount24h":{"type":"number","example":1,"nullable":true},"tradeCount7d":{"type":"number","example":2,"nullable":true},"lastTradeTimeMs":{"type":"number","example":1779607519456,"nullable":true},"lastTradeTxidHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71","nullable":true},"metadata":{"$ref":"#/components/schemas/TokenMetadataResponseDto"}},"required":["tokenIdHex","openAskCount","openBidCount","totalTrades","totalVolumeSompi"]},"Kcc20TokenDetailDto":{"type":"object","properties":{"covenantId":{"type":"string"},"ticker":{"type":"string"},"tokenName":{"type":"string"},"createdAtMs":{"type":"number","description":"Token creation/deploy block time in Unix milliseconds.","nullable":true},"verificationStatus":{"type":"string","enum":["verified","claimed_unverified"]},"claimVerified":{"type":"boolean"},"claimSource":{"type":"string","nullable":true},"classificationStatus":{"type":"string","nullable":true},"activeUtxoCount":{"type":"number","nullable":true},"activeCovenantUtxos":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20ActiveCovenantUtxoDto"}},"creatorOwner":{"type":"string","nullable":true},"stateOwner":{"type":"string","nullable":true},"stateOwnerType":{"type":"number","nullable":true},"treasuryRecipient":{"type":"string","nullable":true},"protocolFeeRecipient":{"type":"string","nullable":true},"protocolFeeBps":{"type":"number","nullable":true},"decimals":{"type":"number","nullable":true},"metadata":{"$ref":"#/components/schemas/TokenMetadataResponseDto"},"wrapper":{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"},"mintPolicy":{"$ref":"#/components/schemas/Kcc20MintPolicyDto"},"supply":{"$ref":"#/components/schemas/Kcc20TokenSupplyDto"},"holderCount":{"type":"number","nullable":true},"topHolders":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20TokenHolderDto"}},"marketCapFloorAskSompi":{"type":"string","nullable":true},"market":{"$ref":"#/components/schemas/Kcc20MarketResponseDto"}},"required":["covenantId","mintPolicy"]},"Kcc20MintVelocityDto":{"type":"object","properties":{"window":{"type":"string","enum":["1h","6h","12h","24h"]},"windowMs":{"type":"number"},"mintedAmount":{"type":"string"},"mintedPercentBps":{"type":"number","description":"Window minted amount divided by token max supply, floored to basis points."},"mintCount":{"type":"number"},"lastMintTimeMs":{"type":"number","nullable":true}},"required":["window","windowMs","mintedAmount","mintedPercentBps","mintCount"]},"Kcc20MintDiscoveryRowDto":{"type":"object","properties":{"covenantId":{"type":"string"},"ticker":{"type":"string"},"tokenName":{"type":"string"},"createdAtMs":{"type":"number","description":"Token creation/deploy block time in Unix milliseconds.","nullable":true},"verificationStatus":{"type":"string","enum":["verified","claimed_unverified"]},"claimVerified":{"type":"boolean"},"claimSource":{"type":"string","nullable":true},"classificationStatus":{"type":"string","nullable":true},"activeUtxoCount":{"type":"number","nullable":true},"activeCovenantUtxos":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20ActiveCovenantUtxoDto"}},"creatorOwner":{"type":"string","nullable":true},"stateOwner":{"type":"string","nullable":true},"stateOwnerType":{"type":"number","nullable":true},"treasuryRecipient":{"type":"string","nullable":true},"protocolFeeRecipient":{"type":"string","nullable":true},"protocolFeeBps":{"type":"number","nullable":true},"decimals":{"type":"number","nullable":true},"metadata":{"$ref":"#/components/schemas/TokenMetadataResponseDto"},"wrapper":{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"},"mintPolicy":{"$ref":"#/components/schemas/Kcc20MintPolicyDto"},"supply":{"$ref":"#/components/schemas/Kcc20TokenSupplyDto"},"holderCount":{"type":"number","nullable":true},"topHolders":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20TokenHolderDto"}},"marketCapFloorAskSompi":{"type":"string","nullable":true},"market":{"$ref":"#/components/schemas/Kcc20MarketResponseDto"},"mintStatus":{"type":"string","enum":["live","paused","ended","not-mintable"],"description":"Current mint availability. paused means supply remains but the owner disabled public minting."},"quickMintEligible":{"type":"boolean"},"mintVelocity":{"$ref":"#/components/schemas/Kcc20MintVelocityDto"}},"required":["covenantId","mintPolicy","mintStatus","quickMintEligible"]},"Kcc20MintDiscoveryResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20MintDiscoveryRowDto"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"sortBy":{"type":"string"},"sortDirection":{"type":"string","enum":["asc","desc"]},"mintVelocityWindow":{"type":"string","enum":["1h","6h","12h","24h"]}},"required":["items","total","limit","offset"]},"Kcc20MintDiscoveryMarketSummaryDto":{"type":"object","properties":{"tokenIdHex":{"type":"string"},"bestAskUnitPriceSompi":{"type":"string","nullable":true},"bestBidUnitPriceSompi":{"type":"string","nullable":true},"totalVolumeSompi":{"type":"string","nullable":true},"volume24hSompi":{"type":"string","nullable":true},"lastTradeTimeMs":{"type":"number","nullable":true}},"required":["tokenIdHex"]},"Kcc20MintDiscoveryV2RowDto":{"type":"object","properties":{"covenantId":{"type":"string"},"ticker":{"type":"string"},"tokenName":{"type":"string"},"createdAtMs":{"type":"number","description":"Token creation/deploy block time in Unix milliseconds.","nullable":true},"verificationStatus":{"type":"string","enum":["verified","claimed_unverified"]},"claimVerified":{"type":"boolean"},"metadata":{"$ref":"#/components/schemas/TokenMetadataResponseDto"},"mintPolicy":{"$ref":"#/components/schemas/Kcc20MintPolicyDto"},"supply":{"$ref":"#/components/schemas/Kcc20TokenSupplyDto"},"mintStatus":{"type":"string","enum":["live","paused","ended","not-mintable"]},"quickMintEligible":{"type":"boolean"},"wrapper":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"}]},"marketCapFloorAskSompi":{"type":"string","nullable":true},"market":{"$ref":"#/components/schemas/Kcc20MintDiscoveryMarketSummaryDto"},"mintVelocity":{"$ref":"#/components/schemas/Kcc20MintVelocityDto"}},"required":["covenantId","mintPolicy","mintStatus","quickMintEligible"]},"Kcc20MintDiscoveryV2ResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20MintDiscoveryV2RowDto"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"sortBy":{"type":"string"},"sortDirection":{"type":"string","enum":["asc","desc"]},"mintVelocityWindow":{"type":"string","enum":["1h","6h","12h","24h"]}},"required":["items","total","limit","offset"]},"Kcc20DeployedTokensResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20TokenDetailDto"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"sortBy":{"type":"string"},"sortDirection":{"type":"string","enum":["asc","desc"]}},"required":["items","total","limit","offset"]},"Kcc20TokenActionAvailabilityDto":{"type":"object","properties":{"enabled":{"type":"boolean"},"reason":{"type":"string","nullable":true}},"required":["enabled"]},"Kcc20TokenPageActionsDto":{"type":"object","properties":{"mint":{"$ref":"#/components/schemas/Kcc20TokenActionAvailabilityDto"},"wrap":{"$ref":"#/components/schemas/Kcc20TokenActionAvailabilityDto"},"unwrap":{"$ref":"#/components/schemas/Kcc20TokenActionAvailabilityDto"},"trade":{"$ref":"#/components/schemas/Kcc20TokenActionAvailabilityDto"},"deployWrapper":{"$ref":"#/components/schemas/Kcc20TokenActionAvailabilityDto"}},"required":["mint","wrap","unwrap","trade","deployWrapper"]},"Kcc20TokenPageDebugDto":{"type":"object","properties":{"invalidWrappers":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"}}}},"Kcc20TokenPageDataDto":{"type":"object","properties":{"token":{"$ref":"#/components/schemas/Kcc20TokenDetailDto"},"wrappers":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"}},"actions":{"$ref":"#/components/schemas/Kcc20TokenPageActionsDto"},"debug":{"$ref":"#/components/schemas/Kcc20TokenPageDebugDto"}},"required":["token","wrappers","actions"]},"Kcc20TokenIdentityMetadataDto":{"type":"object","properties":{"covenantId":{"type":"string"},"tokenIdHex":{"type":"string"},"name":{"type":"string"},"ticker":{"type":"string"},"decimals":{"type":"number"},"description":{"type":"string"},"websiteUrl":{"type":"string"},"xUrl":{"type":"string"},"telegramUrl":{"type":"string"},"discordUrl":{"type":"string"},"githubUrl":{"type":"string"},"mediumUrl":{"type":"string"},"logoUrl":{"type":"string"},"bannerUrl":{"type":"string"},"source":{"type":"string","example":"app-submitted"},"submittedByOwner":{"type":"string"}},"required":["covenantId","source","submittedByOwner"]},"Kcc20TokenIdentityDto":{"type":"object","properties":{"covenantId":{"type":"string"},"ticker":{"type":"string"},"tokenName":{"type":"string"},"createdAtMs":{"type":"number","description":"Token creation/deploy block time in Unix milliseconds.","nullable":true},"verificationStatus":{"type":"string","enum":["verified","claimed_unverified"]},"claimVerified":{"type":"boolean"},"claimSource":{"type":"string","nullable":true},"classificationStatus":{"type":"string","nullable":true},"activeUtxoCount":{"type":"number","nullable":true},"activeCovenantUtxos":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20ActiveCovenantUtxoDto"}},"creatorOwner":{"type":"string","nullable":true},"stateOwner":{"type":"string","nullable":true},"stateOwnerType":{"type":"number","nullable":true},"treasuryRecipient":{"type":"string","nullable":true},"protocolFeeRecipient":{"type":"string","nullable":true},"protocolFeeBps":{"type":"number","nullable":true},"decimals":{"type":"number","nullable":true},"mintPolicy":{"$ref":"#/components/schemas/Kcc20MintPolicyDto"},"metadata":{"$ref":"#/components/schemas/Kcc20TokenIdentityMetadataDto"}},"required":["covenantId","mintPolicy"]},"Kcc20TokenTradingSummaryDto":{"type":"object","properties":{"canonicalTokenId":{"type":"string"},"wrapper":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"}]},"market":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/Kcc20MarketResponseDto"}]}},"required":["canonicalTokenId"]},"Kcc20TokenPageActionsResponseDto":{"type":"object","properties":{"wrapper":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"}]},"wrappers":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20WrapperSummaryDto"}},"actions":{"$ref":"#/components/schemas/Kcc20TokenPageActionsDto"},"debug":{"$ref":"#/components/schemas/Kcc20TokenPageDebugDto"}},"required":["wrappers","actions"]},"Kcc20TokenSupplySummaryDto":{"type":"object","properties":{"supply":{"$ref":"#/components/schemas/Kcc20TokenSupplyDto"},"marketCapFloorAskSompi":{"type":"string","nullable":true}}},"Kcc20TokenHoldersSummaryDto":{"type":"object","properties":{"holderCount":{"type":"number","nullable":true},"topHolders":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20TokenHolderDto"}}}},"Kcc20TokenHoldersResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20TokenHolderDto"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"sortBy":{"type":"string"},"sortDirection":{"type":"string","enum":["asc","desc"]}},"required":["items","total","limit","offset"]},"UnsignedTokenActionPayloadDto":{"type":"object","properties":{"requestId":{"type":"string"},"description":{"type":"string"},"payload":{"type":"object"}},"required":["requestId","description","payload"]},"TokenConsolidationStatusDto":{"type":"object","properties":{"snapshotId":{"type":"string","description":"Opaque identifier for the indexed holder and reserve UTXO projection used to build this status. Changes only when those projected sources change."},"asset":{"type":"string","enum":["v2","v3-wrapped"]},"decimals":{"type":"number","example":8},"requestedAmount":{"type":"string","example":"1050000000"},"aggregateAmount":{"type":"string","example":"1500000000"},"compatibleAggregateAmount":{"type":"string","example":"1500000000"},"maxSingleUtxoAmount":{"type":"string","example":"700000000"},"utxoCount":{"type":"number","example":3},"compatibleUtxoCount":{"type":"number","example":3},"required":{"type":"boolean"},"canConsolidate":{"type":"boolean"},"estimatedMergeTransactions":{"type":"number","example":2},"reason":{"type":"string","enum":["not_required","ready","action_chunking_required","insufficient_balance","insufficient_reserve","incompatible_sources"]},"nextSourceOutpoints":{"type":"array","items":{"type":"string"}},"nextSourceAmounts":{"type":"array","items":{"type":"string"}},"sourceCovenantId":{"type":"string","description":"Native covenant ID shared by the compatible holder group selected for consolidation."},"wrappedMarketId":{"type":"string"},"reserveAggregateAmount":{"type":"string","description":"Total active wrapper-owned native V2 reserve available for unwrap.","example":"1500000000"},"maxSingleReserveAmount":{"type":"string","description":"Largest active wrapper-owned native V2 reserve output.","example":"700000000"},"reserveUtxoCount":{"type":"number","example":3},"estimatedActionTransactions":{"type":"number","description":"Estimated unwrap transactions needed when reserve fragmentation requires sequential chunks.","example":2},"nextActionAmount":{"type":"string","description":"Base-unit token amount for the next sequential unwrap transaction.","example":"700000000"}},"required":["snapshotId","asset","decimals","requestedAmount","aggregateAmount","compatibleAggregateAmount","maxSingleUtxoAmount","utxoCount","compatibleUtxoCount","required","canConsolidate","estimatedMergeTransactions","reason"]},"BuildTokenSweepFillDto":{"type":"object","properties":{"orderId":{"type":"string","description":"Expected wrappedAsk or wrappedBid order outpoint txid:vout.","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:0"},"tokenAmount":{"type":"string","example":"100000000"},"unitPriceSompi":{"type":"string","example":"186000000"}},"required":["orderId","tokenAmount","unitPriceSompi"]},"PublicBuildMintTokenActionDto":{"type":"object","properties":{"tokenAmount":{"type":"string","example":"10.5"},"recipientOwner":{"type":"string","description":"Optional mint recipient as a 64-hex KCC20 owner or Kaspa P2PK wallet address. Defaults to the authenticated wallet owner.","example":"kaspatest:qr8zzq8xsxtu3e54h4up6plzh4w70mth7k5hv6yggxg9xx7uvvkqzt3rrs0zx"},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["tokenAmount","walletAddress"]},"PublicBuildTransferTokenActionDto":{"type":"object","properties":{"tokenAmount":{"type":"string","example":"10.5"},"recipientOwner":{"type":"string","description":"Transfer recipient as a 64-hex KCC20 owner or Kaspa P2PK wallet address.","example":"kaspatest:qr8zzq8xsxtu3e54h4up6plzh4w70mth7k5hv6yggxg9xx7uvvkqzt3rrs0zx"},"holderOutpoint":{"type":"string","description":"Optional selected KCC20 Token V1 holder UTXO outpoint txid:vout. Backend selects a sufficient wallet-owned holder UTXO when omitted.","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:0"},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["tokenAmount","recipientOwner","walletAddress"]},"PublicBuildTokenConsolidateActionDto":{"type":"object","properties":{"asset":{"type":"string","enum":["v2","v3-wrapped"],"description":"Asset family to consolidate. v2 merges KCC20 Token V1 holder UTXOs; v3-wrapped merges DEX Orderbook V1 holder UTXOs for the selected market."},"wrappedMarketId":{"type":"string","description":"KCC20 Wrapper Reserve V1 covenant ID for orderbook holder consolidation. Required when asset is v3-wrapped."},"sourceOutpoints":{"description":"Optional exact holder outpoints to merge in one mass-bounded batch. When omitted, backend chooses up to eight compatible wallet-owned holder UTXOs.","example":["09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:0","19fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1"],"type":"array","items":{"type":"string"}},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["asset","walletAddress"]},"PublicBuildWrappedTokenActionDto":{"type":"object","properties":{"wrappedMarketId":{"type":"string","description":"KCC20 Wrapper Reserve V1 covenant ID for orderbook mode."},"tokenAmount":{"type":"string","example":"10.5"},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["wrappedMarketId","tokenAmount","walletAddress"]},"PublicBuildTokenOrderActionDto":{"type":"object","properties":{"wrappedMarketId":{"type":"string","description":"KCC20 Wrapper Reserve V1 covenant ID for orderbook mode."},"side":{"type":"string","enum":["buy","sell"]},"tokenAmount":{"type":"string","example":"10.5"},"unitPriceSompi":{"type":"string","example":"100000000"},"feeTicketId":{"type":"string","description":"Optional fee discount ticket covenant ID for eligible standalone fills."},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["wrappedMarketId","side","tokenAmount","unitPriceSompi","walletAddress"]},"PublicBuildTokenFillActionDto":{"type":"object","properties":{"wrappedMarketId":{"type":"string","description":"KCC20 Wrapper Reserve V1 covenant ID for orderbook mode."},"side":{"type":"string","enum":["buy","sell"],"description":"buy fills an ask; sell fills a bid."},"targetOrderId":{"type":"string","description":"Selected wrappedAsk or wrappedBid order outpoint txid:vout.","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:0"},"tokenAmount":{"type":"string","example":"10.5"},"unitPriceSompi":{"type":"string","example":"100000000"},"feeTicketId":{"type":"string","description":"Optional FeeTicket covenant ID for eligible standalone fills."},"useFeeTicket":{"type":"boolean","description":"Request backend-resolved FeeTicket use for this exact standalone fill. Backend validates the selected order root and wallet ticket UTXO.","example":true},"feeTicketOutpoint":{"type":"string","description":"Optional explicit FeeTicket UTXO outpoint txid:vout. When set, backend validates wallet ownership and uses this ticket instead of selecting the first available row.","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1"},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["wrappedMarketId","side","targetOrderId","tokenAmount","unitPriceSompi","walletAddress"]},"PublicBuildTokenSweepActionDto":{"type":"object","properties":{"wrappedMarketId":{"type":"string","description":"KCC20 Wrapper Reserve V1 covenant ID for orderbook mode."},"side":{"type":"string","enum":["buy","sell"],"description":"buy sweeps asks; sell sweeps bids."},"tokenAmount":{"type":"string","example":"11"},"mode":{"type":"string","enum":["market","limit"]},"limitUnitPriceSompi":{"type":"string","example":"190000000"},"feeTicketId":{"type":"string","description":"Optional fee discount ticket root covenant ID. Multi-order sweeps require one active ticket UTXO for the whole atomic sweep; the builder enforces the active wrapper artifact capacity and final signed transaction mass."},"feeTicketOutpoint":{"type":"string","description":"Optional explicit fee discount ticket UTXO outpoint txid:vout for the whole atomic sweep.","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:6"},"expectedFills":{"type":"array","items":{"$ref":"#/components/schemas/BuildTokenSweepFillDto"}},"maxBuyerPaysSompi":{"type":"string","example":"2100000000"},"minSellerReceivesSompi":{"type":"string","example":"2050000000"},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["wrappedMarketId","side","tokenAmount","mode","expectedFills","walletAddress"]},"PublicBuildTokenCancelActionDto":{"type":"object","properties":{"wrappedMarketId":{"type":"string","description":"KCC20 Wrapper Reserve V1 covenant ID for orderbook mode."},"side":{"type":"string","enum":["ask","bid"],"description":"Order side to cancel."},"targetOrderId":{"type":"string","description":"Selected wrappedAsk or wrappedBid order outpoint txid:vout.","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:0"},"walletAddress":{"type":"string","description":"Kaspa wallet address that will sign and fund the PSKT."},"ownerIdentifier":{"type":"string","description":"Optional KCC20 owner as 64 hex or Kaspa P2PK address. Defaults to walletAddress-derived owner."}},"required":["wrappedMarketId","side","targetOrderId","walletAddress"]},"Kcc20MarketDiscoveryFreshnessDto":{"type":"object","properties":{"refreshedAtMs":{"type":"number","example":1779607519456,"nullable":true},"sourceBlueScore":{"type":"number","example":463606849,"nullable":true},"rowCount":{"type":"number","example":42}},"required":["rowCount"]},"Kcc20MarketDiscoveryResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20MarketResponseDto"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"sortBy":{"type":"string"},"sortDirection":{"type":"string","enum":["asc","desc"]},"queryDurationMs":{"type":"number","example":12},"freshness":{"$ref":"#/components/schemas/Kcc20MarketDiscoveryFreshnessDto"}},"required":["items","total","limit","offset","queryDurationMs","freshness"]},"Kcc20FreshnessScannerDto":{"type":"object","properties":{"cursorBlueScore":{"type":"number","example":463606800},"cursorUpdatedAtMs":{"type":"number","example":1779787922271},"dbCursorLagBlocks":{"type":"number","example":49},"latestActionTimeMs":{"type":"number","example":1779787909162},"latestBlockBlueScore":{"type":"number","example":463606849},"latestBlockIndexedAtMs":{"type":"number","example":1779787926000},"latestBlockTimeMs":{"type":"number","example":1779787909162}},"required":["cursorBlueScore","cursorUpdatedAtMs","dbCursorLagBlocks","latestActionTimeMs","latestBlockBlueScore","latestBlockIndexedAtMs","latestBlockTimeMs"]},"Kcc20FreshnessResponseDto":{"type":"object","properties":{"ok":{"type":"boolean","example":false},"scanner":{"$ref":"#/components/schemas/Kcc20FreshnessScannerDto"},"stale":{"type":"boolean","example":false},"suggestedPollMs":{"type":"number","example":15000}},"required":["ok","scanner","stale","suggestedPollMs"]},"Kcc20OrderResponseDto":{"type":"object","properties":{"orderId":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1"},"txidHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71","nullable":true},"vout":{"type":"number","example":1,"nullable":true},"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"canonicalTokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1","nullable":true},"wrapperIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1","nullable":true},"wrappedMarketIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1","nullable":true},"side":{"type":"string","enum":["ask","bid"],"example":"bid"},"marketSide":{"type":"string","enum":["ask","bid"],"example":"bid"},"owner":{"type":"string","example":"4b1fa9e6222ee1b801985486fea1f574e693c7ee5d3933d56f3995c7785032d4"},"seller":{"type":"string","example":"4b1fa9e6222ee1b801985486fea1f574e693c7ee5d3933d56f3995c7785032d4"},"buyer":{"type":"string","example":"4b1fa9e6222ee1b801985486fea1f574e693c7ee5d3933d56f3995c7785032d4"},"address":{"type":"string","example":"kaspatest:pq...","nullable":true},"saleAddress":{"type":"string","example":"kaspatest:pz...","nullable":true},"bidAddress":{"type":"string","example":"kaspatest:pq...","nullable":true},"status":{"type":"string","example":"open"},"templateName":{"type":"string","example":"KCC20V3"},"tokenAmount":{"type":"string","example":"25"},"remainingTokenAmount":{"type":"string","example":"25","nullable":true},"minFillAmount":{"type":"string","example":"25","nullable":true},"priceSompi":{"type":"string","example":"25000000"},"unitPriceSompi":{"type":"string","example":"1000000","nullable":true},"priceScale":{"type":"string","example":"100000000","nullable":true},"tokenDisplayScale":{"type":"string","example":"100000000","nullable":true},"createdAtMs":{"type":"number","example":1779607519456},"bidValueSompi":{"type":"string","example":"25000000","nullable":true},"bidUtxos":{"type":"number","example":1,"nullable":true},"saleUtxos":{"type":"number","example":1,"nullable":true},"lockedTokenUtxos":{"type":"number","example":1,"nullable":true},"lockedTokenAmount":{"type":"string","example":"125","nullable":true},"saleCovenantIdHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1","nullable":true},"bidCovenantIdHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1","nullable":true},"saleScriptHashHex":{"type":"string","example":"465a8af4000898ee...","nullable":true},"bidScriptHashHex":{"type":"string","example":"465a8af4000898ee...","nullable":true},"closeTxidHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71","nullable":true},"closeEntrypoint":{"type":"string","example":"cancel","nullable":true},"feeTicketId":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1","nullable":true}},"required":["orderId","tokenIdHex","status","templateName","tokenAmount","priceSompi","createdAtMs"]},"Kcc20DepthLevelResponseDto":{"type":"object","properties":{"unitPriceSompi":{"type":"string","example":"1000000"},"tokenAmount":{"type":"string","example":"125"},"orderCount":{"type":"number","example":1}},"required":["unitPriceSompi","tokenAmount","orderCount"]},"Kcc20OrderbookResponseDto":{"type":"object","properties":{"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"asks":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20OrderResponseDto"}},"bids":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20OrderResponseDto"}},"askDepth":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20DepthLevelResponseDto"}},"bidDepth":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20DepthLevelResponseDto"}}},"required":["tokenIdHex","asks","bids","askDepth","bidDepth"]},"Kcc20StatsResponseDto":{"type":"object","properties":{"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"windowMs":{"type":"number","example":86400000},"tradeCount":{"type":"number","example":0},"volumeSompi":{"type":"string","example":"0"},"tokenVolume":{"type":"string","example":"0"},"openUnitPriceSompi":{"type":"string","example":"1000000","nullable":true},"highUnitPriceSompi":{"type":"string","example":"1000000","nullable":true},"lowUnitPriceSompi":{"type":"string","example":"1000000","nullable":true},"closeUnitPriceSompi":{"type":"string","example":"1000000","nullable":true},"priceChangeSompi":{"type":"string","example":"0","nullable":true},"openAskDepthSompi":{"type":"string","example":"125000000"},"openAskDepthTokens":{"type":"string","example":"125"},"openBidDepthSompi":{"type":"string","example":"25000000"},"openBidDepthTokens":{"type":"string","example":"25"}},"required":["tokenIdHex","windowMs","tradeCount","volumeSompi","tokenVolume","openAskDepthSompi","openAskDepthTokens","openBidDepthSompi","openBidDepthTokens"]},"Kcc20CandleResponseDto":{"type":"object","properties":{"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"bucketTimeMs":{"type":"number","example":1779606000000},"openUnitPriceSompi":{"type":"string","example":"1000000"},"highUnitPriceSompi":{"type":"string","example":"1000000"},"lowUnitPriceSompi":{"type":"string","example":"1000000"},"closeUnitPriceSompi":{"type":"string","example":"1000000"},"volumeSompi":{"type":"string","example":"50000000"},"tokenVolume":{"type":"string","example":"50"},"tradeCount":{"type":"number","example":2}},"required":["tokenIdHex","bucketTimeMs","openUnitPriceSompi","highUnitPriceSompi","lowUnitPriceSompi","closeUnitPriceSompi","volumeSompi","tokenVolume","tradeCount"]},"Kcc20ActivityResponseDto":{"type":"object","properties":{"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"txidHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71"},"orderId":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1","nullable":true},"owner":{"type":"string","example":"4b1fa9e6222ee1b801985486fea1f574e693c7ee5d3933d56f3995c7785032d4","nullable":true},"ownerIdentifierType":{"type":"number","enum":[0,1,2],"example":0,"nullable":true},"ownerAddress":{"type":"string","example":"kaspatest:qq...","nullable":true},"displayOwner":{"type":"string","example":"kaspatest:qq...","nullable":true},"maker":{"type":"string","example":"4b1fa9e6222ee1b801985486fea1f574e693c7ee5d3933d56f3995c7785032d4","nullable":true},"taker":{"type":"string","example":"4b1fa9e6222ee1b801985486fea1f574e693c7ee5d3933d56f3995c7785032d4","nullable":true},"kind":{"type":"string","example":"trade"},"side":{"type":"string","example":"bid","nullable":true},"entrypoint":{"type":"string","example":"fillBidPartial","nullable":true},"tokenAmount":{"type":"string","example":"25","nullable":true},"priceSompi":{"type":"string","example":"25000000","nullable":true},"unitPriceSompi":{"type":"string","example":"1000000","nullable":true},"blockTimeMs":{"type":"number","example":1779607519456}},"required":["tokenIdHex","txidHex","kind","blockTimeMs"]},"Kcc20QuoteFillResponseDto":{"type":"object","properties":{"orderId":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1"},"tokenAmount":{"type":"string","example":"100000000"},"unitPriceSompi":{"type":"string","example":"250000000"},"totalPriceSompi":{"type":"string","example":"250000000"},"protocolFeeSompi":{"type":"string","example":"50000000","nullable":true},"availableAmount":{"type":"string","example":"1000000000","nullable":true},"minFillAmount":{"type":"string","example":"1","nullable":true},"feeTicketId":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1","nullable":true}},"required":["orderId","tokenAmount","unitPriceSompi","totalPriceSompi"]},"Kcc20QuoteResponseDto":{"type":"object","properties":{"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"side":{"type":"string","enum":["buy","sell"],"example":"buy"},"requestedAmount":{"type":"string","example":"1"},"availableAmount":{"type":"string","example":"125","nullable":true},"minFillAmount":{"type":"string","example":"25","nullable":true},"orderId":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1","nullable":true},"unitPriceSompi":{"type":"string","example":"1000000","nullable":true},"totalPriceSompi":{"type":"string","example":"1000000","nullable":true},"grossSompi":{"type":"string","example":"1000000","nullable":true},"estimatedProtocolFeeSompi":{"type":"string","example":"50000","nullable":true},"minimumProtocolFeeSompi":{"type":"string","example":"50000","nullable":true},"feePayer":{"type":"string","enum":["buyer","seller","matcher","none"]},"feeTiming":{"type":"string","enum":["order-creation","fill","cross-match"]},"buyerPaysSompi":{"type":"string","example":"1050000","nullable":true},"sellerReceivesSompi":{"type":"string","example":"950000","nullable":true},"executionMode":{"type":"string","enum":["single","multi","none"],"example":"single","nullable":true},"fills":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20QuoteFillResponseDto"}},"fillableAmount":{"type":"string","example":"1000000000","nullable":true},"unfilledAmount":{"type":"string","example":"0","nullable":true},"averageUnitPriceSompi":{"type":"string","example":"250000000","nullable":true},"protocolFeeSompi":{"type":"string","example":"50000","nullable":true},"feeTicketEligible":{"type":"boolean","example":false},"feeTicketRootId":{"type":"string","example":"fd73bd9e...","nullable":true},"feeTicketDiscountBps":{"type":"number","example":5000,"nullable":true},"feeTicketDiscountedProtocolFeeSompi":{"type":"string","example":"25000","nullable":true},"feeTicketSupported":{"type":"boolean","example":false},"feeTicketReason":{"type":"string","example":"order_unsupported","nullable":true},"valid":{"type":"boolean","example":false},"errors":{"example":["amount is below order min fill"],"type":"array","items":{"type":"string"}}},"required":["tokenIdHex","side","requestedAmount","feeTicketEligible","feeTicketSupported","valid","errors"]},"Kcc20OrderLineageResponseDto":{"type":"object","properties":{"orderId":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1"},"txidHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71"},"vout":{"type":"number","example":1},"address":{"type":"string","example":"kaspatest:pq...","nullable":true},"amountSompi":{"type":"number","example":25000000,"nullable":true},"blockTimeMs":{"type":"number","example":1779607519456,"nullable":true},"entrypoint":{"type":"string","example":"fillBidPartial","nullable":true},"fillTxidHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71","nullable":true},"previousOutpoint":{"type":"object","nullable":true},"state":{"type":"object","nullable":true}},"required":["orderId","txidHex","vout"]},"Kcc20OrderDetailResponseDto":{"type":"object","properties":{"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"orderId":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1"},"side":{"type":"string","enum":["ask","bid"],"example":"bid"},"status":{"type":"string","example":"open"},"current":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/Kcc20OrderResponseDto"}]},"ask":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/Kcc20OrderResponseDto"}]},"bid":{"nullable":true,"type":"object","allOf":[{"$ref":"#/components/schemas/Kcc20OrderResponseDto"}]},"fills":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20ActivityResponseDto"}},"lineage":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20OrderLineageResponseDto"}}},"required":["tokenIdHex","orderId","side","status","fills","lineage"]},"Kcc20AddressOrdersResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20OrderResponseDto"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"sortBy":{"type":"string"},"sortDirection":{"type":"string","enum":["asc","desc"]}},"required":["items","total","limit","offset"]},"Kcc20AddressTradesResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20ActivityResponseDto"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"sortBy":{"type":"string"},"sortDirection":{"type":"string","enum":["asc","desc"]}},"required":["items","total","limit","offset"]},"Kcc20AddressTradingHistoryRowDto":{"type":"object","properties":{"source":{"type":"string","enum":["trade","order"]},"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"side":{"type":"string","example":"buy","nullable":true},"tokenAmount":{"type":"string","example":"25","nullable":true},"unitPriceSompi":{"type":"string","example":"1000000","nullable":true},"timeMs":{"type":"number","example":1779607519456},"orderId":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71:1","nullable":true},"status":{"type":"string","example":"filled"},"txidHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71","nullable":true}},"required":["source","tokenIdHex","timeMs","status"]},"Kcc20AddressTradingHistoryResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20AddressTradingHistoryRowDto"}},"total":{"type":"number"},"limit":{"type":"number"},"offset":{"type":"number"},"sortBy":{"type":"string"},"sortDirection":{"type":"string","enum":["asc","desc"]}},"required":["items","total","limit","offset"]},"Kcc20BalanceResponseDto":{"type":"object","properties":{"tokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"ownerIdentifier":{"type":"string","example":"4b1fa9e6222ee1b801985486fea1f574e693c7ee5d3933d56f3995c7785032d4"},"amount":{"type":"string","example":"1000"},"identifierType":{"type":"number","example":0},"identifierTypeName":{"type":"string","example":"pubkey"},"isMinter":{"type":"boolean","example":true},"utxoCount":{"type":"number","example":5},"lastChangeMs":{"type":"number","example":1779607519456}},"required":["tokenIdHex","ownerIdentifier","amount","identifierType","identifierTypeName","isMinter","utxoCount","lastChangeMs"]},"Kcc20AccountPositionResponseDto":{"type":"object","properties":{"canonicalTokenIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"wrapperIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1","nullable":true},"wrappedMarketIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1","nullable":true},"canonicalBalance":{"type":"string","example":"1000"},"wrappedBalance":{"type":"string","example":"125"},"v2Balance":{"type":"string","example":"1000"},"v3Balance":{"type":"string","example":"125"},"totalBalance":{"type":"string","example":"1125"},"openAskAmount":{"type":"string","example":"25"},"openBidAmount":{"type":"string","example":"50"},"openOrderCount":{"type":"number","example":2},"feeTicketSupported":{"type":"boolean","example":false},"lastChangeMs":{"type":"number","example":1779607519456,"nullable":true}},"required":["canonicalTokenIdHex","canonicalBalance","wrappedBalance","v2Balance","v3Balance","totalBalance","openAskAmount","openBidAmount","openOrderCount","feeTicketSupported"]},"Kcc20SettlementActionResponseDto":{"type":"object","properties":{"txidHex":{"type":"string","example":"09fa307cdf375615feb88c489414b2085af3e09c50fb95e0d09a9e85bd947d71"},"action":{"type":"string","example":"spend"},"entrypoint":{"type":"string","example":"fillBidPartial","nullable":true},"covenantIdHex":{"type":"string","example":"fd73bd9efd0544c0f2085bf901ecd6bf7ef03f38029e421af736f6206e0fb3d1"},"classificationKind":{"type":"string","example":"covenant"},"classificationStatus":{"type":"string","example":"matched"},"address":{"type":"string","example":"kaspatest:pq..."},"blockTimeMs":{"type":"number","example":1779607519456},"decodedArgs":{"type":"object","nullable":true},"inputs":{"type":"object","nullable":true},"outputs":{"type":"object","nullable":true}},"required":["txidHex","action","covenantIdHex","classificationKind","classificationStatus","address","blockTimeMs"]},"Kcc20SettlementStatusResponseDto":{"type":"object","properties":{"indexed":{"type":"boolean","example":true},"decoded":{"type":"boolean","example":true},"actionCount":{"type":"number","example":5},"actions":{"type":"array","items":{"$ref":"#/components/schemas/Kcc20SettlementActionResponseDto"}},"scanner":{"$ref":"#/components/schemas/Kcc20FreshnessScannerDto"}},"required":["actionCount","actions"]},"WalletProviderTokenMetadataDto":{"type":"object","properties":{"covenantId":{"type":"string","example":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"},"name":{"type":"string","example":"Kaspa Token","nullable":true},"ticker":{"type":"string","example":"KCC","nullable":true},"logoUrl":{"type":"string","example":"https://cdn.example/token.png","nullable":true},"metadataSource":{"type":"string","example":"app-submitted","nullable":true},"metadataVerificationStatus":{"type":"string","example":"unverified","nullable":true},"decimals":{"type":"number","example":8,"nullable":true,"description":"Immutable KCC20 token decimals when known."},"tokenDisplayScale":{"type":"string","example":"100000000","nullable":true,"description":"Base-unit scale for one display token. Balance amounts are returned in base units."}},"required":["covenantId"]},"WalletProviderNativeBalanceDto":{"type":"object","properties":{"amount":{"type":"string","example":"1000"},"utxoCount":{"type":"number","example":2},"transferable":{"type":"boolean","example":true},"wrappable":{"type":"boolean","example":true}},"required":["amount","utxoCount","transferable","wrappable"]},"WalletProviderWrappedBalanceDto":{"type":"object","properties":{"wrappedMarketId":{"type":"string","example":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","nullable":true},"amount":{"type":"string","example":"250"},"utxoCount":{"type":"number","example":1},"transferable":{"type":"boolean","example":false},"tradeable":{"type":"boolean","example":true},"unwrapSupported":{"type":"boolean","example":true}},"required":["amount","utxoCount","transferable","tradeable","unwrapSupported"]},"WalletProviderTokenFeatureDto":{"type":"object","properties":{"displayable":{"type":"boolean","example":true},"transferable":{"type":"boolean","example":true},"wrappable":{"type":"boolean","example":true},"tradeable":{"type":"boolean","example":true},"unwrapSupported":{"type":"boolean","example":true}},"required":["displayable","transferable"]},"WalletProviderBuilderCapabilityDto":{"type":"object","properties":{"key":{"type":"string","example":"kcc20v2.transfer"},"status":{"type":"string","example":"ready-to-build"},"operation":{"type":"string","example":"transfer-token"},"contract":{"type":"string","example":"KCC20V2"},"action":{"type":"string","example":"transfer"}},"required":["key","status","operation","contract","action"]},"WalletProviderCapabilitiesDto":{"type":"object","properties":{"v2":{"$ref":"#/components/schemas/WalletProviderTokenFeatureDto"},"wrappedV3":{"$ref":"#/components/schemas/WalletProviderTokenFeatureDto"},"builders":{"type":"array","items":{"$ref":"#/components/schemas/WalletProviderBuilderCapabilityDto"}}},"required":["v2","wrappedV3","builders"]},"WalletProviderTokenBalanceDto":{"type":"object","properties":{"canonicalCovenantId":{"type":"string","example":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"},"token":{"$ref":"#/components/schemas/WalletProviderTokenMetadataDto"},"nativeBalance":{"$ref":"#/components/schemas/WalletProviderNativeBalanceDto"},"wrappedBalance":{"$ref":"#/components/schemas/WalletProviderWrappedBalanceDto"},"capabilities":{"$ref":"#/components/schemas/WalletProviderCapabilitiesDto"},"lastChangeMs":{"type":"number","example":1779607519456,"nullable":true}},"required":["canonicalCovenantId","token","nativeBalance","wrappedBalance","capabilities"]},"WalletProviderBalancesResponseDto":{"type":"object","properties":{"ownerIdentifier":{"type":"string","example":"abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789"},"items":{"type":"array","items":{"$ref":"#/components/schemas/WalletProviderTokenBalanceDto"}},"total":{"type":"number","example":1},"limit":{"type":"number","example":100},"offset":{"type":"number","example":0},"sortBy":{"type":"string","enum":["canonicalCovenantId","ticker","name","nativeAmount","wrappedAmount","totalAmount","lastChangeMs"]},"sortDirection":{"type":"string","enum":["asc","desc"]},"generatedAtMs":{"type":"number","example":1779607519456}},"required":["ownerIdentifier","items","total","limit","offset","generatedAtMs"]},"WalletProviderTokenDirectoryItemDto":{"type":"object","properties":{"covenantId":{"type":"string","example":"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"},"name":{"type":"string","example":"Kaspa Token","nullable":true},"ticker":{"type":"string","example":"KCC","nullable":true},"logoUrl":{"type":"string","example":"https://cdn.example/token.png","nullable":true},"metadataSource":{"type":"string","example":"app-submitted","nullable":true},"metadataVerificationStatus":{"type":"string","example":"unverified","nullable":true},"decimals":{"type":"number","example":8,"nullable":true,"description":"Immutable KCC20 token decimals when known."},"tokenDisplayScale":{"type":"string","example":"100000000","nullable":true,"description":"Base-unit scale for one display token. Balance amounts are returned in base units."}},"required":["covenantId"]},"WalletProviderTokenDirectoryResponseDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WalletProviderTokenDirectoryItemDto"}},"total":{"type":"number","example":10},"cacheTtlSeconds":{"type":"number","example":86400},"generatedAtMs":{"type":"number","example":1779607519456}},"required":["items","total","cacheTtlSeconds","generatedAtMs"]}}}}