4. Components and APIs

4.1. Components

Table 4.1 Components
Component
Repository
/ Main site
Documentation
for Component
Component API
Documentation
MongoDB MongoDB site MongoDB doc.  
Postgres PostgreSQL site PostgreSQL doc.  
Kong API gateway
(Community Edition)
Kong site Kong doc.  
Redis Redis site Redis doc.  
Zookeeper Zookeeper site Zookeeper doc.  
Kafka Kafka site Kafka doc.  
Auth GitHub - auth Auth doc. API - auth
History GitHub - history   API - history
Device Manager GitHub - DeviceManager DeviceManager doc. API - DeviceManager
Image Manager GitHub - image-manager   API - image-manager
GUI GitHub - GUI    
Flowbroker GitHub - flowbroker   API - flowbroker
Databroker GitHub - data-broker   API - data-broker
Iotagent Mosca
(MQTT)
GitHub - iotagent-mosca    
EJBCA-REST GitHub - EJBCA-REST   API - EJBCA-REST
Data Manager GitHub - Data Manager   API - Data Manager
Cron GitHub - Cron   API - Cron

4.2. Exposed APIs (API Gateway)

The API gateway used in dojot reroutes some of endpoints from component. The following table shows which endpoint exposed by the API gateway is mapped to which component endpoint, its component endpoint Documentation and whether the endpoint needs authentication when used via API Gateway. See more about how using API in Using API interface.

Table 4.2 Exposed endpoints
Component
Endpoint exposed
by the API gateway
Component
Endpoint
Component
Endpoint
Documentation
Needs
Authentication
GUI / /   No
Device Manager /device /device API - DeviceManager Yes
Device Manager /template /template API - DeviceManager Yes
Flowbroker /flows / API - flowbroker Yes
Auth /auth / API - auth No
Auth /auth/revoke /revoke   No
Auth /auth/user /user API - auth Yes
Auth /auth/pap /pap API - auth Yes
History /history / API - history Yes
EJBCA REST /sign /sign API - EJBCA-REST Yes
EJBCA REST /ca /ca API - EJBCA-REST Yes
EJBCA REST /user /user API - EJBCA-REST Yes
Data Manager /import /import API - Data Manager Yes
Data Manager /export /export API - Data Manager Yes
Cron /cron /cron API - Cron Yes
Image Manager /fw-image / API - image-manager Yes
Data Broker
/device/
{deviceID}
/latest
/device/
{deviceID}
/latest
  Yes
Data Broker /subscription /subscription   Yes
Data Broker /stream /stream   Yes
Data Broker /socket.io /socket.io API - data-broker No

NOTE: Some of the endpoints from component aren’t exposed, but are used internally.

In addition, the API gateway reroutes the endpoints with their ports from component, so that they become uniform: all of them are accessible through the same port (default is TCP port 8000), see the following table.

Table 4.3 Original endpoints to The API gateway
Component Original endpoint Gateway Endpoint
GUI host:80/ host:8000/
Device Manager host:5000/device host:8000/device
Device Manager host:5000/template host:8000/template
Flowbroker host:80/ host:8000/flows
Auth host:5000/ host:8000/auth
Auth host:5000/auth/revoke host:8000/auth/revoke
Auth host:5000/user host:8000/auth/user
Auth host:5000/pap host:8000/auth/pap
History host:8000/ host:8000/history
EJBCA REST host:5583/sign host:8000/sign
EJBCA REST host:5583/ca host:8000/ca
Data Manager host:3000/import host:8000/import
Data Manager host:3000/export host:8000/export
Cron host:5000/cron host:8000/cron
Image Manager host:5000/ host:8000/fw-image
Data Broker host:80/device/{{deviceID}}/latest host:8000/device/{deviceID}/latest
Data Broker host:80/subscription host:8000/subscription
Data Broker host:80/stream host:8000/stream
Data Broker host:80/socket.io host:8000/socket.io

4.3. Kafka messages

These are the messages sent by components and their subjects. If you are developing a new internal component (such as a new IoT agent), see API - data-broker to check how to receive messages sent by other components in dojot.

Table 4.4 Original endpoints
Component Message Subject
DeviceManager Device CRUD (Messages - DeviceManager) dojot.device-manager.device
iotagent-mosca Device data update (Messages - iotagent-mosca) device-data
auth Tenants creation/removal (Messages - auth) dojot.tenancy