Overview:
-
API specs
- Host: zcashservicestatus.info
- Base Path:
/api/v1
-
Endpoints List:
-
API
Exchanges Endpoints
1. Exchanges & Trading Pairs covered by the dashboard
Need:
This is a generic API endpoint which gives:
- the list of exchanges and trading pairs that are being monitored by the service status dashboard.
- the list of checks that are supported.
Request:
Path
Response Format:
{
"exchanges": [
{
"name": "<name of the exchange eg: Bittrex>",
"key": "<key of the exchange. Used for querying data eg: bittrex",
"url": "<url of the exchange>",
"supported_trading_pairs": [
{
"name": "<name of the trading pair eg: ZECUSD>"
"spot_price_check_support": "<true/false>"
"transaction_volume_check_support": "<true/false>"
}
...
]
}
...
}
:::warning
💡 Note
spot_price_check_support
& transaction_volume_check_support
boolean value shows whether the dashboard is ingesting data for the check in question for the particular trading pair on that exchange. There are some exchanges which do not support a particular trading pair.
:::
Sample Request/Response:
Request:
GET /api/v1/exchanges/coverage
Response:
{
"exchanges": [
{
"name": "bittrex",
"key": "bittrex",
"url": "https://international.bittrex.com/",
"supported_trading_pairs": [
{
"name": "ZECUSD"
"spot_price_check_support": true
"transaction_volume_check_support": true
}
]
},
{
"name": "exmo",
"url": "https://exmo.com/",
"supported_trading_pairs": [
{
"name": "ZECUSD"
"spot_price_check_support": true
"transaction_volume_check_support": true
},
{
"name": "ZECETH"
"spot_price_check_support": true
"transaction_volume_check_support": true
},
{
"name": "ZECBTC"
"spot_price_check_support": true
"transaction_volume_check_support": true
}
]
}
...
]
}
2. Get Overall Failure Check Status
Need:
- This helps user get a bird's eye view of transaction volume check and spot price check for all trading pairs over all trading pairs and exchanges.
- With this API, user will be able to know which specific check failed and then use the rest of the API's provided in this document for specific debugging.
Request:
Path
Request Parameters:
Parameter |
Description |
period |
To request days: [1-9]d To request months: [1-12]m To request year: 1y |
start |
Start time of the timerange you want the data from. For specific ranges. |
end |
End time of the timerange you want the data from. Entering now to get data till now For specific ranges. |
Response Format:
{
"request_time_stamp": "<timestamp when request was made>",
"time": {
"start_time": "The time from the data is fetched in UTC"
"end_time": "The time till the data is fetched in UTC"
},
"exchanges": [
{
"key": "<exchange key>",
"trading_pairs_sanity_checks_count": [
{
"name": "ZECUSD"
"transaction_volume_status_zero_count": "<count of how many times transaction_volume == 0"
"spot_price_status_zero_count": "<count of how many times spot price == 0 "
}
]
},
...
]
}
Sample Request/Response:
Request 1: Get failure count for the past 24 hours
Request:
GET /api/v1/exchanges/check?period=1d
Response:
{
"request_time_stamp":"01-01-2019T00:45:00Z",
"time": {
"start_time": "01-01-2019T00:00:00Z"
"end_time": "02-01-2019T00:00:00Z"
},
"request_time_stamp": "",
"time": {
"start_time": "",
"end_time": ""
},
"exchanges": [
{
"key": "bittrex",
"trading_pairs_sanity_checks_count": [
{
"name": "ZECUSD"
"transaction_volume_status_zero_count": 10
"spot_price_status_zero_count": 3
}
]
},
{
"key": "exmo",
"trading_pairs_sanity_checks_count": [
{
"name": "ZECUSD"
"transaction_volume_status_zero_count": 0
"spot_price_status_zero_count": 0
},
{
"name": "ZECETH"
"transaction_volume_status_zero_count": 3
"spot_price_status_zero_count": 2
},
{
"name": "ZECBTC"
"transaction_volume_status_zero_count": 0
"spot_price_status_zero_count": 2
}
]
}
...
]
}
3. Transaction Volume Check
Need:
- This endpoint outputs the specific logs of transaction volume check.
- Helps user to debug the time when transaction volume was problematic (transaction volume == 0) of a particular trading pair on a particular exchange.
Request:
Path:
GET /exchanges/check/transactionvolume
Request Parameters:
Parameter |
Description |
exchange_key |
The key of the exchange for which transaction volume check logs were requested eg: bittrex |
pair |
The name of the trading pair |
start |
Start time of the query in UTC. Optional |
end |
End time of the query in UTC. Note: To get current status, use now and don't set start |
failedlogs |
Set this parameter to true and the API will only return the logs when the transaction volume |
:::warning
💡 Note:
- The duration
end - start
cannot be more than one year.
- This is subject to vary as we progress with the development but we will try our best to provide the maximum range possible.
:::
Response Format:
{
"request_time_stamp":"<timestamp when the request was made>",
"time": {
"start_time": "The time from the data is fetched in UTC"
"end_time": "The time till the data is fetched in UTC"
},
"exchange_key": "<queried exchange key eg: bittrex>",
"pair": "<trading pair eg: ZECUSD>",
"status":[
{
"start_time":"",
"end_time":"",
"status":"< 0/1 >"
},
],
}
:::warning
💡 Note:
- Status = 0 -> transaction volume == 0 (Problematic)
- Status = 1 -> transaction volume ! = 0 (Not problematic)
:::
Sample Request/Response
Example Request 1:
Assumption:
* Suppose status of transaction volume for ZECUSD on Exmo was 0 between January 1, 2019 00:04 - January 1, 2019 00:06 hrs.
User queries:
* Time period querying for:
* From: January 1, 2019 00:00 hrs
* To: January 2, 2019 00:00 hrs.
* Request was made at: January 1, 2019 at 00:45 hrs.
Request:
GET /exchanges/check/transactionvolume?exchange_key=exmo&pair=ZECUSD&start=01-01-2019T00:00:00Z&end=01-01-2019T00:10:00Z
Response:
{
"request_time_stamp":"01-01-2019T00:45:00Z",
"time": {
"start_time": "01-01-2019T00:00:00Z"
"end_time": "02-01-2019T00:00:00Z"
},
"exchange_key": "exmo",
"pair": "ZECUSD",
"status":[
{
"start_time":"01-01-2019T00:00:00Z",
"end_time":"01-01-2019T00:03:59Z",
"status": 1
},
{
"start_time":"01-01-2019T00:04:00Z",
"end_time":"01-01-2019T00:06:00Z",
"status": 0
},
{
"start_time":"01-01-2019T00:07:01Z",
"end_time":"02-01-2019T00:00:00Z",
"status": 1
}
],
}
:::warning
💡 Note:
- The API batches consecutive status together.
- In the above example, for 3 consecutive minutes
:::
Example Request 2: Querying the current status of transaction volume
Request:
GET /exchanges/check/transactionvolume?exchange_key=bittrex&pair=ZECBTC&end=now
Response:
{
"request_time_stamp":"01-01-2019T00:45:00Z",
"exchange_key":"bittrex",
"pair": "ZECBTC",
"status": 1
}
Example Request 3: Querying the time period when transaction volume was zero.
Request:
GET /exchanges/check/transactionvolume?exchange_key=exmo&pair=ZECUSD&start=01-01-2019T00:00:00Z&end=01-01-2019T00:10:00Z&failurelogs=true
Response:
{
"request_time_stamp":"01-01-2019T00:45:00Z",
"time": {
"start_time": "01-01-2019T00:00:00Z"
"end_time": "02-01-2019T00:00:00Z"
},
"exchange_key": "exmo",
"pair": "ZECUSD",
"status":[
{
"start_time":"01-01-2019T00:04:00Z",
"end_time":"01-01-2019T00:06:00Z",
"status": 0
}
],
}
4. Spot Price Check
Need:
- This endpoint outputs the specific logs for spot price check.
- Helps user to debug the time when spot price was problematic (spot price == 0) of a particular trading pair on a particular exchange.
Request:
Path:
GET /exchanges/check/spotprice
Request Parameters:
Parameter |
Description |
exchange_key |
The key of the exchange for which transaction volume check logs were requested eg: bittrex |
pair |
The name of the trading pair |
start |
Start time of the query in UTC. Optional |
end |
End time of the query in UTC. Note: To get current status, use now and don't set start |
failedlogs |
Set this parameter to true and the API will only return the logs when the spot price |
:::warning
💡 Note:
- The duration
end - start
cannot be more than one year.
- This is subject to vary as we progress with the development but we will try our best to provide the maximum range possible.
:::
Response Format:
{
"request_time_stamp":"<timestamp when the request was made>",
"time": {
"start_time": "The time from the data is fetched in UTC"
"end_time": "The time till the data is fetched in UTC"
},
"exchange_key": "<queried exchange key eg: bittrex>",
"pair": "<trading pair eg: ZECUSD>",
"status":[
{
"start_time":"",
"end_time":"",
"status":"< 0/1 >"
},
],
}
:::warning
💡 Note:
- Status = 0 -> spot price == 0 (Problematic)
- Status = 1 -> spot price ! = 0 (Not problematic)
:::
Sample Request/Response
Example Request 1:
Assumption:
* Suppose status of spot price for ZECUSD on Exmo was 0 between January 1, 2019 00:04 - January 1, 2019 00:06 hrs.
User queries:
* Time period querying for:
* From: January 1, 2019 00:00 hrs
* To: January 2, 2019 00:00 hrs.
* Request was made at: January 1, 2019 at 00:45 hrs.
Request:
GET /exchanges/check/spotprice?exchange_key=exmo&pair=ZECUSD&start=01-01-2019T00:00:00Z&end=01-01-2019T00:10:00Z
Response:
{
"request_time_stamp":"01-01-2019T00:45:00Z",
"time": {
"start_time": "01-01-2019T00:00:00Z"
"end_time": "02-01-2019T00:00:00Z"
},
"exchange_key": "exmo",
"pair": "ZECUSD",
"status":[
{
"start_time":"01-01-2019T00:00:00Z",
"end_time":"01-01-2019T00:03:59Z",
"status": 1
},
{
"start_time":"01-01-2019T00:04:00Z",
"end_time":"01-01-2019T00:06:00Z",
"status": 0
},
{
"start_time":"01-01-2019T00:07:01Z",
"end_time":"02-01-2019T00:00:00Z",
"status": 1
}
],
}
:::warning
💡 Note:
- The API batches consecutive status together.
- In the above example, for 2 consecutive minutes the spot price was 0.
:::
Example Request 2: Querying the current status of spot price
Request:
GET /exchanges/check/spotprice?exchange_key=bittrex&pair=ZECBTC&end=now
Response:
{
"request_time_stamp":"01-01-2019T00:45:00Z",
"exchange_key":"bittrex",
"pair": "ZECBTC",
"status": 0
}
Example Request 3: Querying the time period when transaction volume was zero.
Request:
GET /exchanges/check/spotprice?exchange_key=exmo&pair=ZECUSD&start=01-01-2019T00:00:00Z&end=01-01-2019T00:10:00Z&failurelogs=true
Response:
{
"request_time_stamp":"01-01-2019T00:45:00Z",
"time": {
"start_time": "01-01-2019T00:00:00Z"
"end_time": "02-01-2019T00:00:00Z"
},
"exchange_key": "exmo",
"pair": "ZECUSD",
"status":[
{
"start_time":"01-01-2019T00:04:00Z",
"end_time":"01-01-2019T00:06:00Z",
"status": 0
}
],
}
5. Spot Price Deviation
Need
- For a particular trading pair, returns the absolute % deviation of individual exchange's price from the median price of all exchanges.
- Real Life Usecase: Useful for building arbitrage bots.
Request:
Path
GET /exchanges/spotpricedev
Request Parameters:
Parameter |
Description |
pair |
The name of the trading pair: ZECUSD, ZECBTC, etc. |
start |
Start time of the period for which deviation is to be queried, optional. |
end |
End time of the period for which deviation is to be queried, optional |
period |
Time instance for which percentage deviation is needed, optional. If unset, it will be treated as now . |
Response:
{
"timestamp":"<time_stamp>",
"trading_pair": "<trading_pair>"
"median": "<numeric median price in quote currency of trading pair>",
"exchanges": [
{
"exchange_name": "<exchange_name>",
"price": "<numeric price in quote currency of trading pair>",
"deviation": "<numeric absolute % difference from median price>"
}
]
}
- The response parameter,
timestamp
will be included when the user requests for a particular timestamp ( or now
). It will be absent if the user requests for a time period using start
and end
.
- When the user wants to query spot price deviation for a time period, we will calculate average spot price of each of the exchange and then calculate the median. With respect to this median, we will return the deviation of the average spot price of each exchange.
Sample Request/Response
Example Request 1: Get current spot price deviation data for ZECUSD
Request:
GET /exchanges/spotpricedev?pair=ZECUSD&period=now
Response:
{
"timestamp":"2019-09-09T00:43:00Z",
"trading_pair":"ZECUSD",
"median": 100.3
"exchanges":[
{
"key":"exmo",
"price":"103.76035",
"deviation": 03.45
},
{
"key":"bittrex",
"price": 113.79035,
"deviation":13.45
}
],
}
Example Request 2: Get spot price deviation data for ZECBTC between Jan 1 and Jan 2, 2019.
Request:
GET /exchanges/spotpricedev?pair=ZECBTC&start=01-01-2019T00:00:00Z&end=02-01-2019T00:59:59Z
Response:
{
"trading_pair":"ZECBTC",
"deviation_logs":[
{
"time":{
"start":"",
"end":""
},
"median":100.3,
"exchanges":[
{
"exchange_name":"Exmo",
"price":"0.76035",
"deviation":"3.45"
},
{
"exchange_name":"Bittrex",
"price":"0.79035",
"deviation":"13.45"
}
....
]
}
...
]
}
Community & Forums Websites Specific EndPoints:
1. Websites covered by the dashboard
Need:
This is a generic API endpoint which gives the list of Community & Forums Websites that are being monitored by the service status dashboard.
Request:
Path
Response Format:
{
"websites": [
{
"name": "<name of the website eg: ZCash Forum>",
"key": "<key of the website. Used for querying data eg: bittrex",
"url": "<url of the website>",
}
...
}
Sample Request/Response:
Request:
GET /api/v1/websites/coverage
Response:
{
"communities": [
{
"name": "Zcash Chat",
"key": "zcash_chat",
"url": "https://chat.zcashcommunity.com"
},
{
"name": "Zcash",
"key": "zcash",
"url": "https://z.cash"
},
...
]
}
2. Downtime logs for website
Need:
- This endpoint outputs the logs for downtime of a particular website.
- Helps user to debug the time when transaction volume was problematic (transaction volume == 0) of a particular trading pair on a particular exchange.
Request:
Path
GET /communities/downtime
Request Parameters:
Parameter |
Description |
pair |
The name of the trading pair: ZECUSD, ZECBTC, etc. |
start |
Start time of the period for which deviation is to be queried, optional. |
end |
End time of the period for which deviation is to be queried, optional |
period |
Time instance for which percentage deviation is needed, optional. If unset, it will be treated as now . |
Sample Request/Response:
Request
GET /communities/downtime?community_key=<zcash>&period=1d
Response:
{
"community_key": "zcash",
"community_name": "ZCash",
"website_url": "https://z.cash/"
"downtimes": [
{
"start_time":"01-01-2019T00:00:00Z",
"end_time":"01-01-2019T00:03:59Z"
},
{
"start_time":"01-01-2019T00:04:00Z",
"end_time":"01-01-2019T00:07:00Z"
}
}
End Notes:
- There will be rate-limiting with 10 requests overall from an IP per minute. Note: This may change as we progress keeping in mind the server's capacity. Although, we will try our best to provide the maximum requests per minute possible.
- Source data will be made available publicly on S3 with data dictionary provided on the dashboard itself. This is done so that users can use the data for analysis if in case the APIs are not enough for them.