Back to Documentation

API Documentation

Comprehensive API reference for the Remote SDR Lab Access

API Overview
Introduction to the Remote SDR Platform API

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.

VersionStatusNotes
v1CurrentStable, fully supported
v0DeprecatedWill 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.

REST API Endpoints
Reference for available REST API endpoints

List Devices

GET /devices

Returns a list of all available SDR devices.

Query Parameters:

ParameterTypeDescription
typestringFilter by device type (e.g., "b200", "b210")
statusstringFilter 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"
    }
  }
}