Autoxing REST API Book
  • English
  • zh-CN
GitHub
  • English
  • zh-CN
GitHub
  • Guide

    • Getting Started
    • Start Moving
    • Getting Started with WebSockets
    • Robot Admin (Standalone Version)
  • Reference

    • REST API Principles
    • Map API
    • Move API
    • Current Map and Pose API
    • Overlays
    • Mapping API
    • Service API
    • Forwarded ROS Services API
    • IoT Devices
    • Device Information API
    • Robot Parameters API
    • System Settings
    • App Store API
    • Hostname API
    • Landmarks
    • WebSocket Reference
    • Submaps
  • Other

    • Deprecations
    • Changelog

Forwarded ROS Services API

Conventions

Content-type & response format

The default response format is application/x-protobuf. Endpoints that support JSON respond with application/json when the request includes Accept: application/json. JSON bodies are generated by serializing the same protobuf message via google::protobuf::util::MessageToJsonString (proto3 JSON mapping — field names are snake_case).

Accept request headerContent-Type responseBody
(absent)application/x-protobufbinary protobuf
application/x-protobufapplication/x-protobufbinary protobuf
application/jsonapplication/jsonproto3 JSON
(any other)text/plain415 Unsupported Media Type

Protobuf definitions

Protobuf message definitions are published as part of the @kingsimba/axbot-sdk TypeScript SDK on npm. The .proto source files are available in the axbot-ts-sdk repository. Each endpoint references its own response message.


Service index

MethodPathROS source
GET/ros/slam/submaps/{uuid}/{trajectory_id}/{submap_index}/submap_query_v2 (cartographer_ros_msgs/SubmapQueryV2)
GET/ros/rosmaster/topicsROS master API (getTopics + getSystemState)
GET/ros/rosmaster/topics/published_namesROS master API (getSystemState — publishers only)

Submap Query V2

Route

GET /ros/slam/submaps/{uuid}/{trajectory_id}/{submap_index}

Request

ParamTypeWhereNotes
uuidstringpathPassed through to the ROS request
trajectory_idintegerpathDecimal integer
submap_indexintegerpathDecimal integer
verstringqueryOptional; affects cache behavior only

No request body.

Response

ros_messages.SubmapQueryV2Response — see submap_query.proto and geometry.proto.

Cache behavior

  • With ?ver=...: Cache-Control: public, max-age=31536000, immutable
  • Without ver: Cache-Control: no-cache + weak ETag
  • Matching If-None-Match: 304 Not Modified

Additional error codes

StatusMeaning
404ROS service reported not found
502ROS service call failed
504ROS service was unavailable before timeout

Example

curl -i \
  'http://192.168.25.25:8090/ros/slam/submaps/681dc447472ac49d7b074fa1/12/3?ver=42' \
  -o submap_query.pb

Topic List

Lists all currently published ROS topics with type, publisher count, and subscriber count. Queries the ROS master directly.

Route

GET /ros/rosmaster/topics

Request

No parameters, no request body.

Response

ros_messages.TopicListResponse — repeated TopicInfo (name, type, publisher_count, subscriber_count). Only topics with at least one publisher are included.

See topics.proto.

Cache behavior

Cache-Control: no-cache — topic state is dynamic; no ETags.

Example

# protobuf (default)
curl http://192.168.25.25:8090/ros/rosmaster/topics | protoc --decode_raw

# JSON
curl -H "Accept: application/json" \
  http://192.168.25.25:8090/ros/rosmaster/topics | jq .
{
  "topics": [
    {
      "name": "/tf",
      "type": "tf2_msgs/TFMessage",
      "publisher_count": 1,
      "subscriber_count": 3
    }
  ]
}

Published Topic Names

Returns only the names of topics that have at least one publisher.

Route

GET /ros/rosmaster/topics/published_names

Request

No parameters, no request body.

Response

ros_messages.PublishedTopicNamesResponse — repeated names fields.

See topics.proto.

Cache behavior

Cache-Control: no-cache — topic state is dynamic.

Example

# protobuf (default)
curl http://192.168.25.25:8090/ros/rosmaster/topics/published_names | protoc --decode_raw

# JSON
curl -H "Accept: application/json" \
  http://192.168.25.25:8090/ros/rosmaster/topics/published_names | jq .
{
  "names": ["/tf", "/scan", "/odom"]
}
Edit this page
Last Updated: 6/14/26, 5:36 AM
Contributors: FengZhaolin
Prev
Service API
Next
IoT Devices