{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"servers":[{"url":"https://api.nest.credit/v1","description":"Nest API Server"}],"components":{"schemas":{"VaultInfo":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Address of the `NestAccountant` for the vault. If both `accountantAddress` and `nestAccountant` are defined for a vault, then `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant` is the new `NestAccountant`."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains","example":[{"56":18}]},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"sec30d":{"type":"number","nullable":true},"tvl":{"type":"number","nullable":true},"numHolders":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","sec30d","tvl","numHolders","volume24h"]},"PublicNestComposer":{"type":"object","properties":{"asset":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["asset","composerAddress"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]}}},"LiquidAsset":{"type":"object","properties":{"contractAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"symbol":{"type":"string"},"iconUrl":{"type":"string","nullable":true},"decimals":{"type":"number"},"price":{"type":"number"},"chainId":{"type":"number"},"minimumSourceRules":{"type":"array","items":{"type":"object","properties":{"sourceChain":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sourceParams":{"type":"object","properties":{"excludeWallets":{"type":"array","items":{"type":"string"}}}}},"required":["sourceChain"]}}},"required":["contractAddress","symbol","decimals","price","chainId"]},"VaultDetails":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Address of the `NestAccountant` for the vault. If both `accountantAddress` and `nestAccountant` are defined for a vault, then `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant` is the new `NestAccountant`."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains","example":[{"56":18}]},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"tvl":{"type":"number","nullable":true},"tvl30DayChange":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]},"tokenPrice":{"type":"number","nullable":true},"tokenPriceUpdatedAtEpoch":{"type":"number","nullable":true},"liquidFunds":{"type":"number","nullable":true},"liquidFundsRange":{"type":"number","nullable":true},"holders":{"type":"number","nullable":true},"tokenPriceUpdatedAt":{"type":"string","nullable":true,"format":"date-time"},"pendingRedemptions":{"type":"number","nullable":true},"shortfall":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","tvl","tvl30DayChange","volume24h","apy","tokenPrice","tokenPriceUpdatedAtEpoch","liquidFunds","liquidFundsRange","holders","tokenPriceUpdatedAt","pendingRedemptions","shortfall"]},"VaultDetailsLite":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Address of the `NestAccountant` for the vault. If both `accountantAddress` and `nestAccountant` are defined for a vault, then `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant` is the new `NestAccountant`."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains","example":[{"56":18}]},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"tvl":{"type":"number","nullable":true},"tvl30DayChange":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]},"tokenPrice":{"type":"number","nullable":true},"tokenPriceUpdatedAtEpoch":{"type":"number","nullable":true},"liquidFunds":{"type":"number","nullable":true},"liquidFundsRange":{"type":"number","nullable":true},"holders":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","tvl","tvl30DayChange","volume24h","apy","tokenPrice","tokenPriceUpdatedAtEpoch","liquidFunds","liquidFundsRange","holders"]},"VaultApy":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Composition-weighted yield APY based on underlying yield-bearing assets. Liquid assets do NOT dilute this value (liquid assets are excluded from the APY denominator)."},"navApy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Price-delta (NAV-based) APY calculated from vault token price changes over time."},"breakdown":{"type":"object","properties":{"totalValue":{"type":"number"},"liquidAssets":{"type":"object","properties":{"totalValue":{"type":"number"},"weight":{"type":"number"}},"required":["totalValue","weight"]},"yieldAssets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"value":{"type":"number"},"weight":{"type":"number"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]}},"required":["slug","value","weight","apy"]}}},"required":["totalValue","liquidAssets","yieldAssets"],"description":"Optional breakdown of how composition APY is calculated"},"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"The external API or service that caused the error","example":"superstate"},"operation":{"type":"string","description":"The operation that failed","example":"getPendingTransactions"},"message":{"type":"string","description":"Human-readable error message","example":"superstate getPendingTransactions timed out after 10000ms"},"code":{"type":"string","enum":["TIMEOUT","NETWORK_ERROR","EXTERNAL_API_ERROR","UNKNOWN_ERROR"],"description":"Error classification code","example":"TIMEOUT"},"timestamp":{"type":"number","description":"Unix timestamp in seconds when error occurred","example":1704067200}},"required":["source","operation","message","timestamp"]},"description":"Non-fatal errors that occurred during request processing (e.g., external API timeouts)"}},"required":["vaultAddress","apy","navApy"]},"VaultTvl":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tvl":{"type":"number","nullable":true}},"required":["vaultAddress","tvl"]},"VaultVolume":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"volume24h":{"type":"number","nullable":true}},"required":["vaultAddress","volume24h"]},"VaultHolders":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"totalHolders":{"type":"number","nullable":true},"holders":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number"},"user":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},{"type":"string"}]},"balance":{"type":"number"},"holderSince":{"type":"number"}},"required":["chainId","user","balance","holderSince"]},"description":"Top holders for the vault by balance"}},"required":["vaultAddress","totalHolders","holders"]},"VaultsStats":{"type":"object","properties":{"totalTvl":{"type":"number","description":"Current TVL summed across all vaults and chains"},"totalVolumeAllTime":{"type":"number","description":"All-time gross volume (deposits + redemptions) across all vaults and chains"},"totalHolders":{"type":"number","description":"Current holder count with chain-level dedupe per vault token (same user in same vault across chains counts once)"}},"required":["totalTvl","totalVolumeAllTime","totalHolders"]},"VaultApyHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Composition-weighted yield APY for this day (liquid assets excluded from APY denominator)."},"navApy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Price-delta (NAV-based) APY for this day."}},"required":["day","apy","navApy"]}},"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"The external API or service that caused the error","example":"superstate"},"operation":{"type":"string","description":"The operation that failed","example":"getPendingTransactions"},"message":{"type":"string","description":"Human-readable error message","example":"superstate getPendingTransactions timed out after 10000ms"},"code":{"type":"string","enum":["TIMEOUT","NETWORK_ERROR","EXTERNAL_API_ERROR","UNKNOWN_ERROR"],"description":"Error classification code","example":"TIMEOUT"},"timestamp":{"type":"number","description":"Unix timestamp in seconds when error occurred","example":1704067200}},"required":["source","operation","message","timestamp"]},"description":"Non-fatal errors that occurred during request processing (e.g., external API timeouts)"}},"required":["vaultAddress","history"]},"VaultTvlHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"tvl":{"type":"number","nullable":true,"description":"TVL at close of day"}},"required":["day","tvl"]}}},"required":["vaultAddress","history"]},"VaultHoldersHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"chainId":{"type":"number"},"start":{"type":"number","nullable":true},"end":{"type":"number","nullable":true},"min":{"type":"number","nullable":true},"max":{"type":"number","nullable":true},"average":{"type":"number","nullable":true},"count":{"type":"number","nullable":true}},"required":["day","chainId","start","end","min","max","average","count"]}}},"required":["vaultAddress","history"]},"VaultVolumeHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"volume24h":{"type":"number","nullable":true}},"required":["day","volume24h"]}}},"required":["vaultAddress","history"]},"VaultPendingRedemptionsUnion":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"pendingRedemptions":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AtomicQueuePendingRedemptionEntry"},{"$ref":"#/components/schemas/NestVaultPendingRedemptionResponseEntry"}],"discriminator":{"propertyName":"redemptionType","mapping":{"atomicQueue":"#/components/schemas/AtomicQueuePendingRedemptionEntry","nest":"#/components/schemas/NestVaultPendingRedemptionResponseEntry"}}}}},"required":["vaultAddress","pendingRedemptions"]},"AtomicQueuePendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"amount":{"type":"number"},"requestedAt":{"type":"number"},"expiresAt":{"type":"number"},"queueAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"wantTokenContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"minPrice":{"type":"number","description":"The price in terms of `want` asset the user wants their `offer` assets 'sold' at"},"isValid":{"type":"boolean","description":"Whether the redemption is valid. False if the redemption is expired or invalid."},"redemptionType":{"type":"string","enum":["atomicQueue"]}},"required":["requestTransactionHash","user","chainId","amount","requestedAt","expiresAt","queueAddress","wantTokenContractAddress","minPrice","isValid","redemptionType"]},"NestVaultPendingRedemptionResponseEntry":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntry"},{"type":"object","properties":{"redemptionType":{"type":"string","enum":["nest"]}},"required":["redemptionType"]}]},"NestVaultPendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","currentPendingShares","currentRedeemableShares","requestedAt","lastUpdatedAt","operatorApproved"]},"VaultFailedRedemptions":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"failedRedemptions":{"type":"array","items":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"amount":{"type":"number"},"requestedAt":{"type":"number"},"expiresAt":{"type":"number"},"queueAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"wantTokenContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"minPrice":{"type":"number","description":"The price in terms of `want` asset the user wants their `offer` assets 'sold' at"},"isValid":{"type":"boolean","description":"Whether the redemption is valid. False if the redemption is expired or invalid."}},"required":["requestTransactionHash","user","chainId","amount","requestedAt","expiresAt","queueAddress","wantTokenContractAddress","minPrice","isValid"]}}},"required":["vaultAddress","failedRedemptions"]},"VaultFulfilledRedemptions":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"fulfilledRedemptions":{"type":"array","items":{"$ref":"#/components/schemas/FulfilledRedemption"}}},"required":["vaultAddress","fulfilledRedemptions"]},"FulfilledRedemption":{"type":"object","properties":{"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"offerAmountSpent":{"type":"number"},"wantAmountReceived":{"type":"number"},"chainId":{"type":"number"},"fulfilledAt":{"type":"number"}},"required":["transactionHash","user","offerAmountSpent","wantAmountReceived","chainId","fulfilledAt"]},"NestVaultPendingRedemptionSummary":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"currentClaimableAssets":{"type":"number"},"pendingRedemptions":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntryWithHistory"}}},"required":["assetAddress","currentPendingShares","currentRedeemableShares","currentClaimableAssets","pendingRedemptions"]},"NestVaultPendingRedemptionEntryWithHistory":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionBase"},{"type":"object","properties":{"currentClaimableAssets":{"type":"number"},"claimableAssetsSource":{"type":"string","enum":["estimated_per_request"]},"processedHistory":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultProcessedRedemption"}}},"required":["currentClaimableAssets","claimableAssetsSource","processedHistory"]}]},"NestVaultProcessedRedemption":{"type":"object","properties":{"nestShareAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"logIndex":{"type":"number"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"updateType":{"type":"string","enum":["UPDATE_REDEEM","FULFILL_REDEEM","REDEEM","INSTANT_REDEEM"]},"sharesProcessed":{"type":"number"},"assetsProcessed":{"type":"number"},"processedAt":{"type":"number"},"redemptionRequestedAt":{"type":"number"}},"required":["nestShareAddress","nestVaultAddress","assetAddress","requestTransactionHash","transactionHash","logIndex","user","chainId","updateType","sharesProcessed","assetsProcessed","processedAt","redemptionRequestedAt"]},"NestVaultPendingRedemptionBase":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","currentPendingShares","currentRedeemableShares","requestedAt","lastUpdatedAt","operatorApproved"]},"VaultLastPriceUpdate":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"lastPriceUpdates":{"type":"array","items":{"type":"object","properties":{"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Accountant contract that emitted the price update event.","example":"0x1234567890123456789012345678901234567890"},"chainId":{"type":"number"},"price":{"type":"number"},"prevPrice":{"type":"number"},"updatedAt":{"type":"number"}},"required":["accountantAddress","chainId","price","prevPrice","updatedAt"]},"description":"Latest indexed price update for the requested accountant, or for the default pricing accountant on each configured chain when no accountant is specified."}},"required":["vaultAddress","lastPriceUpdates"]},"VaultPriceInfo":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nav":{"type":"number"},"price":{"type":"number"},"totalSupply":{"type":"number"},"interpolatedPrice":{"type":"number","description":"Synthetic interpolated price derived from the latest real price update and a fixed APR. Present only for supported vaults."}},"required":["vaultAddress","nav","price","totalSupply"]},"yield":{"type":"number","nullable":true,"description":"yield from position, if available"},"VaultAuthority":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Accountant address of the vault","example":"0x1234567890123456789012345678901234567890"},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for boringNest vaults."},"authority":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Authority contract address for the vault","example":"0x1234567890123456789012345678901234567890"}},"required":["vaultAddress","accountantAddress","authority"]},"VaultRoleAssignmentsPaginated":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"roleAssignments":{"type":"array","items":{"$ref":"#/components/schemas/RoleAssignment"},"description":"List of role assignments for the vault"},"pageInfo":{"type":"object","properties":{"endCursor":{"type":"string","nullable":true,"description":"Cursor to fetch the next page of results"},"hasNextPage":{"type":"boolean","description":"Whether another page of results is available"}},"required":["endCursor","hasNextPage"]}},"required":["vaultAddress","roleAssignments","pageInfo"]},"RoleAssignment":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address with the role assignment","example":"0x1234567890123456789012345678901234567890"},"role":{"type":"string","enum":["STRATEGIST","MANAGER","TELLER","UPDATE_EXCHANGE_RATE","SOLVER","PAUSER"],"description":"Role assigned to the user","example":"STRATEGIST"},"enabled":{"type":"boolean","description":"Whether the role assignment is enabled","example":true},"chainId":{"type":"number","description":"Chain ID where the role assignment exists","example":1}},"required":["vaultAddress","user","role","enabled","chainId"]},"VaultPendingRedemptions":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"pendingRedemptions":{"type":"array","items":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"amount":{"type":"number"},"requestedAt":{"type":"number"},"expiresAt":{"type":"number"},"queueAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"wantTokenContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"minPrice":{"type":"number","description":"The price in terms of `want` asset the user wants their `offer` assets 'sold' at"},"isValid":{"type":"boolean","description":"Whether the redemption is valid. False if the redemption is expired or invalid."}},"required":["requestTransactionHash","user","chainId","amount","requestedAt","expiresAt","queueAddress","wantTokenContractAddress","minPrice","isValid"]}}},"required":["vaultAddress","pendingRedemptions"]},"VaultCompositionHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number","description":"Unix timestamp at start of day (UTC)"},"totalValue":{"type":"number","description":"Total vault value in USD"},"liquidAssets":{"type":"object","properties":{"totalValue":{"type":"number","description":"Total value of liquid assets in USD"},"weight":{"type":"number","description":"Proportion of vault total value (0-1)"},"assets":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"value":{"type":"number","description":"Value in USD"}},"required":["assetAddress","chainId","value"]},"description":"Individual liquid asset positions"}},"required":["totalValue","weight","assets"]},"yieldAssets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"Unique identifier for the yield asset"},"totalValue":{"type":"number","description":"Total value across all tokens in USD"},"weight":{"type":"number","description":"Proportion of vault total value (0-1)"},"tokens":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"isPending":{"type":"boolean","description":"When true, this token entry represents pending (in-transit) redemption value rather than an on-chain token balance."},"balance":{"type":"number","description":"Token balance in native units"},"price":{"type":"number","description":"Price per token in USD"},"value":{"type":"number","description":"Total value in USD (balance * price)"}},"required":["tokenAddress","chainId","balance","price","value"]},"description":"Individual token positions within this yield asset"}},"required":["slug","totalValue","weight","tokens"]}}},"required":["day","totalValue","liquidAssets","yieldAssets"]}}},"required":["vaultAddress","history"]},"VaultPerformanceHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["slug","name"]}},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"vault":{"type":"object","properties":{"price":{"type":"number","nullable":true},"tvl":{"type":"number","nullable":true},"liquidFunds":{"type":"number","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]},"navApy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]}},"required":["price","tvl","liquidFunds","apy","navApy"]},"assets":{"type":"object","additionalProperties":{"type":"object","properties":{"price":{"type":"number","nullable":true},"apy7d":{"type":"number","nullable":true},"apy30d":{"type":"number","nullable":true},"compositionPct":{"type":"number","nullable":true}},"required":["price","apy7d","apy30d","compositionPct"]}}},"required":["day","vault"]}}},"required":["vaultAddress","assets","history"]},"PredicateMessage":{"type":"object","properties":{"taskId":{"type":"string","nullable":true},"expireByBlockNumber":{"type":"number","nullable":true},"signerAddresses":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"}},"signatures":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"}}},"required":["taskId","expireByBlockNumber","signerAddresses","signatures"]}},"parameters":{}},"paths":{"/vaults":{"get":{"tags":["Vaults"],"description":"Get all vaults info","parameters":[{"schema":{"type":"string","description":"Filter vaults by status: true for active only, false for inactive only","example":"true"},"required":false,"description":"Filter vaults by status: true for active only, false for inactive only","name":"live","in":"query"}],"responses":{"200":{"description":"Get all vaults info","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultInfo"}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}}}}},"/vaults/details":{"get":{"tags":["Vaults"],"description":"Get VaultDetails for all vaults","parameters":[{"schema":{"type":"string","description":"Filter vaults by status: true for active only, false for inactive only","example":"true"},"required":false,"description":"Filter vaults by status: true for active only, false for inactive only","name":"live","in":"query"},{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"responses":{"200":{"description":"VaultDetails for all vaults","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultDetails"}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/details-lite":{"get":{"tags":["Vaults"],"description":"Get VaultDetailsLite for all vaults","parameters":[{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"responses":{"200":{"description":"VaultDetailsLite for all vaults","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultDetailsLite"}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/apy":{"get":{"tags":["Vaults"],"description":"Get 7d, 30d and SEC 30d APYs for all vaults. `apy` is the composition-weighted yield APY based on underlying yield-bearing assets (liquid assets are excluded from the APY denominator). `navApy` is the price-delta (NAV-based) APY computed from vault token price changes.","parameters":[{"schema":{"type":"string","default":false},"required":false,"name":"includeBreakdown","in":"query"}],"responses":{"200":{"description":"VaultApy for all vaults","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultApy"}}},"required":["data"]}}}}}}},"/vaults/tvl":{"get":{"tags":["Vaults"],"description":"Get VaultTVL for all vaults","responses":{"200":{"description":"VaultTVL for all vaults","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultTvl"}}},"required":["data"]}}}}}}},"/vaults/volume":{"get":{"tags":["Vaults"],"description":"Get last 24h volume for all vaults","responses":{"200":{"description":"Latest 24h volume for all vaults","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultVolume"}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/holders":{"get":{"tags":["Vaults"],"description":"Get number of holders for all vaults and top holders for each vault","parameters":[{"schema":{"type":"number","nullable":true,"description":"Optional chain ID"},"required":false,"description":"Optional chain ID","name":"chainId","in":"query"}],"responses":{"200":{"description":"VaultHolders for all vaults","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultHolders"}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/stats":{"get":{"tags":["Vaults"],"description":"Get global TVL, all-time volume, and holder count across all vaults and chains","parameters":[{"schema":{"type":"string","default":false},"required":false,"name":"includeBreakdown","in":"query"}],"responses":{"200":{"description":"Global vault stats","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultsStats"}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/recent-transactions":{"get":{"tags":["Vaults"],"description":"Get recent transactions for all vaults","parameters":[{"schema":{"type":"number","nullable":true,"description":"Optional chain ID"},"required":false,"description":"Optional chain ID","name":"chainId","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":100,"default":10,"description":"Maximum number of transactions per vault to return","example":10},"required":false,"description":"Maximum number of transactions per vault to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Recent transactions for all vaults","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionCount7d":{"type":"number","description":"Number of transactions in the last 7 days","example":100},"recentTransactions":{"type":"array","items":{"type":"object","properties":{"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Transaction hash","example":"0x1234567890123456789012345678901234567890"},"logIndex":{"type":"integer","description":"Log index of the event within the transaction receipt","example":12},"transactionType":{"type":"string","enum":["DEPOSIT","WITHDRAW_REQUEST","WITHDRAW_FULFILL","WITHDRAW_UPDATE","WITHDRAW_CLAIM","PRE_DEPOSIT_MIGRATION","WITHDRAW_INSTANT"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Vault address","example":"0x1234567890123456789012345678901234567890"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address","example":"0x1234567890123456789012345678901234567890"},"createdAt":{"type":"number","description":"Transaction created at in epoch seconds","example":1717334400},"shares":{"type":"number","description":"Shares","example":100},"sharesTokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Shares token address","example":"0x1234567890123456789012345678901234567890"},"assets":{"type":"number","nullable":true,"description":"Assets","example":100},"assetsTokenAddress":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]+$","description":"Assets token address","example":"0x1234567890123456789012345678901234567890"},"chainId":{"type":"number","description":"Chain ID","example":1}},"required":["transactionHash","logIndex","transactionType","vaultAddress","user","createdAt","shares","sharesTokenAddress","assets","assetsTokenAddress","chainId"]}}},"required":["vaultAddress","transactionCount7d","recentTransactions"]}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/apy-history":{"get":{"tags":["Vault History"],"description":"Get APY history for all vaults for the given date range. `apy` is the composition-weighted yield APY (liquid assets are excluded from the APY denominator). `navApy` is the price-delta (NAV-based) APY computed from vault token price changes.","parameters":[{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Ordering for history arrays. `desc` returns newest first. `asc` returns oldest first.","example":"desc"},"required":false,"description":"Ordering for history arrays. `desc` returns newest first. `asc` returns oldest first.","name":"order","in":"query"},{"schema":{"type":"number","nullable":true,"default":98866,"description":"Optional chain ID. Defaults to Plume: 98866"},"required":false,"description":"Optional chain ID. Defaults to Plume: 98866","name":"chainId","in":"query"}],"responses":{"200":{"description":"Vault APY history with composition and NAV-based APY","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultApyHistory"}}},"required":["data"]}}}}}}},"/vaults/tvl-history":{"get":{"tags":["Vault History"],"description":"Get TVL history for all vaults for the given date range","parameters":[{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"}],"responses":{"200":{"description":"VaultTVLHistory for all vaults","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultTvlHistory"}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/holders-history":{"get":{"tags":["Vault History"],"description":"Get VaultHoldersHistory for all vaults for the given date range","parameters":[{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"}],"responses":{"200":{"description":"VaultHoldersHistory for all vaults for the given date range","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultHoldersHistory"}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/volume-history":{"get":{"tags":["Vault History"],"description":"Get daily volume history for all vaults for the given date range","parameters":[{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"}],"responses":{"200":{"description":"Daily volume history for all vaults for the given date range","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultVolumeHistory"}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/details":{"get":{"tags":["Vaults"],"description":"Get VaultDetails by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"responses":{"200":{"description":"Vault details by slug","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultDetails"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}}}}},"/vaults/{slug}/details-lite":{"get":{"tags":["Vaults"],"description":"Get VaultDetailsLite by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"responses":{"200":{"description":"Vault details by slug","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultDetailsLite"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}}}}},"/vaults/{slug}/apy":{"get":{"tags":["Vaults"],"description":"Get Vault APY by slug. `apy` is the composition-weighted yield APY based on underlying yield-bearing assets (liquid assets are excluded from the APY denominator). `navApy` is the price-delta (NAV-based) APY computed from vault token price changes.","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"string","default":false},"required":false,"name":"includeBreakdown","in":"query"}],"responses":{"200":{"description":"Vault APY","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultApy"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/tvl":{"get":{"tags":["Vaults"],"description":"Get Vault TVL by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"}],"responses":{"200":{"description":"Vault TVL","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultTvl"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}":{"get":{"tags":["Vaults"],"description":"Get VaultInfo by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"}],"responses":{"200":{"description":"VaultInfo","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultInfo"}},"required":["data"]}}}},"400":{"description":"Invalid slug","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/holders":{"get":{"tags":["Vaults"],"description":"Get total number of holders and top holders for a vault by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Optional chain ID"},"required":false,"description":"Optional chain ID","name":"chainId","in":"query"}],"responses":{"200":{"description":"Vault holders","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultHolders"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/volume":{"get":{"tags":["Vaults"],"description":"Get latest 24h volume for a vault by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"}],"responses":{"200":{"description":"Vault volume","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultVolume"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/pending-redemptions":{"get":{"tags":["Vaults"],"description":"Get Vault pending redemptions by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Optional expiration start date filter. Defaults to 30 days ago if not provided."},"required":false,"description":"Optional expiration start date filter. Defaults to 30 days ago if not provided.","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Optional expiration end date"},"required":false,"description":"Optional expiration end date","name":"endDate","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional user address"},"required":false,"description":"Optional user address","name":"user","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Optional chain ID"},"required":false,"description":"Optional chain ID","name":"chainId","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional atomic queue address. Only applies to atomicQueue redemptions."},"required":false,"description":"Optional atomic queue address. Only applies to atomicQueue redemptions.","name":"queueAddress","in":"query"},{"schema":{"type":"string","default":true,"description":"Optional boolean filter for only valid redemptions. Defaults to true. Only applies to atomicQueue redemptions"},"required":false,"description":"Optional boolean filter for only valid redemptions. Defaults to true. Only applies to atomicQueue redemptions","name":"onlyValid","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional asset address (NestVault only)"},"required":false,"description":"Optional asset address (NestVault only)","name":"assetAddress","in":"query"},{"schema":{"type":"string","enum":["atomicQueue","nest","all"],"description":"Optional redemption type. Defaults to atomicQueue for boring vaults and nest for nest vaults if not specified. If \"all\" is specified, all redemptions will be returned."},"required":false,"description":"Optional redemption type. Defaults to atomicQueue for boring vaults and nest for nest vaults if not specified. If \"all\" is specified, all redemptions will be returned.","name":"redemptionType","in":"query"}],"responses":{"200":{"description":"Vault's PendingRedemption(s)","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultPendingRedemptionsUnion"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/failed-redemptions":{"get":{"tags":["Vaults"],"description":"Get Vault failed redemptions by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Optional expiration start date filter. Defaults to 30 days ago if not provided."},"required":false,"description":"Optional expiration start date filter. Defaults to 30 days ago if not provided.","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Optional expiration end date"},"required":false,"description":"Optional expiration end date","name":"endDate","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional user address"},"required":false,"description":"Optional user address","name":"user","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Optional chain ID"},"required":false,"description":"Optional chain ID","name":"chainId","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional atomic queue address. Only applies to atomicQueue redemptions."},"required":false,"description":"Optional atomic queue address. Only applies to atomicQueue redemptions.","name":"queueAddress","in":"query"}],"responses":{"200":{"description":"Vault's FailedRedemption(s) for the given user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultFailedRedemptions"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/fulfilled-redemptions":{"get":{"tags":["Vaults"],"description":"Get Vault fulfilled redemptions by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Optional fulfillment start date filter. Defaults to 30 days ago if not provided."},"required":false,"description":"Optional fulfillment start date filter. Defaults to 30 days ago if not provided.","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Optional fulfillment end date"},"required":false,"description":"Optional fulfillment end date","name":"endDate","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional user address"},"required":false,"description":"Optional user address","name":"user","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Optional chain ID"},"required":false,"description":"Optional chain ID","name":"chainId","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional atomic queue address. Only applies to atomicQueue redemptions."},"required":false,"description":"Optional atomic queue address. Only applies to atomicQueue redemptions.","name":"queueAddress","in":"query"},{"schema":{"type":"string","enum":["atomicQueue","nest","all"],"description":"Optional redemption type. Defaults to atomicQueue for boring vaults and nest for nest vaults if not specified. If \"all\" is specified, all redemptions will be returned."},"required":false,"description":"Optional redemption type. Defaults to atomicQueue for boring vaults and nest for nest vaults if not specified. If \"all\" is specified, all redemptions will be returned.","name":"redemptionType","in":"query"}],"responses":{"200":{"description":"Vault's FulfilledRedemption(s) for the given user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultFulfilledRedemptions"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/user/{user}/pending-redemptions":{"get":{"tags":["Vaults"],"description":"Get summary and breakdown of pending redemptions for a specific user for a given vault slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"string","minLength":1,"description":"User wallet address.","example":"0x1234567890123456789012345678901234567890"},"required":true,"description":"User wallet address.","name":"user","in":"path"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional asset address to filter by"},"required":false,"description":"Optional asset address to filter by","name":"assetAddress","in":"query"}],"responses":{"200":{"description":"Vault's PendingRedemption(s) for the given user","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"pendingRedemptionSummary":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultPendingRedemptionSummary"}}},"required":["pendingRedemptionSummary"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/last-price-update":{"get":{"tags":["Vaults"],"description":"Get the latest indexed price updates for a vault by slug, filtered to the requested accountant or the default pricing accountant per chain","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Optional chain ID"},"required":false,"description":"Optional chain ID","name":"chainId","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional accountant address. If omitted, the endpoint uses the vault pricing accountant for each requested chain.","example":"0x1234567890123456789012345678901234567890"},"required":false,"description":"Optional accountant address. If omitted, the endpoint uses the vault pricing accountant for each requested chain.","name":"accountantAddress","in":"query"}],"responses":{"200":{"description":"Vault latest price updates","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultLastPriceUpdate"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/recent-transactions":{"get":{"tags":["Vaults"],"description":"Get recent transactions for a vault by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Optional chain ID"},"required":false,"description":"Optional chain ID","name":"chainId","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":100,"default":10,"description":"Maximum number of transactions to return","example":10},"required":false,"description":"Maximum number of transactions to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Recent transactions for the specified vault by slug","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionCount7d":{"type":"number","description":"Number of transactions in the last 7 days","example":100},"recentTransactions":{"type":"array","items":{"type":"object","properties":{"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Transaction hash","example":"0x1234567890123456789012345678901234567890"},"logIndex":{"type":"integer","description":"Log index of the event within the transaction receipt","example":12},"transactionType":{"type":"string","enum":["DEPOSIT","WITHDRAW_REQUEST","WITHDRAW_FULFILL","WITHDRAW_UPDATE","WITHDRAW_CLAIM","PRE_DEPOSIT_MIGRATION","WITHDRAW_INSTANT"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Vault address","example":"0x1234567890123456789012345678901234567890"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address","example":"0x1234567890123456789012345678901234567890"},"createdAt":{"type":"number","description":"Transaction created at in epoch seconds","example":1717334400},"shares":{"type":"number","description":"Shares","example":100},"sharesTokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Shares token address","example":"0x1234567890123456789012345678901234567890"},"assets":{"type":"number","nullable":true,"description":"Assets","example":100},"assetsTokenAddress":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]+$","description":"Assets token address","example":"0x1234567890123456789012345678901234567890"},"chainId":{"type":"number","description":"Chain ID","example":1}},"required":["transactionHash","logIndex","transactionType","vaultAddress","user","createdAt","shares","sharesTokenAddress","assets","assetsTokenAddress","chainId"]}}},"required":["vaultAddress","transactionCount7d","recentTransactions"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/liquid-funds":{"get":{"tags":["Vaults"],"description":"Get Liquid Funds by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"responses":{"200":{"description":"Liquid Funds","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"liquidFunds":{"type":"number","description":"Sum of all the liquidAsset balances for the vault.","example":100},"breakdown":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"balance":{"type":"number"}},"required":["assetAddress","chainId","balance"]},"description":"Breakdown of liquid funds by asset and chain."}},"required":["vaultAddress","liquidFunds","breakdown"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/price":{"get":{"tags":["Vaults"],"description":"Get the NAV, price and total supply for a vault by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"}],"responses":{"200":{"description":"Vault last price update","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultPriceInfo"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/calculated-price":{"get":{"tags":["Vault Positions"],"description":"Get Vault calculated NAV, calculated price and Total Supply by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"responses":{"200":{"description":"Vault Calculated NAV, Price, Supply and component breakdown","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"calculatedNav":{"type":"number"},"calculatedPrice":{"type":"number"},"totalSupply":{"type":"number"},"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"The external API or service that caused the error","example":"superstate"},"operation":{"type":"string","description":"The operation that failed","example":"getPendingTransactions"},"message":{"type":"string","description":"Human-readable error message","example":"superstate getPendingTransactions timed out after 10000ms"},"code":{"type":"string","enum":["TIMEOUT","NETWORK_ERROR","EXTERNAL_API_ERROR","UNKNOWN_ERROR"],"description":"Error classification code","example":"TIMEOUT"},"timestamp":{"type":"number","description":"Unix timestamp in seconds when error occurred","example":1704067200}},"required":["source","operation","message","timestamp"]},"description":"Non-fatal errors that occurred during request processing (e.g., external API timeouts)"}},"required":["vaultAddress","calculatedNav","calculatedPrice","totalSupply"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/price-range":{"get":{"tags":["Vaults"],"description":"Get the upper and lower bounds for price update for a vault by slug and chainId","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"default":98866,"description":"Chain ID. Defaults to Plume: 98866"},"required":false,"description":"Chain ID. Defaults to Plume: 98866","name":"chainId","in":"query"}],"responses":{"200":{"description":"Vault last price update","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"upperBound":{"type":"number","description":"Upper bound for price update"},"lowerBound":{"type":"number","description":"Lower bound for price update"}},"required":["upperBound","lowerBound"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/positions":{"get":{"tags":["Vaults"],"description":"Get the asset positions for a vault by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"responses":{"200":{"description":"Vault asset positions","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"positions":{"type":"object","properties":{"liquidAssets":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"symbol":{"type":"string","nullable":true},"position":{"type":"object","properties":{"value":{"type":"number"}},"required":["value"]},"pendingTransactions":{"type":"array","items":{"type":"object","properties":{"value":{"type":"number"}},"required":["value"]}}},"required":["tokenAddress","chainId","symbol","position","pendingTransactions"]}},"yieldAssets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"tokens":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"symbol":{"type":"string","nullable":true},"position":{"type":"object","properties":{"amount":{"type":"number"},"price":{"type":"number"},"value":{"type":"number"},"yield":{"$ref":"#/components/schemas/yield"}},"required":["amount","price","value","yield"]},"pendingTransactions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PendingDeposit","PendingWithdrawal"]},"amount":{"type":"number"},"price":{"type":"number"},"value":{"type":"number"},"requestId":{"type":"number"}},"required":["type","amount","price","value"]}}},"required":["tokenAddress","chainId","symbol","position","pendingTransactions"]}}},"required":["slug","tokens"]}}},"required":["liquidAssets","yieldAssets"]},"supplyByChain":{"type":"object","additionalProperties":{"type":"object","properties":{"supply":{"type":"number","nullable":true}},"required":["supply"]}},"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"The external API or service that caused the error","example":"superstate"},"operation":{"type":"string","description":"The operation that failed","example":"getPendingTransactions"},"message":{"type":"string","description":"Human-readable error message","example":"superstate getPendingTransactions timed out after 10000ms"},"code":{"type":"string","enum":["TIMEOUT","NETWORK_ERROR","EXTERNAL_API_ERROR","UNKNOWN_ERROR"],"description":"Error classification code","example":"TIMEOUT"},"timestamp":{"type":"number","description":"Unix timestamp in seconds when error occurred","example":1704067200}},"required":["source","operation","message","timestamp"]},"description":"Non-fatal errors that occurred during request processing (e.g., external API timeouts)"}},"required":["vaultAddress","positions","supplyByChain"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/authority":{"get":{"tags":["Vault Auth"],"description":"Get Vault Authority by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"}],"responses":{"200":{"description":"Vault authority","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultAuthority"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/roles-assignments":{"get":{"tags":["Vault Auth"],"description":"Get Vault Role Assignments by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50,"description":"Maximum number of role assignments to return","example":50},"required":false,"description":"Maximum number of role assignments to return","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor returned from a previous request"},"required":false,"description":"Cursor returned from a previous request","name":"cursor","in":"query"}],"responses":{"200":{"description":"Vault role assignments","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultRoleAssignmentsPaginated"}},"required":["data"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"example":{"error":"Invalid cursor"}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/token-minimums":{"get":{"tags":["Vaults"],"description":"Get token minimums for a single vault by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"}],"responses":{"200":{"description":"Token minimums for the vault","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vaultAddress":{"type":"string"},"slug":{"type":"string"},"symbol":{"type":"string"},"minimums":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number"},"tokenSymbol":{"type":"string"},"tokenAddress":{"type":"string"},"minimum":{"type":"number"}},"required":["chainId","tokenSymbol","tokenAddress","minimum"]}}},"required":["vaultAddress","slug","symbol","minimums"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/price-report":{"get":{"tags":["Vaults"],"description":"Download a PDF price report for a vault containing asset composition, shares by chain, and calculated price","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"}],"responses":{"200":{"description":"PDF price report file","content":{"application/pdf":{"schema":{"nullable":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/security-audit-report":{"get":{"tags":["Vaults"],"description":"Download a PDF security audit report scaffold for a vault with the shared report header and footer","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"}],"responses":{"200":{"description":"PDF security audit report file","content":{"application/pdf":{"schema":{"nullable":true}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/apy-history":{"get":{"tags":["Vault History"],"description":"Get APY history for vault by slug for the given date range. `apy` is the composition-weighted yield APY (liquid assets are excluded from the APY denominator). `navApy` is the price-delta (NAV-based) APY computed from vault token price changes.","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Ordering for history arrays. `desc` returns newest first. `asc` returns oldest first.","example":"desc"},"required":false,"description":"Ordering for history arrays. `desc` returns newest first. `asc` returns oldest first.","name":"order","in":"query"},{"schema":{"type":"number","nullable":true,"default":98866,"description":"Optional chain ID. Defaults to Plume: 98866"},"required":false,"description":"Optional chain ID. Defaults to Plume: 98866","name":"chainId","in":"query"}],"responses":{"200":{"description":"Vault APY history with composition and NAV-based APY","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultApyHistory"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/tvl-history":{"get":{"tags":["Vault History"],"description":"Get Vault TVL history by slug for the given date range","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"}],"responses":{"200":{"description":"Vault TVL history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultTvlHistory"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/holders-history":{"get":{"tags":["Vault History"],"description":"Get Vault holders history by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"}],"responses":{"200":{"description":"Vault holders history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultHoldersHistory"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/volume-history":{"get":{"tags":["Vault History"],"description":"Get Vault volume history by slug for the given date range","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"}],"responses":{"200":{"description":"Vault volume history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultVolumeHistory"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/price-history":{"get":{"tags":["Vault History"],"description":"Get Vault daily price history by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":98866,"description":"Optional chain ID. Defaults to plume mainnet (98866)"},"required":false,"description":"Optional chain ID. Defaults to plume mainnet (98866)","name":"chainId","in":"query"}],"responses":{"200":{"description":"Vault price history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"price":{"type":"number"}},"required":["day","price"]}}},"required":["vaultAddress","history"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/liquid-funds-history":{"get":{"tags":["Vault History"],"description":"Get Vault Liquid Funds history by slug with pagination","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Start date in Unix timestamp seconds"},"required":false,"description":"Start date in Unix timestamp seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"description":"End date in Unix timestamp seconds"},"required":false,"description":"End date in Unix timestamp seconds","name":"endDate","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50,"description":"Maximum number of history entries to return","example":50},"required":false,"description":"Maximum number of history entries to return","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor returned from a previous request"},"required":false,"description":"Cursor returned from a previous request","name":"cursor","in":"query"}],"responses":{"200":{"description":"Vault Liquid Funds history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"liquidFunds":{"type":"number"}},"required":["day","liquidFunds"]}},"pageInfo":{"type":"object","properties":{"endCursor":{"type":"string","nullable":true},"hasNextPage":{"type":"boolean"}},"required":["endCursor","hasNextPage"]}},"required":["vaultAddress","history","pageInfo"]}},"required":["data"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"example":{"error":"Invalid cursor"}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/pending-redemptions-history":{"get":{"tags":["Vault History"],"description":"Get Vault pending redemptions history by slug with separate filters for requestedAt and expiresAt","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Start date for requestedAt filter (Unix timestamp in seconds)"},"required":false,"description":"Start date for requestedAt filter (Unix timestamp in seconds)","name":"requestedAtStart","in":"query"},{"schema":{"type":"number","nullable":true,"description":"End date for requestedAt filter (Unix timestamp in seconds)"},"required":false,"description":"End date for requestedAt filter (Unix timestamp in seconds)","name":"requestedAtEnd","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Start date for expiresAt filter (Unix timestamp in seconds)"},"required":false,"description":"Start date for expiresAt filter (Unix timestamp in seconds)","name":"expiresAtStart","in":"query"},{"schema":{"type":"number","nullable":true,"description":"End date for expiresAt filter (Unix timestamp in seconds)"},"required":false,"description":"End date for expiresAt filter (Unix timestamp in seconds)","name":"expiresAtEnd","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Optional atomic queue address filter."},"required":false,"description":"Optional atomic queue address filter.","name":"queueAddress","in":"query"}],"responses":{"200":{"description":"Vault pending redemptions history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultPendingRedemptions"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/composition-history":{"get":{"tags":["Vault History"],"description":"Get historical vault composition by slug for the given date range. Returns daily snapshots of asset allocation across all chains, including both liquid and yield assets with their weights and values.","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Ordering for history arrays. `desc` returns newest first. `asc` returns oldest first.","example":"desc"},"required":false,"description":"Ordering for history arrays. `desc` returns newest first. `asc` returns oldest first.","name":"order","in":"query"}],"responses":{"200":{"description":"Vault composition history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultCompositionHistory"}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/transaction-history":{"get":{"tags":["Vault History"],"description":"Get vault transaction history by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"integer","nullable":true,"description":"Start date filter (epoch seconds)"},"required":false,"description":"Start date filter (epoch seconds)","name":"startDate","in":"query"},{"schema":{"type":"integer","nullable":true,"description":"End date filter (epoch seconds)"},"required":false,"description":"End date filter (epoch seconds)","name":"endDate","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Optional chain ID. If omitted, returns transactions across all chains."},"required":false,"description":"Optional chain ID. If omitted, returns transactions across all chains.","name":"chainId","in":"query"},{"schema":{"type":"string","description":"Optional comma-separated transaction types. Example: DEPOSIT,WITHDRAW_FULFILL","example":"DEPOSIT,WITHDRAW_FULFILL"},"required":false,"description":"Optional comma-separated transaction types. Example: DEPOSIT,WITHDRAW_FULFILL","name":"transactionTypes","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50,"description":"Maximum number of transactions to return","example":50},"required":false,"description":"Maximum number of transactions to return","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor returned from a previous request"},"required":false,"description":"Cursor returned from a previous request","name":"cursor","in":"query"}],"responses":{"200":{"description":"Vault transaction history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Transaction hash","example":"0x1234567890123456789012345678901234567890"},"logIndex":{"type":"integer","description":"Log index of the event within the transaction receipt","example":12},"transactionType":{"type":"string","enum":["DEPOSIT","WITHDRAW_REQUEST","WITHDRAW_FULFILL","WITHDRAW_UPDATE","WITHDRAW_CLAIM","PRE_DEPOSIT_MIGRATION","WITHDRAW_INSTANT"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Vault address","example":"0x1234567890123456789012345678901234567890"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address","example":"0x1234567890123456789012345678901234567890"},"createdAt":{"type":"number","description":"Transaction created at in epoch seconds","example":1717334400},"shares":{"type":"number","description":"Shares","example":100},"sharesTokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Shares token address","example":"0x1234567890123456789012345678901234567890"},"assets":{"type":"number","nullable":true,"description":"Assets","example":100},"assetsTokenAddress":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]+$","description":"Assets token address","example":"0x1234567890123456789012345678901234567890"},"chainId":{"type":"number","description":"Chain ID","example":1}},"required":["transactionHash","logIndex","transactionType","vaultAddress","user","createdAt","shares","sharesTokenAddress","assets","assetsTokenAddress","chainId"]}},"pageInfo":{"type":"object","properties":{"endCursor":{"type":"string","nullable":true,"description":"Cursor to fetch the next page of results"},"hasNextPage":{"type":"boolean","description":"Whether another page of results is available"}},"required":["endCursor","hasNextPage"]}},"required":["items","pageInfo"]}},"required":["data"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Invalid cursor"}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/vaults/{slug}/performance-history":{"get":{"tags":["Vault History"],"description":"Get vault performance history by slug for the given date range. Includes vault price/TVL/liquid funds/APY and optional per-yield-asset metrics. Vault price and NAV APY are derived from the preferred chain (Plume if configured, otherwise the first configured chain).","parameters":[{"schema":{"type":"string","minLength":1,"description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"required":true,"description":"Unique slug identifier for the vault.","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Ordering for history arrays. `desc` returns newest first. `asc` returns oldest first.","example":"desc"},"required":false,"description":"Ordering for history arrays. `desc` returns newest first. `asc` returns oldest first.","name":"order","in":"query"},{"schema":{"type":"string","default":false,"description":"Include per-yield-asset composition metrics."},"required":false,"description":"Include per-yield-asset composition metrics.","name":"includeCompositeAssets","in":"query"},{"schema":{"type":"string","enum":["json","csv"],"default":"json","description":"Response format. Use csv to export the history as CSV.","example":"json"},"required":false,"description":"Response format. Use csv to export the history as CSV.","name":"format","in":"query"}],"responses":{"200":{"description":"Vault performance history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/VaultPerformanceHistory"}},"required":["data"]}},"text/csv":{"schema":{"type":"string","description":"CSV export of vault performance history"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/assets":{"get":{"tags":["Assets"],"description":"Get all assets metadata","responses":{"200":{"description":"Assets metadata","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}}},"required":["data"]}}}}}}},"/assets/{slug}/apy":{"get":{"tags":["Assets"],"description":"Get Asset APY by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"The slug of the asset","example":"superstate-uscc"},"required":true,"description":"The slug of the asset","name":"slug","in":"path"}],"responses":{"200":{"description":"Asset APY","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"tokens":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"symbol":{"type":"string","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]}},"required":["assetAddress","chainId","symbol","apy"]}}},"required":["slug","tokens"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/assets/{slug}/apy-history":{"get":{"tags":["Assets"],"description":"Get Asset APY history by slug for the given date range","parameters":[{"schema":{"type":"string","minLength":1,"description":"The slug of the asset","example":"superstate-uscc"},"required":true,"description":"The slug of the asset","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"}],"responses":{"200":{"description":"Asset APY history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"tokens":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"symbol":{"type":"string","nullable":true},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]}},"required":["day","apy"]}}},"required":["assetAddress","chainId","symbol","history"]}}},"required":["slug","tokens"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/assets/{slug}/tvl":{"get":{"tags":["Assets"],"description":"Get Asset TVL by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"The slug of the asset","example":"superstate-uscc"},"required":true,"description":"The slug of the asset","name":"slug","in":"path"}],"responses":{"200":{"description":"Asset TVL","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"tokens":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"symbol":{"type":"string","nullable":true},"tvl":{"type":"number"},"price":{"type":"number"},"supply":{"type":"number"},"yield":{"type":"number","nullable":true}},"required":["assetAddress","chainId","symbol","tvl","price","supply","yield"]}}},"required":["slug","tokens"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/assets/{slug}/details":{"get":{"tags":["Assets"],"description":"Get Asset Details by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"The slug of the asset","example":"superstate-uscc"},"required":true,"description":"The slug of the asset","name":"slug","in":"path"}],"responses":{"200":{"description":"Asset Details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"image":{"type":"string","nullable":true},"description":{"type":"string"},"custodians":{"type":"array","items":{"type":"object","properties":{"image":{"type":"string","nullable":true},"name":{"type":"string"}},"required":["image","name"]},"description":"Deprecated."},"website":{"type":"string","nullable":true},"scorecardUrl":{"type":"string","nullable":true},"category":{"type":"object","nullable":true,"properties":{"name":{"type":"string","nullable":true},"color":{"type":"string","nullable":true,"description":"Deprecated."},"isActive":{"type":"boolean","nullable":true,"description":"Deprecated."}},"required":["name","color","isActive"]},"regulatory":{"type":"object","properties":{"entity":{"type":"string","nullable":true},"rating":{"type":"string","nullable":true}},"required":["entity","rating"]}},"required":["slug","name","image","description","custodians","website","scorecardUrl","category","regulatory"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/assets/{slug}/price-history":{"get":{"tags":["Assets"],"description":"Get Asset price history by slug for the given date range","parameters":[{"schema":{"type":"string","minLength":1,"description":"The slug of the asset","example":"superstate-uscc"},"required":true,"description":"The slug of the asset","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"default":1775773388,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"}],"responses":{"200":{"description":"Asset price history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"tokens":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"symbol":{"type":"string","nullable":true},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"price":{"type":"number"}},"required":["day","price"]}}},"required":["assetAddress","chainId","symbol","history"]}}},"required":["slug","tokens"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/assets/{slug}/stats":{"get":{"tags":["Assets"],"description":"Get asset stats by slug","parameters":[{"schema":{"type":"string","minLength":1,"description":"The slug of the asset","example":"superstate-uscc"},"required":true,"description":"The slug of the asset","name":"slug","in":"path"}],"responses":{"200":{"description":"Asset stats","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string"},"tokens":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"symbol":{"type":"string","nullable":true},"maxDrawdown":{"type":"number","nullable":true,"description":"The maximum drawdown of the asset. Returns value [-1, 0] where -0.05 means 5% max drawdown."},"dailyVolatilityBps":{"type":"number","nullable":true,"description":"The daily volatility of the asset in basis points for a rolling 30 day window."}},"required":["assetAddress","chainId","symbol","maxDrawdown","dailyVolatilityBps"]}}},"required":["slug","tokens"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/reports/volume-report":{"get":{"tags":["Reports"],"description":"Download the backend-generated global monthly volume report as a CSV attachment.","parameters":[{"schema":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp in seconds (UTC).","example":1735689600},"required":false,"description":"Unix timestamp in seconds (UTC).","name":"startDate","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp in seconds (UTC).","example":1740787199},"required":false,"description":"Unix timestamp in seconds (UTC).","name":"endDate","in":"query"}],"responses":{"200":{"description":"Global volume report CSV file","content":{"text/csv":{"schema":{"type":"string","description":"CSV export of the global monthly volume report."}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"startDate must be before or equal to endDate"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/reports/revenue-report":{"get":{"tags":["Reports"],"description":"Download the backend-generated global revenue report as a CSV attachment.","parameters":[{"schema":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp in seconds (UTC).","example":1735689600},"required":false,"description":"Unix timestamp in seconds (UTC).","name":"startDate","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"description":"Unix timestamp in seconds (UTC).","example":1740787199},"required":false,"description":"Unix timestamp in seconds (UTC).","name":"endDate","in":"query"},{"schema":{"type":"number","nullable":true,"minimum":0,"description":"Flat fee applied to each deposit transaction.","example":25},"required":false,"description":"Flat fee applied to each deposit transaction.","name":"flatDepositFee","in":"query"},{"schema":{"type":"number","nullable":true,"minimum":0,"description":"Flat fee applied to each redemption transaction.","example":25},"required":false,"description":"Flat fee applied to each redemption transaction.","name":"flatRedemptionFee","in":"query"},{"schema":{"type":"number","nullable":true,"minimum":0,"description":"Fractional deposit fee rate, for example 0.01 for 1%.","example":0.01},"required":false,"description":"Fractional deposit fee rate, for example 0.01 for 1%.","name":"depositFeePct","in":"query"},{"schema":{"type":"number","nullable":true,"minimum":0,"description":"Fractional redemption fee rate, for example 0.01 for 1%.","example":0.01},"required":false,"description":"Fractional redemption fee rate, for example 0.01 for 1%.","name":"redemptionFeePct","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":100,"description":"Optional scenario label used in the output filename.","example":"base-case"},"required":false,"description":"Optional scenario label used in the output filename.","name":"scenario","in":"query"}],"responses":{"200":{"description":"Global revenue report CSV file","content":{"text/csv":{"schema":{"type":"string","description":"CSV export of the global revenue report."}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"startDate must be before or equal to endDate"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/user/{address}/compliance":{"get":{"tags":["User"],"description":"Checks compliance for a user and retrieves predicate message if compliant","parameters":[{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address","example":"0x1234567890123456789012345678901234567890"},"required":true,"description":"User address","name":"address","in":"path"},{"schema":{"type":"number","default":1,"description":"Optional. Chain ID","example":1},"required":false,"description":"Optional. Chain ID","name":"chainId","in":"query"},{"schema":{"type":"string","default":false,"description":"Optional. Indicates if the compliance check is for deposit and bridge interaction. Defaults to false.","example":false},"required":false,"description":"Optional. Indicates if the compliance check is for deposit and bridge interaction. Defaults to false.","name":"isDepositAndBridge","in":"query"},{"schema":{"type":"string","default":false,"description":"Optional. Indicates if bridge uses zapper (usdt -> usdc swap). Defaults to false.","example":false},"required":false,"description":"Optional. Indicates if bridge uses zapper (usdt -> usdc swap). Defaults to false.","name":"isZapper","in":"query"},{"schema":{"type":"string","default":false,"description":"Optional. Indicates solana deposits.  Defaults to false.","example":false},"required":false,"description":"Optional. Indicates solana deposits.  Defaults to false.","name":"isSolana","in":"query"},{"schema":{"type":"string","default":false,"description":"Optional. Indicates if the new proxy is used. Defaults to false.","example":false},"required":false,"description":"Optional. Indicates if the new proxy is used. Defaults to false.","name":"isNewProxy","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Optional. The Nest composer address extracted from CCTP hook data. Required for Solana deposits.","example":"0xaFe1F7B0105c6Da9e79f886A20eb55F17a791aa1"},"required":false,"description":"Optional. The Nest composer address extracted from CCTP hook data. Required for Solana deposits.","name":"nestComposerAddress","in":"query"},{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Optional. Override predicate \"from\" with executor address (bundled EVM flow).","example":"0x1234567890123456789012345678901234567890"},"required":false,"description":"Optional. Override predicate \"from\" with executor address (bundled EVM flow).","name":"predicateFromAddress","in":"query"}],"responses":{"200":{"description":"Compliance","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"isCompliant":{"type":"boolean"},"predicateMessage":{"$ref":"#/components/schemas/PredicateMessage"}},"required":["isCompliant","predicateMessage"]}},"required":["data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Internal server error"}}}}}}}},"/user/{address}/vaults/{slug}/transaction-history":{"get":{"tags":["User History"],"description":"Get user transaction history","parameters":[{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address","example":"0x1234567890123456789012345678901234567890"},"required":true,"description":"User address","name":"address","in":"path"},{"schema":{"type":"string","description":"Vault slug","example":"nest-alpha-vault"},"required":true,"description":"Vault slug","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true},"required":false,"name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"endDate","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"chainId","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50,"description":"Maximum number of transactions to return","example":50},"required":false,"description":"Maximum number of transactions to return","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor returned from a previous request"},"required":false,"description":"Cursor returned from a previous request","name":"cursor","in":"query"}],"responses":{"200":{"description":"User transaction history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Transaction hash","example":"0x1234567890123456789012345678901234567890"},"logIndex":{"type":"integer","description":"Log index of the event within the transaction receipt","example":12},"transactionType":{"type":"string","enum":["DEPOSIT","WITHDRAW_REQUEST","WITHDRAW_FULFILL","WITHDRAW_UPDATE","WITHDRAW_CLAIM","PRE_DEPOSIT_MIGRATION","WITHDRAW_INSTANT"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Vault address","example":"0x1234567890123456789012345678901234567890"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address","example":"0x1234567890123456789012345678901234567890"},"createdAt":{"type":"number","description":"Transaction created at in epoch seconds","example":1717334400},"shares":{"type":"number","description":"Shares","example":100},"sharesTokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Shares token address","example":"0x1234567890123456789012345678901234567890"},"assets":{"type":"number","nullable":true,"description":"Assets","example":100},"assetsTokenAddress":{"type":"string","nullable":true,"pattern":"^0x[a-fA-F0-9]+$","description":"Assets token address","example":"0x1234567890123456789012345678901234567890"},"chainId":{"type":"number","description":"Chain ID","example":1}},"required":["transactionHash","logIndex","transactionType","vaultAddress","user","createdAt","shares","sharesTokenAddress","assets","assetsTokenAddress","chainId"]}},"pageInfo":{"type":"object","properties":{"endCursor":{"type":"string","nullable":true,"description":"Cursor to fetch the next page of results"},"hasNextPage":{"type":"boolean","description":"Whether another page of results is available"}},"required":["endCursor","hasNextPage"]}},"required":["items","pageInfo"]}},"required":["data"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Invalid cursor"}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Not found"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/user/{address}/details":{"get":{"tags":["User"],"description":"Gets user's current TVL and weighted average APY across all vault holdings","parameters":[{"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User wallet address","example":"0x1234567890123456789012345678901234567890"},"required":true,"description":"User wallet address","name":"address","in":"path"}],"responses":{"200":{"description":"User details","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"tvl":{"type":"number","description":"User's current total value locked across all vaults (USD)","example":10500.25},"apy":{"type":"number","description":"User's weighted average APY across all vault holdings (decimal, e.g., 0.05 = 5%)","example":0.0525}},"required":["tvl","apy"]}},"required":["data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Internal server error"}}}}}}}},"/solana/mint-status/{signature}":{"get":{"tags":["Solana Transaction Status"],"description":"Get mint flow status by Solana transaction signature","parameters":[{"schema":{"type":"string","description":"Solana transaction signature","example":"5KtPn3n8nJHvxPcJJQvBHvPmZxAUJ5WGhBvQGeDKJGxYjgDWKsQH3BmL8FqJEVMx8HvPmZxAUJ5WGhBvQGeDKJGxYjg"},"required":true,"description":"Solana transaction signature","name":"signature","in":"path"}],"responses":{"200":{"description":"Mint status by signature","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"solanaSignature":{"type":"string"},"solanaWallet":{"type":"string"},"amount":{"type":"string"},"progress":{"type":"string","nullable":true},"overallStatus":{"type":"string"},"overallStatusCode":{"type":"number"},"createdAt":{"type":"number"},"createdAtFormatted":{"type":"string","nullable":true},"updatedAt":{"type":"number"},"updatedAtFormatted":{"type":"string","nullable":true},"steps":{"type":"object","properties":{"solana":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"blockTimestamp":{"type":"number","nullable":true},"blockTimestampFormatted":{"type":"string","nullable":true},"blockSlot":{"type":"string","nullable":true},"indexedAt":{"type":"number","nullable":true},"indexedAtFormatted":{"type":"string","nullable":true},"composerAddress":{"type":"string","nullable":true}},"required":["status","statusCode","blockTimestamp","blockTimestampFormatted","blockSlot","indexedAt","indexedAtFormatted","composerAddress"]},"cctpAttestation":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"nonce":{"type":"string","nullable":true},"attestedAt":{"type":"number","nullable":true},"attestedAtFormatted":{"type":"string","nullable":true},"irisStatus":{"type":"string","nullable":true},"sourceDomain":{"type":"number","nullable":true},"destinationDomain":{"type":"number","nullable":true}},"required":["status","statusCode","nonce","attestedAt","attestedAtFormatted","irisStatus","sourceDomain","destinationDomain"]},"predicate":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"taskId":{"type":"string","nullable":true},"isCompliant":{"type":"boolean","nullable":true},"checkedAt":{"type":"number","nullable":true},"checkedAtFormatted":{"type":"string","nullable":true},"error":{"type":"string","nullable":true}},"required":["status","statusCode","taskId","isCompliant","checkedAt","checkedAtFormatted","error"]},"relay":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"txHash":{"type":"string","nullable":true},"blockNumber":{"type":"string","nullable":true},"blockTimestamp":{"type":"number","nullable":true},"blockTimestampFormatted":{"type":"string","nullable":true},"gasUsed":{"type":"string","nullable":true},"error":{"type":"string","nullable":true}},"required":["status","statusCode","txHash","blockNumber","blockTimestamp","blockTimestampFormatted","gasUsed","error"]},"composer":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"assetAmount":{"type":"string","nullable":true},"shareAmount":{"type":"string","nullable":true}},"required":["status","statusCode","assetAmount","shareAmount"]},"oft":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"lzGuid":{"type":"string","nullable":true},"dstEid":{"type":"number","nullable":true},"amountSent":{"type":"string","nullable":true},"amountReceived":{"type":"string","nullable":true}},"required":["status","statusCode","lzGuid","dstEid","amountSent","amountReceived"]},"solanaMint":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"signature":{"type":"string","nullable":true},"blockTimestamp":{"type":"number","nullable":true},"blockTimestampFormatted":{"type":"string","nullable":true},"blockSlot":{"type":"string","nullable":true},"programId":{"type":"string","nullable":true},"oftstoreAddress":{"type":"string","nullable":true}},"required":["status","statusCode","signature","blockTimestamp","blockTimestampFormatted","blockSlot","programId","oftstoreAddress"]},"reclaim":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"txHash":{"type":"string","nullable":true},"blockTimestamp":{"type":"number","nullable":true},"blockTimestampFormatted":{"type":"string","nullable":true}},"required":["status","statusCode","txHash","blockTimestamp","blockTimestampFormatted"]}},"required":["solana","cctpAttestation","predicate","relay","composer","oft","solanaMint","reclaim"]},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["code","message"]},"links":{"type":"object","properties":{"solanaExplorer":{"type":"string"},"plumeExplorer":{"type":"string","nullable":true},"layerZeroScan":{"type":"string","nullable":true},"solanaMintTransaction":{"type":"string","nullable":true}},"required":["solanaExplorer","plumeExplorer","layerZeroScan","solanaMintTransaction"]}},"required":["solanaSignature","solanaWallet","amount","progress","overallStatus","overallStatusCode","createdAt","createdAtFormatted","updatedAt","updatedAtFormatted","steps","error","links"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Mint status not found for signature"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}}}}},"/solana/redeem-status/{signature}":{"get":{"tags":["Solana Transaction Status"],"description":"Get redeem flow status by Solana burn transaction signature","parameters":[{"schema":{"type":"string","description":"Solana burn transaction signature (the original user redeem tx)","example":"5KtPn3n8nJHvxPcJJQvBHvPmZxAUJ5WGhBvQGeDKJGxYjgDWKsQH3BmL8FqJEVMx8HvPmZxAUJ5WGhBvQGeDKJGxYjg"},"required":true,"description":"Solana burn transaction signature (the original user redeem tx)","name":"signature","in":"path"}],"responses":{"200":{"description":"Redeem status by Solana burn signature","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"solanaBurnSignature":{"type":"string"},"plumeDeliveryTxHash":{"type":"string","nullable":true},"plumeRedeemTxHash":{"type":"string","nullable":true},"solanaWallet":{"type":"string","nullable":true},"progress":{"type":"string","nullable":true},"overallStatus":{"type":"string"},"overallStatusCode":{"type":"number"},"redeemType":{"type":"string"},"createdAt":{"type":"number"},"createdAtFormatted":{"type":"string","nullable":true},"updatedAt":{"type":"number"},"updatedAtFormatted":{"type":"string","nullable":true},"steps":{"type":"object","properties":{"solanaBurn":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"signature":{"type":"string","nullable":true},"tokenAta":{"type":"string","nullable":true},"amount":{"type":"string","nullable":true},"blockTimestamp":{"type":"number","nullable":true},"blockTimestampFormatted":{"type":"string","nullable":true},"blockSlot":{"type":"string","nullable":true}},"required":["status","statusCode","signature","tokenAta","amount","blockTimestamp","blockTimestampFormatted","blockSlot"]},"plumeProcessing":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"deliveryTxHash":{"type":"string","nullable":true},"deliveryBlockNumber":{"type":"string","nullable":true},"deliveryBlockTimestamp":{"type":"number","nullable":true},"deliveryBlockTimestampFormatted":{"type":"string","nullable":true},"redeemTxHash":{"type":"string","nullable":true},"redeemBlockNumber":{"type":"string","nullable":true},"redeemBlockTimestamp":{"type":"number","nullable":true},"redeemBlockTimestampFormatted":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"lzGuid":{"type":"string","nullable":true},"oftContractAddress":{"type":"string","nullable":true},"vaultComposerAddress":{"type":"string","nullable":true},"sharesRedeemed":{"type":"string","nullable":true},"usdcReceived":{"type":"string","nullable":true},"cctpBurnAmount":{"type":"string","nullable":true},"cctpNonce":{"type":"string","nullable":true},"cctpDestinationDomain":{"type":"number","nullable":true}},"required":["status","statusCode","deliveryTxHash","deliveryBlockNumber","deliveryBlockTimestamp","deliveryBlockTimestampFormatted","redeemTxHash","redeemBlockNumber","redeemBlockTimestamp","redeemBlockTimestampFormatted","error","lzGuid","oftContractAddress","vaultComposerAddress","sharesRedeemed","usdcReceived","cctpBurnAmount","cctpNonce","cctpDestinationDomain"]},"cctpAttestation":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"attestedAt":{"type":"number","nullable":true},"attestedAtFormatted":{"type":"string","nullable":true},"irisStatus":{"type":"string","nullable":true},"message":{"type":"string","nullable":true},"attestation":{"type":"string","nullable":true},"nonce":{"type":"string","nullable":true}},"required":["status","statusCode","attestedAt","attestedAtFormatted","irisStatus","message","attestation","nonce"]},"solanaClaim":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"signature":{"type":"string","nullable":true},"blockTimestamp":{"type":"number","nullable":true},"blockTimestampFormatted":{"type":"string","nullable":true},"blockSlot":{"type":"string","nullable":true},"usdcClaimed":{"type":"string","nullable":true},"error":{"type":"string","nullable":true}},"required":["status","statusCode","signature","blockTimestamp","blockTimestampFormatted","blockSlot","usdcClaimed","error"]}},"required":["solanaBurn","plumeProcessing","cctpAttestation","solanaClaim"]},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","nullable":true},"message":{"type":"string","nullable":true}},"required":["code","message"]},"links":{"type":"object","properties":{"solanaBurnExplorer":{"type":"string","nullable":true},"plumeDeliveryExplorer":{"type":"string","nullable":true},"plumeRedeemExplorer":{"type":"string","nullable":true},"solanaClaimExplorer":{"type":"string","nullable":true},"layerZeroScanDelivery":{"type":"string","nullable":true},"layerZeroScanRedeem":{"type":"string","nullable":true}},"required":["solanaBurnExplorer","plumeDeliveryExplorer","plumeRedeemExplorer","solanaClaimExplorer","layerZeroScanDelivery","layerZeroScanRedeem"]}},"required":["solanaBurnSignature","plumeDeliveryTxHash","plumeRedeemTxHash","solanaWallet","progress","overallStatus","overallStatusCode","redeemType","createdAt","createdAtFormatted","updatedAt","updatedAtFormatted","steps","error","links"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Redeem status not found for signature"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}}}}},"/solana/nest/mint/build-tx":{"post":{"tags":["Solana Transaction Builder"],"description":"Returns a base64 transaction to initiate a Nest vault mint. Deposits USDC from Solana to mint Nest share tokens, which are delivered to the receiver's Solana wallet. \n\nThe transaction includes: (1) Creating the receiver's Nest share token ATA if it doesn't exist, (2) Creating the CCTP MessageSent event data account (rent funded by Nest keeper), (3) CCTP depositForBurn instruction to bridge USDC to Plume. \n\nOn Plume, the NestVaultComposer receives the USDC, mints vault shares, and sends them back to the receiver via LayerZero OFT. The transaction is pre-signed by the Nest keeper; the caller only needs to sign with the receiver wallet and broadcast.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rawAmountUsdc":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Amount of USDC to deposit, in raw base units (6 decimals). For example, 1000000 (1e6) represents 1.0 USDC.","example":1000000},"amountUsdc":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DEPRECATED: Use rawAmountUsdc instead. Amount of USDC in raw base units (6 decimals).","deprecated":true},"finality":{"type":"string","enum":["fast","standard"],"default":"standard","description":"CCTP finality mode. 'fast' (~1-2 min) has higher fees, 'standard' (~15 min) has lower fees.","example":"fast"},"nestVaultSlug":{"type":"string","description":"Slug identifying the Nest vault. Valid options: nest-alpha-vault, nest-treasury-vault, nest-basis-vault, nest-wisdom-vault, nest-opal-vault, nest-test-vault, nest-scope-vault, nest-lcrd-vault, nest-perena-vault.","example":"nest-alpha-vault"},"receiver":{"type":"string","minLength":1,"description":"Base58-encoded Solana public key of the user who will receive the minted Nest share tokens and pay the transaction fees.","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"priorityFee":{"type":"string","enum":["low","medium","high"],"description":"Optional dynamic priority fee level. The API fetches recent prioritization fees for all transaction accounts and selects low/median/high.","example":"medium"},"priorityFeeMaxLamports":{"type":"integer","minimum":0,"description":"Optional maximum total priority fee in lamports. If provided, it takes precedence over priorityFee.","example":7500}},"required":["nestVaultSlug","receiver"]}}}},"responses":{"200":{"description":"Transaction built successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"txBase64":{"type":"string","minLength":1,"description":"Base64-encoded Solana VersionedTransaction ready for signing. The caller must sign this transaction with the receiver wallet and broadcast it to the Solana network."}},"required":["txBase64"]}},"required":["data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Internal server error"}}}}}}}},"/solana/nest/redeem/build-tx":{"post":{"tags":["Solana Transaction Builder"],"description":"Returns a base64 transaction to initiate a Nest vault redeem for USDC. \n\nUnder the hood, this builds a LayerZero OFT send transaction that transfers Nest shares to the vault's NestVaultComposer contract on Plume, which processes the redemption and returns USDC via CCTP bridge. \n\nThe transaction must be signed and sent by the caller's wallet.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rawAmountNestToken":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Amount of Nest share tokens to redeem, in raw base units (6 decimals). For example, 1000000 (1e6) represents 1.0 Nest share token.","example":1000000},"amountNest":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DEPRECATED: Use rawAmountNestToken instead. Amount of Nest shares in raw base units (6 decimals).","deprecated":true},"nestVaultSlug":{"type":"string","description":"Slug identifying the Nest vault. Valid options: nest-alpha-vault, nest-treasury-vault, nest-basis-vault, nest-wisdom-vault, nest-opal-vault, nest-test-vault, nest-scope-vault, nest-lcrd-vault, nest-perena-vault.","example":"nest-alpha-vault"},"owner":{"type":"string","minLength":1,"description":"Base58-encoded Solana public key of the user who owns the Nest share tokens and will pay the transaction fees.","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"dstEid":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DEPRECATED: This field is ignored. Destination is always Plume mainnet.","deprecated":true},"priorityFee":{"type":"string","enum":["low","medium","high"],"description":"Optional dynamic priority fee level. The API fetches recent prioritization fees for all transaction accounts and selects low/median/high.","example":"medium"},"priorityFeeMaxLamports":{"type":"integer","minimum":0,"description":"Optional maximum total priority fee in lamports. If provided, it takes precedence over priorityFee.","example":20000}},"required":["nestVaultSlug","owner"]}}}},"responses":{"200":{"description":"Transaction built successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"txBase64":{"type":"string","minLength":1,"description":"Base64-encoded Solana VersionedTransaction ready for signing. The caller must sign this transaction with the owner wallet and broadcast it to the Solana network."}},"required":["txBase64"]}},"required":["data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Internal server error"}}}}}}}},"/solana/tokens":{"get":{"tags":["Solana Token Supply"],"description":"Get supply information for all tracked Solana tokens","responses":{"200":{"description":"List of all token supplies","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"Vault slug","example":"nest-basis-vault"},"mintAddress":{"type":"string","description":"Solana SPL token mint address (base58)","example":"G6SkPqYTbtVFYU4krZLDgHf5MVMfARG57G1kog4RYH2n"},"rawSupply":{"type":"string","description":"Raw token supply as string (to avoid BigInt precision issues)","example":"1000000000000"},"decimals":{"type":"number","description":"Token decimals","example":6},"tokenSupply":{"type":"number","description":"Human-readable token supply (rawSupply / 10^decimals)","example":1000000}},"required":["slug","mintAddress","rawSupply","decimals","tokenSupply"]}}},"required":["data"]}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/solana/tokens/{slugOrMintAddress}":{"get":{"tags":["Solana Token Supply"],"description":"Get supply information for a specific Solana token by slug or mint address","parameters":[{"schema":{"type":"string","description":"Vault slug (e.g., nest-basis-vault) or Solana mint address (base58)","example":"nest-basis-vault"},"required":true,"description":"Vault slug (e.g., nest-basis-vault) or Solana mint address (base58)","name":"slugOrMintAddress","in":"path"}],"responses":{"200":{"description":"Token supply information","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"slug":{"type":"string","description":"Vault slug","example":"nest-basis-vault"},"mintAddress":{"type":"string","description":"Solana SPL token mint address (base58)","example":"G6SkPqYTbtVFYU4krZLDgHf5MVMfARG57G1kog4RYH2n"},"rawSupply":{"type":"string","description":"Raw token supply as string (to avoid BigInt precision issues)","example":"1000000000000"},"decimals":{"type":"number","description":"Token decimals","example":6},"tokenSupply":{"type":"number","description":"Human-readable token supply (rawSupply / 10^decimals)","example":1000000}},"required":["slug","mintAddress","rawSupply","decimals","tokenSupply"]}},"required":["data"]}}}},"404":{"description":"Token not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Token not found for: invalid-slug"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/solana/{address}/vaults/{slug}/transaction-history":{"get":{"tags":["Solana Transaction History"],"description":"Get Solana user transaction history for a specific vault. Returns deposits (mints) and withdrawals (redeems) for the given wallet and vault.","parameters":[{"schema":{"type":"string","description":"Solana wallet address (base58)","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"required":true,"description":"Solana wallet address (base58)","name":"address","in":"path"},{"schema":{"type":"string","description":"Vault slug","example":"nest-basis-vault"},"required":true,"description":"Vault slug","name":"slug","in":"path"},{"schema":{"type":"number","nullable":true,"description":"Start date filter (epoch seconds)"},"required":false,"description":"Start date filter (epoch seconds)","name":"startDate","in":"query"},{"schema":{"type":"number","nullable":true,"description":"End date filter (epoch seconds)"},"required":false,"description":"End date filter (epoch seconds)","name":"endDate","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50,"description":"Maximum number of transactions to return","example":50},"required":false,"description":"Maximum number of transactions to return","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor returned from a previous request"},"required":false,"description":"Cursor returned from a previous request","name":"cursor","in":"query"}],"responses":{"200":{"description":"Solana user transaction history","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"transactionHash":{"type":"string","description":"Solana transaction signature (base58)","example":"5yNxWz3vLrJQpKK8qPJpEsdPzLHiCvKEu2rpH6nEpntPKxv4dCwfKcqWpTvTgV5aJRHxPqKkzBrJpLxKvfbQZJjP"},"transactionType":{"type":"string","enum":["DEPOSIT","WITHDRAW_FULFILLED"]},"vaultAddress":{"type":"string","description":"OFT store address on Solana (may be empty)","example":""},"user":{"type":"string","description":"Solana wallet address (base58)","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"createdAt":{"type":"number","description":"Transaction timestamp in epoch seconds","example":1717334400},"shares":{"type":"number","description":"Share amount in token units","example":100.5},"sharesTokenAddress":{"type":"string","description":"Solana share token mint address (base58)","example":"G6SkPqYTbtVFYU4krZLDgHf5MVMfARG57G1kog4RYH2n"},"assets":{"type":"number","nullable":true,"description":"Asset amount in token units (USDC)","example":100.5},"assetsTokenAddress":{"type":"string","description":"Solana USDC mint address","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"chainId":{"type":"number","description":"Chain ID (Solana placeholder)","example":9999999}},"required":["transactionHash","transactionType","vaultAddress","user","createdAt","shares","sharesTokenAddress","assets","assetsTokenAddress","chainId"]}},"pageInfo":{"type":"object","properties":{"endCursor":{"type":"string","nullable":true,"description":"Cursor to fetch the next page of results"},"hasNextPage":{"type":"boolean","description":"Whether another page of results is available"}},"required":["endCursor","hasNextPage"]}},"required":["items","pageInfo"]}},"required":["data"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Invalid cursor"}}}}},"404":{"description":"Vault not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Vault 'invalid-vault' not found or not supported for Solana"}}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Server error"}}}}}}}},"/token-holders":{"get":{"tags":["Token Holders"],"description":"Gets all token holders across all Nest vaults, aggregated by address and token","responses":{"200":{"description":"Token holders data","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"holders":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string","description":"Holder wallet address","example":"0x1234567890123456789012345678901234567890"},"tokenAddress":{"type":"string","description":"Token address (EVM vault address or Solana mint address)","example":"0xabcdef1234567890abcdef1234567890abcdef12"},"balance":{"type":"number","description":"Token balance (decimal-adjusted)","example":1000.5},"value":{"type":"number","description":"USD value of holdings","example":1050.525}},"required":["address","tokenAddress","balance","value"]},"description":"List of token holders sorted by value descending"},"count":{"type":"number","description":"Total number of holders","example":150}},"required":["holders","count"]}},"required":["data"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Internal server error"}}}}}}}}}}