{"server":"flintbay-source","description":"One simulated warehouse rover, exposed over five transports.","access":{"data_restricted":true,"write_token_required":false,"note":"The addresses below are reachable only from the deployment that hosts the Flintbay demo; they resolve on its container network and nowhere else. Configure them on that instance, where the connectors run server-side. This page and /flintbay/recipe.json are the public part."},"endpoints_summary":{"http":"http://flintbay-source-sim:8080","websocket":"ws://flintbay-source-sim:8080/ws","rosbridge":"ws://flintbay-source-sim:8080/rosbridge","mqtt":"flintbay-source-mqtt:1883","rtsp":"rtsp://flintbay-source-media:8554/rover/cam"},"sources":[{"id":"rest","title":"REST — poll telemetry, POST commands","kind":"rest","source":{"name":"demo-rover-rest","kind":"rest","description":"Flintbay demo source server over HTTP","config_json":{"base_url":"http://flintbay-source-sim:8080","timeout_ms":5000,"verify_ssl":true}},"endpoints":[{"name":"telemetry","direction":"in","address":"/api/v1/rover/telemetry","config_json":{"method":"GET","poll_interval_ms":1000,"stale_after_s":15},"bind":["battery.percent","motion.speed_mps","pose.x","system.cpu_temp_c","lidar.front_m"]},{"name":"controls","direction":"bidir","address":"/api/v1/rover/state","config_json":{"method":"GET","write_method":"POST","poll_interval_ms":1000,"min_send_interval_ms":100},"bind":["motor","speed","mode","heading_target","led_color","light","estop"]},{"name":"tables","direction":"in","address":"/api/v1/rover/tables","config_json":{"method":"GET","poll_interval_ms":5000},"bind":["log","alarms","services","zones","info","semaphore"]},{"name":"command","direction":"out","address":"/api/v1/rover/command","config_json":{"method":"POST","body_template":{"delay_ms":400}},"bind":["action"]},{"name":"flaky","direction":"in","address":"/api/v1/chaos/flaky","config_json":{"method":"GET","poll_interval_ms":2000,"query_params":{"fail_rate":"0.3"}},"bind":["ok","attempt"]}]},{"id":"mqtt","title":"MQTT — retained state, JSON telemetry, scalar topic","kind":"mqtt","source":{"name":"demo-rover-mqtt","kind":"mqtt","description":"Flintbay demo source server, Mosquitto broker","config_json":{"host":"flintbay-source-mqtt","port":1883,"username":"demo","password":"demo","use_tls":false,"qos":1,"keep_alive_sec":60}},"endpoints":[{"name":"telemetry","direction":"in","address":"flintbay/rover/telemetry","config_json":{"payload_format":"json","stale_after_s":15},"bind":["battery.percent","motion.speed_mps","wheels.0.current_a"]},{"name":"state","direction":"in","address":"flintbay/rover/state","config_json":{"payload_format":"json","use_retained_for_subscribe":true},"bind":["motor","speed","mode","estop"]},{"name":"battery-scalar","direction":"in","address":"flintbay/rover/battery","config_json":{"payload_format":"string"},"bind":["(whole payload)"]},{"name":"tables","direction":"in","address":"flintbay/rover/tables","config_json":{"payload_format":"json"},"bind":["log","alarms","zones"]},{"name":"controls-write","direction":"out","address":"flintbay/rover/cmd/state","config_json":{"payload_format":"json","qos":1,"min_send_interval_ms":100},"bind":["motor","speed","led_color"]},{"name":"command","direction":"out","address":"flintbay/rover/cmd/command","config_json":{"payload_format":"json"},"bind":["action"]}]},{"id":"websocket","title":"WebSocket — server push, no polling","kind":"websocket","source":{"name":"demo-rover-ws","kind":"websocket","description":"Flintbay demo source server, push stream","config_json":{"url":"ws://flintbay-source-sim:8080/ws","ping_interval_ms":30000,"reconnect_interval_ms":5000}},"endpoints":[{"name":"telemetry","direction":"in","address":"telemetry","config_json":{"message_path":"type","message_type":"telemetry","payload_path":"data","message_format":"json"},"bind":["battery.percent","motion.speed_mps","pose.x","pose.y"]},{"name":"state","direction":"in","address":"state","config_json":{"message_path":"type","message_type":"state","payload_path":"data","message_format":"json"},"bind":["motor","speed","mode","estop"]},{"name":"controls-write","direction":"out","address":"state.set","config_json":{"message_format":"json","message_template":{"type":"state.set","data":"{{value}}"}},"bind":["motor","speed","heading_target"]}]},{"id":"ros2","title":"ROS 2 — rosbridge topics and a service","kind":"ros2","source":{"name":"demo-rover-ros2","kind":"ros2","description":"Flintbay demo source server, rosbridge v2 protocol","config_json":{"bridge_url":"ws://flintbay-source-sim:8080/rosbridge","connection_timeout_ms":10000}},"endpoints":[{"name":"odom","direction":"in","address":"/rover/odom","config_json":{"message_type":"nav_msgs/Odometry","queue_size":10,"throttle_rate_ms":200},"bind":["pose.pose.position.x","twist.twist.linear.x"]},{"name":"battery","direction":"in","address":"/rover/battery","config_json":{"message_type":"sensor_msgs/BatteryState","throttle_rate_ms":500},"bind":["percentage","voltage","current"]},{"name":"scan","direction":"in","address":"/rover/scan","config_json":{"message_type":"sensor_msgs/LaserScan","throttle_rate_ms":500},"bind":["ranges","range_max"]},{"name":"cmd_vel","direction":"out","address":"/rover/cmd_vel","config_json":{"message_type":"geometry_msgs/Twist","queue_size":10},"bind":["linear.x","angular.z"]},{"name":"led","direction":"out","address":"/rover/led","config_json":{"message_type":"std_msgs/ColorRGBA","queue_size":10},"bind":["r","g","b"]},{"name":"reset","direction":"out","address":"/rover/reset","config_json":{"message_type":"std_srvs/Trigger","service_type":"std_srvs/Trigger","timeout_ms":5000},"bind":["(no fields — call to reset controls)"]}]},{"id":"media-video","title":"Live video — RTSP through the gateway","kind":"media","source":{"name":"demo-rover-camera","kind":"media","description":"Flintbay demo source server, synthetic H264 camera","config_json":{"track_type":"video","direction":"receive","latency_preference":"low"}},"endpoints":[{"name":"camera-rtsp","direction":"in","address":"rtsp://flintbay-source-media:8554/rover/cam","config_json":{"protocol":"rtsp","manifest_label":"Camera (gateway)","manifest_priority":0}}],"widget":"WStream"},{"id":"media-audio","title":"Live audio — Opus over RTSP","kind":"media","source":{"name":"demo-rover-microphone","kind":"media","description":"Flintbay demo source server, synthetic Opus microphone","config_json":{"track_type":"audio","direction":"receive","latency_preference":"balanced"}},"endpoints":[{"name":"microphone-rtsp","direction":"in","address":"rtsp://flintbay-source-media:8554/rover/mic","config_json":{"protocol":"rtsp","manifest_label":"Microphone","manifest_priority":0}}],"widget":"WAudioPlayer"}]}