Assets
Safello deals with two types of assets - normal (fiat) currencies such as Swedish Kronor (SEK) or Euros (EUR) and cryptocurrencies such as Bitcoin (BTC) or Ethereum (ETH).
Symbols​
The static representation of the various currencies can be retrieved from endpoint paths under /v2/symbols/
.
tip
The currencies (of both types) supported by Safello change infrequently and are therefore good candidates for client-side cacheing over the duration of a customer session
The set of Fiat currencies that Safello supports (or has supported) can be obtained by
issuing a GET
request to the /v2/symbols/fiat
endpoint.
Retrieving fiat currency list example
curl \
--silent \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header 'source-ip-address: 127.0.0.1' \
--header 'source-user-agent: curl' \
--request GET \
--location 'https://api.s4f3.io/v2/symbols/fiat'
[
{
"currency": "SEK",
"minorAmountDecimals": 2,
"displayName": "Kronor",
"status": "active"
}
]
The set of Cryptocurrencies that Safello supports (or has supported) can be obtained by
issuing a GET
request to the /v2/symbols/crypto
endpoint.
Retrieving crypto currency price example
curl \
--silent \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header 'source-ip-address: 127.0.0.1' \
--header 'source-user-agent: curl' \
--request GET \
--location 'https://api.s4f3.io/v2/symbols/crypto'
Where a currency's status
value is deprecated
or where the availableActions
list contains no entries the
currency can not be bought or sold. For example in the current output shown the Ripple (XRP) currency is not currently
supported by Safello.
[
{
"currency": "BTC",
"minorAmountDecimals": 8,
"displayName": "Bitcoin",
"status": "active",
"availableActions": [
"buy",
"sell"
]
},
{
"currency": "DOT",
"minorAmountDecimals": 8,
"displayName": "Polkadot",
"status": "active",
"availableActions": [
"buy",
"sell"
]
},
{
"currency": "MATIC",
"minorAmountDecimals": 8,
"displayName": "Polygon",
"status": "active",
"availableActions": [
"buy",
"sell"
]
},
{
"currency": "XRP",
"minorAmountDecimals": 8,
"displayName": "Ripple",
"status": "deprecated",
"availableActions": []
},
{
"currency": "ETH",
"minorAmountDecimals": 8,
"displayName": "Ethereum",
"status": "active",
"availableActions": [
"buy",
"sell"
]
}
]
Prices and Price History​
The current price and the price histories of the cryptocurrencies can be retrieved for presentation to the retail customers. Naturally these data are not customer-specific.
For all price related queries the cryptocurrencies and/or fiat currencies requested must be from amongst those returned
by the respective symbols endpoints and must have status field values of active
.
To retrieve the current fiat price for a cryptocurrency, make a GET
request to the /v2/prices/rates/{crypto}
endpoint supplying a path parameter to specify the cryptocurrency of interest and a query parameter of fiat
to specify
the fiat currency in which the price for the cryptocurrency should be quoted.
Requesting the current price example
In this example the price of Bitcoin (BTC) in Swedish Kronor (SEK) is requested:
curl \
--silent \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header 'source-ip-address: 127.0.0.1' \
--header 'source-user-agent: curl' \
--request GET \
--location 'https://api.s4f3.io/v2/prices/rates/BTC?fiat=SEK'
{
"ask": "298111.2134",
"baseAsk": "298111.2134",
"baseBid": "299898.0938",
"bid": "299898.0938",
"cryptoCurrency": "BTC",
"currency": "SEK"
}
To retrieve the price history for a cryptocurrency, make a GET
request to the /v2/prices/history
endpoint supplying query parameters of crypto
to specify the cryptocurrency of interest and interval
to specify
the time period over which the results will be returned. Price history is always returned in Swedish Kronor (SEK).
Valid interval
values are:
Value | Datum for every... | Meaning |
---|---|---|
DAILY | 10 Minutes | Values since the same timestamp on the preceding calendar date |
WEEKLY | 10 Minutes | Values since the same timestamp on the same day of the preceding calendar week. |
MONTHLY | 1 Hour | Values since the same timestamp on the same day of the preceding calendar month. |
QUARTERLY | 1 Hour | Values since the same timestamp on the same day of the calendar month three months earlier. |
HALF_YEARLY | 12 Hours | Values since the same timestamp on the same day of the calendar month six months earlier. |
YEARLY | 1 Day | Values since the same timestamp on the same calendar day of the preceding calendar year. |
YTD | 1 Day | Values since midnight on 1st January of the current calendar year. |
MAX | 1 Day | All values known to date |
Where the corresponding day would be invalid (e.g. an interval of MONTHLY
is selected on the 30th March, or yearly
is selected in a leap year on 29th February), then the start of the range will be the last valid calendar date of the
calendar month in question.
warning
Under some circumstances there may be no trade data for one or more of the datapoints (this is especially true in our test environment). You should therefore ensure that the timestamps are appropriately plotted and not assumed to be chronologically contiguous.
Requesting price history for Bitcoin (BTC) example
This example query will return the price history data for the past 24 hours with an entry (where present) for every 10 minutes.
curl \
--silent \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header 'source-ip-address: 127.0.0.1' \
--header 'source-user-agent: curl' \
--request GET \
--location 'https://api.s4f3.io/v2/prices/history?crypto=BTC&interval=DAILY'
[
{ "timestamp": 1652102400000, "price": "96007.96" },
{ "timestamp": 1652179200000, "price": "104884.10" }
]
The timestamps in the returned data are in milliseconds since the Unix epoch. This contrasts with the authentication timestamps that are in seconds since the Unix epoch. In the given example they correspond to the following human readable timestamps for local-time in Stockholm:
Epoch Timestamp | Human readable timestamp CEST |
---|---|
1652102400000 | Monday, 9 May 2022 13:20:00 |
1652179200000 | Tuesday, 10 May 2022 10:40:00 |