diff --git a/data-api/coinapi-marketdata-rest.yaml b/data-api/coinapi-marketdata-rest.yaml index ea8110f137..beba02136f 100644 --- a/data-api/coinapi-marketdata-rest.yaml +++ b/data-api/coinapi-marketdata-rest.yaml @@ -1,7 +1,7 @@ openapi: 3.0.1 info: title: REST API - description: "\nRESTful endpoint provides the widest range of data, based on HTTP protocol which works in Request-Reply scheme.\n\nImplemented Standards:\n\n * [HTTP1.0](https://datatracker.ietf.org/doc/html/rfc1945)\n * [HTTP1.1](https://datatracker.ietf.org/doc/html/rfc2616)\n * [HTTP2.0](https://datatracker.ietf.org/doc/html/rfc7540)\n * [OpenAPI v3](https://www.openapis.org/)\n\n> **Note:** We adhere to the OpenAPI standards for documenting our API.\n\n## OpenAPI Specification\n\nTo access our API's OpenAPI specification, you can use the following link: [OpenAPI v3](https://raw.githubusercontent.com/coinapi/coinapi-sdk/master/data-api/coinapi-marketdata-rest.yaml)\n\nIf you need to import the OpenAPI file into software like Postman, simply copy and paste the link below:\n```shell\nhttps://raw.githubusercontent.com/coinapi/coinapi-sdk/master/data-api/coinapi-marketdata-rest.yaml\n```\n\n## Endpoints\n\nEnviroment | Encryption | Value \n--- | --- | ---\nProduction | Yes | `https://rest.coinapi.io/`\nProduction | No | `http://rest.coinapi.io/`\n\n:::info\n\nFor real-time market data streaming, you should use WebSockets. REST API only supports pooling, meaning you can periodically request the current market data state. In streaming, you subscribe and data or updates are delivered to you continuously.\n\n:::\n\n## General\n\nIf you want to learn how to authenticate to this API, you can find detailed instructions and guidance in\n[authentication section](/authentication) of this documentation.\n\n### HTTP Requests\n\nEach HTTP request must contain the header ``Accept: application/json`` as all our responses are in JSON format.\n\nWe encourage you to use the HTTP request header ``Accept-Encoding: deflate, gzip`` for all requests. \nThis will indicate to us that we can deliver compressed data to you which on your side should be decompressed transparently.\n\n:::tip\n\nBy allowing data compression you are lowering bandwidth requirements by approximately 80%. \nThis is important for requesting large amounts of data or using WebSocket Streaming API, \nas we can deliver data to you faster and more effectively.\n\n:::\n\n#### HTTP Success\n\nSuccessful HTTP responses have the status code `200` and the body in a format according to documentation of the requested resource.\n\n:::info\n\nYou should always check that your HTTP response status code is equal to 200, otherwise the requested was not successful.\n\n:::\n\n#### HTTP Errors\n\n> Error message is returned in JSON structured like this:\n\n```json\n{\n \"message\": \"Invalid API key\"\n}\n```\n\nAll HTTP requests with response status codes different to `200` must be considered as failed \nand you should expect additional JSON inside the body of the response with the error message encapsulated inside it as shown in the example.\nWe use the following error codes:\n\nError Code | Meaning\n---------- | -------\n400 | Bad Request -- There is something wrong with your request\n401 | Unauthorized -- Your API key is wrong\n403 | Forbidden -- Your API key doesnt't have enough privileges to access this resource\n429 | Too many requests -- You have exceeded your API key rate limits\n550 | No data -- You requested specific single item that we don't have at this moment.\n\n:::info\n\nGood practice is to store all error messages somewhere along with request data for further manual review.\n\n:::\n\n### Limits\n\nAny authenticated endpoint is providing (in HTTP response headers) information about the current state of the limits associated with API Key. In this section we will describe each limit.\n\n#### Request limit / APIKey\n\n```html\nX-RateLimit-Limit: 1000000\nX-RateLimit-Remaining: 999989\nX-RateLimit-Request-Cost: 1\nX-RateLimit-Reset: 2018-01-22T15:25:15.1234567Z\n```\n\nThe request limit define number of maximum requests that could be executed in the 24 hours period (sliding/rollowing window - always last 24 hours from specific moment) for your subscription.\n\nWe define request as data request credits and this is not always equal to the number of API calls executed against the API. A request is deemed to be a single one if the limit query parameter on the endpoint isn’t available, isn’t used or it's stated otherwise in the API documentation. Otherwise — if the limit query parameter is available and is used — then each of the 100 data points returned in the response is counted as one request.\n\nFor example at the 2019-08-22 13:00 UTC value of the requests remaining (X-RateLimit-Remaining) will be equal to the allocated quota (X-RateLimit-Limit) decreased by the sum of the request costs (SUM(X-RateLimit-Request-Cost)) executed in the period 2019-08-21 13:00 UTC - 2019-08-22 13:00 UTC (last 24 hours).\n\n\nHTTP Header | Type | Description\n---------- | ------- | ---\nX-RateLimit-Used | int | Provides information about the request limit that has been used within the last 24-hour period. This header indicates the amount of request capacity consumed based on the usage history. It is important to note that the header is not always appended to every request to optimize the operation of the API.\nX-RateLimit-Limit | int | Is an optional feature that can be enabled via the customer portal to impose a limit on the capabilities of a specific API key. It allows you to define a threshold for the number of requests that can be made using a single API key within a 24-hour time frame.\nX-RateLimit-Remaining | int | Provides information about the number of requests that can still be made within the last 24-hour period based on the usage history. This header serves as a helpful indicator of the remaining request capacity, allowing API consumers to manage their usage effectively. It is important to note that the header is not always appended to every request to optimize the operation of the API.\nX-RateLimit-Request-Cost | int | The number of requests used to generate current HTTP response.\nX-RateLimit-Reset | timestring | The time when all provisioned requests are available to execute again if no more requests will be executed.\nX-RateLimit-Quota-Overage | string | Provides information about whether a given API key may exceed the plan quota within a 24-hour time frame, which could result in additional charges. This header is fully defined and configured in the customer portal.\nX-RateLimit-Quota-Allocated | string | Total number of requests that can be made within a specific subscription during a 24-hour time frame. This quota allocation is determined based on the user's subscription purchase.\nX-RateLimit-Quota-Remaining | string | Provides valuable information about the remaining quota within the subscription for making requests within a 24-hour time frame. This header indicates the number of requests that can still be made within the allocated quota for the current 24-hour period.\n\n```json\nGET v1/exchanges/ECB/apiKey-ED802AF4-E855-YOUR-API-KEY\nHost: coinapi.io\nX-RateLimit-Used: 1000\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4000\nX-RateLimit-Request-Cost: 1\nX-RateLimit-Reset: 2023-05-05T12:00:00.0000001Z\nX-RateLimit-Quota-Overage: ENABLED\nX-RateLimit-Quota-Allocated: 10000\nX-RateLimit-Quota-Remaining: 5000\n```\n\nExplanation:\n\n- X-RateLimit-Used: 1000 (requests used in the last 24 hours)\n- X-RateLimit-Limit: 5000 (total request limit within a 24-hour time frame)\n- X-RateLimit-Remaining: 4000 (requests remaining within the last 24 hours)\n- X-RateLimit-Request-Cost: 1 (cost or \"weight\" of each individual request)\n- X-RateLimit-Reset: 2023-05-05T12:00:00.0000001Z (when the rate limit will reset within a 24-hour period)\n- X-RateLimit-Overage: ENABLED (API key may exceed the plan quota within a 24-hour time frame)\n- X-RateLimit-Quota-Allocated: 10000 (total number of requests allowed for all API keys within the subscription within a 24-hour time frame)\n- X-RateLimit-Quota-Remaining: 5000 (requests remaining within the subscription's allocated quota within the last 24 hours)\n\n#### Concurrency limit / APIKey\n\n```html\nX-ConcurrencyLimit-Limit: 10\nX-ConcurrencyLimit-Remaining: 5\n```\n\nThe concurrency limit defines the number of maximum concurrent API calls/requests that the API could process for your subscription at the current moment. Every API call/request increases the Concurrency limit against quota, and when it finishes, decreases it.\n\nHTTP Header | Type | Description\n---------- | ------- | ---\nX-ConcurrencyLimit-Limit | int | Concurrency limit allocated for your API key.\nX-ConcurrencyLimit-Remaining | int | The number of concurrent API calls/requests available to be executed in this moment for your API key.\n\n### Output data format\n\nBy default we are using JSON output data format for all of our endpoints, you can control format of data by using `output_format` variable in query string parameters.\n\n#### URL Parameters\n\nParameter | Type | Description\n---------- | ------- | -------\noutput_format | string | Output data format *(optional, default value is `json`, possible values are `json`, `xml` or `csv`)*\ncsv_include_header | bool | Ignore header line in CSV output? *(optional, default value is `true`, `true` to include CSV header line, `false` otherwise)*\ncsv_include_quotes | bool | Encapsulate strings with quotes in CSV output? *(optional, default value is `false`, `true` to encapsulate all strings with `\"`, `false` to leave them unquoted)*\ncsv_exclude_col | string | Comma delimited list of column names to ignore in CSV output *(optional, by default all columns are included)*\ncsv_set_delimiter | string | Character that will be used as column delimiter in CSV output *(optional, default value is `;`)*\ncsv_set_dec_mark | string | Character that will be used as decimal separator in CSV output *(optional, default value is `.`)*\ncsv_set_timeformat | string | Format for datetime type in CSV output or `unix` for unix timestamp *(optional, default value is `yyyy-MM-ddTHH:mm:ss.fffffffZ`)*\ncsv_set_newline | string | New line type *(optional, default value is `unix`, possible values `win`, `mac`, `unix`)*\n\n### Excel / G-Sheets\n\nThere are several ways to use data from our REST API inside the Excel, Google Sheets, or similar calculation sheet application. This section will do as best as possible to keep all information up to date on how you could load the data into these applications. Feel free to contact support if we are missing an option.\n\n#### CSV download, import:\n\n 1. Open the data in the CSV format from the browser eg. ```https://rest.coinapi.io/v1/exchangerate/USD?apikey=YOUR_API_KEY&invert=true&output_format=csv```\n 2. Save the data to the file with the .csv extension.\n 3. Use the file saved and import it into the software.\n 4. When configuring import, refer to the parameters like delimiter from the [Output data format](#output-data-format)\n\nThe platform-independent way described above is based on CSV but could also be used in other formats like JSON and XML as long as the software support it, but the import procedure needs to be adjusted accordingly.\n\n#### Microsoft Excel\n\n * Use [PowerQuery](https://docs.microsoft.com/en-us/power-query/power-query-what-is-power-query) to load the URL directly into the CSV import without saving the file locally. \n * Use the [=WEBSERVICE](https://support.office.com/en-us/article/webservice-function-0546a35a-ecc6-4739-aed7-c0b7ce1562c4) function to load the API response directly into the sheet, but this will not parse the data; additional processing is required.\n\n#### Google Sheets\n\n * Use [=IMPORT](https://support.google.com/docs/answer/3093335?hl=en) function to load the REST API endpoint and automatically parse the CSV format data into the cells. eg. ```=IMPORTDATA(\"https://rest.coinapi.io/v1/exchangerate/USD?apikey=YOUR_API_KEY&invert=true&output_format=csv```\n\n#### OpenOffice Calc\n\n * Select the menu Insert -> Sheet From File, 2. In the Insert dialog, put the URL eg. ```https://rest.coinapi.io/v1/exchangerate/USD?apikey=YOUR_API_KEY&invert=true&output_format=csv``` in the File Name box at the bottom. Set the drop-down list next to that to Web Page Query and click Open. The Text Import dialog opens where you can change the defaults if needed.\n " + description: "\nRESTful endpoint provides the widest range of data, based on HTTP protocol which works in Request-Reply scheme.\n\nImplemented Standards:\n\n * [HTTP1.0](https://datatracker.ietf.org/doc/html/rfc1945)\n * [HTTP1.1](https://datatracker.ietf.org/doc/html/rfc2616)\n * [HTTP2.0](https://datatracker.ietf.org/doc/html/rfc7540)\n * [OpenAPI v3](https://www.openapis.org/)\n\n> **Note:** We adhere to the OpenAPI standards for documenting our API.\n\n## OpenAPI Specification\n\nTo access our API's OpenAPI specification, you can use the following link: [OpenAPI v3](https://raw.githubusercontent.com/coinapi/coinapi-sdk/master/data-api/coinapi-marketdata-rest.yaml)\n\nIf you need to import the OpenAPI file into software like Postman, simply copy and paste the link below:\n```shell\nhttps://raw.githubusercontent.com/coinapi/coinapi-sdk/master/data-api/coinapi-marketdata-rest.yaml\n```\n\n## Endpoints\n\nEnviroment | Encryption | Value \n--- | --- | ---\nProduction | Yes | `https://rest.coinapi.io/`\nProduction | No | `http://rest.coinapi.io/`\n\n:::info\n\nFor real-time market data streaming, you should use WebSockets. REST API only supports pooling, meaning you can periodically request the current market data state. In streaming, you subscribe and data or updates are delivered to you continuously.\n\n:::\n\n## General\n\nIf you want to learn how to authenticate to this API, you can find detailed instructions and guidance in\n[authentication section](/authentication) of this documentation.\n\n### HTTP Requests\n\nEach HTTP request must contain the header ``Accept: application/json`` as all our responses are in JSON format.\n\nWe encourage you to use the HTTP request header ``Accept-Encoding: deflate, gzip`` for all requests. \nThis will indicate to us that we can deliver compressed data to you which on your side should be decompressed transparently.\n\n:::tip\n\nBy allowing data compression you are lowering bandwidth requirements by approximately 80%. \nThis is important for requesting large amounts of data or using WebSocket Streaming API, \nas we can deliver data to you faster and more effectively.\n\n:::\n\n#### HTTP Success\n\nSuccessful HTTP responses have the status code `200` and the body in a format according to documentation of the requested resource.\n\n:::info\n\nYou should always check that your HTTP response status code is equal to 200, otherwise the requested was not successful.\n\n:::\n\n#### HTTP Errors\n\n> Error message is returned in JSON structured like this:\n\n```json\n{\n \"error\": \"Invalid API key\"\n}\n```\n\nAll HTTP requests with response status codes different to `200` must be considered as failed \nand you should expect additional JSON inside the body of the response with the error message encapsulated inside it as shown in the example.\nWe use the following error codes:\n\nError Code | Meaning\n---------- | -------\n400 | Bad Request -- There is something wrong with your request\n401 | Unauthorized -- Your API key is wrong\n403 | Forbidden -- Your API key doesnt't have enough privileges to access this resource\n429 | Too many requests -- You have exceeded your API key rate limits\n550 | No data -- You requested specific single item that we don't have at this moment.\n\n:::info\n\nGood practice is to store all error messages somewhere along with request data for further manual review.\n\n:::\n\n### Limits\n\nAny authenticated endpoint is providing (in HTTP response headers) information about the current state of the limits associated with API Key. In this section we will describe each limit.\n\n#### Request limit / APIKey\n\n```html\nX-RateLimit-Limit: 1000000\nX-RateLimit-Remaining: 999989\nX-RateLimit-Request-Cost: 1\nX-RateLimit-Reset: 2018-01-22T15:25:15.1234567Z\n```\n\nThe request limit define number of maximum requests that could be executed in the 24 hours period (sliding/rollowing window - always last 24 hours from specific moment) for your subscription.\n\nWe define request as data request credits and this is not always equal to the number of API calls executed against the API. A request is deemed to be a single one if the limit query parameter on the endpoint isn’t available, isn’t used or it's stated otherwise in the API documentation. Otherwise — if the limit query parameter is available and is used — then each of the 100 data points returned in the response is counted as one request.\n\nFor example at the 2019-08-22 13:00 UTC value of the requests remaining (X-RateLimit-Remaining) will be equal to the allocated quota (X-RateLimit-Limit) decreased by the sum of the request costs (SUM(X-RateLimit-Request-Cost)) executed in the period 2019-08-21 13:00 UTC - 2019-08-22 13:00 UTC (last 24 hours).\n\n\nHTTP Header | Type | Description\n---------- | ------- | ---\nX-RateLimit-Used | int | Provides information about the request limit that has been used within the last 24-hour period. This header indicates the amount of request capacity consumed based on the usage history. It is important to note that the header is not always appended to every request to optimize the operation of the API.\nX-RateLimit-Limit | int | Is an optional feature that can be enabled via the customer portal to impose a limit on the capabilities of a specific API key. It allows you to define a threshold for the number of requests that can be made using a single API key within a 24-hour time frame.\nX-RateLimit-Remaining | int | Provides information about the number of requests that can still be made within the last 24-hour period based on the usage history. This header serves as a helpful indicator of the remaining request capacity, allowing API consumers to manage their usage effectively. It is important to note that the header is not always appended to every request to optimize the operation of the API.\nX-RateLimit-Request-Cost | int | The number of requests used to generate current HTTP response.\nX-RateLimit-Reset | timestring | The time when all provisioned requests are available to execute again if no more requests will be executed.\nX-RateLimit-Quota-Overage | string | Provides information about whether a given API key may exceed the plan quota within a 24-hour time frame, which could result in additional charges. This header is fully defined and configured in the customer portal.\nX-RateLimit-Quota-Allocated | string | Total number of requests that can be made within a specific subscription during a 24-hour time frame. This quota allocation is determined based on the user's subscription purchase.\nX-RateLimit-Quota-Remaining | string | Provides valuable information about the remaining quota within the subscription for making requests within a 24-hour time frame. This header indicates the number of requests that can still be made within the allocated quota for the current 24-hour period.\n\n```json\nGET v1/exchanges/ECB/apiKey-ED802AF4-E855-YOUR-API-KEY\nHost: coinapi.io\nX-RateLimit-Used: 1000\nX-RateLimit-Limit: 5000\nX-RateLimit-Remaining: 4000\nX-RateLimit-Request-Cost: 1\nX-RateLimit-Reset: 2023-05-05T12:00:00.0000001Z\nX-RateLimit-Quota-Overage: ENABLED\nX-RateLimit-Quota-Allocated: 10000\nX-RateLimit-Quota-Remaining: 5000\n```\n\nExplanation:\n\n- X-RateLimit-Used: 1000 (requests used in the last 24 hours)\n- X-RateLimit-Limit: 5000 (total request limit within a 24-hour time frame)\n- X-RateLimit-Remaining: 4000 (requests remaining within the last 24 hours)\n- X-RateLimit-Request-Cost: 1 (cost or \"weight\" of each individual request)\n- X-RateLimit-Reset: 2023-05-05T12:00:00.0000001Z (when the rate limit will reset within a 24-hour period)\n- X-RateLimit-Overage: ENABLED (API key may exceed the plan quota within a 24-hour time frame)\n- X-RateLimit-Quota-Allocated: 10000 (total number of requests allowed for all API keys within the subscription within a 24-hour time frame)\n- X-RateLimit-Quota-Remaining: 5000 (requests remaining within the subscription's allocated quota within the last 24 hours)\n\n#### Concurrency limit / APIKey\n\n```html\nX-ConcurrencyLimit-Limit: 10\nX-ConcurrencyLimit-Remaining: 5\n```\n\nThe concurrency limit defines the number of maximum concurrent API calls/requests that the API could process for your subscription at the current moment. Every API call/request increases the Concurrency limit against quota, and when it finishes, decreases it.\n\nHTTP Header | Type | Description\n---------- | ------- | ---\nX-ConcurrencyLimit-Limit | int | Concurrency limit allocated for your API key.\nX-ConcurrencyLimit-Remaining | int | The number of concurrent API calls/requests available to be executed in this moment for your API key.\n\n### Output data format\n\nBy default we are using JSON output data format for all of our endpoints, you can control format of data by using `output_format` variable in query string parameters.\n\n#### URL Parameters\n\nParameter | Type | Description\n---------- | ------- | -------\noutput_format | string | Output data format *(optional, default value is `json`, possible values are `json`, `xml` or `csv`)*\ncsv_include_header | bool | Ignore header line in CSV output? *(optional, default value is `true`, `true` to include CSV header line, `false` otherwise)*\ncsv_include_quotes | bool | Encapsulate strings with quotes in CSV output? *(optional, default value is `false`, `true` to encapsulate all strings with `\"`, `false` to leave them unquoted)*\ncsv_exclude_col | string | Comma delimited list of column names to ignore in CSV output *(optional, by default all columns are included)*\ncsv_set_delimiter | string | Character that will be used as column delimiter in CSV output *(optional, default value is `;`)*\ncsv_set_dec_mark | string | Character that will be used as decimal separator in CSV output *(optional, default value is `.`)*\ncsv_set_timeformat | string | Format for datetime type in CSV output or `unix` for unix timestamp *(optional, default value is `yyyy-MM-ddTHH:mm:ss.fffffffZ`)*\ncsv_set_newline | string | New line type *(optional, default value is `unix`, possible values `win`, `mac`, `unix`)*\n\n### Excel / G-Sheets\n\nThere are several ways to use data from our REST API inside the Excel, Google Sheets, or similar calculation sheet application. This section will do as best as possible to keep all information up to date on how you could load the data into these applications. Feel free to contact support if we are missing an option.\n\n#### CSV download, import:\n\n 1. Open the data in the CSV format from the browser eg. ```https://rest.coinapi.io/v1/exchangerate/USD?apikey=YOUR_API_KEY&invert=true&output_format=csv```\n 2. Save the data to the file with the .csv extension.\n 3. Use the file saved and import it into the software.\n 4. When configuring import, refer to the parameters like delimiter from the [Output data format](#output-data-format)\n\nThe platform-independent way described above is based on CSV but could also be used in other formats like JSON and XML as long as the software support it, but the import procedure needs to be adjusted accordingly.\n\n#### Microsoft Excel\n\n * Use [PowerQuery](https://docs.microsoft.com/en-us/power-query/power-query-what-is-power-query) to load the URL directly into the CSV import without saving the file locally. \n * Use the [=WEBSERVICE](https://support.office.com/en-us/article/webservice-function-0546a35a-ecc6-4739-aed7-c0b7ce1562c4) function to load the API response directly into the sheet, but this will not parse the data; additional processing is required.\n\n#### Google Sheets\n\n * Use [=IMPORT](https://support.google.com/docs/answer/3093335?hl=en) function to load the REST API endpoint and automatically parse the CSV format data into the cells. eg. ```=IMPORTDATA(\"https://rest.coinapi.io/v1/exchangerate/USD?apikey=YOUR_API_KEY&invert=true&output_format=csv```\n\n#### OpenOffice Calc\n\n * Select the menu Insert -> Sheet From File, 2. In the Insert dialog, put the URL eg. ```https://rest.coinapi.io/v1/exchangerate/USD?apikey=YOUR_API_KEY&invert=true&output_format=csv``` in the File Name box at the bottom. Set the drop-down list next to that to Web Page Query and click Open. The Text Import dialog opens where you can change the defaults if needed.\n " contact: name: COINAPI LTD url: https://www.coinapi.io @@ -11,7 +11,7 @@ info: url: https://github.com/coinapi/coinapi-sdk/blob/master/LICENSE version: v1 servers: - - url: https://rest.coinapi.io/ + - url: https://rest.coinapi.io paths: /v1/assets: get: @@ -164,14 +164,14 @@ paths: examples: Current rate: value: { - "time": "2023-11-17T11:48:33.1695459Z", + "time": "2023-11-17T12:37:09.7840101Z", "asset_id_base": "BTC", "asset_id_quote": "USD", "rate": 10000.0 } Historical rate: value: { - "time": "2023-11-16T11:48:33.1697108Z", + "time": "2023-11-16T12:37:09.7842348Z", "asset_id_base": "BTC", "asset_id_quote": "USD", "rate": 10000.0 @@ -182,14 +182,14 @@ paths: examples: Current rate: value: { - "time": "2023-11-17T11:48:33.1695459Z", + "time": "2023-11-17T12:37:09.7840101Z", "asset_id_base": "BTC", "asset_id_quote": "USD", "rate": 10000.0 } Historical rate: value: { - "time": "2023-11-16T11:48:33.1697108Z", + "time": "2023-11-16T12:37:09.7842348Z", "asset_id_base": "BTC", "asset_id_quote": "USD", "rate": 10000.0 @@ -200,14 +200,14 @@ paths: examples: Current rate: value: { - "time": "2023-11-17T11:48:33.1695459Z", + "time": "2023-11-17T12:37:09.7840101Z", "asset_id_base": "BTC", "asset_id_quote": "USD", "rate": 10000.0 } Historical rate: value: { - "time": "2023-11-16T11:48:33.1697108Z", + "time": "2023-11-16T12:37:09.7842348Z", "asset_id_base": "BTC", "asset_id_quote": "USD", "rate": 10000.0 @@ -218,14 +218,14 @@ paths: examples: Current rate: value: { - "time": "2023-11-17T11:48:33.1695459Z", + "time": "2023-11-17T12:37:09.7840101Z", "asset_id_base": "BTC", "asset_id_quote": "USD", "rate": 10000.0 } Historical rate: value: { - "time": "2023-11-16T11:48:33.1697108Z", + "time": "2023-11-16T12:37:09.7842348Z", "asset_id_base": "BTC", "asset_id_quote": "USD", "rate": 10000.0