Opendata Specification
1. General information
This document outlines the usage of the opendata API.
The opendata API is available at https://search.checkmynet.lu/api/v1/measurements
.
Occurrences of <>
need to be replaced by their actual values (e.g. if a url contains example.example/<open_data_uuid>
, then the usable version would look like this example.example/00000000-0000-0000-0000-000000000000
).
This document first details the available opendata requests and then explains their response structure.
2. Opendata requests
2.1. Measurement list
Retrieve a list of the most recent measurements.
Url: https://search.checkmynet.lu/api/v1/measurements
Returns a JSON-object with measurements
2.1.1. Url parameter
The first url parameter must be appended to the request with ?
, all additional parameters must be appended with &
. The following optional url parameter are available.:
Parameter | Description |
---|---|
page |
Pagination cursor. Return measurements starting at this page |
size |
Maximum number of measurements to return per page. A request always returns a single page. |
q |
Full text query. Restricts the returned results to fit the given query. The fully detailed instructions on the query language can be found on the elastic search page. |
sort |
Sorting parameter. Specified as <field_name>,<asc|desc> (e.g. sort=end_time,asc) |
2.1.2. Example
A request with a maximum of 100 measurments would look like the following:
Url: https://search.checkmynet.lu/api/v1/measurements?size=100
which is equal to (implicit page=0
):
Url: https://search.checkmynet.lu/api/v1/measurements?page=0&size=100
To get the second part of the list (given there are enough measurements in the database - page
below)
Url: https://search.checkmynet.lu/api/v1/measurements?page=1&size=100
A basic full text search looking for the 50 most recent measurements containing ios
in their result is:
Url: https://search.checkmynet.lu/api/v1/measurements?q=ios
The text search may be applied to specific fields. To obtain the most recent results with an average download throughput greater or equal to 250 mbps use:
Url: https://search.checkmynet.lu/api/v1/measurements?q=measurements.SPEED.throughput_avg_download_bps:>=250000000
For the most recent results performed with an LTE connection use:
Url: https://search.checkmynet.lu/api/v1/measurements?q=computed_network_info.network_type_name:=LTE
Combining multiple queries can be done by connecting them with an AND
, so the following query produces the most recent measurements with an average download throughput greater or equal to 250 mbps that were performed with an LTE connection:
Url: https://search.checkmynet.lu/api/v1/measurements?q=measurements.SPEED.throughput_avg_download_bps:>=250000000%20AND%20computed_network_info.network_type_name:=LTE
2.1.3. Response
The response is a basic response containing a page response as data
.
2.2. Single measurements
The following requests provide the measurement information of a specific measurement, identified by its open_data_uuid
.
2.2.1. Full single measurement
Retrieve a full single measurement.
Url: https://search.checkmynet.lu/api/v1/measurements/<open_data_uuid>
Returns a JSON-object with the single measurement.
The open_data_uuid
can be found in the measurement response.
Response
Returns a basic response with the measurement of the specified <open_data_uuid>
.
The measurement conforms to the measurement structure.
2.2.2. Parsed single measurement
Retrieve a filtered single measurement.
Url: https://search.checkmynet.lu/api/v1/measurements/<open_data_uuid>/details
Returns a JSON-object with the single measurement
The open_data_uuid
can be found in the measurement response.
Response
Returns a basic response with the measurement with the specified <open_data_uuid>
.
The measurement response contains a selection of pre-processed and translated values, well suited if an easily understandable overview of the result is needed.
2.3. Export
Every export returns a file with the opendata measurment(s). All requests can be exported as JSON, CSV or YAML, by appending the corresponding filetype to the request. JSON and YAML results adhere to the structure outlined in the measurement response, while exports in the CSV format contain only a selected subset of information, see CSV structure.
Additionally, .zip
may be appended to all formats to obtain a compacted version of the result data.
Supported types for the <extension> parameter are: json
, csv
, yaml
, yml
, json.zip
, csv.zip
, yaml.zip
and yml.zip
.
2.3.1. Example
Url: https://search.checkmynet.lu/api/v1/measurements.json
export the recent results as json
Url: https://search.checkmynet.lu/api/v1/measurements.yaml.zip
export the recent results as zipped yaml
2.3.2. Export of a single measurement
Export a single measurement with a given <open_data_uuid>
Url: https://search.checkmynet.lu/api/v1/measurements/<open_data_uuid>.<extension>
2.3.3. Export of time period
Export all measurements of a given time period
Monthly
Export all measurements of <month>
in <year>
, where <month>
is a value in the
range of 01
to 12
and <year>
the full year (e.g. 2021).
Url: https://search.checkmynet.lu/api/v1/measurements/<year>/<month>.<extension>
Daily
Export all measurements of <day>
, <month>
in <year>
, where <day>
is a value in the range of 1
to 31
, <month>
is a value in the
range of 01
to 12
and <year>
the full year (e.g. 2021).
Url: https://search.checkmynet.lu/api/v1/measurements/<year>/<month>/<day>.<extension>
2.3.4. Export measurement list
Export all measurements filtered by the user provided string. If no user provided search string query parameter (q
) is provided, returns the latest measurements.
This request follows the same rules as the measurement list request, the parameters and examples listed there all apply to this request as well.
Url: https://search.checkmynet.lu/api/v1/measurements.<extension>
3. Opendata response structure
The structure of the performed requests.
3.1. Basic response
The server responds with a JSON-object of the following structure:
Field | Description |
---|---|
|
Contains the obtained results, whose content depends on the executed request. |
|
Contains error descriptions, if an error occurred. |
3.2. Page response
A page response, containing both a list of measurements and information about the current page.
Field | Description |
---|---|
|
A list of obtained measurements, see measurement response for their structure. |
|
The currently displayed page of the results. |
|
The number of measurements displayed on the page. |
|
The number of available pages of the given |
|
The total number of available measurements. |
3.3. Measurement response
Describes a single measurement entry. This contains basic information as well as specific measurement related entries.
Field | Description |
---|---|
|
Contains the result of a Speed and/or QoS measurements, see the speed measurement and Quality of Service measurement for their structure. |
|
Contains advanced QoS related information, see Quality of Service advanced evaluation. |
|
Start date and time for this measurement. |
|
End Date and time for this measurement. Date and time is always stored as UTC. |
|
The open-data identifier (UUIDv4) of the measurement. |
|
Measurement system uuid. |
|
List of all captured geographic locations, see geographic location info. |
|
The distance moved in metres, calculated from the geoLocations. |
|
Duration of a measurement, in nanoseconds. |
|
Contains network related information gathered during the test, see network info. |
|
Contains post-processed network related information gathered during the test, see computed network info. |
|
Contains information about the device the measurement software is running on, see device info. |
|
Measurement date and time in agent’s local time. |
|
Contains information about the measurement measurement agent, see measurement agent info. |
|
A tag provided by the agent. |
3.3.1. Basic Measurement
Contains basic information for all measurements. Both speed measurements and Quality of Service measurements have these fields.
Field | Description |
---|---|
|
Flag to mark this measurement as implausible. An implausible result is one that could not have been measured that way. This flag exists for potentially tampered results, so they do not count as valid results (e.g. to prevent tampering w/statistics). |
|
The protocol version this measurement used, if available. |
|
The library version this measurement used, if available. |
|
Start time in nanoseconds relative to the start time of the overall measurement object. |
|
End time in nanoseconds relative to the end time of the overall measurement object. |
|
Start Date and time for this sub measurement. Date and time is always stored as UTC. |
|
End Date and time for this sub measurement. Date and time is always stored as UTC. |
|
Duration of a measurement, in nanoseconds. |
|
The status of a measurement (i.e. STARTED, FINISHED, FAILED, ABORTED). |
|
The reason why a measurement failed. |
3.3.2. Speed measurement
Contains the results of a performed internet access speed measurement.
Field | Description |
---|---|
|
The calculated (average) download throughput in bits per second. |
|
Common logarithm of the (average) download throughput. |
|
The calculated (average) upload throughput in bits per second. |
|
Common logarithm of the average upload throughput. |
|
Bytes received during the speed measurement (Download). |
|
Bytes received during the speed measurement (Download) with slow-start phase. |
|
Bytes transferred during the speed measurement (Upload). |
|
Bytes transferred during the speed measurement (Upload) with slow-start phase. |
|
The nominal measurement duration of the download measurement, in nanoseconds. |
|
The nominal measurement duration of the upload measurement, in nanoseconds. |
|
Duration of the RTT measurement, in nanoseconds. |
|
Duration of the RTT TCP measurement, in nanoseconds. |
|
Duration of the download measurement, in nanoseconds. |
|
Duration of the upload measurement, in nanoseconds. |
|
Relative start time of the RTT measurement in nanoseconds. |
|
Relative start time of the download measurement in nanoseconds. |
|
Relative start time of the upload measurement in nanoseconds. |
|
Contains round trip time information measured during the measurement, see Round-trip-time info. |
|
Contains round trip time information measured via TCP during the measurement, see Round-trip-time info. |
|
Contains a list of all captured byte transfers during the download speed measurement, see throughput raw data. |
|
Contains a list of all captured byte transfers during the upload speed measurement, see throughput raw data. |
|
Contains information about the connection(s) used for the speed measurement, see server connection info. |
3.3.3. Round-trip-time info
Contains detailed information about the performed round-trip-time measurement.
Field | Description |
---|---|
|
The address of the measurement server. |
|
List of all measured RTTs, see single round-trip-time. |
|
The number of RTT packets to send, as instructed by the server. |
|
The actual number of sent RTT packets. |
|
The actual number of received RTT packets. |
|
The actual number of failed RTT packets. |
|
The actual number of missing RTT packets. |
|
The actual size of RTT packets. |
|
Average RTT in nanoseconds. |
|
Common logarithm of the average RTT. |
|
Maximum RTT in nanoseconds. |
|
Median RTT in nanoseconds. |
|
Common logarithm of the median RTT. |
|
Standard deviation RTT in nanoseconds. |
|
Minimum RTT in nanoseconds. |
|
Common logarithm of the minimum (best) RTT. |
|
Common logarithm of the maximum (worst) RTT. |
|
Calculated RTT variance. |
3.3.4. Single round-trip-time
Contains the details of a single round-trip-time packet.
Field | Description |
---|---|
|
Round trip time recorded in nanoseconds. |
|
Relative time in nanoseconds (to measurement start). |
3.3.5. Throughput raw data
Contains information about captured byte transfers during the speed measurement from a point of time on the measurement agent.
Field | Description |
---|---|
|
The stream id (numeric value starting from 0). |
|
Relative time since start of the speed measurement, in nanoseconds. |
|
Bytes transmitted or received since start of the speed measurement. |
|
Bytes transmitted or received since start of the speed measurement, including the slow start phase. |
3.3.6. Server connection info
Contains information about the connection(s) used for the speed measurement.
Field | Description |
---|---|
|
The address of the measurement server. |
|
The identifier of the measurement server. |
|
The ip address of the measurement server (can be either v4 or v6). |
|
Port used for the communication. |
|
Indicates if the communication with the measurement server was encrypted. |
|
Cryptographic protocol and cipher suite used for encrypted communication, if available. E.g. TLSv1.2 (TLS_RSA_WITH_AES_128_GCM_SHA256). |
|
Contains information about total bytes transferred during the speed measurement, as reported by the measurement agent’s interface, if available. See traffic info for the structure. |
|
Contains information about bytes transferred during the download measurement, as reported by the measurement agent’s interface, if available. See traffic info for the structure. |
|
Contains information about bytes transferred during the upload measurement, as reported by the measurement agent’s interface, if available. See traffic info for the structure. |
|
The requested number of streams for the download measurement. |
|
The requested number of streams for the upload measurement. |
|
The actual number of streams used by the download measurement. |
|
The actual number of streams used by the upload measurement. |
|
Flag if TCP SACK (Selective Acknowledgement) is enabled/requested. |
|
Flag if the TCP window scale options are requested. |
|
Maximum Segment Size (MSS) value from the server-side. |
|
Maximum Transmission Unit (MTU) value from the server-side. |
|
Contains a list of connection stream information from the client and the server, obtained from during the round-trip-time measurement, see connection stream info. |
|
Contains a list of connection stream information from the client and the server, obtained from during the download measurement, see connection stream info. |
|
Contains a list of connection stream information from the client and the server, obtained from during the upload measurement, see connection stream info. |
3.3.7. Connection stream info
Contains information about the stream used during a speed measurement.
Field | Description |
---|---|
|
The local ip used for the connection. |
|
The local port used for the connection. |
|
The remote ip used for the connection. |
|
The remote port used for the connection. |
|
The tcp info obtained during the connection, see the linux definition for technical details. |
3.3.8. Traffic info
Holds information about the received and transmitted amount of data on the measurement agent.
Field | Description |
---|---|
|
Bytes received. |
|
Bytes transmitted. |
3.3.9. Quality of Service measurement
Contains the results of a performed Quality of Service measurement.
Field | Description |
---|---|
|
Contains a list of the achieved results of the given measurement, see evaluated Quality of Service result. |
|
Contains additional information to enhance the |
|
Contains additional information to enhance the |
3.3.10. Evaluated Quality of Service result
Contains information about a single evaluated Quality of Service objective.
Field | Description |
---|---|
|
The specific QoS type (e.g. TCP, UDC). |
|
The already translated summary for this QoS measurement. |
|
The already translated (and evaluated) description for this QoS measurement. |
|
The number of QoS objective evaluations that were run. |
|
The number of successful QoS objective evaluations. |
|
The number of failed QoS objective evaluations (= evaluationCount - successCount). |
|
Flag to mark this QoS measurement as implausible. An implausible QoS result is one that could not have been measured that way. This flag exists for potentially tampered results, so they do not count as valid results (e.g. to prevent tampering w/statistics). |
|
Contains all evaluated result keys mapped to their respective results. These are the achieved KPIs of the given measurement, which are used to calculate the results from the |
|
Contains all to be displayed result keys mapped to the corresponding QoSResultOutcome (i.e. OK, INFO, FAIL). The result key may be looked up in the Quality of Service measurement’s |
3.3.11. Quality of Service advanced evaluation
Field | Description |
---|---|
|
Contains information about blocked ports, mapping the port type (i.e. UDP or TCP) to the corresponding info (see Quality of Service blocked port info). |
|
The total number of blocked ports of all blocked port types. |
3.3.12. Quality of Service blocked port info
Contains information about the blocked ports detected during Quality of Service testing.
Field | Description |
---|---|
|
The type of the transport protocol, either TCP or UDP. |
|
List of all blocked ports (incoming communication). |
|
List of all blocked ports (outgoing communication). |
|
The amount of blocked ports (incoming communication). |
|
The amount of blocked ports (outgoing communication). |
3.3.13. Geographic location info
Contains information regarding the locations from which the measurement was performed.
Field | Description |
---|---|
|
Time and date the geographic location information was captured (UTC). |
|
Geographic location accuracy. |
|
Geographic location altitude. |
|
Movement heading. |
|
Movement speed. |
|
Geographic location provider (e.g. GPS). |
|
Geographic location latitude. |
|
Geographic location longitude. |
|
Relative time in nanoseconds (to measurement start). |
3.3.14. Network info
Contains network related information gathered during the test.
Field | Description |
---|---|
|
Contains true if CGN has been detected, false otherwise. CGN detection is done by checking the traceroute test and the respective results. |
|
A list of all relevant network information of consecutive points in time, see network point in time. |
|
List of captured signal information, see signal info. |
3.3.15. Signal info
Contains signal information from a point in time on the measurement agent.
Field | Description |
---|---|
|
Cell location information from a point in time on the measurement agent, see networkcell info. |
|
Network type id as it gets returned by the Android API (see https://developer.android.com/reference/android/telephony/TelephonyManager#getDataNetworkType()). |
|
Time and date the signal information was captured (UTC). |
|
Relative time in nanoseconds (to measurement start). |
|
The current WiFi link speed, in bits per second (If available). |
|
The received signal strength indicator of the current 802.11 network, in dBm (If available). |
|
The received signal strength of 2G or 3G connections, in dBm (If available). |
|
The received signal strength of 5G connections, in dBm (If available). |
|
The LTE reference signal received power, in dBm (If available). |
|
The LTE reference signal received quality, in dB (If available). |
|
The LTE reference signal signal-to-noise ratio, in dB (If available). |
|
The LTE channel quality indicator (If available). |
|
SSID of the network (if available). |
|
BSSID of the network (if available). |
3.3.16. Networkcell info
Cell identity information from a point in time on the measurement agent.
Field | Description |
---|---|
|
Contains the cell-ID, if available. |
|
Contains the area code (e.g. location area code (GSM), tracking area code (LTE)), if available. |
|
Contains the primary scrambling code, if available. |
|
Contains the frequency (e.g. 16-bit GSM ARFCN or 18-bit LTE EARFCN), if available. |
3.3.17. Network point in time
Contains all relevant network information of a single point in time.
Field | Description |
---|---|
|
Time and date the signal information was captured (UTC). |
|
Relative time in nanoseconds (to measurement start). |
|
Anonymized public IP address of the measurement agent. |
|
Country of the measurement agent which is gathered by Geo-IP lookup. |
|
Reverse DNS for the public IP address. |
|
Network type id as it gets returned by the Android API (see https://developer.android.com/reference/android/telephony/TelephonyManager#getDataNetworkType()). |
|
Network type name. |
|
Network group name (e.g. 2G, 3G, LAN, etc). |
|
Contains the different network categories. |
|
ASN for the public IP address. |
|
Name of ASN. |
|
Country code derived from the AS (e.g. AT). |
|
The name of the provider. |
|
The short name (or shortcut) of the provider. |
|
SSID of the network. |
|
Radio frequency of the wifi network. |
|
The network operator country code (e.g. AT), if available. |
|
The MCC/MNC of the network operator, if available. |
|
The network operator name, if available. |
|
The SIM operator country code (e.g. AT), if available. |
|
The MCC/MNC of the SIM operator, if available. |
|
SIM operator name, if available. |
|
Indicates if this is a roaming connection, if available (null = unknown). |
|
The roaming type, if available. |
3.3.18. Computed network info
Contains post processed network information. In addition to all fields of a network point in time the computed network info contains the following fields.
Field | Description |
---|---|
|
Contains network address translation related information, see Network adress translation info. |
|
The computed mobile frequency band of the signal array. |
3.3.19. Network adress translation info
Contains network address translation related information.
Field | Description |
---|---|
|
Type of network address translation (e.g. LOCAL_TO_LOCAL, NO_NAT). |
|
Network address translation IP version. |
|
Tells if any type of network address translation has been detected. |
3.3.20. Device info
Contains information about the device the measurement software is running on.
Field | Description |
---|---|
|
Contains information about the measurement agent’s OS, see operating system info. |
|
Device code name. |
|
Detailed device designation. |
|
The device name that is commonly known to users (e.g. Google Pixel). |
|
The measurement probe’s id. Empty if the measurement was not made with a measurement probe. |
|
The measurement probe’s hostname. Empty if the measurement was not made with a measurement probe. |
|
The measurement probe’s firmware image build timestamp. Empty if the measurement was not made with a measurement probe. |
3.3.21. Operating system info
Contains information about the measurement agent’s operating system (OS).
Field | Description |
---|---|
|
Operating system name (e.g. Android, iOS). |
|
Operating system version. |
|
API level of operating system or SDK (e.g. Android API level or Swift SDK version). |
|
Minimum CPU usage, as double between 0 - 100. |
|
Maximum CPU usage, as double between 0 - 100. |
|
Average CPU usage, as double between 0 - 100. |
|
Median CPU usage, as double between 0 - 100. |
|
Minimum Memory usage, as double between 0 - 100. |
|
Maximum Memory usage, as double between 0 - 100. |
|
Average Memory usage, as double between 0 - 100. |
|
Median Memory usage, as double between 0 - 100. |
3.3.22. Measurement agent info
Contains information about the measurement agent.
Field | Description |
---|---|
|
Application version name (e.g. 1.0.0). |
|
Application version code number (e.g. 10). |
|
Git revision name. |
|
The agent UUID. |
|
The agent’s language. |
|
The agent’s time zone (e.g. UTC-6h). |
|
The type of agent. |
|
Information pertaining to the internet access contract signed by the given client, see client contract info. |
3.3.23. Client contract info
Contains information about the internet access contract signed by the client.
Field | Description |
---|---|
|
The contractual limit on download throughput. |
|
The contractual limit on upload throughput. |
|
The name of the internet access contract. |
|
The name of the provider of the internet access contract. |
3.4. CSV structure
Exports using the .csv
or the .csv.zip
file format contain the following structure.
Field | Description |
---|---|
|
The open-data identifier (UUIDv4) of the measurement. |
|
Start date and time for this measurement. |
|
End Date and time for this measurement. Date and time is always stored as UTC. |
|
Operating system name (e.g. Android, iOS). |
|
Operating system version. |
|
Application version code number (e.g. 10). |
|
Device code name. |
|
The calculated (average) download throughput in bits per second. |
|
Common logarithm of the (average) download throughput. |
|
The calculated (average) upload throughput in bits per second. |
|
Common logarithm of the average upload throughput. |
|
Bytes received during the speed measurement (Download). |
|
Bytes transferred during the speed measurement (Upload). |
|
Measurement system uuid. |
|
Flag to mark this measurement as implausible. An implausible result is one that could not have been measured that way. This flag exists for potentially tampered results, so they do not count as valid results (e.g. to prevent tampering w/statistics). |
|
Start time in nanoseconds relative to the start time of the overall measurement object. |
|
End time in nanoseconds relative to the end time of the overall measurement object. |
|
Start Date and time for this sub measurement. Date and time is always stored as UTC. |
|
End Date and time for this sub measurement. Date and time is always stored as UTC. |
|
Duration of a measurement, in nanoseconds. |
|
The status of a measurement (i.e. STARTED, FINISHED, FAILED, ABORTED). |
|
Duration of the RTT measurement, in nanoseconds. |
|
Duration of the download measurement, in nanoseconds. |
|
Duration of the upload measurement, in nanoseconds. |
|
Relative start time of the RTT measurement in nanoseconds. |
|
Relative start time of the download measurement in nanoseconds. |
|
Relative start time of the upload measurement in nanoseconds. |
|
The actual number of sent RTT packets. |
|
The actual number of received RTT packets. |
|
The actual number of failed RTT packets. |
|
The actual number of missing RTT packets. |
|
Average RTT in nanoseconds. |
|
Median RTT in nanoseconds. |
|
Minimum (best) RTT in nanoseconds. |
|
Maximum (worst) RTT in nanoseconds. |
|
Standard deviation RTT in nanoseconds. |
|
Tcp based average RTT in nanoseconds. |
|
Tcp based median RTT in nanoseconds. |
|
Tcp based minimum (best) RTT in nanoseconds. |
|
Tcp based maximum (worst) RTT in nanoseconds. |
|
Tcp based standard deviation RTT in nanoseconds. |
|
The type of agent. |
|
The agent UUID. |
|
The agent’s language. |
|
The agent’s time zone (e.g. UTC-6h). |
|
Contains true if CGN has been detected, false otherwise. CGN detection is done by checking the traceroute test and the respective results. |
|
Network type name. |
|
Network group name (e.g. 2G, 3G, LAN, etc). |
|
Contains the different network categories. |
|
The network operator name, if available. |
|
The MCC/MNC of the network operator, if available. |
|
The SIM operator country code (e.g. AT), if available. |
|
The MCC/MNC of the SIM operator, if available. |
|
Indicates if this is a roaming connection, if available (null = unknown). |