APIs

Plegma

The Plegma API, from the greek “πλέγμα” meaning grid, mesh or lattice, is the main inter connection API between Alcyone and Nodes of all types.

It provides the usual functions one would expect from such an API such as:

In addition, it includes extensions that allow:

A high level walkthrough of the API can be found at https://www.yodiwo.com/developers. The documentation itself is open-source and suggestions as well as improvements can be directed at github (https://github.com/yodiwo/doc/).

Automatically generated formal API reference is also provided at:

The API is of course transport and language agnostic and the following connection methods are currently supported for Plegma Nodes:

Alt Plegma Diagram

The block diagram of the API frontend stack is shown below:

Alt API Diagram

This is the message flow between Nodes and Alcyone, but it’s not necessary to only carry Plegma messages. Other Yodiwo APIs may be encapsulated within the Plegma link, and if the communicating Node is validated to have the appropriate permissions, the messages will be demultiplexed and sent to the proper handler.

Warlock

Apart from the Plegma API which allows communication for within-the-Node related tasks, the Warlock API is available to Yodiwo users and apps.

Warlock allows internal control of the User’s context and operations that transcend specific Nodes or Things. It can be used to inquire about relationships with other users, create and deploy new applications, share Things with other users, etc.

There is a permission system that specifies which aspects of the system each warlock client is allowed to control.

Nodes can use their Plegma connection to carry Warlock API traffic if they declare the “IsWarlock” capability and have been given the proper permissions.

Fog Apis

These APIs specify the communication:

They are presented in more detail in the separate Fog SW section.

Platform Extensibility APIs

Under current development are new APIs that allow extensibility of the internal platform.

Alcyone already allows extensibility via the following methods

These APIs will formalize the modeling of internal “Logic” blocks and allow external stakeholders to create and upload their own into an app-store like frontend.

These blocks will be:

Custom user blocks: