282 lines
7.7 KiB
YAML
282 lines
7.7 KiB
YAML
asyncapi: 2.0.0
|
|
info:
|
|
title: Birbnetes API
|
|
version: '2.0.0'
|
|
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:
|
|
bindings:
|
|
mqt:
|
|
qos: 1
|
|
retain: true
|
|
bindingVersion: 0.1.0
|
|
description: Sensor measurement
|
|
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:
|
|
bindings:
|
|
mqt:
|
|
qos: 2
|
|
retain: true
|
|
bindingVersion: 0.1.0
|
|
description: Command messages sent by the cloud
|
|
subscribe:
|
|
summary: Recieve control messages
|
|
description: Shutdown and powerof messages sent by cloud
|
|
operationId: recieveCommand
|
|
message:
|
|
$ref: '#/components/messages/controlmessage'
|
|
publish:
|
|
summary: Send control messages
|
|
description: Send shutdown and poweron commands to a device or sensor.
|
|
operationId: sendCommand
|
|
message:
|
|
$ref: '#/components/messages/controlmessage'
|
|
device/status:
|
|
bindings:
|
|
mqt:
|
|
qos: 0
|
|
retain: true
|
|
bindingVersion: 0.1.0
|
|
description: Status messages of a device
|
|
subscribe:
|
|
summary: Recieve device status messages
|
|
description: Operation faliure or device status information
|
|
operationId: recieveStatusMessage
|
|
message:
|
|
$ref: '#/components/messages/statusmessage'
|
|
publish:
|
|
summary: Send status messages
|
|
description: Send operational messages to interested parties
|
|
operationId: sendStatusMessage
|
|
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:
|
|
deviceID:
|
|
type: string
|
|
format: uuid
|
|
summary: Unique ID used to identify a particular device in the system.
|
|
sensorID:
|
|
type: string
|
|
format: uuid
|
|
summary: Unique ID used to identify a particular sensor on a device.
|
|
measurement:
|
|
type: string
|
|
summary: Measurement data
|
|
controlPayload:
|
|
type: object
|
|
properties:
|
|
deviceID:
|
|
type: string
|
|
format: uuid
|
|
summary: Unique ID used to identify a particular device in the system.
|
|
sensorID:
|
|
type: string
|
|
format: uuid
|
|
summary: Unique ID used to identify a particular sensor on a device. (May be wildcard or empty)
|
|
command:
|
|
type: string
|
|
enum: ["online", "offline", "doAlert"]
|
|
statusPayload:
|
|
type: object
|
|
properties:
|
|
deviceID:
|
|
type: string
|
|
format: uuid
|
|
summary: Unique ID used to identify a particular device in the system.
|
|
sensorID:
|
|
type: string
|
|
format: uuid
|
|
summary: Unique ID used to identify a particular sensor on a device. (May be wildcard or empty)
|
|
status:
|
|
type: string |