{"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"]},"category":{"type":"string","enum":["nestVault","plumeAsset"]},"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]+$"},"isHubAccountant":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use `nestAccountant.chain[chain].accountantType` to select the NestHubAccountant vs NestSpokeAccountant state ABI per chain.","example":false},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHub":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use chain-level `accountantType` entries instead.","example":false},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for nest-style vaults. For `nest` vaults, `accountantAddress` and `nestAccountant.address` refer to the same Nest accountant. For `boringNest` vaults, `accountantAddress` is the original pricing accountant and `nestAccountant.address` is the rollout accountant; use chain-level `accountantType` to select the exact state ABI."},"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"},"oftStoreAddress":{"type":"string","description":"LayerZero OFT store/config account address on Solana"},"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","oftStoreAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"iconMini":{"type":"string","nullable":true},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string","nullable":true}},"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"},"accountantType":{"type":"string","enum":["hub","spoke","nest"],"description":"Nest accountant role on this chain. Nest and hub accountants use the full NestAccountant state ABI; spokes use the NestSpokeAccountant state ABI.","example":"spoke"}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke","nest"],"description":"Nest accountant role on this chain. Nest and hub accountants use the full NestAccountant state ABI; spokes use the NestSpokeAccountant state ABI.","example":"spoke"}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke","nest"],"description":"Nest accountant role on this chain. Nest and hub accountants use the full NestAccountant state ABI; spokes use the NestSpokeAccountant state ABI.","example":"spoke"}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke","nest"],"description":"Nest accountant role on this chain. Nest and hub accountants use the full NestAccountant state ABI; spokes use the NestSpokeAccountant state ABI.","example":"spoke"}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke","nest"],"description":"Nest accountant role on this chain. Nest and hub accountants use the full NestAccountant state ABI; spokes use the NestSpokeAccountant state ABI.","example":"spoke"}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke","nest"],"description":"Nest accountant role on this chain. Nest and hub accountants use the full NestAccountant state ABI; spokes use the NestSpokeAccountant state ABI.","example":"spoke"}},"required":["startBlock"]},"avalanche":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke","nest"],"description":"Nest accountant role on this chain. Nest and hub accountants use the full NestAccountant state ABI; spokes use the NestSpokeAccountant state ABI.","example":"spoke"}},"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"]},"category":{"type":"string","enum":["nestVault","plumeAsset"]},"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]+$"},"isHubAccountant":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use `nestAccountant.chain[chain].accountantType` to select the NestHubAccountant vs NestSpokeAccountant state ABI per chain.","example":false},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHub":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use chain-level `accountantType` entries instead.","example":false},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for nest-style vaults. For `nest` vaults, `accountantAddress` and `nestAccountant.address` refer to the same Nest accountant. For `boringNest` vaults, `accountantAddress` is the original pricing accountant and `nestAccountant.address` is the rollout accountant; use chain-level `accountantType` to select the exact state ABI."},"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"},"oftStoreAddress":{"type":"string","description":"LayerZero OFT store/config account address on Solana"},"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","oftStoreAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"iconMini":{"type":"string","nullable":true},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string","nullable":true}},"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},"pendingRedemptionsValue":{"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","pendingRedemptionsValue","shortfall"]},"VaultDetailsLite":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"category":{"type":"string","enum":["nestVault","plumeAsset"]},"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]+$"},"isHubAccountant":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use `nestAccountant.chain[chain].accountantType` to select the NestHubAccountant vs NestSpokeAccountant state ABI per chain.","example":false},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHub":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use chain-level `accountantType` entries instead.","example":false},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for nest-style vaults. For `nest` vaults, `accountantAddress` and `nestAccountant.address` refer to the same Nest accountant. For `boringNest` vaults, `accountantAddress` is the original pricing accountant and `nestAccountant.address` is the rollout accountant; use chain-level `accountantType` to select the exact state ABI."},"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"},"oftStoreAddress":{"type":"string","description":"LayerZero OFT store/config account address on Solana"},"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","oftStoreAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"iconMini":{"type":"string","nullable":true},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"image":{"type":"string","nullable":true}},"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"]},"VaultFeeHistory":{"type":"object","properties":{"slug":{"type":"string","description":"Unique slug identifier for the vault.","example":"nest-alpha-vault"},"managementFee":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"UTC calendar date in YYYY-MM-DD format.","example":"2026-06-12"},"value":{"type":"number","description":"Daily summed fee value in USD.","example":1250.5}},"required":["date","value"]}},"performanceFee":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"UTC calendar date in YYYY-MM-DD format.","example":"2026-06-12"},"value":{"type":"number","description":"Daily summed fee value in USD.","example":1250.5}},"required":["date","value"]}},"instantRedemptionFee":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"UTC calendar date in YYYY-MM-DD format.","example":"2026-06-12"},"value":{"type":"number","description":"Daily summed fee value in USD.","example":1250.5}},"required":["date","value"]}},"depositFee":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"UTC calendar date in YYYY-MM-DD format.","example":"2026-06-12"},"value":{"type":"number","description":"Daily summed fee value in USD.","example":1250.5}},"required":["date","value"]}},"redemptionFee":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"UTC calendar date in YYYY-MM-DD format.","example":"2026-06-12"},"value":{"type":"number","description":"Daily summed fee value in USD.","example":1250.5}},"required":["date","value"]}}},"required":["slug","managementFee","performanceFee","instantRedemptionFee","depositFee","redemptionFee"]},"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":"Legacy alias for compositionApy. 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)."},"compositionApy":{"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"]},"offChainValue":{"type":"number"},"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","compositionApy","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":"Legacy alias for compositionApy. Composition-weighted yield APY for this day (liquid assets excluded from APY denominator)."},"compositionApy":{"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","compositionApy","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"},{"$ref":"#/components/schemas/SolanaNestVaultPendingRedemptionResponseEntry"}],"discriminator":{"propertyName":"redemptionType","mapping":{"atomicQueue":"#/components/schemas/AtomicQueuePendingRedemptionEntry","nest":"#/components/schemas/NestVaultPendingRedemptionResponseEntry","solanaNest":"#/components/schemas/SolanaNestVaultPendingRedemptionResponseEntry"}}}}},"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"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","requestedAt","lastUpdatedAt","operatorApproved"]},"SolanaNestVaultPendingRedemptionResponseEntry":{"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]+$"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"userBase58":{"type":"string"},"receiver":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"receiverBase58":{"type":"string"},"chainId":{"type":"number"},"srcEid":{"type":"number"},"initialShares":{"type":"number"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"requestedAt":{"type":"number"},"redemptionType":{"type":"string","enum":["solanaNest"]}},"required":["nestShareAddress","nestVaultAddress","assetAddress","composerAddress","requestTransactionHash","user","userBase58","receiver","receiverBase58","chainId","srcEid","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","requestedAt","redemptionType"]},"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"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"currentClaimableAssets":{"type":"number"},"pendingRedemptions":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntryWithHistory"}}},"required":["assetAddress","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","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","INVALID_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"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value.","example":"708456132396282021"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","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"},"isHubAccountant":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use `nestAccountant.chain[chain].accountantType` to select the NestHubAccountant vs NestSpokeAccountant state ABI per chain.","example":false},"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 nest and 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","DEPOSITOR"],"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"]},"offChainValue":{"type":"number","description":"Off-chain value in USD"},"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,"deprecated":true,"description":"Deprecated field. Use `expireByTime` instead."},"expireByTime":{"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","expireByTime","signerAddresses","signatures"]}},"parameters":{}},"paths":{"/vaults":{"get":{"tags":["Vaults"],"description":"Get all vaults info","parameters":[{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","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","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","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":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","in":"query"},{"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/fees/config/history":{"get":{"tags":["Vaults"],"description":"Get fee configuration update history across all indexed vaults and chains.","parameters":[{"schema":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"description":"Optional vault slug list. Repeat the query parameter to request multiple vaults."},"required":false,"description":"Optional vault slug list. Repeat the query parameter to request multiple vaults.","name":"slug","in":"query"},{"schema":{"type":"string","pattern":"^\\d+$","description":"Inclusive Unix timestamp in seconds, encoded as a decimal string.","example":"1767225600"},"required":false,"description":"Inclusive Unix timestamp in seconds, encoded as a decimal string.","name":"startTimestamp","in":"query"},{"schema":{"type":"string","pattern":"^\\d+$","description":"Inclusive Unix timestamp in seconds, encoded as a decimal string.","example":"1767225600"},"required":false,"description":"Inclusive Unix timestamp in seconds, encoded as a decimal string.","name":"endTimestamp","in":"query"},{"schema":{"type":"string","enum":["managementFee","performanceFee","hurdleRate","holdbackRate","crystallizationWindow","epochsPerWindow"],"description":"Optional fee configuration update type.","example":"managementFee"},"required":false,"description":"Optional fee configuration update type.","name":"type","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50,"description":"Maximum number of updates to return.","example":50},"required":false,"description":"Maximum number of updates to return.","name":"limit","in":"query"},{"schema":{"type":"string","description":"Opaque cursor returned by the previous page."},"required":false,"description":"Opaque cursor returned by the previous page.","name":"cursor","in":"query"}],"responses":{"200":{"description":"Fee configuration update history, ordered newest first.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"timestamp":{"type":"integer","minimum":0,"description":"Block timestamp in Unix seconds.","example":1767225600},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Transaction that emitted the configuration update."},"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Chain where the update was emitted.","example":98866},"slug":{"type":"string","description":"Vault slug associated with the accountant.","example":"nest-alpha-vault"},"eventType":{"type":"string","enum":["managementFee","performanceFee","hurdleRate","holdbackRate","crystallizationWindow","epochsPerWindow"]},"oldValue":{"type":"integer","nullable":true,"minimum":0,"description":"Previous raw uint32 configuration value, or null for the initial configuration.","example":10000},"newValue":{"type":"integer","minimum":0,"description":"New raw uint32 configuration value.","example":15000}},"required":["timestamp","transactionHash","chainId","slug","eventType","oldValue","newValue"]}},"pageInfo":{"type":"object","properties":{"endCursor":{"type":"string","nullable":true,"description":"Cursor to fetch the next page, or null when the page is empty."},"hasNextPage":{"type":"boolean","description":"Whether another page of results is available."}},"required":["endCursor","hasNextPage"]}},"required":["data","pageInfo"]}}}},"400":{"description":"Invalid timestamp range or fee configuration update type.","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"],"example":{"error":"Server error"}}}}}}}},"/vaults/fees":{"get":{"tags":["Vaults"],"description":"Get daily fees by vault and fee type across all indexed chains.","parameters":[{"schema":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"description":"Optional vault slug list. Repeat the query parameter to request multiple vaults."},"required":false,"description":"Optional vault slug list. Repeat the query parameter to request multiple vaults.","name":"slug","in":"query"},{"schema":{"type":"string","description":"Inclusive UTC start date. Defaults to one calendar year before endDate.","example":"2025-06-12"},"required":false,"description":"Inclusive UTC start date. Defaults to one calendar year before endDate.","name":"startDate","in":"query"},{"schema":{"type":"string","description":"Inclusive UTC end date. Defaults to today.","example":"2026-06-12"},"required":false,"description":"Inclusive UTC end date. Defaults to today.","name":"endDate","in":"query"}],"responses":{"200":{"description":"Daily fee history for the requested vaults.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultFeeHistory"}}},"required":["data"]}}}},"400":{"description":"Invalid date range or unknown vault slug.","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"],"example":{"error":"Server error"}}}}}}}},"/vaults/apy":{"get":{"tags":["Vaults"],"description":"Get 7d, 30d and SEC 30d APYs for all vaults. `compositionApy` is the composition-weighted yield APY based on underlying yield-bearing assets (liquid assets and off-chain value are excluded from the APY denominator). `apy` is a legacy alias for `compositionApy`. `navApy` is the price-delta (NAV-based) APY computed from vault token price changes.","parameters":[{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","in":"query"},{"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","parameters":[{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","in":"query"},{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"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","parameters":[{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","in":"query"}],"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"},{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","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":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","in":"query"},{"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":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","in":"query"},{"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","INVALID_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. `compositionApy` is the composition-weighted yield APY (liquid assets and off-chain value are excluded from the APY denominator). `apy` is a legacy alias for `compositionApy`. `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":1784608812,"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"},{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","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":1784608812,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"},{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","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":1784608812,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"},{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","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":1784608812,"description":"Unix timestamp in seconds"},"required":false,"description":"Unix timestamp in seconds","name":"endDate","in":"query"},{"schema":{"type":"string","default":true,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","deprecated":true,"example":"true"},"required":false,"description":"DEPRECATED: Use status instead. Legacy status filter. true returns active vaults; false returns non-active vaults. Ignored when status is provided.","name":"live","in":"query"},{"schema":{"type":"string","enum":["active","disabled","coming_soon","hidden","all"],"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","example":"active"},"required":false,"description":"Filter vaults by CMS status. Defaults to active. Use all to include every vault regardless of CMS status.","name":"status","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. `compositionApy` is the composition-weighted yield APY based on underlying yield-bearing assets (liquid assets and off-chain value are excluded from the APY denominator). `apy` is a legacy alias for `compositionApy`. `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"},{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"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","description":"Optional user address. For Solana chain ID 9999999, accepts bytes32 hex or base58."},"required":false,"description":"Optional user address. For Solana chain ID 9999999, accepts bytes32 hex or base58.","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","INVALID_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]+$"},"accountantVersions":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"Accountant implementation versions keyed by chain ID. A null value means the chain accountant does not expose version() or the read failed.","example":{"1":"0.0.2","98866":null}},"calculatedNav":{"type":"number"},"calculatedPrice":{"type":"number"},"unrealizedDividends":{"type":"number","description":"Unrealized dividends included in calculatedNav.","example":0},"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","accountantVersions","calculatedNav","calculatedPrice","unrealizedDividends","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}/unrealized-dividends":{"get":{"tags":["Vaults"],"description":"Get unrealized dividends 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 unrealized dividends","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"unrealizedDividends":{"type":"number","description":"Vault unrealized dividends denominated in the vault NAV currency.","example":0}},"required":["vaultAddress","unrealizedDividends"]}},"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"]}},"offChainValue":{"type":"number"},"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},"supplyRaw":{"type":"string","nullable":true},"decimals":{"type":"number"}},"required":["supply","supplyRaw","decimals"]}},"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}/vault-holders":{"get":{"tags":["Vaults"],"description":"Get paginated pUSD holders for the supported 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","description":"Optional page number. Invalid values default to 1.","example":"1"},"required":false,"description":"Optional page number. Invalid values default to 1.","name":"page","in":"query"},{"schema":{"type":"string","description":"Optional page size. Invalid values default to 50; values above 200 are clamped.","example":"50"},"required":false,"description":"Optional page size. Invalid values default to 50; values above 200 are clamped.","name":"pageSize","in":"query"}],"responses":{"200":{"description":"Paginated pUSD holders","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"users":{"type":"array","items":{"type":"object","properties":{"walletAddress":{"type":"string","description":"Holder wallet address","example":"0x1234567890123456789012345678901234567890"},"balance":{"type":"string","description":"Current pUSD balance as an exact decimal string","example":"1046.686418"},"position":{"type":"string","description":"Current pUSD position as an exact decimal string","example":"1046.686418"},"firstInteractionDate":{"type":"string","description":"UTC date of the first indexed interaction","example":"2026-03-13"},"lastInteractionDate":{"type":"string","description":"UTC date of the latest indexed interaction","example":"2026-03-14"}},"required":["walletAddress","balance","position","firstInteractionDate","lastInteractionDate"]}},"page":{"type":"number","description":"Current page number","example":1},"nextPage":{"type":"number","nullable":true,"description":"Next page number when more results are available","example":2},"pageSize":{"type":"number","description":"Applied page size","example":50},"hasMore":{"type":"boolean","description":"Whether more results are available","example":false}},"required":["users","page","nextPage","pageSize","hasMore"]}},"required":["data"]}}}},"404":{"description":"Unsupported slug","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Vault holders route only supports slug 'plume-usd-vault'"}}}}},"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. `compositionApy` is the composition-weighted yield APY (liquid assets and off-chain value are excluded from the APY denominator). `apy` is a legacy alias for `compositionApy`. `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":1784608812,"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":1784608812,"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":1784608812,"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":1784608812,"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":1784608812,"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 liquid assets, off-chain value, and yield assets.","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":1784608812,"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","INVALID_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":1784608812,"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"},"image":{"type":"string","nullable":true}},"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":1784608812,"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":1784608812,"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"}}}}}}}},"/plume-assets":{"get":{"tags":["Plume Assets"],"description":"Get all Plume assets","parameters":[{"schema":{"type":"string","default":false},"required":false,"name":"liveLiquidity","in":"query"}],"responses":{"200":{"description":"Plume assets","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VaultDetails"}}},"required":["data"]}}}}}}},"/reports/volume-report":{"get":{"tags":["Reports"],"description":"Download the backend-generated global monthly volume report as a CSV attachment. Set breakdownByVault=true to include a per-vault monthly breakdown.","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":"string","enum":["true","false"],"description":"When true, the CSV includes monthly rows broken down by vault.","example":"true"},"required":false,"description":"When true, the CSV includes monthly rows broken down by vault.","name":"breakdownByVault","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","INVALID_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","nullable":true},"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"},"eventType":{"type":"string","nullable":true},"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"]},"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","eventType","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/update-status/{signature}":{"get":{"tags":["Solana Transaction Status"],"description":"Get update async redeem status by Solana burn transaction signature","parameters":[{"schema":{"type":"string","description":"Solana update async redeem burn transaction signature","example":"5KtPn3n8nJHvxPcJJQvBHvPmZxAUJ5WGhBvQGeDKJGxYjgDWKsQH3BmL8FqJEVMx8HvPmZxAUJ5WGhBvQGeDKJGxYjg"},"required":true,"description":"Solana update async redeem burn transaction signature","name":"signature","in":"path"}],"responses":{"200":{"description":"Update async redeem status by Solana burn signature","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"solanaBurnSignature":{"type":"string"},"plumeRedeemTxHash":{"type":"string","nullable":true},"returnedSharesSolanaSignature":{"type":"string","nullable":true},"solanaWallet":{"type":"string","nullable":true},"progress":{"type":"string","nullable":true},"overallStatus":{"type":"string"},"overallStatusCode":{"type":"number"},"eventType":{"type":"string","enum":["UpdateRedeemRequest"]},"redeemType":{"type":"string","enum":["async"]},"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},"lzGuid":{"type":"string","nullable":true},"vaultComposerAddress":{"type":"string","nullable":true},"sharesUpdatedTotal":{"type":"string","nullable":true},"redeemRecipient":{"type":"string","nullable":true},"redeemDstEid":{"type":"number","nullable":true}},"required":["status","statusCode","deliveryTxHash","deliveryBlockNumber","deliveryBlockTimestamp","deliveryBlockTimestampFormatted","redeemTxHash","redeemBlockNumber","redeemBlockTimestamp","redeemBlockTimestampFormatted","lzGuid","vaultComposerAddress","sharesUpdatedTotal","redeemRecipient","redeemDstEid"]},"solanaReturnShares":{"type":"object","properties":{"status":{"type":"string"},"statusCode":{"type":"number"},"signature":{"type":"string","nullable":true},"amount":{"type":"string","nullable":true},"lzGuid":{"type":"string","nullable":true},"blockTimestamp":{"type":"number","nullable":true},"blockTimestampFormatted":{"type":"string","nullable":true},"blockSlot":{"type":"string","nullable":true}},"required":["status","statusCode","signature","amount","lzGuid","blockTimestamp","blockTimestampFormatted","blockSlot"]}},"required":["solanaBurn","plumeProcessing","solanaReturnShares"]},"links":{"type":"object","properties":{"layerZeroScanBurn":{"type":"string","nullable":true},"solanaBurnExplorer":{"type":"string","nullable":true},"layerZeroScanRedeem":{"type":"string","nullable":true},"plumeRedeemExplorer":{"type":"string","nullable":true},"solanaReturnSharesExplorer":{"type":"string","nullable":true}},"required":["layerZeroScanBurn","solanaBurnExplorer","layerZeroScanRedeem","plumeRedeemExplorer","solanaReturnSharesExplorer"]}},"required":["solanaBurnSignature","plumeRedeemTxHash","returnedSharesSolanaSignature","solanaWallet","progress","overallStatus","overallStatusCode","eventType","redeemType","steps","links"]}},"required":["data"]}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Update 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/async-redeem/build-tx":{"post":{"tags":["Solana Transaction Builder"],"description":"Returns a base64 transaction to submit an async Nest vault redemption request. \n\nThe transaction includes idempotent creation of the caller's USDC ATA before the OFT send. \n\nUnder the hood, this builds a LayerZero OFT send transaction that transfers Nest shares to the vault's NestVaultComposer contract on Plume with a REQUEST_REDEEM compose command. \n\nThe transaction must be signed and sent by the caller's wallet.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"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, nest-falconx-clo, nest-cloa-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 signs as the OFT token source authority. This wallet pays fees unless feePayer is provided.","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"feePayer":{"type":"string","minLength":1,"description":"Optional base58-encoded Solana public key of a sponsor/relayer that will pay both Solana transaction fees and LayerZero native delivery fees.","example":"Gp2nANpTLh9sdNaay1DnZtHGQmWRS2jfqzMB1xttEST5"},"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},"rawAmountNestToken":{"type":"string","pattern":"^\\d+$","description":"Amount of Nest share tokens, in raw base units (6 decimals).","example":"1000000"}},"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, when feePayer is provided, the fee payer wallet."}},"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/async-redeem/request/build-tx":{"post":{"tags":["Solana Transaction Builder"],"description":"Returns a base64 transaction to submit an async Nest vault redemption request. \n\nThe transaction includes idempotent creation of the caller's USDC ATA before the OFT send. \n\nUnder the hood, this builds a LayerZero OFT send transaction that transfers Nest shares to the vault's NestVaultComposer contract on Plume with a REQUEST_REDEEM compose command. \n\nThe transaction must be signed and sent by the caller's wallet.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"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, nest-falconx-clo, nest-cloa-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 signs as the OFT token source authority. This wallet pays fees unless feePayer is provided.","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"feePayer":{"type":"string","minLength":1,"description":"Optional base58-encoded Solana public key of a sponsor/relayer that will pay both Solana transaction fees and LayerZero native delivery fees.","example":"Gp2nANpTLh9sdNaay1DnZtHGQmWRS2jfqzMB1xttEST5"},"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},"rawAmountNestToken":{"type":"string","pattern":"^\\d+$","description":"Amount of Nest share tokens, in raw base units (6 decimals).","example":"1000000"}},"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, when feePayer is provided, the fee payer wallet."}},"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/async-redeem/update/build-tx":{"post":{"tags":["Solana Transaction Builder"],"description":"Returns a base64 transaction to update an existing async Nest vault redemption request. \n\nUnder the hood, this builds a LayerZero OFT send transaction with an UPDATE_REDEEM_REQUEST compose command. The backend calculates the destination compose/drop fee from the current pending redeem state. \n\nThe transaction must be signed and sent by the caller's wallet.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"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, nest-falconx-clo, nest-cloa-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 signs as the OFT token source authority. This wallet pays fees unless feePayer is provided.","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"feePayer":{"type":"string","minLength":1,"description":"Optional base58-encoded Solana public key of a sponsor/relayer that will pay both Solana transaction fees and LayerZero native delivery fees.","example":"Gp2nANpTLh9sdNaay1DnZtHGQmWRS2jfqzMB1xttEST5"},"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},"newRawAmountNestToken":{"type":"string","pattern":"^\\d+$","description":"New requested Nest share amount, in raw base units (6 decimals).","example":"1000000"}},"required":["nestVaultSlug","owner","newRawAmountNestToken"]}}}},"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, when feePayer is provided, the fee payer wallet."}},"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/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 and ephemeral event account. The caller signs with the receiver wallet and, for sponsored transactions, the fee payer wallet. Sponsored transactions require the receiver's Nest share ATA to already exist; a sponsor can create it in a separate idempotent ATA transaction without a receiver signature.","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, nest-falconx-clo, nest-cloa-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 provide the USDC burn authority. This wallet pays transaction fees unless feePayer is provided.","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"feePayer":{"type":"string","minLength":1,"description":"Optional base58-encoded Solana public key of a sponsor/relayer that will be the transaction fee payer. When provided, the receiver remains the USDC owner and Nest share receiver. For first-time receivers, the sponsor should pre-create the receiver's Nest share ATA before requesting the mint transaction.","example":"Gp2nANpTLh9sdNaay1DnZtHGQmWRS2jfqzMB1xttEST5"},"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, when feePayer is provided, the fee payer wallet."}},"required":["txBase64"]}},"required":["data"]}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"]}}}},"403":{"description":"Receiver wallet failed compliance check","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"Bad Request"}},"required":["error"],"example":{"error":"Solana wallet failed compliance check"}}}}},"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\nThe transaction includes: (1) Creating the caller's USDC ATA if it doesn't exist, (2) Sending Nest shares via LayerZero OFT to the vault composer on Plume. \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, nest-falconx-clo, nest-cloa-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 signs as the OFT token source authority. This wallet pays fees unless feePayer is provided.","example":"CFagSTMBFiMaD4YKHr7mMcKTzpi35DqiBKbDA35BvZgr"},"feePayer":{"type":"string","minLength":1,"description":"Optional base58-encoded Solana public key of a sponsor/relayer that will pay both Solana transaction fees and LayerZero native delivery fees. The owner remains the Nest share token authority.","example":"Gp2nANpTLh9sdNaay1DnZtHGQmWRS2jfqzMB1xttEST5"},"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, when feePayer is provided, the fee payer wallet."}},"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_REQUEST","WITHDRAW_INSTANT","WITHDRAW_CLAIM","WITHDRAW_UPDATE"]},"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"}}}}}}}}}}