# Bags API
Starting from version 2.7.0, bag files are recorded continuously. When the total storage size exceeds a predefined limit, the oldest files are automatically purged.
# Get Bag List
curl http://192.168.25.25:8090/bags/
[
{
"filename": "2023-10-31_14-30-00.bag",
"size": "6.8KB",
"size_bytes": 6922,
"end": "31-Oct-2023 14:36:17",
"download_url": "http://192.168.25.25:8090/bags/2023-10-31_14-30-00.bag/download"
},
{
"filename": "2023-11-01_13-50-00.bag",
"size": "4.1KB",
"size_bytes": 4172,
"end": "01-Nov-2023 13:55:10",
"download_url": "http://192.168.25.25:8090/bags/2023-11-01_13-50-00.bag/download"
}
]
# Bag Player API
The Bag Player API allows for replaying ROS bag files online. It provides metadata about the bag and enables downloading message chunks within specific time ranges.
# Endpoint
GET /bags/<filename>/player
# 1. Get Bag Metadata
Fetches general information about the bag file, such as the total number of messages and the time duration.
# Request
GET /bags/<filename>/player
# Success Response
- Code:
200 OK - Content:
{ "total_messages": 5000, "start_time": 1674650000, "end_time": 1674653600 }total_messages: Integer representing the total number of messages in the bag.start_time: Integer timestamp (Unix epoch) of the first message.end_time: Integer timestamp (Unix epoch) of the last message.
# 2. Get Message Chunks
Fetches messages within a specific time range. This is used by the frontend to stream or download chunks of the bag.
# Request
GET /bags/<filename>/player?start_time=<float>&end_time=<float>
# Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start_time | float | Yes | The start of the time range in seconds (Unix epoch). |
end_time | float | Yes | The end of the time range in seconds (Unix epoch). |
# Success Response
- Code:
200 OK - Content:
{ "total_messages": 5000, "start_time": 1674650000, "end_time": 1674653600, "messages": [ { "topic": "/some_topic", "field1": "value1", "__stamp": 1674650010.123, "__latched": true }, ... ] }messages: A list of JSON-converted ROS messages.- Each message includes:
__stamp: High-precision timestamp when the message was recorded.__latched: Boolean flag set totrueif the message belongs to a latched topic. This includes both backfilled messages (previous state) and messages occurring within the requested time range.
# Special Behavior: Latched Topics
When a time range is requested, the API automatically includes the most recent message for "latched" topics that occurred before the start_time. This ensures the player has the current state for static or slowly-changing topics (like maps or configurations) as soon as the chunk starts.
Latched topics include:
/map/info/alerts/map_image/sensor_manager_state/robot_model/nearby_robot_footprints/path/local_path/detected_features/racks_v2/detected_features/pallets/detected_features/chargers/planning_state/jack_state/towing_state
# Caching
Responses are cached with the following header:
Cache-Control: public, max-age=2592000 (30 days)
# Error Responses
- Code:
400 BAD REQUEST - Content:
{"error": "string explaining the error"}(e.g., if the bag file is not found or corrupted).