Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

Objective

  1. Provide faster rollout of new Firebolt API without a Ripple update.
  2.  Most of the existing Thunder APIs are Firebolt ready(FiRe) with some trivial JSON translation. The objective is to adopt a widely accepted JSON transformation language like jq, which allows operators to learn and configure rules without our support and training.
  3. Provide a migration plan to include new New Thunder Plugins(FiRe) that become available in open source.
  4. Should inherently support Firebolt Extension SDKs.

...

Thunder is the default broker for Ripple, it also supports other brokers. WS and HTTP Brokers would be supported based on their access and availability. If the Web-based broker is available internally within the device then tokens are not mandatory. All external endpoints would necessitate authentication mechanism preferably using tokens here are the list of supported tokens

Token Types


Token TypeContext Definition to be used in Rules
Account
$context.accountToken"
Platform$context.platformToken
Device

$context.deviceToken

Distributor

$context.distributorToken

Root

$context.rootToken



Code Block
"endpoints": {
	"secureService": {
        "protocol": "http",
        "url": "https://secureservice.firebolt.com",
        "webContext": {
            "headers": {
			   "Authetication": "Bearer $context.accountToken",
               "OtherHeader": "Some Service specific headers"
            }
        }
    },
    "someOtherService": {
        "protocol": "http",
        "url": "https://secureservice.firebolt.com?token=$context.deviceToken"
    },
},
"rules {
	"securestorage.set": {
            "endpoint": "secureService",
            "alias": "/get",
            "transform": {
                "request": "{ namespace: \"$context.appId\", scope: .scope, key: .key, value: .value }",
                "response": "if .success then \"null\" else { code: -32100, message: \"couldnt set timezone\" } end"
            }
     }
}

...