Open APIs for DAPP Developer
We offer a 'contract product pricing feature' for the protocol, which involves soliciting quotes from MarketMakers and then returning the best pricing results back to SOFA. Users will subsequently have a choice to execute or reject the trade. Given the need to interface with different MarketMakers depending on the underlying contract, products will distinguished by contract type.
Recommended DNT RFQ Inquiry
- Description
- Supports a list of RFQs composed of the same vault+chainId.
POST /rfq/dnt/recommended-quote
Input parameters
Field Name | Required | Type | Description |
---|---|---|---|
list | array[object] | ||
vault | true | string | Contract information |
chainId | true | int | Chain ID |
expiry | true | long | Second-level timestamp for the expiry date, e.g., 1672387200 |
lowerBarrier | true | number | Lower price |
upperBarrier | true | number | Upper price |
depositAmount | true | number | RFQ purchase amount |
inputApyDefinition | true | string | The underlying code is Enum indicating how the input APY is calculatedOptimusDefaultAPY, BinanceDntAPY, AaveLendingAPY |
protectedApy | false | number | Guaranteed annual yield (empty for RISKY, required for protected) |
fundingApy | false | number | AAVE annual yield (empty for RISKY, required for protected) |
Input Parameter Example
{
"list":[
{
"vault":"0x0E3a24ed24fBfF5406C8529fBe3Cc4DFE12b1cDB",
"chainId":80001,
"lowerBarrier":2775,
"upperBarrier":2825,
"expiry":1708416000,
"depositAmount":1000,
"protectedApy":0.01,
"fundingApy":"0.1098",
"inputApyDefinition":"AaveLendingAPY"
}
]
}
Output Parameters
Field Name | Type | Description |
---|---|---|
code | int | 0 indicates that the return result is normal |
message | string | Error message returned in case of an exception |
value | list[object] |
Object
Field Name | Type | Description |
---|---|---|
vault | string | Contract address |
chainId | int | Chain ID |
riskType | string | Risk type: PROTECTED, RISKY |
forCcy | string | Underlying currency |
domCcy | string | Currency pair |
depositCcy | string | Subscription currency |
lowerBarrier | number | Lower price |
upperBarrier | number | Upper price |
depositAmount | number | RFQ purchase amount |
expiry | long | Expiry timestamp (e.g., 1672387200) |
protectedReturnAmount | number | Total amount of guaranteed return, in the same unit as depositCcy |
fundingAmount | number | Estimated yield for the period; zero for non-guaranteed types |
enhancedReturnAmount | number | Total amount of extra return when not knocked out, in the same unit as depositCcy |
timestamp | long | Current pricing's trigger time; the next observation start time is calculated based on this logic |
observationStart | long | Estimated start time of observation for knocking in/out based on timestamp |
quote | object | |
anchorPrices | list[string] | 20000000000, 30000000000 |
makerCollateral | string | Maker's collateral amount |
totalCollateral | string | Total collateral amount (Taker+Maker) |
collateralAtRiskPercentage | string | Required when guaranteed (can be empty) |
deadline | long | Expiration timestamp (e.g., 1672387200) |
makerWallet | string | Maker's wallet (can be empty) |
signature | string | Signature (can be empty) |
Output Parameters example
{
"succ":true,
"code":0,
"message":"",
"value":[
{
"chainId":80001,
"vault":"0x0E3a24ed24fBfF5406C8529fBe3Cc4DFE12b1cDB",
"riskType":"PROTECTED",
"forCcy":"WETH",
"domCcy":"USDT",
"depositCcy":"USDT",
"lowerBarrier":"2775",
"upperBarrier":"2825",
"depositAmount":"1000",
"expiry":"1708416000",
"timestamp":"1708142778",
"protectedReturnAmount":"0.08219178",
"fundingAmount":"0.90246575",
"enhancedReturnAmount":"3.69018697",
"observationStart":"1708156800",
"quote":{
"anchorPrices":[
"2775000000",
"2825000000"
],
"makerCollateral":"2869913",
"totalCollateral":"1002869913",
"collateralAtRiskPercentage":"3631",
"deadline":"1708143378",
"makerWallet":"0xDFD6f6a6c1AB0184a483F1c7f691f1ea6B810e55",
"signature":null
}
},
{
"chainId":80001,
"vault":"0x0E3a24ed24fBfF5406C8529fBe3Cc4DFE12b1cDB",
"riskType":"PROTECTED",
"forCcy":"WETH",
"domCcy":"USDT",
"depositCcy":"USDT",
"lowerBarrier":"2775",
"upperBarrier":"2825",
"depositAmount":"1000",
"expiry":"1708761600",
"timestamp":"1708142781",
"protectedReturnAmount":"0.19178082",
"fundingAmount":"2.10575342",
"enhancedReturnAmount":"21.6891866",
"observationStart":"1708156800",
"quote":{
"anchorPrices":[
"2775000000",
"2825000000"
],
"makerCollateral":"19775214",
"totalCollateral":"1019775214",
"collateralAtRiskPercentage":"21123",
"deadline":"1708143381",
"makerWallet":"0xDFD6f6a6c1AB0184a483F1c7f691f1ea6B810e55",
"signature":null
}
}
]
}
Inquiry
- Notes:
- Please do not pass the user's wallet address on a pure inquiry request.
- A user's wallet address should be passed on only upon subscribing.
GET /rfq/dnt/quote
Input Parameters
Field Name | Required | Type | Description |
---|---|---|---|
vault | true | string | Contract information |
chainId | true | int | Chain ID |
expiry | true | long | Second-level timestamp for the expiry date, e.g., 1672387200 |
lowerBarrier | true | number | Lower price |
upperBarrier | true | number | Upper price |
depositAmount | true | number | RFQ purchase amount |
inputApyDefinition | true | string | The underlying code is Enum indicating how the input APY is calculatedOptimusDefaultAPY, BinanceDntAPY, AaveLendingAPY |
protectedApy | false | number | Guaranteed annual yield (empty for RISKY, required for protected) |
fundingApy | false | number | AAVE annual yield (empty for RISKY, required for protected) |
takerWallet | false | string | Inquirer's wallet public address information |
Output Parameters
Field Name | Type | Description |
---|---|---|
code | int | 0 indicates that the return result is normal |
message | string | Error message returned in case of an exception |
value | list[object] |
Object
Field Name | Type | Description |
---|---|---|
vault | string | Contract address |
chainId | int | Chain ID |
riskType | string | Risk type: PROTECTED, RISKY |
forCcy | string | Underlying currency |
domCcy | string | Currency pair |
depositCcy | string | Subscription currency |
lowerBarrier | number | Lower price |
upperBarrier | number | Upper price |
depositAmount | number | RFQ purchase amount |
expiry | long | Expiry timestamp (e.g., 1672387200) |
protectedReturnAmount | number | Total amount of guaranteed return, in the same unit as depositCcy |
fundingAmount | number | Estimated yield for the period; zero for non-guaranteed types |
enhancedReturnAmount | number | Total amount of extra return when not knocked out, in the same unit as depositCcy |
timestamp | long | Current pricing's trigger time; the next observation start time is calculated based on this logic |
observationStart | long | Estimated start time of observation for knocking in/out based on timestamp |
quote | object | |
anchorPrices | list[string] | 20000000000, 30000000000 |
makerCollateral | string | Maker's collateral amount |
totalCollateral | string | Total collateral amount (Taker+Maker) |
collateralAtRiskPercentage | string | Required when guaranteed (can be empty) |
deadline | long | Expiration timestamp (e.g., 1672387200) |
makerWallet | string | Maker's wallet (can be empty) |
signature | string | Signature (can be empty) |