39 lines
1.2 KiB
YAML
39 lines
1.2 KiB
YAML
input:
|
|
http_server:
|
|
path: /windfree
|
|
allowed_verbs: [POST]
|
|
timeout: 10s
|
|
sync_response:
|
|
status: "202"
|
|
headers:
|
|
Content-Type: application/json
|
|
|
|
pipeline:
|
|
processors:
|
|
- mapping: |
|
|
root = if this.type() != "object" {
|
|
throw("request body must be a JSON object")
|
|
} else if this.schema_version != 1 || this.event_type != "smartthings.device_status" {
|
|
throw("unsupported event schema")
|
|
} else if !["info", "warning", "error"].contains(this.level) {
|
|
throw("invalid level")
|
|
} else if !["ok", "no_data", "error"].contains(this.status) {
|
|
throw("invalid status")
|
|
} else if this.device_id.type() != "string" || this.observed_at.type() != "string" {
|
|
throw("device_id and observed_at are required")
|
|
} else {
|
|
this
|
|
}
|
|
- mutation: |
|
|
root.ingested_at = now()
|
|
root.ingest_source = "redpanda-connect"
|
|
meta kafka_key = this.device_id
|
|
|
|
output:
|
|
redpanda:
|
|
seed_brokers: [ "${KAFKA_BROKERS:127.0.0.1:9092}" ]
|
|
topic: "${KAFKA_TOPIC:smartthings.device-status.v1}"
|
|
key: '${! meta("kafka_key") }'
|
|
tls:
|
|
enabled: ${KAFKA_TLS_ENABLED:false}
|