This document outlines the changes to the BitBrew platform, management API, and Dashboard application that will be released May 29, 2019. Changes should be carefully read and understood.
Table of Contents
Platform Changes
VERY IMPORTANT CHANGE IN THE BEHAVIOR OF THE SYSTEM
Performance Improvements
REST API Changes
New Token Endpoint with Oauth2-Compliant Response
New Field in Device File Status Response
New Endpoint for Device File Status History
Field Name Change in Keen Destination Creation Method
Dashboard Changes
New Device File Status History
Platform Changes
Very Important Change in the Behavior of the System for DynamoDB, Keen.io, and Google Bigtable Destinations
In previous versions of the system, data expired after 48 hours on a per-event basis. Individual messages that could not be delivered because a customer's destination was not setup correctly or could not handle the load were dropped 48 hours after they had been queued. This resulted in a lack of transparency and an unknown amount of data loss that customers couldn't predict.
In the new version, all data destined for third-party integrations such as AWS DynamoDB, Keen.io, and Google Bigtable is safely buffered for 120 hours while the senders retry on a back-off schedule. After 120 hours of failed delivery, and all data directed to that destination will be permanently dropped.
RabbitMQ behavior remains unchanged, and events expire after 48 hours on an individual basis.
Performance Improvements
BitBrew has re-implemented the delivery mechanisms to its third-party destinations to increase throughput, upgrade performance under heavy load, and support the growth of our customers. Reliable, at-least-once delivery is still guaranteed to every destination except webhook.
REST API Changes
New Token Endpoint with Oauth2-Compliant Response
BitBrew has added a new endpoint to obtain a token using client credentials with responses that comply with the Oauth2 spec. The request body is the same as the existing token endpoint.
New method and endpoint:
POST /v1/oauth/token
Updated response:
{
"access_token": "NjI0NzI2N2UtZWM5Wy00ZDY1LWJiMzMtZWZjMDNkMTZlMDQw",
"expires_in": 315359981,
"token_type": "Bearer"
}
See our updated REST API documentation for more information.
New Field in Device File Status Response
When relevant, the response code reported by a device in relation to its update attempt will be populated in the response.
Updated response body:
{
"deviceId": "602091918",
"configurationInfo": {
"folderName": "test-configs",
"activeFileName": "LGRTCS.05",
"lastReportedFileName": "LGRTCS.05",
"status": "uptodate",
"responseCode": null,
"statusChangedAt": "2019-03-11T20:15:04.932Z"
},
"firmwareInfo": {
"folderName": "test-fw",
"activeFileName": "LGRTFS.04",
"lastReportedFileName": "LGRTFS.03",
"status": "updateCancelled",
"responseCode": 226,
"statusChangedAt": "2019-05-27T18:32:18.321Z"
}
}
See our updated REST API documentation for more information.
New Endpoint for Device File Status History
A new endpoint allows you to see the history of a device's file statuses. A new entry is added whenever there is a change to any of the file status fields for either firmware or configuration.
Method / endpoint:
GET /v1/devices/{{deviceId}}/files/history
Response:
{
"history": [
{
"configurationInfo": {
"activeFileName": null,
"folderName": null,
"lastReportedFileName": null,
"responseCode": null,
"status": "notApplicable",
"statusChangedAt": "2018-01-26T19:24:05.065Z"
},
"firmwareInfo": {
"activeFileName": null,
"folderName": null,
"lastReportedFileName": null,
"responseCode": null,
"status": "notApplicable",
"statusChangedAt": "2019-05-26T19:24:05.065Z"
}
}
]
}
Note that the history is populated from the date of this release, so the first entry in the history is whatever the current status was at 11:30 AM EDT, May 29, 2019.
See our updated REST API documentation for more information.
Field Name Change in Keen Destination Creation Method
When creating a Keen.io destination, the field name
streamName
is now
keenEventCollection
Updated request body:
{
"name": "keen-routes",
"keenProjectId": "18e64b84c9e77c00019328f9",
"keenWriteKey": "DEBC4E9945D1302F37919E6534DF321AEDF3F6340B09E60471281490767729081279FF2A772A869451ED8AD8CBD0243B3017D64FD16CA0F30A022C8950965070FB261D406D9AC4896F4FCF95F02A97CAAD908E8B55F8BF129C892D3B460815C",
"keenEventCollection": "gps"
}
See our updated REST API documentation for more information.
Dashboard Changes
The Dashboard will now display the history of firmware and configuration statuses in two separate tables, available by clicking on the relevant tabs when viewing a device.