Background Information
Architecture
Fuse is not built using a traditional layered Web architecture. Rather, it is built using a new architecture that supports better control over data for owners.
This architecture uses persistent compute objects, or picos, as it's fundamental building block and supports an unhosted or personal cloud application architecture (PCAA). As with anything different, there are opportunities and challenges.
The following articles provide some background on picos and PCAAs.
- Fundamental Features of Persistent Compute Objects
- Pico APIs: Events and Queries
- Introducing Forever and Personal Cloud Application Architectures
- Fargo and Personal Cloud Application Architectures
Events and Queries
Fuse uses an event-query API rather than a strictly RESTful API. The documentation will present events like so:
<event domain>:<event type>
where the event domain and type are separated by a colon. Most event also use event attributes which will be presented as name-value pairs.
Events are raised to Fuse by encoding them in HTTP. The Sky Event API describes how this encoding is done. The JavaScript SDK includes a function, CloudOS.raiseEvent(), and support structure for encoding the event with its attributes and performing an HTTP POST.
Queries will be presented like so:
<query domain>:<query name>(<param0>, <param1>,...,<paramn>)
Queries are raised to Fuse by encoding them as HTTP. The Sky Cloud API describes how this encoding is done. The JavaScript SDK includes a function, CloudOS.skyCloud()
, that encodes a query with its parameters and performs an HTTP GET.
This table provides the query domains for the primary service modules that make up the overall Fuse system. There is a development and a production domain.
Production Domain | Development Domain | Ruleset Name | Description |
---|---|---|---|
b16x9 | v1_fuse_vehicle | fuse_vehicle.krl | Services for the overall vehicle Pico |
b16x10 | v1_fuse_keys | fuse_keys.krl | Keys for various APIs (protected) |
b16x11 | v1_fuse_carvoyant | fuse_carvoyant_mashery.krl | Services for interacting with Carvoyant API |
b16x13 | v1_fuse_error | fuse_error.krl | Services for handling error events |
b16x16 | v1_fuse_owner | fuse_init.krl | Services for the owner pico |
b16x17 | v1_fuse_fleet | fuse_fleet.krl | Services for managing the fleet |
b16x18 | v1_fuse_trips | fuse_trips.krl | Series for Trips API |
b16x19 | v1_fuse_common | fuse_common.krl | Common functions; used by most Fuse rulesets |
b16x20 | v1_fuse_fuel | fuse_fuel.krl | Services for the Fuel API |
b16x21 | v1_fuse_maintenance | fuse_maintenance.krl | Services for the Maintenance API |
b16x22 | v1_fuse_bootstrap | fuse_bootstrap.krl | Service for bootstrapping a new Fuse account |
b16x23 | v1_fuse_fleet_oauth | fuse_fleet_oauth.krl | Services for managing OAuth between the fleet pico and Carvoyant |