This document outlines the changes to the BitBrew platform and management APIs coming in our next release, December 14, 2017. There are changes to existing endpoints and new endpoints that should be carefully read and understood.
BitBrew's API documentation will be updated when the release has been successfully deployed to our production environment.
Table of Contents
Google Bigtable Integration
New Update Rule Endpoint
UDP Speeding Event Structure Modified
Google Bigtable Integration
You can now set up a Google Bigtable as a destination for data from the BitBrew platform and specify that destination in your rules.
New Endpoint: Create a Google Bigtable Destination
[POST] /v1/tenants/{{tenantId}}/destinations/bigtable
+ Request Body
{
"name": "my-bigtable-destination",
"instanceId": "bigtable-demo",
"tableName": "tableName",
"cloudJson": {
"type": "service_account",
"project_id": "bigtable-testing-185714",
"private_key_id": "62ccd61bf47eb3f2ecd6af766f6562f475d362e2",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDPmpjRkX/WnpMP\nn+T6PXM0pUAawChxBEHUISVaFqOnkccLxzfNJ3r/BS0E2GJS3+tPjoj7s33DCNXb\nqePuaEqFJ7JtPVHGNzMOTsRk9cj1i/j7AWtBj9FzYoFr9OCGMXsq3WixGrmxIsvN\nRL1cgTU12zFd8pxot1XNIyBHKaHB+U7/bKCYogFT970/DSU2jcO9zw57oKrxxJEG\nRmNZclJk+FIY9Na0a1Twl6B3e09ZxOPB8JmAbjKOX0KmRQUBImbCTlanvPC2+Cwn\njZEMSO+ehgf02aQ9Ug0RAMGi30/XS93FBGPm46fGP1dLmvHUBk8h0T07k1PeTCOJ\nWR4FAWKDAgMBAAECggEAXtKwJlic2XyIk0RnI91Zd5xbEVzfm+9j2e5hzyo0Cd/N\n2JVf6Xa0+TKpK4NiNZRNOINUEhNDyAeLFtAcadJ85yDgoIC3jx+7VDeqAKs65NzQ\nFmXphYKZGmjN0G+C9gg3x7ZlkS8xzbSk/db93vitQzIg9FZSFopWyGHY5mgfmCbi\nz42lxGCOntraDTY37C9txArq/3RHBkq/GwiU5fOXztwNw3tBs1hhjsU8gaxR8hzX\nxdWht1a6MdElmZ+jRxYVfgKRVguXftogbFuqi/v4JpWOsUTPwF+oMiB+MzxcgXGg\n70kohSkSTFL2LhemUMGhXAsBg6rMC6lpsGZqtk6DMQKBgQDpUAPPbq1+yg2Xsn3s\nNfzEmYAXNzyzOEIylO7sCYRNPc/8883McXZjPOhf2azhatJyllsjNEx6ZYDumFNY\nCMnB4q99Ck7gE1HedNoHHjKcyRVg0yRgSKp1ySmMjrYK9kTLMnvlOIr7cUGcGMCM\n7i/uu2g4Hd4Se7QOfWDxoEckzQKBgQDjypnyRxBY4LByNcC62sV9eorfkxOSyY4X\nK8f6jIatkzlCsY2NmazF/ZXgNXaNAhjb+xTF8ZyrRoQOjZmUsWLQ7vIIqeQbDU5c\nApyg3rBdG9OkQEcWhDuxMgs8XhTHw0PXQ5Q2g+oDVGG3+VmUBEQzxxkChwz8XYks\nPeVdxHMkjwKBgQDOct4cQ/xDb/kdHXUtegwjzww3/sm4cHSrG3xa4oTucF7Fntqh\nKFkwsOmSPyQqBwMXIBKfER0HRSAUgDdnc8dLyBGu3Fs1DgNojA+NMtxoPcqr9cl/\nZW1ocktQs8tD4ey3vQFCsIjSu8HppUFkszM41R4AYfVqd4m5NJp+1Gt/lQKBgQCc\ngN9iQQbvOXihD2NaPeLAAkiVsTQaftZb/x2He7MwYF1QADM0HWhCI6csgy7vVIiF\n4yzzjrvIRUuHwCvLqFAvImwyHZ92Ip86wiSgtj9PyUWQrQTqaHGmna5wjGcUlIjw\nxiJ3jgxiuz/kKbIs6v184YbCYM1AOnd7aQ9EbCt76wKBgQDg6kALukpDc4TqF0o3\nkUfb3bCQa706U9c2tr9j1CaTSFstmhEcg35SOM98RwJBfWlNisS+5cuvOl+dlTxA\nMVR2FfwImT2xYxMBoV+2FZQKy0Efg2GANtaVYX+y7M8j4D8aStHcjpcjNn0HBqWb\ngeT8dzQHmTCNQa9hLfDOX6o4fQ==\n-----END PRIVATE KEY-----\n",
"client_email": "example@bigtable-testing-184714.iam.gserviceaccount.com",
"client_id": "111420640089344752395",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example%40bigtable-testing-184714.iam.gserviceaccount.com"
}
}
Once you've created the destination, you can use the destination ID in a rule to push data matching the rule parameters to that table.
Example Google Bigtable Rule
create rule AllEvents
using itemBody = { body = body, header = header }
where true
with Destination(
item = json(bindings.itemBody),
destinationId = '8b6a45a7-fdd5-4b54-a259-3b6955d1766c'
)
New Endpoint: Update a Rule
This new endpoint replaces several calls and allows a user to enable or disable a rule with one call.
New Endpoint
[PUT] ../v1/tenants/{tenantId}/rules/{ruleName}
+ Request Body
{
"enabled": true
}
Old Endpoints
The old rule enable and disable endpoints have been removed.
[POST] /v1/tenants/{tenantId}/rules/{ruleName}/enable
[POST] /v1/tenants/{tenantId}/rules/{ruleName}/disable
The new request uses a
PUT
method instead ofPOST
.The new request takes a body.
These are breaking changes.
UDP Speeding Event Structure Modification
To avoid confusion, the UDP Speeding Start and Speeding End messages have been distinguished.
Diff of Speeding End
{
"header": {...},
"body": {
"footer": 253,
"message": {
- "type": "OverSpeedingMessage",
+ "type": "OverSpeedingMessageEnd",
"overSpeedType": "HighSpeed",
"startTime": "2017-06-26T02:20:20Z",
"initialLatitude": 42.04869079589844,
"initialLongitude": -86.49169921875,
"startODO": 6163,
"duration": 158,
"distance": 5.300000190734863,
"peakSpeed": 124,
"averageSpeed": 122
},
"header": {
"timestamp": "2017-06-25T22:22:58-04:00",
"tripType": "Unknown",
"tripNumber": 327,
"messageType": 3,
"messageLength": 24,
"latitude": 42.06966781616211,
"longitude": -86.4334945678711,
"fixQuality": "FixOk",
"vehicleProtocolId": "ISO15765_11_BIT_CAN",
"odo": 6168
}
}
}
Diff of Speeding Start Message
{
"header": {...},
"body": {
"footer": 253,
"message": {
- "type": "OverSpeedingMessage",
+ "type": "OverSpeedingMessageStart",
"startTime": "2017-06-26T02:20:20Z",
"initialLatitude": 42.04869079589844,
"initialLongitude": -86.49169921875,
"startODO": 6163
- "overSpeedType": "Unknown",
- "duration": 0,
- "distance": 0,
- "peakSpeed": 0,
- "averageSpeed": 0
},
"header": {
"timestamp": "2017-06-25T22:22:58-04:00",
"tripType": "Unknown",
"tripNumber": 327,
"messageType": 22,
"messageLength": 24,
"latitude": 42.04963302612305,
"longitude": -86.49064636230469,
"fixQuality": "FixOk",
"vehicleProtocolId": "ISO15765_11_BIT_CAN",
"odo": 6168
}
}
}