asyncapi/birbnetes.yml

341 lines
9.3 KiB
YAML

asyncapi: 2.0.0
info:
title: Birbnetes API
version: '2.0.1'
description: |
Async messages sent between major components of the Birbnetes system.
contact:
name: KMLabz Team
url: https://xwiki.kmlabz.com
email: birbnetes@kmlabz.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
kubernetes:
url: birb-rabbitmq:{port}
protocol: amqp
protocolVersion: "0.9.1"
description: RabbitMQ
security:
- user_pass: []
variables:
port:
description: Available in the birbnetes namespace of Kubernetes.
default: '5672'
edge:
url: activemq.kmlabz.com:{port}
protocol: secure-mqtt
protocolVersion: "3.x"
bindings:
mqtt:
clientId: iot
cleanSession: true
lastWill:
topic: /last-wills
qos: 2
message: Guest gone offline.
retain: false
keepAlive: 60
bindingVersion: 0.1.0
description: Apache ActiveMQ Artemis
variables:
port:
description: Only usable over mqtt-nio+ssl for better security.
default: '61616'
defaultContentType: application/json
channels:
kubernetes/wave:
bindings:
amqp:
queue:
name: please-declare
durable: true
autoDelete: false
vhost: /
exchange:
name: wave
type: fanout
durable: true
autoDelete: false
vhost: /
bindingVersion: 0.1.0
description: IDs of recieved sound files.
subscribe:
summary: Trigger classification
description: Used to trigger processing of recieved waveforms.
operationId: receiveMeasurement
message:
$ref: '#/components/messages/wave'
publish:
summary: Trigger classification
description: Trigger processing of a waveform.
operationId: triggerProcessing
message:
$ref: '#/components/messages/wave'
kubernetes/output:
bindings:
amqp:
ack: false
queue:
name: please-declare
durable: true
autoDelete: false
vhost: /
exchange:
name: output
type: fanout
durable: true
autoDelete: false
vhost: /
bindingVersion: 0.1.0
description: Confidence of AI
subscribe:
summary: AI Output
description: Probaility attached to a particular sample.
operationId: receiveProbability
message:
$ref: '#/components/messages/output'
publish:
summary: AI Output
description: Probaility attached to a particular sample.
operationId: sendprobability
message:
$ref: '#/components/messages/output'
device/sensor/{deviceID}/{sensorID}:
bindings:
mqt:
qos: 1
retain: true
bindingVersion: 0.1.0
description: Sensor measurement
parameters:
deviceID:
description: ID of an IoT device
schema:
type: string
format: uuid
sensorID:
description: ID of sensor on a device
schema:
type: string
format: uuid
subscribe:
summary: Recieve sensor data
description: Measurement of a sensor on a particular device.
operationId: recieveSensorData
message:
$ref: '#/components/messages/sensor'
publish:
summary: Send sensor data
description: Measurement of a sensor.
operationId: sendSensorData
message:
$ref: '#/components/messages/sensor'
device/control/{deviceID}:
bindings:
mqt:
qos: 2
retain: true
bindingVersion: 0.1.0
description: Command messages sent by the cloud
parameters:
deviceID:
description: ID of an IoT device
schema:
type: string
format: uuid
subscribe:
summary: Recieve control messages of device
description: Shutdown and powerof messages sent by cloud to a particular device
operationId: recieveDeviceCommand
message:
$ref: '#/components/messages/controlmessage'
publish:
summary: Send control messages to device
description: Send shutdown and poweron commands to a device.
operationId: sendDeviceCommand
message:
$ref: '#/components/messages/controlmessage'
device/control/{deviceID}/{sensorID}:
bindings:
mqt:
qos: 2
retain: true
bindingVersion: 0.1.0
description: Command messages sent by the cloud
parameters:
deviceID:
description: ID of an IoT device
schema:
type: string
format: uuid
sensorID:
description: ID of sensor on a device
schema:
type: string
format: uuid
subscribe:
summary: Recieve control messages of sensor
description: Shutdown and powerof messages sent by cloud to a sensor
operationId: recieveSensorCommand
message:
$ref: '#/components/messages/controlmessage'
publish:
summary: Send control messages to sensor
description: Send shutdown and poweron commands to a sensor.
operationId: sendSensorCommand
message:
$ref: '#/components/messages/controlmessage'
device/status/{deviceID}:
bindings:
mqt:
qos: 0
retain: true
bindingVersion: 0.1.0
description: Status messages of a device
parameters:
deviceID:
description: ID of an IoT device
schema:
type: string
format: uuid
subscribe:
summary: Recieve device status messages of device
description: Operation faliure or device status information
operationId: recieveDeviceStatusMessage
message:
$ref: '#/components/messages/statusmessage'
publish:
summary: Send status messages of device
description: Send operational messages of a device to interested parties
operationId: sendDeviceStatusMessage
message:
$ref: '#/components/messages/statusmessage'
device/status/{deviceID}/{sensorID}:
bindings:
mqt:
qos: 0
retain: true
bindingVersion: 0.1.0
description: Status messages of a device
parameters:
deviceID:
description: ID of an IoT device
schema:
type: string
format: uuid
sensorID:
description: ID of sensor on a device
schema:
type: string
format: uuid
subscribe:
summary: Recieve device status messages of sensor
description: Operation faliure or sensor status information
operationId: recieveSensorStatusMessage
message:
$ref: '#/components/messages/statusmessage'
publish:
summary: Send status messages of sensor
description: Send operational messages of a sensor to interested parties
operationId: sendSensorStatusMessage
message:
$ref: '#/components/messages/statusmessage'
components:
securitySchemes:
user_pass:
type: userPassword
description: Defined by helm chart.
messages:
wave:
name: wave
title: Recieve ID
summary: Unique ID used to identify a particular sample in the system.
contentType: application/json
bindings:
amqp:
bindingVersion: 0.1.0
payload:
$ref: "#/components/schemas/wavePayload"
output:
name: output
title: AI Output
summary: Confidence of AI attached to unique ID of sample.
contentType: application/json
bindings:
amqp:
bindingVersion: 0.1.0
payload:
$ref: "#/components/schemas/probabilityPayload"
sensor:
name: sensorsample
title: Sample measurement data
summary: Measurement made by a sensor on a device.
contentType: application/json
bindings:
mqtt:
bindingVersion: 0.1.0
payload:
$ref: "#/components/schemas/samplePayload"
controlmessage:
name: controlmessage
title: Control message
summary: Control message used to shut down and bring online devices
contentType: application/json
bindings:
mqtt:
bindingVersion: 0.1.0
payload:
$ref: "#/components/schemas/controlPayload"
statusmessage:
name: statusmessage
title: Status message
summary: Status messages sent by devices to any interested parties
contentType: application/json
bindings:
mqtt:
bindingVersion: 0.1.0
payload:
$ref: "#/components/schemas/statusPayload"
schemas:
wavePayload:
type: object
properties:
tag:
type: string
description: Unique ID
probabilityPayload:
type: object
properties:
tag:
type: string
summary: Unique ID used to identify a particular sample in the system.
probability:
type: number
minimum: 0
maximum: 1
summary: Probability of detection
samplePayload:
type: object
properties:
measurement:
type: string
summary: Measurement data
controlPayload:
type: object
properties:
command:
type: string
enum: ["online", "offline", "doAlert"]
statusPayload:
type: object
properties:
status:
type: string