Streams Direct REST API
All routes require the following three headers for user authentication:
Header | Description |
---|
Authorization | The user’s unique identifier, provided as a UUID (Universally Unique IDentifier). |
X-Authorization-Timestamp | The current timestamp, with precision up to milliseconds. The timestamp must closely synchronize with the server time, allowing a maximum discrepancy of 5 seconds (by default). |
X-Authorization-Signature-SHA256 | The HMAC (Hash-based Message Authentication Code) signature, generated by hashing parts of the request and its metadata using SHA-256 with a shared secret key. |
/api/v1/reports
Type | Description | Parameter(s) |
---|
HTTP GET | Returns a single report for a given timestamp. | feedID : A Data Streams stream ID.timestamp : The Unix timestamp for the report.
|
GET /api/v1/reports?feedID=<feedID>×tamp=<timestamp>
{
"report": {
"feedID": "Hex encoded feedId.",
"validFromTimestamp": "Report's earliest applicable timestamp (in seconds).",
"observationsTimestamp": "Report's latest applicable timestamp (in seconds).",
"fullReport": "A blob containing the report context and body. Encode the fee token into the payload before passing it to the contract for verification."
}
}
/api/v1/reports/latest
Type | Parameter(s) |
---|
HTTP GET | feedID : A Data Streams stream ID. |
GET /api/v1/reports/latest?feedID=<feedID>
{
"report": {
"feedID": "Hex encoded feedId.",
"validFromTimestamp": "Report's earliest applicable timestamp (in seconds).",
"observationsTimestamp": "Report's latest applicable timestamp (in seconds).",
"fullReport": "A blob containing the report context and body. Encode the fee token into the payload before passing it to the contract for verification."
}
}
/api/v1/reports/bulk
Type | Description | Parameter(s) |
---|
HTTP GET | Return a report for multiple FeedIDs at a given timestamp. | feedIDs : A comma-separated list of Data Streams stream IDs.timestamp : The Unix timestamp for the reports.
|
GET /api/v1/reports/bulk?feedIDs=<FeedID1>,<FeedID2>,...×tamp=<timestamp>
{
"reports": [
{
"feedID": "Hex encoded feedId.",
"validFromTimestamp": "Report's earliest applicable timestamp (in seconds).",
"observationsTimestamp": "Report's latest applicable timestamp (in seconds).",
"fullReport": "A blob containing the report context and body. Encode the fee token into the payload before passing it to the contract for verification."
}
]
}
/api/v1/reports/page
Type | Description | Parameter(s) |
---|
HTTP GET | Return multiple sequential reports for a single stream ID, starting at a given timestamp. | feedID : A Data Streams stream ID.startTimestamp : The Unix timestamp for the first report.limit (optional): The number of reports to return.
|
GET /api/v1/reports/page?feedID=<FeedID>&startTimestamp=<StartTimestamp>&limit=<Limit>
{
"reports": [
{
"feedID": "Hex encoded feedId.",
"validFromTimestamp": "Report's earliest applicable timestamp (in seconds).",
"observationsTimestamp": "Report's latest applicable timestamp (in seconds).",
"fullReport": "A blob containing the report context and body. Encode the fee token into the payload before passing it to the contract for verification."
}
]
}
Status Code | Description |
---|
400 Bad Request | This error is triggered when: - There is any missing/malformed query argument.
- Required headers are missing or provided with incorrect values.
|
401 Unauthorized User | This error is triggered when: - Authentication fails, typically because the HMAC signature provided by the client doesn't match the one expected by the server.
- A user requests access to a stream without the appropriate permission or that does not exist.
|
500 Internal Server | Indicates an unexpected condition encountered by the server, preventing it from fulfilling the request. This error typically points to issues on the server side. |
206 Missing data (/bulk endpoint only) | Indicates that at least one stream ID data is missing from the report. E.g., you requested a report for stream IDs <feedID1> , <feedID2> , and <feedID3> at a given timestamp. If data for <feedID2> is missing from the report (not available yet at the specified timestamp), you get [<feedID1 data>, <feedID3 data>] and a 206 response. |