Skip to content

File Management

These endpoints handle the uploading, listing, and deletion of telemetry data (Rosbags, CSVs, Zips) for specific missions.

Uploads calibration or data files for a mission. This endpoint handles multipart form data.

  • Endpoint: /api/file/upload
  • Method: POST
KeyValueRequired
Content-Typemultipart/form-dataYes
X-API-KEYYour-API-KeyYes
ParameterTypeRequiredDescription
robot_iduuidYesThe UUID of the robot.
mission_iduuidYesThe UUID of the mission.
file_typestringYesType of file (e.g., calib_file, process_file).
filesbinaryYesOne or more files to upload (e.g., .bag, .zip, .csv).

Code: 200 OK

{
"data": {
"details": {
"failed_files": [],
"file type": "calib_file",
"original_filenames": [
"Day1.bag",
"Day10.bag"
],
"success": true,
"uploaded_files": [
"7fec2dd2-e29b-41d4-a716-446655440000_Day1.bag",
"42b020b1-e29b-41d4-a716-446655440000_Day10.bag"
]
},
"mission_id": "9384ac10-e29b-41d4-a716-446655440000",
"org_id": "b8c16c60-e29b-41d4-a716-446655440000",
"robot_id": "e7201eff-e29b-41d4-a716-446655440000"
},
"errors": null,
"message": "Files uploaded successfully",
"success": true
}
  • RS-MSN-002: Mission ID not found.
  • RS-VAL-005: Invalid file type.
  • 401 Unauthorized: Invalid or missing API Key.
import requests
url = "[https://api.ridescan.ai/api/file/upload](https://api.ridescan.ai/api/file/upload)"
headers = {
"X-API-KEY": "YOUR_API_KEY"
# Content-Type is set automatically by requests for multipart uploads
}
# The 'files' list contains tuples: (field_name, (filename, file_object, content_type))
files = [
('files', ('Day1.bag', open('path/to/Day1.bag', 'rb'), 'application/octet-stream')),
('files', ('Day10.bag', open('path/to/Day10.bag', 'rb'), 'application/octet-stream'))
]
data = {
"robot_id": "e7201eff-e29b-41d4-a716-446655440000",
"mission_id": "9384ac10-e29b-41d4-a716-446655440000",
"file_type": "calib_file"
}
response = requests.post(url, headers=headers, data=data, files=files)
print(response.json())

Retrieve a list of all files associated with a specific mission.

  • Endpoint: /api/files/list
  • Method: GET
KeyValueRequired
Content-Typeapplication/jsonYes
X-API-KEYYour-API-KeyYes
ParameterTypeRequiredDescription
robot_iduuidYesRobot UUID.
mission_iduuidYesMission UUID.

Code: 200 OK

{
"success": true,
"data": {
"files": [
{
"file_size": 10240,
"original_filename": "Day1.bag",
"risk_score": null,
"unique_filename": "7fec2dd2-e29b-41d4-a716-446655440000_Day1.bag"
}
]
}
}
  • RS-MSN-002: Mission ID not found.
  • 401 Unauthorized: Invalid or missing API Key.
import requests
url = "[https://api.ridescan.ai/api/files/list](https://api.ridescan.ai/api/files/list)"
headers = {
"Content-Type": "application/json",
"X-API-KEY": "YOUR_API_KEY"
}
params = {
"robot_id": "e7201eff-e29b-41d4-a716-446655440000",
"mission_id": "9384ac10-e29b-41d4-a716-446655440000"
}
response = requests.get(url, params=params, headers=headers)
print(response.json())

Permanently removes a specific file from storage and the database.

  • Endpoint: /api/blob/delete
  • Method: DELETE
KeyValueRequired
Content-Typeapplication/jsonYes
X-API-KEYYour-API-KeyYes
ParameterTypeRequiredDescription
robot_piduuidYesRobot UUID (Note: Use robot_pid, not robot_id).
mission_piduuidYesMission UUID (Note: Use mission_pid, not mission_id).
filenamestringYesThe unique filename returned from the List Files endpoint.

Code: 200 OK

{
"data": null,
"errors": null,
"message": "Blob and DB record deleted successfully",
"success": true
}
  • RS-FILE-001: File not found.
  • RS-MSN-002: Mission ID not found.
  • 401 Unauthorized: Invalid or missing API Key.
import requests
url = "[https://api.ridescan.ai/api/blob/delete](https://api.ridescan.ai/api/blob/delete)"
headers = {
"Content-Type": "application/json",
"X-API-KEY": "YOUR_API_KEY"
}
payload = {
"robot_pid": "e7201eff-e29b-41d4-a716-446655440000",
"mission_pid": "9384ac10-e29b-41d4-a716-446655440000",
"filename": "7fec2dd2-e29b-41d4-a716-446655440000_Day1.bag"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.json())