Overview
A client-mode connector for the QuestDB HTTP REST API that streams MQTT telemetry into QuestDB tables and runs SQL from MQTT:
Default
BASE_ADDRESS is http://YOUR_QUESTDB_HOST:9000 (QuestDB’s HTTP port). Topics use data/questdb/<object>/<verb>.
CSV import (
/imp) is not a client event. QuestDB only accepts multipart/form-data uploads on /imp; a raw body returns 400 Non-multipart POST not supported. Use ILP /write for streaming rows, or /exec with INSERT INTO … for small batches.Auth
QuestDB open source has no HTTP auth by default. When you enablehttp.user / http.password (OSS) or RBAC (QuestDB Enterprise), pass the full header value in authorization, such as Basic base64(user:pass) or Bearer <REST token>. Send an empty string when the server has no auth. Keep the value in a Hub secret such as QUESTDB_AUTH and never commit it.
Basic Syntax
Example MQTT payloads
Write telemetry (topicdata/questdb/ilp/write). JSON fields fill the query placeholders; the body is line protocol:
data/questdb/query/exec). URL-encode the SQL before publishing:
{"columns":[…],"dataset":[["porto",21.5]],"count":1}.
CSV export (topic data/questdb/query/export) takes the same payload as exec. Health (topic data/questdb/ping) takes { "authorization": "" }.
Testing
The factory smoke ran against a local QuestDB 10.0.1 instance:GET /ping returned 204, CREATE TABLE through /exec returned 200, an ILP POST /write?precision=ms returned 204, and the row came back through /exec (200 JSON) and /exp (200 CSV).

