BIPM Time Department API Web Service
Overview
To answer the need of providing machine readable data, the BIPM Time Department started providing access to machine readable data through automatized process.
Results are still available using FTP protocol, this remains unchanged. In addition to the historical FTP access, it is proposed an application programming interface (API) using GET method which gives access to machine readable data regarding various time scales. The method to access these data is using HTTP/HTTPS protocol: This can be done using utilities to transfer data from a server (such as cURL, wget or any programming languages supporting HTTP protocol). Data are provided in standard exchange format, such as JSON, CSV and text.
Execution documentation
Custom requests syntax and arguments
The API using GET method uses URL general syntax below :
https://webtai.bipm.org/api/v0.2-beta/get-data.html?arg1=xxxx&arg2=yyyy
...
Using as many arguments as needed by your query.
-
customized period
To get only a subset of available data between given two MJDs, following URLs should be completed with:
&mjd1=59000&mjd2=59200
(example for request between MJD 59000 and 59200) -
customized output file format
Ouput format can be JSON (default, if not specified), Comma-Separated Values (CSV) or Text.
To define output format of the request, use following arguments in the URL:
&outfile=json
&outfile=csv
&outfile=txt
-
laboratory name selection
In this document labo refers to the laboratory acronym as used in Circular T (up to 4-characters).
&lab=labo
-
time scale selection Results from several time scales are available, the examples in the following section.
Get values [Scale-local realizations of UTC]
URL to get [UTC-UTC(lab)] |
---|
https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=utc&lab=labo |
URL to get [UTCr-UTC(lab)] |
---|
https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=utcr&lab=labo |
URL to get both [UTC-UTC(lab)] and [UTCr-UTC(lab)] |
---|
https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=utc+utcr&lab=labo |
Get values [UTC-GNSS time scales]
URL to get [UTC-GPS Time] |
---|
https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=gps |
URL to get [UTC-GLONASS Time] |
---|
https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=glonass |
URL to get both [UTC-GPS Time] and [UTC-GLONASS Time] |
---|
https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=gnss |
Note that the content of the JSON file produces is likely to evolve depending on new GNSS Time scales availability.
HTTP utilities / examples
It is required to use utilities supporting HTTP protocol to get the data, such as cURL (https://curl.se/) , wget (https://www.gnu.org/software/wget/) or other programming languages such as Python, Perl,...
Below you can find examples of commands:
Using wget |
---|
wget -O utc-utc_aos.json "https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=utc&lab=AOS" |
Using cURL |
---|
curl -k --url "https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=utc&lab=AOS" > utc-utc_aos.json |
Using Perl |
---|
#!/usr/bin/perl
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $response = $ua->get("https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=utc&lab=AOS") ;
if ($response->is_success) { print $response->decoded_content; }
Using Python |
---|
import requests
r = requests.get("https://webtai.bipm.org/api/v0.2-beta/get-data.html?scale=utc&lab=AOS")
print(r.text)
New features
Txt file format
The format of txt is in fixed format. Since version 0.2, it is defined as following :
-
%6d %10s\r\n
for a single scale request -
%6d %10s %10s\r\n
for a 2-scales request
#
character is used to identify comments/headers which are not data to be processed.
Additional metadata
Since version 0.2, for each data serie, additional metadata are available in the JSON files to facilitate the use of data
xmin: value, # minimal xaxis value of the serie (in Modified Julian Date)
xmax: value, # maximal xaxis value of the serie (in Modified Julian Date)
x_tot: value, # number of x data in the serie
ymin: value, # minimal yaxis value of the serie (in Nanoseconds)
ymax: value, # maximal yaxis value of the serie (in Nanoseconds)
y_tot: value, # number of y data in the serie
Execution error codes
In version 0.2, error codes have been reinforced, with messages to provide details on the issue.
Error code | Type of error |
---|---|
0 | Successful execution |
1 | Error accessing ftp2.bipm.org, contact BIPM Time Department |
2 | Error accessing data, "are these results supposed to be available ?" - if not: fix the API query sent to API - if yes, contact BIPM |
3 | Error in content of the file, contact BIPM |
4 | Error in user query |
Final status of execution are reported using specific keys :
key | values |
---|---|
"errorcode" | Error codes defined upper |
"success" | true or false |
"message" | message describing the error |
In TXT and CSV output files, these keys are reported only in case of failure of the process, line starting with a #
.
In JSON files they are always available.
Always ensure that your query syntax is valid and that data have been published, then contact BIPM to report observed troubles.
Change log
Historical changes
Version | Date | Feature/Change |
---|---|---|
Version 0.1 | 16/12/2021 | First testing version |
Version 0.2-beta | 02/06/2021 | - Format change : left alignment of MJD column in TXT files - New features in JSON file - Execution error codes improved and debug messages added |