The Remote SDR Platform provides a comprehensive REST API that allows you to programmatically:
- Manage device reservations
- Control SDR hardware parameters
- Access and manage experiment data
- Monitor system status
API Base URL:
https://api.sdrlab.example.com/v1Authentication:
All API requests require authentication using a JWT token. Include the token in the Authorization header:
Authorization: Bearer YOUR_JWT_TOKEN
Response Format:
All API responses are in JSON format and include a status code, message, and data payload.
{
"status": 200,
"message": "Success",
"data": {
// Response data here
}
}API Versioning
The API uses versioning to ensure backward compatibility. The current version is v1.
| Version | Status | Notes |
|---|---|---|
| v1 | Current | Stable, fully supported |
| v0 | Deprecated | Will be removed on 2023-12-31 |
Rate Limiting
The API implements rate limiting to ensure fair usage. The current limits are:
- 100 requests per minute per user
- 1000 requests per hour per user
- 10,000 requests per day per user
If you exceed these limits, you will receive a 429 Too Many Requests response. The response will include a Retry-After header indicating how long to wait before making another request.
List Devices
GET /devices
Returns a list of all available SDR devices.
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
| type | string | Filter by device type (e.g., "b200", "b210") |
| status | string | Filter by status (e.g., "available", "reserved") |
Example Response:
{
"status": 200,
"message": "Success",
"data": {
"devices": [
{
"id": "device-123",
"name": "USRP B210 #1",
"type": "b210",
"status": "available",
"capabilities": {
"frequency_range": [70e6, 6e9],
"bandwidth": 56e6,
"channels": 2
},
"location": "Lab A"
},
{
"id": "device-456",
"name": "USRP B200 #2",
"type": "b200",
"status": "reserved",
"capabilities": {
"frequency_range": [70e6, 6e9],
"bandwidth": 56e6,
"channels": 1
},
"location": "Lab B"
}
]
}
}Get Device Details
GET /devices/{deviceId}
Returns detailed information about a specific device.
Example Response:
{
"status": 200,
"message": "Success",
"data": {
"device": {
"id": "device-123",
"name": "USRP B210 #1",
"type": "b210",
"status": "available",
"capabilities": {
"frequency_range": [70e6, 6e9],
"bandwidth": 56e6,
"channels": 2,
"sample_rates": [1e6, 2e6, 5e6, 10e6, 20e6, 50e6],
"gains": [0, 73]
},
"location": "Lab A",
"current_config": {
"frequency": 915e6,
"sample_rate": 2e6,
"gain": 20,
"antenna": "TX/RX"
},
"availability": {
"next_available": "2023-06-15T16:00:00Z",
"reserved_slots": [
{
"start": "2023-06-15T14:00:00Z",
"end": "2023-06-15T16:00:00Z"
}
]
}
}
}
}Configure Device
POST /hardware/{deviceId}/config
Configure parameters for a specific device.
Request Body:
{
"frequency": 915000000, // Center frequency in Hz
"sampleRate": 2000000, // Sample rate in samples per second
"gain": 20, // Gain in dB
"bandwidth": 2000000, // Bandwidth in Hz
"antenna": "TX/RX" // Antenna port
}Example Response:
{
"status": 200,
"message": "Device configured successfully",
"data": {
"config": {
"frequency": 915000000,
"sampleRate": 2000000,
"gain": 20,
"bandwidth": 2000000,
"antenna": "TX/RX"
}
}
}