Flowee the Hub — API documentation

API Reference documentation

Overview

All communication between the Hub and other Flowee components happens over a network-enabled API. This Application Programmer Interface (API) is designed specifically for the Hub and you should understand several basic concepts that it is based on in order to get the most out of them.

Using APIs works by connecting to an endpoint of your hub. Connections happen over TCP/IP bi-directional sockets and the server doesn’t normally disconnect. Which is to say, the API is not RESTful. This is a bit different, but definitely worth it.

API requests are encapsulated in individual messages. One message for a request, and typically one message for a reply.

A message is comprised of a list of tagged-fields. Each tagged-field is a triplet of name, format and value. (specification).

Each message will have a message-id as well as a service-id. Those two make up the structure of the API. You can imagine a list of methods to call is mapped to a list of message-ids. A unique service allows for a list of methods, much like methods on a class.

Example message.

Message-headers

In the protocol I separte the message into a header and a body. The header has basic information that is used by the network-layer with details like the message id and the service id.

A full table is detailed in the SystemService page.

Services

Each and every message has a service-id which maps to a unique service provided by the server. Clients send a request message and receive an answer with the same service-id.

For more details please check the individual services.

API Service
0) A meta representing the Hubs API. If any command fails, you’ll get a message from this service.
BlockChain Service
1) Query the blockchain-database.
live Transaction Service
2) Retrieve or send live transaction data.
Util Service
3) Generic utilities provided by the hub. For instance ‘CreateAddress’
Test Service
4) Local testing service. This is for a Hub running on a testing chain that is not typically shared with others and as such is possible to stay completely local and mining is always instant.
Mining Service
5) Mining service allows external infrastructure to mine and the Hub will validate and broadcast he results.
AddressMonitor Service
17) Remote can subscribe to bitcoin-address usage notifications
BlockNotification Service
18) Subscription service for incoming blocks.
Transaction Monitor Service
20) Subscription service for TXIDs.
Double Spend Broadcast Service
21) Subscribe to get not just specific, but all double spends a node sees.
Indexer Service
19) Service supplied by the Indexer product, gives access to lookup tables for blockchain data.
System Service
126) Low level messages that are needed for the network connection and routing.