# 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 default: Feature Identifier for item of clutter. features { geometry default: Polygon example: Polygon Shape describing an item of clutter coordinates example: [-2.646178,51.639692] GeoJSON coordinate pairs. Locations of item/s of clutter passed as an array. properties { height example: 4 Clutter object height in m material 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": "", "PNG_WGS84": "", "PNG_Mercator": "", "bounds": [ "", "" ], "id": "", "sid": "", "area": "", "coverage": "", "key": [ { "l": "", "r": "", "g": "", "b": "" }, { "l": "", "r": "", "g": "", "b": "" } ], "elapsed": "", "balance": "" } ### /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": "", "kmz": "", "Chart image": "", "elapsed": "", "Frequency MHz": "", "Propagation model": "", "Earth dielectric constant": "", "Earth conductivity": "", "Radio climate": "", "Atmospheric bending constant": "", "Fraction of situations": "", "Fraction of time": "", "Receiver": { "Latitude": "", "Longitude": "", "Ground elevation m": "", "Antenna height m": "", "Receiver gain dBd": "", "Receiver gain dBi": "" }, "Transmitters": { "Latitude": "", "Longitude": "", "Ground elevation m": "", "Antenna height m": "", "Distance to receiver km": "", "Azimuth to receiver deg": "", "Downtilt angle deg": "", "Antenna gain dBd": "", "Antenna gain dBi": "", "Polarisation": "", "Power W": "", "Power dBm": "", "ERP W": "", "EIRP W": "", "ERP dBm": "", "EIRP dBm": "", "Free space path loss dB": "", "Bandwidth MHz": "", "Johnson Nyquist noise dB": "", "Noise floor dBm": "", "Channel noise dBm": "", "Signal power at receiver dBm": "", "Signal to Noise Ratio dB": "", "Computed path loss dB": "", "Model attenuation dB": "", "Field strength at receiver dBuV/m": "", "Raise RX antenna for LOS": "", "Raise RX antenna for fresnel 60%": "", "Raise RX antenna for full fresnel": "" } } ### /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 tested - Processing 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": "", "kmz": "", "Chart image": "", "elapsed": "", "Frequency MHz": "", "Propagation model": "", "Earth dielectric constant": "", "Earth conductivity": "", "Radio climate": "", "Atmospheric bending constant": "", "Fraction of situations": "", "Fraction of time": "", "Receiver": { "Latitude": "", "Longitude": "", "Ground elevation m": "", "Antenna height m": "", "Receiver gain dBd": "", "Receiver gain dBi": "" }, "Transmitters": [{ "Latitude": "", "Longitude": "", "Ground elevation m": "", "Antenna height m": "", "Distance to receiver km": "", "Azimuth to receiver deg": "", "Downtilt angle deg": "", "Antenna gain dBd": "", "Antenna gain dBi": "", "Polarisation": "", "Power W": "", "Power dBm": "", "ERP W": "", "EIRP W": "", "ERP dBm": "", "EIRP dBm": "", "Free space path loss dB": "", "Bandwidth MHz": "", "Johnson Nyquist noise dB": "", "Noise floor dBm": "", "Channel noise dBm": "", "Signal power at receiver dBm": "", "Signal to Noise Ratio dB": "", "Computed path loss dB": "", "Model attenuation dB": "", "Field strength at receiver dBuV/m": "", "Raise RX antenna for LOS": "", "Raise RX antenna for fresnel 60%": "", "Raise RX antenna for full fresnel": "", "server": "" }] } ## 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=&e=&s=&w= 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": "", "properties": { "height": "", "material": "" } } }, { "type": "Feature", "features": { "geometry": "Polygon", "coordinates": "", "properties": { "height": "", "material": "" } } } ] } 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"}