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/v1
Authentication:
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" } } }