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