getaggregateprice
Attention
Price Oracle functionality is part of the proposed XLS-47d extension to the XRP Ledger protocol. You can use these functions on test networks for now. Until there is an amendment in a stable release, the details documented on these pages are subject to change.
The get_aggregate_price
method retrieves the aggregate price of specified Oracle
objects, returning three price statistics: mean, median, and trimmed mean.
Request Format
An example of the request format:
{
"method": "get_aggregate_price",
"params": [
{
"ledger_index": "current",
"base_asset": "XRP",
"quote_asset": "USD",
"trim": 20,
"oracles": [
{
"account": "rp047ow9WcPmnNpVHMQV5A4BF6vaL9Abm6",
"oracle_document_id": 34
},
{
"account": "rp147ow9WcPmnNpVHMQV5A4BF6vaL9Abm7",
"oracle_document_id": 56
},
{
"account": "rp247ow9WcPmnNpVHMQV5A4BF6vaL9Abm8",
"oracle_document_id": 2
},
{
"account": "rp347ow9WcPmnNpVHMQV5A4BF6vaL9Abm9",
"oracle_document_id": 7
},
{
"account": "rp447ow9WcPmnNpVHMQV5A4BF6vaL9Abm0",
"oracle_document_id": 109
}
]
}
]
}
The request contains the following parameters:
Field | Type | Required? | Description |
---|---|---|---|
base_asset |
String | Yes | The currency code of the asset to be priced. |
quote_asset |
String | Yes | The currency code of the asset to quote the price of the base asset. |
trim |
Number | No | The percentage of outliers to trim. Valid trim range is 1-25. If included, the API returns statistics for the trimmed mean . |
time_threshold |
Number | No | Defines a time range in seconds for filtering out older price data. Default value is 0, which doesn't filter any data. |
oracles |
Array | Yes | The oracle identifier. |
oracles.account |
String | Yes | The XRPL account that controls the Oracle object. |
oracles.oracle_document_id |
Number | Yes | A unique identifier of the price oracle for the Account |
Response Format
An example of the response format:
{
"entire_set" : {
"mean" : "74.75",
"size" : 10,
"standard_deviation" : "0.1290994448735806"
},
"ledger_current_index" : 25,
"median" : "74.75",
"status" : "success",
"trimmed_set" : {
"mean" : "74.75",
"size" : 6,
"standard_deviation" : "0.1290994448735806"
},
"validated" : false,
"time" : 78937648
}
Field | Type | Description |
---|---|---|
entire_set |
Object | The statistics from the collected oracle prices. |
entire_set.mean |
String | The simple mean. |
entire_set.size |
Number | The size of the data set to calculate the mean. |
entire_set.standard_deviation |
String | The standard deviation. |
trimmed_set |
Object | The trimmed statistics from the collected oracle prices. Only appears if the trim field was specified in the request. |
trimmed_set.mean |
String | The simple mean of the trimmed data. |
trimmed_set.size |
Number | The size of the data to calculate the trimmed mean. |
trimmed_set.standard_deviation |
String | The standard deviation of the trimmed data. |
time |
Number | The most recent timestamp out of all LastUpdateTime values. |
Notes:
-
The most recent
Oracle
objects are obtained for the specified oracles. -
The most recent
LastUpdateTime
among all objects is chosen as the upper time threshold. -
An
Oracle
object is included in the aggregation dataset if it contains the specifiedbase_asset
/quote_asset
pair, has anAssetPrice
field, and itsLastUpdateTime
is within the time range specified. -
If an
Oracle
object doesn't contain anAssetPrice
for the specified token pair, then up to three previousOracle
objects are examined and the most recent one that fulfills the requirements is included.