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.

Did this answer your question?