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 ( /bulkendpoint 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. |