---
# System prepended metadata

title: Data Api Demand
tags: [cian, api]

---

# Data Api Demand

###### tags: `cian` `api`

## Lending

For each pool, we should have access to these following data by any one of these following ways.
1. api 
2. contract
3. the graph

Go:
```go=
type tokenBasic struct {
	Address  string // mandatory. token address.
	Symbol   string // mandatory. token symbol.
	Decimals int    // mandatory. token decimals. must not be 0.
}

type aaveToken struct {
	Basic        tokenBasic  // mandatory.
	BaseApy      string      // mandatory. base apy. apy should be decimals, 0.1 for 10%.
	IncentiveApy string      // mandatory. total incentive apy. apy should be decimals, 0.1 for 10%.
	Incentive    []incentive // details of incentives.
}

type compoundToken struct {
	Basic              tokenBasic  // mandatory.
	BaseSupplyApy      string      // mandatory. base supply apy.
	BaseBorrowApy      string      // mandatory. base borrow apy.
	IncentiveSupplyApy string      // mandatory. incentive supply apy.
	IncentiveBorrowApy string      // mandatory. incentive borrow apy.
	SupplyIncentive    []incentive // details of supply incentives.
	BorrowIncentive    []incentive // details of borrow incentives.
}

type lendingPool struct {
	Underlying tokenBasic    // mandatory. underlying of the pool. usdt for ausdt pool.
	AToken     aaveToken     // mandatory for aave like protocols. like a token info.
	VToken     aaveToken     // mandatory for aave like protocols. various debt token info.
	SToken     aaveToken     // mandatory for aave like protocols. stable debt token info.
	CToken     compoundToken // mandatory for compound like protocls. c token info.

	CollateralFactor   string // mandatory. the maximum of collateral factor. "80" for 80%.
	LiquidationLimit   string // mandatory. liquidation will occur when liquidation limit is reached. "80" for 80%.
	LiquidationPenalty string // mandatory. penalty percentage when liquidation occurs. "10" for 10%.
	AllowBorrow        bool   // mandatory. whether the token can be borrowed in this protocol.
	AllowCollateral    bool   // mandatory. whether the token can be set as collateral in this protocol.

	BorrowLimit     string // The borrow limit of the pool.
	SupplyLimit     string // The supply limit of the pool.
	SupplyCapacity  string // SupplyCapacity = SupplyLimit - TotalSupply.
	TotalSupply     string // mandatory for aave like protocols. Total amount supplied into the pool.
	TotalVBorrow    string // mandatory for aave like protocols. Total variable amount borrowed from the pool.
	TotalSBorrow    string // mandatory for aave like protocols. Total stable amount borrowed from the pool.
	TotalCBorrow    string // mandatory for compound like protocls. Total (compound like) amount borrowed from the pool.
	UtilizationRate string // = TotalBorrow / TotalSupply

	EModeCategoryId       int    // Aave v3 emode category id.
	EModeCollateralFactor string // Aave v3 emode collateral factor.
	EModeLiquidationLimit string // Aave v3 emode liquidation limit.

	BorrowableInIsolation bool // Aave v3 isolation mode can be borrowed.
}
```


Json:
```json=
{
    "Underlying": {
        "Address": "0x...",
        "Symbol": "...",
        "Decimals": 18
    },
    "AToken": {
        "Basic": {
            "Address": "0x...",
            "Symbol": "...",
            "Decimals": 18
        },
        "BaseApy": "0.11",
        "IncentiveApy": "0.09",
        "Incentive": [
            {
                "Basic": {
                    "Address": "0x...",
                    "Symbol": "...",
                    "Decimals": 18
                },
                "SupplyRatePerSecond": "10000",
                "Rewarder": "0x..."
            }
        ]
    },
    "VToken": {
        "Basic": {
            "Address": "0x...",
            "Symbol": "...",
            "Decimals": 18
        },
        "BaseApy": "0.01",
        "IncentiveApy": "0.01",
        "Incentive": [
            {
                "Basic": {
                    "Address": "0x...",
                    "Symbol": "...",
                    "Decimals": 18
                },
                "SupplyRatePerSecond": "10000",
                "Rewarder": "0x..."
            }
        ]
    },
    "SToken": {
        "Basic": {
            "Address": "0x...",
            "Symbol": "...",
            "Decimals": 18
        },
        "BaseApy": "0.01",
        "IncentiveApy": "0.01",
        "Incentive": [
            {
                "Basic": {
                    "Address": "0x...",
                    "Symbol": "...",
                    "Decimals": 18
                },
                "SupplyRatePerSecond": "10000",
                "Rewarder": "0x..."
            }
        ]
    },
    "CToken": {
        "Basic": {
            "Address": "0x...",
            "Symbol": "...",
            "Decimals": 18
        },
        "BaseSupplyApy": "0.01",
        "BaseBorrowApy": "0.01",
        "IncentiveSupplyApy": "0.01",
        "IncentiveBorrowApy": "0.01",
        "SupplyIncentive": [
            {
                "Basic": {
                    "Address": "0x...",
                    "Symbol": "...",
                    "Decimals": 18
                },
                "SupplyRatePerSecond": "10000",
                "Rewarder": "0x..."
            }
        ],
        "BorrowIncentive": [
            {
                "Basic": {
                    "Address": "0x...",
                    "Symbol": "...",
                    "Decimals": 18
                },
                "SupplyRatePerSecond": "10000",
                "Rewarder": "0x..."
            }
        ]
    },
    "CollateralFactor": "75",
    "LiquidationLimit": "80",
    "LiquidationPenalty": "10",
    "AllowBorrow": true,
    "AllowCollateral": true,
    "BorrowLimit": "1000000",
    "SupplyLimit": "2000000",
    "SupplyCapacity": "20000",
    "TotalSupply": "1980000",
    "TotalVBorrow": "1800",
    "TotalSBorrow": "200",
    "TotalCBorrow": "0",
    "UtilizationRate": "0.1",
    "EModeCategoryId": 0,
    "EModeCollateralFactor": "95",
    "EModeLiquidationLimit": "98",
    "BorrowableInIsolation": false
}
```