API reference
Version 2.0.1, June 2021
Endpoints
For most users the endpoint will be https://api.cloudrf.com
Private server users will have an IP address instead. API functions will be relative to this address.
Security
All requests are encrypted at the transport layer wth TLS.
Authentication is performed using a HTTP header called key
You can find this in your Cloud-RF account.
Transmitter object
{
lat number($float)
minimum: -89
maximum: 89
default: 38.916
example: 38.916
Latitude of transmitter in WGS84 decimal degrees.
lon number($float)
minimum: -180
maximum: 180
default: 1.448
example: 1.448
Longitude of transmitter in WGS84 decimal degrees.
alt number($float)
minimum: 0.1
maximum: 60000
default: 1
example: 1
Altitude above ground level in meters OR feet. Units set in output object.
frq number($float)
minimum: 2
maximum: 100000
default: 868
example: 868
Center frequency in megahertz.
txw number($float)
minimum: 0.001
maximum: 2000000
default: 0.1
example: 0.1
Transmitter power in watts before the antenna.
bwi number($float)
minimum: 0.1
maximum: 100
default: 0.1
example: 1
Bandwidth in MHz. Will directly affect coverage in SNR mode (out=4)
}
Receiver object
{
lat number($float)
minimum: -89
maximum: 89
default: 0
example: 38.906986
Latitude in WGS84 decimal degrees.
lon number($float)
minimum: -180
maximum: 180
default: 0
example: 1.421416
Longitude in WGS84 decimal degrees.
alt number($float)
minimum: 0.1
maximum: 60000
default: 0.1
Altitude above ground level in meters OR feet. Units set in output object.
rxg number($float)
minimum: -10
maximum: 60
default: 2.15
example: 3
Receiver antenna gain in dBi.
rxs number($float)
minimum: -140
maximum: 200
default: -90
example: -100
Receiver sensitivity/threshold in measured units defined by 'out' parameter eg. dB/dBm/dBuV/dB SNR
}
Antenna object
{
txg number($float)
minimum: -10
maximum: 60
default: 2.15
example: 2.15
Transmitter antenna gain in dBi.
txl number($float)
minimum: 0
maximum: 60
default: 0
example: 1
Feeder loss in dB.
ant integer($int32)
default: 1
example: 0
Antenna pattern code: 0=allows custom options (see: hbw; vbw; fbr)
1=Vertical dipole (omni-directional).
azi number($float)
minimum: 0
maximum: 360
default: 0
example: 1
Antenna azimuth in degrees north.
tlt number($float)
minimum: -10
maximum: 90
default: 0
example: 10
Antenna tilt in degrees below the horizon (inverted) where horizon is 0.
hbw number($float)
minimum: 0
maximum: 360
default: 0
example: 2
Custom antenna horizontal beamwidth in degrees; for use only with ant=0.
vbw number($float)
minimum: 0
maximum: 360
default: 0
example: 2
Custom antenna vertical beamwidth in degrees; for use only with ant=0.
pol string
default: v
example: h
Antenna polarization. Either horizontal or vertical (default v)
}
Model object
{
pm integer($int32)
minimum: 1
maximum: 11
default: 1
example: 1
Propagation model: 1=Irregular Terrain Model; 2=Line of Sight (LOS); 3=Hata; 4=ECC33; 5=SUI Microwave; 6=COST231; 7=Free space path loss; 8=Reserved; 9=Ericsson9999; 10=Plane earth loss; 11=Egli.
pe integer($int32)
minimum: 1
maximum: 3
default: 2
example: 2
Propagation model subtype/environment: 1=Conservative/Urban; 2=Average/Suburban; 3=Optimistic/rural.
cli integer($int32)
minimum: 1
maximum: 7
default: 6
example: 7
Radio climate for ITM model: (1). 1=Equatorial (Congo); 2=Continental Subtropical (Sudan); 3=Maritime Subtropical (West coast of Africa); 4=Desert (Sahara); 5=Continental Temperate; 6=Maritime Temperate and Over Land (UK and West coasts of US & EU); 7=Maritime Temperate, Over Sea.
ked number
default: 0
example: 1
Include knife edge diffraction for enhancing models (recommended in ITM). Switch on/off; 1=INCLUDE, 0=OFF. Having this off produces a 'line of sight' plot.
rel number($float)
minimum: 50
maximum: 99
default: 95
example: 55
ITM model required reliability as %. A value of at least 80% is recommended.
ter integer($int32)
minimum: 1
maximum: 6
default: 4
example: 3
Terrain short code for ITM model (1): 1=Water; 2=Wet ground; 3=Farmland; 4=Forest/Average; 5=Mountain/Sand; 6=City/Poor ground.
}
Environment object
{
clt string
default: Minimal.clt
Clutter profile name. If not supplied, but cll > 0 then Minimal.clt will be used
cll integer($int32)
minimum: 0
maximum: 2
default: 2
example: 1
Clutter mode: 0=Disabled/DSM only; 1=Enabled/System 10m landcover; 2=Enabled/Landcover plus 3D buildings.
clm integer($int32)
minimum: 1
maximum: 2
default: 1
Custom clutter: 0=Disabled; 1=Enabled; This requires that you have created clutter in the local area first
mat number($float)
minimum: 0.1
maximum: 2
default: 0.5
example: 0.5
Clutter attenuation override for 3D buildings (Code #18) in dB/m based on a hollow building; Requires cll=2
}
Output object
{
units string
default: metric
Define global distance units applied to heights and distances; either meters/kilometers (metric) or feet/miles (imperial).
col string
default: RAINBOW.dBm
Color schema code OR filename string. Codes: 1=Cellular (5); 2=Red; 3=Green; 4=Blue; 5=Microwave(7); 7=Custom RGB; 8=Automatic by frequency; 9=Greyscale/GIS; 10=Rainbow(24); 11=Green/Blue/Red; 13=Sub noise floor (10); 14=TV broadcasting (4); 15=Red threshold; 16=Green threshold; 17=Blue threshold. Filename examples: RAINBOW.dBm; CUSTOMSCHEMA.dBm.
out integer($int32)
minimum: 1
maximum: 4
default: 2
example: 2
Measured units: 1=dB; 2=dBm; 3=dBuV; 4=SNR (4 supports nf option).
ber integer($int32)
minimum: 0
maximum: 12
default: 0
example: 2
Bit error rate: 1=0.1; 2=0.01; 3=0.001; 4=0.0001; 5=0.00001; 6=0.000001; >6=Lora; 7=SF7; 8=SF8; 9=SF9; 10=SF10; 11=SF11; 12=SF12.
mod integer($int32)
minimum: 1
maximum: 11
default: 1
example: 7
Modulation: 1=4QAM; 2=16QAM; 3=64QAM; 4=256QAM; 5=1024QAM; 6=BPSK; 7=QPSK; 8=8PSK; 9=16PSK; 10=32PSK; 11=LoRa.
nf number($float)
minimum: -120
maximum: -90
default: -114
example: -100
Noise floor in dBm for use with out=4/SNR. Set with care.
res number($float)
minimum: 2
maximum: 200
default: 10
example: 10
Resolution in meters for output. A high resolution (2) is much slower than a medium resolution (20) for area calculations.
rad number($float)
minimum: 0.03
maximum: 300
default: 5
example: 5
Radius in kilometers for output. This is not a guarantee a signal will reach.
}
Clutter object
This GeoJSON structure is used in the /clutter/add
API
{
type <string>
default: Feature
Identifier for item of clutter.
features {
geometry <string>
default: Polygon
example: Polygon
Shape describing an item of clutter
coordinates <string>
example: [-2.646178,51.639692]
GeoJSON coordinate pairs. Locations of item/s of clutter passed as an array.
properties {
height <string>
example: 4
Clutter object height in m
material <string>
example: 1
Clutter object material. The material code/type/attenuation options are: 1 Tree/s:0.25; 2 Trees:0.5; 3 Timber:1.0; 4\tTimber:1.5; 5\tBrick:1.5; 6\tBrick:2.0; 7\tConcrete:3.0; 8\tConcrete:4.0; 9\tMetal:6.0.;
}
}
}
Create
This set of endpoints allows the user to create new links, site heatmaps, routes, and networks. Requests must contain a JSON string in the body. Responses are JSON strings containing hyperlinks to image files, projection metadata, identifiers, colour schemas and metrics.
/area
This endpoint returns an omni-directional coverage plot point-to-multipoint
(PtMp) as an image, rendered with a color schema. This function assumes the same receiver height at all locations out to fixed radius (300 km maximum). Due to its recursive processing, this is the most resource intensive of all the API calls. Speed can be improved significantly by adjusting the resolution “res” parameter upwards so 20 (m) is faster than 10 (m). A standard request requires transmitter, receiver, antenna, and output objects; providing model and environment enhances accuracy.
Request example: 868MHz LPWAN gateway, 10km radius
{
"site": "NODE_1",
"network": "MY_NET",
"transmitter": {
"lat": 38.916,
"lon": 1.448,
"alt": 1,
"frq": 868,
"txw": 0.1,
"bwi": 0.1
},
"receiver": {
"lat": 0,
"lon": 0,
"alt": 0.1,
"rxg": 2.15,
"rxs": -110
},
"antenna": {
"txg": 2.15,
"txl": 0,
"ant": 39,
"azi": 0,
"tlt": 0,
"hbw": 0,
"vbw": 0,
"pol": "v"
},
"output": {
"units": "metric",
"col": "RAINBOW.dBm",
"out": 2,
"ber": 0,
"mod": 1,
"nf": -120,
"res": 20,
"rad": 10
},
"model": {
"pm": 1,
"pe": 2,
"cli": 6,
"ked": 1,
"rel": 95,
"ter": 4
},
"environment": {
"clt": "Minimal.clt",
"cll": 2,
"clm": 0
}
}
Response example:
{
"kmz": "<uri>",
"PNG_WGS84": "<uri>",
"PNG_Mercator": "<uri>",
"bounds": [
"<float>",
"<float>"
],
"id": "<string>",
"sid": "<string>",
"area": "<string>",
"coverage": "<string>",
"key": [
{
"l": "<string>",
"r": "<integer>",
"g": "<integer>",
"b": "<integer>"
},
{
"l": "<string>",
"r": "<integer>",
"g": "<integer>",
"b": "<integer>"
}
],
"elapsed": "<int32>",
"balance": "<integer>"
}
/path
This endpoint allows users to analyse a point-to-point
(Ptp) path. A path profile is a single link from A to B out to a maximum of 300 km. It is much faster than an area calculation. A basic request requires transmitter, receiver, antenna, and output objects; providing model and environment enhances accuracy further.
The output is JSON and contains a Receiver block followed by a single Transmitter block. For a path you will have only one Transmitter block but other API calls like /points
return a Transmitter array here.
Request example: 868MHz LPWAN gateway link
{
"site": "NODE_1",
"network": "MY_NET",
"transmitter": {
"lat": 38.916,
"lon": 1.448,
"alt": 1,
"frq": 868,
"txw": 0.1,
"bwi": 0.1
},
"receiver": {
"lat": 38.9145,
"lon": 1.5232,
"alt": 0.1,
"rxg": 2.15,
"rxs": -110
},
"antenna": {
"txg": 2.15,
"txl": 0,
"ant": 39,
"azi": 0,
"tlt": 0,
"hbw": 0,
"vbw": 0,
"pol": "v"
},
"output": {
"units": "metric",
"col": "RAINBOW.dBm",
"out": 2,
"ber": 0,
"mod": 1,
"nf": -120,
"res": 20,
"rad": 10
},
"model": {
"pm": 1,
"pe": 2,
"cli": 6,
"ked": 1,
"rel": 95,
"ter": 4
},
"environment": {
"clt": "Minimal.clt",
"cll": 2,
"clm": 0
}
}
Example response.
{
"Engine": "<string>",
"kmz": "<uri>",
"Chart image": "<uri>",
"elapsed": "<Int32>",
"Frequency MHz": "<float>",
"Propagation model": "<string>",
"Earth dielectric constant": "<float>",
"Earth conductivity": "<float>",
"Radio climate": "<string>",
"Atmospheric bending constant": "<Int32>",
"Fraction of situations": "<Int32>",
"Fraction of time": "<Int32>",
"Receiver": {
"Latitude": "<float>",
"Longitude": "<float>",
"Ground elevation m": "<float>",
"Antenna height m": "<float>",
"Receiver gain dBd": "<float>",
"Receiver gain dBi": "<float>"
},
"Transmitters": {
"Latitude": "<float>",
"Longitude": "<float>",
"Ground elevation m": "<float>",
"Antenna height m": "<float>",
"Distance to receiver km": "<float>",
"Azimuth to receiver deg": "<float>",
"Downtilt angle deg": "<float>",
"Antenna gain dBd": "<float>",
"Antenna gain dBi": "<float>",
"Polarisation": "<string>",
"Power W": "<float>",
"Power dBm": "<string>",
"ERP W": "<float>",
"EIRP W": "<float>",
"ERP dBm": "<float>",
"EIRP dBm": "<float>",
"Free space path loss dB": "<float>",
"Bandwidth MHz": "<float>",
"Johnson Nyquist noise dB": "<float>",
"Noise floor dBm": "<float>",
"Channel noise dBm": "<float>",
"Signal power at receiver dBm": "<float>",
"Signal to Noise Ratio dB": "<float>",
"Computed path loss dB": "<float>",
"Model attenuation dB": "<float>",
"Field strength at receiver dBuV/m": "<float>",
"Raise RX antenna for LOS": "<integer>",
"Raise RX antenna for fresnel 60%": "<integer>",
"Raise RX antenna for full fresnel": "<integer>"
}
}
/points
The points function tests many transmitters to one receiver and is designed for route analysis and MANET networks. The simplest request requires a transmitter array of tuples (latitude, longitude, altitude) locations, antenna, receiver, and output objects defined. Model and environment options enhance accuracy.
The same settings (except location) are used for each transmitter
A maximum of
100 transmitters per request
can be testedProcessing time is determined by radius and resolution
Mixed hardware MANET networks will require multiple requests / profiles
The response contains limited data per transmitter compared with a /path response
The response array of transmitters contains an index called server which starts at 1
Example request for three 868MHz transmitters:
{
"site": "Points",
"network": "Testing",
"transmitter": {
"lat": 38.916,
"lon": 1.448,
"alt": 1,
"frq": 868,
"txw": 0.1,
"bwi": 0.1
},
"points": [
{
"lat": 38.916,
"lon": 1.458,
"alt": 1
},
{
"lat": 38.916,
"lon": 1.5111,
"alt": 1
},
{
"lat": 38.916,
"lon": 1.5234,
"alt": 12
}
],
"antenna": {
"txg": 2.15,
"txl": 0,
"ant": 39,
"azi": 0,
"tlt": 0,
"hbw": 0,
"vbw": 0,
"pol": "v"
},
"receiver": {
"lat": 38.916,
"lon": 1.4,
"alt": 0.1,
"rxg": 2.15,
"rxs": -110
},
"model": {
"pm": 1,
"pe": 2,
"cli": 6,
"ked": 1,
"rel": 95,
"ter": 4
},
"environment": {
"clt": "Minimal.clt",
"cll": 2,
"clm": 1,
"mat": 0.5
},
"output": {
"units": "metric",
"col": "RAINBOW.dBm",
"out": 2,
"ber": 0,
"mod": 1,
"nf": -114,
"res": 10,
"rad": 5
}
}
Example response for a points request:
{
"Engine": "<string>",
"kmz": "<uri>",
"Chart image": "<uri>",
"elapsed": "<Int32>",
"Frequency MHz": "<float>",
"Propagation model": "<string>",
"Earth dielectric constant": "<float>",
"Earth conductivity": "<float>",
"Radio climate": "<string>",
"Atmospheric bending constant": "<Int32>",
"Fraction of situations": "<Int32>",
"Fraction of time": "<Int32>",
"Receiver": {
"Latitude": "<float>",
"Longitude": "<float>",
"Ground elevation m": "<float>",
"Antenna height m": "<float>",
"Receiver gain dBd": "<float>",
"Receiver gain dBi": "<float>"
},
"Transmitters": [{
"Latitude": "<float>",
"Longitude": "<float>",
"Ground elevation m": "<float>",
"Antenna height m": "<float>",
"Distance to receiver km": "<float>",
"Azimuth to receiver deg": "<float>",
"Downtilt angle deg": "<float>",
"Antenna gain dBd": "<float>",
"Antenna gain dBi": "<float>",
"Polarisation": "<string>",
"Power W": "<float>",
"Power dBm": "<string>",
"ERP W": "<float>",
"EIRP W": "<float>",
"ERP dBm": "<float>",
"EIRP dBm": "<float>",
"Free space path loss dB": "<float>",
"Bandwidth MHz": "<float>",
"Johnson Nyquist noise dB": "<float>",
"Noise floor dBm": "<float>",
"Channel noise dBm": "<float>",
"Signal power at receiver dBm": "<float>",
"Signal to Noise Ratio dB": "<float>",
"Computed path loss dB": "<float>",
"Model attenuation dB": "<float>",
"Field strength at receiver dBuV/m": "<float>",
"Raise RX antenna for LOS": "<integer>",
"Raise RX antenna for fresnel 60%": "<integer>",
"Raise RX antenna for full fresnel": "<integer>",
"server": "<integer>"
}]
}
Analyse
This set of endpoints allows the user to use and derive information from pre-defined networks and layers.
/mesh
This endpoint returns a consolidated super-layer of many area
calculations as a single image layer. Stronger signals are promoted over weaker ones.
A consistent color schema for sites must be used.
Example HTTP request for meshing the IBIZA network into a layer called Mesh:
/mesh?network=IBIZA&name=Mesh
Example JSON response showing the URLs and image metadata:
{
"png_wgs84": "https://api.cloudrf.com/users/1/0418190402_Mesh.4326.png",
"png_mercator": "https://api.cloudrf.com/users/1/0418190402_Mesh.3857.png",
"kmz": "https://api.cloudrf.com/archive/Tkl4WnNyWGFqOWdPRi9IeE5VRWRBQT09/kmz",
"id": "4999659",
"sid": "Tkl4WnNyWGFqOWdPRi9IeE5VRWRBQT09",
"filename": "0418190402_Mesh",
"bounds": [38.93797,1.4760836842105263,38.88184693779905,1.411788],
"calculations": [4999539,4999584]
}
/network
This endpoint allows users to query a network to find the best server(s) for a given receiver/customer location. A previously generated network is required. This method returns more data than the points API as it includes the arrays for terrain, landcover, obstructions, and path loss for each server.
Example HTTP request for testing a location against the IBIZA network:
/network?lat=38.896978&lon=1.439291&net=IBIZA&rxg=2.15&rxh=1.5
Example JSON response:
[{
"Server ID": 4999584,
"Server name": "0418190346_IBIZA_Site",
"Chart image": "https://api.cloudrf.com/API/archive/data?ppa=a07a0450&uid=1",
"Network KML": "https://api.cloudrf.com/users/1/ac6f6cc8.kml",
"Frequency MHz": 868,
"Propagation model": "ITM",
"Earth dielectric constant": 13, "Earth conductivity": 0.002,
"Radio climate": "Maritime Temperate (Land)", "Atmospheric bending constant": 301,
"Fraction of situations": 95, "Fraction of time": 95,
"Receiver": [{
"Latitude": 38.89698, "Longitude": 1.439291,
"Ground elevation m": 0, "Antenna height m": 1.5,
"Receiver gain dBd": 0, "Receiver gain dBi": 2.15
}],
"Transmitters": [
{
"Latitude": 38.90494, "Longitude": 1.45307,
"Ground elevation m": 0, "Antenna height m": 1.5,
"Distance to receiver km": 1.487,
"Azimuth to receiver deg": 233.41,
"Downtilt angle deg": 0,
"Antenna gain dBd": 0, "Antenna gain dBi": 2.15,
"Polarisation": "Vertical",
"Power W": "0.1",
"Power dBm": "22.15",
"ERP W": 0.1, "EIRP W": 0.16,
"ERP dBm": 20, "EIRP dBm": 22.15,
"Free space path loss dB": 90.4,
"Bandwidth MHz": 0.1,
"Johnson Nyquist noise dB": 0.2,
"Noise floor dBm": -115,
"Channel noise dBm": -114.8,
"Signal power at receiver dBm": -107.9,
"Signal to Noise Ratio dB": 6.9,
"Computed path loss dB": 127.9,
"Model attenuation dB": 37.6,
"Field strength at receiver dBuV/m": 30.2,
"RX voltage 50 ohm dipole uV": 1,
"RX voltage 50 ohm dipole dBuV": 3,
"RX voltage 75 ohm dipole uV": 2,
"RX voltage 75 ohm dipole dBuV": 5,
"Raise RX antenna for LOS": 0,
"Raise RX antenna for fresnel 60%": 129.5,
"Raise RX antenna for full fresnel": 226.5,
"Obstructions": [
],
"Distance": [0.021,0.042,0.062,0.083,0.104,0.125,0.145,0.166,0.187,0.208,0.228,0.249,0.27,0.291,0.312,0.332,0.353,0.374,0.395,0.415,0.436,0.457,0.478,0.498,0.519,0.54,0.561,0.581,0.602,0.623,0.644,0.665,0.685,0.706,0.727,0.748,0.768,0.789,0.81,0.831,0.851,0.872,0.893,0.914,0.935,0.955,0.976,0.997,1.018,1.038,1.059,1.08,1.101,1.121,1.142,1.163,1.184,1.204,1.225,1.246,1.267,1.288,1.308,1.329,1.35,1.371,1.391,1.412,1.433,1.454,1.474,1.487],
"Terrain": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
"Landcover distance": [0.021,0.042,0.062,0.083,0.104,0.125,0.145,0.166,0.187,0.208,0.228,0.249,0.27,0.291,0.312,0.332,0.353,0.374,0.395,0.415,0.436,0.457,0.478,0.498,0.519,0.54,0.561,0.581,0.602,0.623,0.644,0.665,0.685,0.706,0.727,0.748,0.768,0.789,0.81,0.831,0.851,0.872,0.893,0.914,0.935,0.955,0.976,0.997,1.018,1.038,1.059,1.08,1.101,1.121,1.142,1.163,1.184,1.204,1.225,1.246,1.267,1.288,1.308,1.329,1.35,1.371,1.391,1.412,1.433,1.454,1.474,1.487],
"Landcover codes": [50,50,80,80,80,80,80,80,50,50,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80],
"Landcover heights": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
"Fresnel": [-2.72,-3.82,-4.65,-5.33,-5.91,-6.43,-6.89,-7.31,-7.69,-8.04,-8.37,-8.66,-8.94,-9.2,-9.44,-9.66,-9.87,-10.06,-10.24,-10.41,-10.56,-10.7,-10.83,-10.95,-11.06,-11.16,-11.24,-11.32,-11.39,-11.45,-11.49,-11.53,-11.56,-11.58,-11.6,-11.6,-11.59,-11.58,-11.55,-11.52,-11.48,-11.42,-11.36,-11.29,-11.21,-11.12,-11.02,-10.9,-10.78,-10.65,-10.5,-10.34,-10.17,-9.99,-9.79,-9.57,-9.34,-9.1,-8.83,-8.55,-8.24,-7.9,-7.54,-7.14,-6.71,-6.23,-5.68,-5.06,-4.33,-3.42,-2.1,-0],
"dBm": [-46.4,-52.4,-56,-59.8,-63.5,-66.5,-69,-71.2,-73.1,-74.8,-76.4,-77.8,-79.1,-80.4,-81.5,-82.6,-83.6,-84.5,-85.4,-86.3,-87.1,-87.8,-88.6,-89.3,-90,-90.6,-91.3,-91.9,-92.4,-93,-93.6,-94.1,-94.6,-95.1,-95.6,-96.1,-96.5,-97,-97.4,-97.9,-98.3,-98.7,-99.1,-99.5,-99.8,-100.2,-100.6,-100.9,-101.3,-101.6,-102,-102.3,-102.6,-103,-103.3,-103.6,-103.9,-104.2,-104.5,-104.8,-105.1,-105.3,-105.6,-105.9,-106.2,-106.4,-106.7,-106.9,-107.2,-107.4,-107.7,-107.9],
"dB": [66.4,72.4,76,79.8,83.5,86.5,89,91.2,93.1,94.8,96.4,97.8,99.1,100.4,101.5,102.6,103.6,104.5,105.4,106.3,107.1,107.8,108.6,109.3,110,110.6,111.3,111.9,112.4,113,113.6,114.1,114.6,115.1,115.6,116.1,116.5,117,117.4,117.9,118.3,118.7,119.1,119.5,119.8,120.2,120.6,120.9,121.3,121.6,122,122.3,122.6,123,123.3,123.6,123.9,124.2,124.5,124.8,125.1,125.3,125.6,125.9,126.2,126.4,126.7,126.9,127.2,127.4,127.7,127.9]
}
]
}
,{
"Server ID": 4999539,
"Server name": "0418190337_IBIZA_Site",
"Chart image": "https://api.cloudrf.com/API/archive/data?ppa=de512206&uid=1",
"Network KML": "https://api.cloudrf.com/users/1/ac6f6cc8.kml",
"Frequency MHz": 868,
"Propagation model": "ITM",
"Earth dielectric constant": 13, "Earth conductivity": 0.002,
"Radio climate": "Maritime Temperate (Land)", "Atmospheric bending constant": 301,
"Fraction of situations": 95, "Fraction of time": 95,
"Receiver": [{
"Latitude": 38.89698, "Longitude": 1.439291,
"Ground elevation m": 0, "Antenna height m": 1.5,
"Receiver gain dBd": 0, "Receiver gain dBi": 2.15
}],
"Transmitters": [
{
"Latitude": 38.91488, "Longitude": 1.434879,
"Ground elevation m": 1, "Antenna height m": 1.5,
"Distance to receiver km": 2.029,
"Azimuth to receiver deg": 169.14,
"Downtilt angle deg": 0,
"Antenna gain dBd": 0, "Antenna gain dBi": 2.15,
"Polarisation": "Vertical",
"Power W": "0.1",
"Power dBm": "22.15",
"ERP W": 0.1, "EIRP W": 0.16,
"ERP dBm": 20, "EIRP dBm": 22.15,
"Free space path loss dB": 93.1,
"Bandwidth MHz": 0.1,
"Johnson Nyquist noise dB": 0.2,
"Noise floor dBm": -115,
"Channel noise dBm": -114.8,
"Signal power at receiver dBm": -134.3,
"Signal to Noise Ratio dB": -19.5,
"Computed path loss dB": 154.3,
"Model attenuation dB": 61.2,
"Field strength at receiver dBuV/m": 3.9,
"RX voltage 50 ohm dipole uV": 0,
"RX voltage 50 ohm dipole dBuV": -23,
"RX voltage 75 ohm dipole uV": 0,
"RX voltage 75 ohm dipole dBuV": -21,
"Raise RX antenna for LOS": 101.5,
"Raise RX antenna for fresnel 60%": 137.5,
"Raise RX antenna for full fresnel": 246.5,
"Obstructions": [
[38.89956,1.438655],
[38.90042,1.438442],
[38.90085,1.438336],
[38.90107,1.438283],
[38.90129,1.43823],
[38.9015,1.438177],
[38.90172,1.438123],
[38.90215,1.438017],
[38.90236,1.437964],
[38.90258,1.437911],
[38.9028,1.437857],
[38.90301,1.437804],
[38.90323,1.437751],
[38.90344,1.437698],
[38.90366,1.437645],
[38.90388,1.437592],
[38.90409,1.437538],
[38.90431,1.437485],
[38.90452,1.437432],
[38.90474,1.437379],
[38.90495,1.437326],
[38.90517,1.437272],
[38.90539,1.437219],
[38.9056,1.437166],
[38.90582,1.437113],
[38.90603,1.43706],
[38.90625,1.437007],
[38.90647,1.436953],
[38.90668,1.4369],
[38.9069,1.436847],
[38.90711,1.436794],
[38.90733,1.436741],
[38.90754,1.436687]
],
"Distance": [0.024,0.049,0.073,0.098,0.122,0.147,0.171,0.196,0.22,0.245,0.269,0.294,0.318,0.342,0.367,0.391,0.416,0.44,0.465,0.489,0.514,0.538,0.563,0.587,0.612,0.636,0.661,0.685,0.709,0.734,0.758,0.783,0.807,0.832,0.856,0.881,0.905,0.93,0.954,0.979,1.003,1.027,1.052,1.076,1.101,1.125,1.15,1.174,1.199,1.223,1.248,1.272,1.297,1.321,1.345,1.37,1.394,1.419,1.443,1.468,1.492,1.517,1.541,1.566,1.59,1.615,1.639,1.664,1.688,1.712,1.737,1.761,1.786,1.81,1.835,1.859,1.884,1.908,1.933,1.957,1.982,2.006,2.029],
"Terrain": [1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,3,4,5,6,7,8,10,11,13,16,19,22,26,30,33,36,39,41,43,45,46,46,45,44,43,43,42,41,40,38,36,34,32,29,27,24,21,19,16,14,12,11,9,8,7,7,6,5,4,4,3,3,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1],
"Landcover distance": [0.024,0.049,0.073,0.098,0.122,0.147,0.171,0.196,0.22,0.245,0.269,0.294,0.318,0.342,0.367,0.391,0.416,0.44,0.465,0.489,0.514,0.538,0.563,0.587,0.612,0.636,0.661,0.685,0.709,0.734,0.758,0.783,0.807,0.832,0.856,0.881,0.905,0.93,0.954,0.979,1.003,1.027,1.052,1.076,1.101,1.125,1.15,1.174,1.199,1.223,1.248,1.272,1.297,1.321,1.345,1.37,1.394,1.419,1.443,1.468,1.492,1.517,1.541,1.566,1.59,1.615,1.639,1.664,1.688,1.712,1.737,1.761,1.786,1.81,1.835,1.859,1.884,1.908,1.933,1.957,1.982,2.006,2.029],
"Landcover codes": [90,90,60,50,50,50,50,50,50,50,50,80,80,80,80,80,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,60,50,30,10,10,20,20,30,30,30,20,20,20,30,30,60,60,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80],
"Landcover heights": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
"Fresnel": [-2.96,-4.16,-5.06,-5.81,-6.45,-7.02,-7.53,-8,-8.43,-8.82,-9.19,-9.53,-9.85,-10.15,-10.43,-10.69,-10.94,-11.17,-11.39,-11.59,-11.78,-11.96,-12.13,-12.29,-12.44,-12.57,-12.7,-12.82,-12.92,-13.02,-13.11,-13.19,-13.27,-13.33,-13.38,-13.43,-13.47,-13.5,-13.53,-13.54,-13.55,-13.55,-13.54,-13.53,-13.5,-13.47,-13.43,-13.38,-13.33,-13.26,-13.19,-13.11,-13.02,-12.92,-12.81,-12.69,-12.57,-12.43,-12.28,-12.13,-11.96,-11.78,-11.58,-11.38,-11.16,-10.93,-10.68,-10.42,-10.14,-9.84,-9.52,-9.18,-8.81,-8.41,-7.98,-7.51,-7,-6.43,-5.78,-5.03,-4.12,-2.9,-0],
"dBm": [-47.8,-53.9,-59.2,-62.7,-71.1,-74,-75.9,-77.6,-79.4,-81.3,-83.3,-83.7,-83.5,-84.6,-85.2,-85.5,-86.3,-85.3,-84.9,-84,-83.7,-82.9,-82.8,-81.9,-80.9,-80.1,-79.1,-78.7,-78.9,-79.5,-80.2,-81.1,-82,-82.9,-83.9,-84.8,-86,-107.6,-112.7,-114.8,-115.6,-117,-117.9,-119.6,-119.3,-122.7,-125.1,-126.9,-128.2,-129.1,-130.1,-131.6,-131.1,-132.3,-132.9,-134.2,-134.3,-134.1,-134.3,-134.4,-134.5,-134.6,-134.5,-134.6,-134.5,-134.4,-134.4,-134.4,-134.4,-134.3,-134.3,-134.3,-134.3,-134.3,-134.2,-134.2,-134.2,-134.2,-134.2,-134.2,-134.2,-134.2,-134.3],
"dB": [67.8,73.9,79.2,82.7,91.1,94,95.9,97.6,99.4,101.3,103.3,103.7,103.5,104.6,105.2,105.5,106.3,105.3,104.9,104,103.7,102.9,102.8,101.9,100.9,100.1,99.1,98.7,98.9,99.5,100.2,101.1,102,102.9,103.9,104.8,106,127.6,132.7,134.8,135.6,137,137.9,139.6,139.3,142.7,145.1,146.9,148.2,149.1,150.1,151.6,151.1,152.3,152.9,154.2,154.3,154.1,154.3,154.4,154.5,154.6,154.5,154.6,154.5,154.4,154.4,154.4,154.4,154.3,154.3,154.3,154.3,154.3,154.2,154.2,154.2,154.2,154.2,154.2,154.2,154.2,154.3]
}
]
}]
/interference
This endpoint allows users to merge and analyse sites within a network channel to determine the best server at a given location
. Each site will be dynamically allocated a monochrome color from a palette and the strongest signal promoted at a given location.
The input and output structure is comparable to a /network
request with only the styling being different due to the promotion algorithm.
Example HTTP request comparing the IBIZA network sites:
/interference?network=IBIZA&name=QRM
Example JSON response showing the dynamic coloured layer:
{
"png_wgs84": "https://api.cloudrf.com/users/1/0418191251_QRM.4326.png",
"png_mercator": "https://api.cloudrf.com/users/1/0418191251_QRM.3857.png",
"id": "",
"sid": "dnJteTFMYzl2YTgyNmNhZTlYUEJqQT09",
"filename": "0418191251_QRM",
"bounds": [38.937970,1.476234,38.881880,1.411788],
"calculations": [4999539,4999584]
}
Archive
/archive/data
This function enumerates calculations from your archive. It will recover area, path, network, interference, mesh and MANET results. You can use the north,east,south,west bounding box parameters to filter the area of interest.
Ensure you set the key authentication header
Example HTTP request:
/archive/data?n=<float>&e=<float>&s=<float>&w=<float>
Example JSON response:
{ "calcs": [
{
"id": "5001905",
"sid": "Sk1jMHNrRlowNlNkYU1DeEExcXFZZz09",
"fname": "0418191251_QRM",
"network": "QRM",
"lat": "38.90494",
"lon": "1.45307",
"time": "2022-04-18 19:12:51",
"freq": "868",
"erp": "0.06",
"txrf": "0.1",
"gain": "0",
"txh": "1.5m",
"rxgain": "0",
"rxh": "1.5m",
"ae": "39",
"rad": "",
"res": "20",
"pm": "ITM",
"rxs": "-110dBm"
},
{
"id": "5001904",
"sid": "RnZWK2lTNUM0cWp6eXRxY2hHeDhUZz09",
"fname": "0418191230_QRM",
"network": "QRM",
"lat": "53.298725",
"lon": "-1.777369",
"time": "2022-04-18 19:12:31",
"freq": "806",
"erp": "0.61",
"txrf": "1",
"gain": "0",
"txh": "20m",
"rxgain": "0",
"rxh": "1m",
"ae": "39",
"rad": "",
"res": "20",
"pm": "ITM",
"rxs": "-90dBm"}
]
}
/archive/delete
This deletes a single calculation from the database and from your folder. You need to know the calculation ID number (CID) which can be enumerated from the /archive/data API. The authentication ensures that only the rightful owner can delete their data.
Warning! You could lose data. This endpoint deletes the entry from the database and the file from the disk.
Example for deleting calculation 12345
/archive/delete?cid=12345
Example response:
{"message": "0418193421_IBIZA_PPA deleted!"}
/archive/delete/network
This deletes multiple calculations from the database and from your folder. You need to know the network name which can be enumerated from the /archive/data API. The authentication ensures that only the rightful owner can delete their data.
Warning! You could lose lots of data! This endpoint deletes all associated child entries from the database and the files from the disk.
Example request for deleting the TEST network
/archive/delete/network?nid=TEST
Example response:
{"message": "Deleted 6 sites from TEST in 0.1 s"}
/archive/export
This endpoint downloads your data in a format suitable for a third-party viewer such as Google Earth or QGIS. Supported formats are KML, KMZ, GEOTIFF, SHP, URL, HTML
KMZ
/archive/data?sid=Sk1jMHNrRlowNlNkYU1DeEExcXFZZz09&fmt=kmz
KML
/archive/data?sid=Sk1jMHNrRlowNlNkYU1DeEExcXFZZz09&fmt=kml
KMZ with Google Earth path-profile widget
/archive/data?sid=Sk1jMHNrRlowNlNkYU1DeEExcXFZZz09&fmt=kmzppa
SHP
/archive/data?sid=Sk1jMHNrRlowNlNkYU1DeEExcXFZZz09&fmt=shp
GeoTIFF
/archive/data?sid=Sk1jMHNrRlowNlNkYU1DeEExcXFZZz09&fmt=tiff
/archive/calc
Export a layer as a public URL using the secure ID obtained from the data API
/archive/calc?id=Sk1jMHNrRlowNlNkYU1DeEExcXFZZz09
Clutter
/clutter/add
This endpoint supports upload of GeoJSON lineString and polygon features to your account. Throught the web interface you may also upload KML polygons which are converted to GeoJSON for this API.
https://geojson.org/
Example GeoJSON body for two polygons
{
"name": "Clutter",
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"features": {
"geometry": "Polygon",
"coordinates": "<string>",
"properties": {
"height": "<string>",
"material": "<string>"
}
}
},
{
"type": "Feature",
"features": {
"geometry": "Polygon",
"coordinates": "<string>",
"properties": {
"height": "<string>",
"material": "<string>"
}
}
}
]
}
Example response for a successful upload:
{"info": "Added 2 item(s) of clutter"}
/clutter/get
This endpoint fetches private clutter items for the given co-ordinates out to 1 decimal degree radius (~120 km at the equator). Results are limited to 100 items sorted by nearest first. GeoJSON coordinates are passed as a clean URL:
/clutter/get/51.637723/-2.649606
Example GeoJSON response:
{"type":"FeatureCollection",
"features":[
{"type":"Feature",
"geometry":
{"type":"Polygon",
"coordinates":[
[[1.450659,38.906329],
[1.451538,38.906425],
[1.451575,38.906277],
[1.45052,38.906139],
[1.450336,38.906182],
[1.450431,38.906263],
[1.450659,38.906329]]
]},
"properties":{
"height":"6",
"material":"1",
"id":"4945"
}
}
]
}
/clutter/delete
Delete a private clutter item referenced by its id passed as a clean URL
/clutter/delete/4945
The id property is returned by the get clutter endpoint /clutter/get
Exanple response:
{"info": "Deleted clutter #4945"}