openflow

protocol used by OpenIAP flow

Intro

Before 1.5 OpenAIP flow only supported websockets ( and way way back rest+OData ) Moving forward it will support the old wbebsocket protocol and the new protocol as described below. This is to keep supporting older versions of OpenRPA and NodeRED. At some point the old version might be removed, but for now it’s the plan to keep it for backward compatability.

Moving forward we will now use protobuf as the base protocol. This allows us to ensure the same look and feel undependenly of the programming language used for communicating with OpenIAP flow. OpenIAP Flow it self uses the nodeapi implementation, that functions as both a server and client package. All proto3 files can be found at this github repository. All api implementations uses this repository for generating and parsing the messages to and from OpenIAP flow. These message can then be send over multiple different base protocols. Currently those are

Message and Service Structure

All messages will be sent using the Envelope message.

message Envelope {
  string command = 1;
  int32 priority = 2;
  int32 seq = 3;
  string id = 4;
  string rid = 5;
  google.protobuf.Any data = 6;
  string jwt = 7;
  string traceid = 8;
  string spanid = 9;
}

Certain commands will setup a stream to receive multiple message on the same request. For instance download/upload file will create a stream for sending the file content. If you send DownloadRequest in Envelop with id 5 then OpenIAP flow will send multiple message with envelop rid 4. First you receive a a BeginStream, then X number of Stream messges with the file centet and then a EndStream message. Finally you will receive a DownloadResponse containing detailed informaiton about the file and folwdown proces.