# Models

## The VaultInfo object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultInfo":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Address of the `NestAccountant` for the vault. If both `accountantAddress` and `nestAccountant` are defined for a vault, then `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant` is the new `NestAccountant`."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains"},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"sec30d":{"type":"number","nullable":true},"tvl":{"type":"number","nullable":true},"numHolders":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","sec30d","tvl","numHolders","volume24h"]},"PublicNestComposer":{"type":"object","properties":{"asset":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["asset","composerAddress"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]}}},"LiquidAsset":{"type":"object","properties":{"contractAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"symbol":{"type":"string"},"iconUrl":{"type":"string","nullable":true},"decimals":{"type":"number"},"price":{"type":"number"},"chainId":{"type":"number"},"minimumSourceRules":{"type":"array","items":{"type":"object","properties":{"sourceChain":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sourceParams":{"type":"object","properties":{"excludeWallets":{"type":"array","items":{"type":"string"}}}}},"required":["sourceChain"]}}},"required":["contractAddress","symbol","decimals","price","chainId"]}}}}
```

## The PublicNestComposer object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The ChainConfig object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]}}}}}}
```

## The LiquidAsset object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The VaultDetails object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultDetails":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Address of the `NestAccountant` for the vault. If both `accountantAddress` and `nestAccountant` are defined for a vault, then `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant` is the new `NestAccountant`."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains"},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"tvl":{"type":"number","nullable":true},"tvl30DayChange":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]},"tokenPrice":{"type":"number","nullable":true},"tokenPriceUpdatedAtEpoch":{"type":"number","nullable":true},"liquidFunds":{"type":"number","nullable":true},"liquidFundsRange":{"type":"number","nullable":true},"holders":{"type":"number","nullable":true},"tokenPriceUpdatedAt":{"type":"string","nullable":true,"format":"date-time"},"pendingRedemptions":{"type":"number","nullable":true},"shortfall":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","tvl","tvl30DayChange","volume24h","apy","tokenPrice","tokenPriceUpdatedAtEpoch","liquidFunds","liquidFundsRange","holders","tokenPriceUpdatedAt","pendingRedemptions","shortfall"]},"PublicNestComposer":{"type":"object","properties":{"asset":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["asset","composerAddress"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]}}},"LiquidAsset":{"type":"object","properties":{"contractAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"symbol":{"type":"string"},"iconUrl":{"type":"string","nullable":true},"decimals":{"type":"number"},"price":{"type":"number"},"chainId":{"type":"number"},"minimumSourceRules":{"type":"array","items":{"type":"object","properties":{"sourceChain":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sourceParams":{"type":"object","properties":{"excludeWallets":{"type":"array","items":{"type":"string"}}}}},"required":["sourceChain"]}}},"required":["contractAddress","symbol","decimals","price","chainId"]}}}}
```

## The VaultDetailsLite object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultDetailsLite":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Address of the `NestAccountant` for the vault. If both `accountantAddress` and `nestAccountant` are defined for a vault, then `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant` is the new `NestAccountant`."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains"},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"tvl":{"type":"number","nullable":true},"tvl30DayChange":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]},"tokenPrice":{"type":"number","nullable":true},"tokenPriceUpdatedAtEpoch":{"type":"number","nullable":true},"liquidFunds":{"type":"number","nullable":true},"liquidFundsRange":{"type":"number","nullable":true},"holders":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","tvl","tvl30DayChange","volume24h","apy","tokenPrice","tokenPriceUpdatedAtEpoch","liquidFunds","liquidFundsRange","holders"]},"PublicNestComposer":{"type":"object","properties":{"asset":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["asset","composerAddress"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]}}},"LiquidAsset":{"type":"object","properties":{"contractAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"symbol":{"type":"string"},"iconUrl":{"type":"string","nullable":true},"decimals":{"type":"number"},"price":{"type":"number"},"chainId":{"type":"number"},"minimumSourceRules":{"type":"array","items":{"type":"object","properties":{"sourceChain":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sourceParams":{"type":"object","properties":{"excludeWallets":{"type":"array","items":{"type":"string"}}}}},"required":["sourceChain"]}}},"required":["contractAddress","symbol","decimals","price","chainId"]}}}}
```

## The VaultApy object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultApy":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Composition-weighted yield APY based on underlying yield-bearing assets. Liquid assets do NOT dilute this value (liquid assets are excluded from the APY denominator)."},"navApy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Price-delta (NAV-based) APY calculated from vault token price changes over time."},"breakdown":{"type":"object","properties":{"totalValue":{"type":"number"},"liquidAssets":{"type":"object","properties":{"totalValue":{"type":"number"},"weight":{"type":"number"}},"required":["totalValue","weight"]},"yieldAssets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"value":{"type":"number"},"weight":{"type":"number"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]}},"required":["slug","value","weight","apy"]}}},"required":["totalValue","liquidAssets","yieldAssets"],"description":"Optional breakdown of how composition APY is calculated"},"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"The external API or service that caused the error"},"operation":{"type":"string","description":"The operation that failed"},"message":{"type":"string","description":"Human-readable error message"},"code":{"type":"string","enum":["TIMEOUT","NETWORK_ERROR","EXTERNAL_API_ERROR","UNKNOWN_ERROR"],"description":"Error classification code"},"timestamp":{"type":"number","description":"Unix timestamp in seconds when error occurred"}},"required":["source","operation","message","timestamp"]},"description":"Non-fatal errors that occurred during request processing (e.g., external API timeouts)"}},"required":["vaultAddress","apy","navApy"]}}}}
```

## The VaultTvl object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultTvl":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tvl":{"type":"number","nullable":true}},"required":["vaultAddress","tvl"]}}}}
```

## The VaultVolume object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultVolume":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"volume24h":{"type":"number","nullable":true}},"required":["vaultAddress","volume24h"]}}}}
```

## The VaultHolders object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The VaultsStats object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The VaultApyHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultApyHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Composition-weighted yield APY for this day (liquid assets excluded from APY denominator)."},"navApy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Price-delta (NAV-based) APY for this day."}},"required":["day","apy","navApy"]}},"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"The external API or service that caused the error"},"operation":{"type":"string","description":"The operation that failed"},"message":{"type":"string","description":"Human-readable error message"},"code":{"type":"string","enum":["TIMEOUT","NETWORK_ERROR","EXTERNAL_API_ERROR","UNKNOWN_ERROR"],"description":"Error classification code"},"timestamp":{"type":"number","description":"Unix timestamp in seconds when error occurred"}},"required":["source","operation","message","timestamp"]},"description":"Non-fatal errors that occurred during request processing (e.g., external API timeouts)"}},"required":["vaultAddress","history"]}}}}
```

## The VaultTvlHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The VaultHoldersHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The VaultVolumeHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The VaultPendingRedemptionsUnion object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultPendingRedemptionsUnion":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"pendingRedemptions":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AtomicQueuePendingRedemptionEntry"},{"$ref":"#/components/schemas/NestVaultPendingRedemptionResponseEntry"}],"discriminator":{"propertyName":"redemptionType","mapping":{"atomicQueue":"#/components/schemas/AtomicQueuePendingRedemptionEntry","nest":"#/components/schemas/NestVaultPendingRedemptionResponseEntry"}}}}},"required":["vaultAddress","pendingRedemptions"]},"AtomicQueuePendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"amount":{"type":"number"},"requestedAt":{"type":"number"},"expiresAt":{"type":"number"},"queueAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"wantTokenContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"minPrice":{"type":"number","description":"The price in terms of `want` asset the user wants their `offer` assets 'sold' at"},"isValid":{"type":"boolean","description":"Whether the redemption is valid. False if the redemption is expired or invalid."},"redemptionType":{"type":"string","enum":["atomicQueue"]}},"required":["requestTransactionHash","user","chainId","amount","requestedAt","expiresAt","queueAddress","wantTokenContractAddress","minPrice","isValid","redemptionType"]},"NestVaultPendingRedemptionResponseEntry":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntry"},{"type":"object","properties":{"redemptionType":{"type":"string","enum":["nest"]}},"required":["redemptionType"]}]},"NestVaultPendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","currentPendingShares","currentRedeemableShares","requestedAt","lastUpdatedAt","operatorApproved"]}}}}
```

## The AtomicQueuePendingRedemptionEntry object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The NestVaultPendingRedemptionResponseEntry object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionResponseEntry":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntry"},{"type":"object","properties":{"redemptionType":{"type":"string","enum":["nest"]}},"required":["redemptionType"]}]},"NestVaultPendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","currentPendingShares","currentRedeemableShares","requestedAt","lastUpdatedAt","operatorApproved"]}}}}
```

## The NestVaultPendingRedemptionEntry object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","currentPendingShares","currentRedeemableShares","requestedAt","lastUpdatedAt","operatorApproved"]}}}}
```

## The VaultFailedRedemptions object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The VaultFulfilledRedemptions object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The FulfilledRedemption object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The NestVaultPendingRedemptionSummary object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionSummary":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"currentClaimableAssets":{"type":"number"},"pendingRedemptions":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntryWithHistory"}}},"required":["assetAddress","currentPendingShares","currentRedeemableShares","currentClaimableAssets","pendingRedemptions"]},"NestVaultPendingRedemptionEntryWithHistory":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionBase"},{"type":"object","properties":{"currentClaimableAssets":{"type":"number"},"claimableAssetsSource":{"type":"string","enum":["estimated_per_request"]},"processedHistory":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultProcessedRedemption"}}},"required":["currentClaimableAssets","claimableAssetsSource","processedHistory"]}]},"NestVaultPendingRedemptionBase":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","currentPendingShares","currentRedeemableShares","requestedAt","lastUpdatedAt","operatorApproved"]},"NestVaultProcessedRedemption":{"type":"object","properties":{"nestShareAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"logIndex":{"type":"number"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"updateType":{"type":"string","enum":["UPDATE_REDEEM","FULFILL_REDEEM","REDEEM","INSTANT_REDEEM"]},"sharesProcessed":{"type":"number"},"assetsProcessed":{"type":"number"},"processedAt":{"type":"number"},"redemptionRequestedAt":{"type":"number"}},"required":["nestShareAddress","nestVaultAddress","assetAddress","requestTransactionHash","transactionHash","logIndex","user","chainId","updateType","sharesProcessed","assetsProcessed","processedAt","redemptionRequestedAt"]}}}}
```

## The NestVaultPendingRedemptionEntryWithHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}]},"NestVaultPendingRedemptionBase":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","currentPendingShares","currentRedeemableShares","requestedAt","lastUpdatedAt","operatorApproved"]},"NestVaultProcessedRedemption":{"type":"object","properties":{"nestShareAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"logIndex":{"type":"number"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"updateType":{"type":"string","enum":["UPDATE_REDEEM","FULFILL_REDEEM","REDEEM","INSTANT_REDEEM"]},"sharesProcessed":{"type":"number"},"assetsProcessed":{"type":"number"},"processedAt":{"type":"number"},"redemptionRequestedAt":{"type":"number"}},"required":["nestShareAddress","nestVaultAddress","assetAddress","requestTransactionHash","transactionHash","logIndex","user","chainId","updateType","sharesProcessed","assetsProcessed","processedAt","redemptionRequestedAt"]}}}}
```

## The NestVaultProcessedRedemption object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultProcessedRedemption":{"type":"object","properties":{"nestShareAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"logIndex":{"type":"number"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"updateType":{"type":"string","enum":["UPDATE_REDEEM","FULFILL_REDEEM","REDEEM","INSTANT_REDEEM"]},"sharesProcessed":{"type":"number"},"assetsProcessed":{"type":"number"},"processedAt":{"type":"number"},"redemptionRequestedAt":{"type":"number"}},"required":["nestShareAddress","nestVaultAddress","assetAddress","requestTransactionHash","transactionHash","logIndex","user","chainId","updateType","sharesProcessed","assetsProcessed","processedAt","redemptionRequestedAt"]}}}}
```

## The NestVaultPendingRedemptionBase object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionBase":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"currentPendingShares":{"type":"number"},"currentRedeemableShares":{"type":"number"},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","currentPendingShares","currentRedeemableShares","requestedAt","lastUpdatedAt","operatorApproved"]}}}}
```

## The VaultLastPriceUpdate object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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."},"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"]}}}}
```

## The VaultPriceInfo object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The yield object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"yield":{"type":"number","nullable":true,"description":"yield from position, if available"}}}}
```

## The VaultAuthority object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for boringNest vaults."},"authority":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Authority contract address for the vault"}},"required":["vaultAddress","accountantAddress","authority"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"}},"required":["startBlock"]}}}}}}
```

## The VaultRoleAssignmentsPaginated object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"},"role":{"type":"string","enum":["STRATEGIST","MANAGER","TELLER","UPDATE_EXCHANGE_RATE","SOLVER","PAUSER"],"description":"Role assigned to the user"},"enabled":{"type":"boolean","description":"Whether the role assignment is enabled"},"chainId":{"type":"number","description":"Chain ID where the role assignment exists"}},"required":["vaultAddress","user","role","enabled","chainId"]}}}}
```

## The RoleAssignment object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"},"role":{"type":"string","enum":["STRATEGIST","MANAGER","TELLER","UPDATE_EXCHANGE_RATE","SOLVER","PAUSER"],"description":"Role assigned to the user"},"enabled":{"type":"boolean","description":"Whether the role assignment is enabled"},"chainId":{"type":"number","description":"Chain ID where the role assignment exists"}},"required":["vaultAddress","user","role","enabled","chainId"]}}}}
```

## The VaultPendingRedemptions object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The VaultCompositionHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultCompositionHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number","description":"Unix timestamp at start of day (UTC)"},"totalValue":{"type":"number","description":"Total vault value in USD"},"liquidAssets":{"type":"object","properties":{"totalValue":{"type":"number","description":"Total value of liquid assets in USD"},"weight":{"type":"number","description":"Proportion of vault total value (0-1)"},"assets":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"value":{"type":"number","description":"Value in USD"}},"required":["assetAddress","chainId","value"]},"description":"Individual liquid asset positions"}},"required":["totalValue","weight","assets"]},"yieldAssets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"Unique identifier for the yield asset"},"totalValue":{"type":"number","description":"Total value across all tokens in USD"},"weight":{"type":"number","description":"Proportion of vault total value (0-1)"},"tokens":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"isPending":{"type":"boolean","description":"When true, this token entry represents pending (in-transit) redemption value rather than an on-chain token balance."},"balance":{"type":"number","description":"Token balance in native units"},"price":{"type":"number","description":"Price per token in USD"},"value":{"type":"number","description":"Total value in USD (balance * price)"}},"required":["tokenAddress","chainId","balance","price","value"]},"description":"Individual token positions within this yield asset"}},"required":["slug","totalValue","weight","tokens"]}}},"required":["day","totalValue","liquidAssets","yieldAssets"]}}},"required":["vaultAddress","history"]}}}}
```

## The VaultPerformanceHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"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"]}}}}
```

## The PredicateMessage object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"PredicateMessage":{"type":"object","properties":{"taskId":{"type":"string","nullable":true},"expireByBlockNumber":{"type":"number","nullable":true},"signerAddresses":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"}},"signatures":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"}}},"required":["taskId","expireByBlockNumber","signerAddresses","signatures"]}}}}
```
