Difference between revisions of "CMEMS Importer Service"
(→Updating executions and reports =) |
(→Creating a new execution) |
||
Line 558: | Line 558: | ||
=== Updating executions and reports === | === Updating executions and reports === | ||
− | ==== Creating a new execution ==== | + | ==== Creating a new execution ==== |
+ | |||
+ | Create a new execution for an existing import task. | ||
+ | |||
+ | '''URL''' | ||
+ | |||
+ | */api/tasks/{taskId}/executions | ||
+ | |||
+ | '''Method''' | ||
+ | |||
+ | *POST | ||
+ | |||
+ | '''URL Params''' | ||
+ | * Required: | ||
+ | ** taskId=[String] | ||
+ | |||
+ | '''Data Params''' | ||
==== Updating an execution ==== | ==== Updating an execution ==== |
Revision as of 16:56, 6 February 2018
Contents
Overview
Usage
REST API
Discover the service
The service is registered in the Information System with the following coordinates:
Group: DataAnalysis
Name: cmems-importer-service
Browsing datasets
List Products
Request:
GET /api/cmems/products
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/cmems/products'
Sample output:
<cmemsProducts> <product> <abstract>...</abstract> <allKeywords> numerical-model, salinity, sea-ice, sea-level, currents, temperature, forecast, near-real-time, global-ocean </allKeywords> <coordRefSys>WGS 84 (EPSG 4326)</coordRefSys> <creationDate>2016-10-14T00:00:00Z</creationDate> ... </product> <product> ... </product> </cmemsProducts>
Get a Single Product
Request:
GET /api/cmems/products/{productName}
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/cmems/products/GLOBAL_ANALYSIS_FORECAST_PHY_001_024'
Sample output:
<product> <abstract>...</abstract> <allKeywords> numerical-model, salinity, sea-ice, sea-level, currents, temperature, forecast, near-real-time, global-ocean </allKeywords> <coordRefSys>WGS 84 (EPSG 4326)</coordRefSys> <creationDate>2016-10-14T00:00:00Z</creationDate> ... </product>
List Datasets available under the Subsetter protocol
Request:
GET /api/cmems/products/{productName}/datasets/tds
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/cmems/products/GLOBAL_ANALYSIS_FORECAST_PHY_001_024/datasets/tds'
Sample output:
<cmemsDatasets> <dataset> <name>global-analysis-forecast-phy-001-024</name> <protocol>TDS</protocol> <url> http://nrtcmems.mercator-ocean.fr/motu-web/Motu?action=describeproduct&service=GLOBAL_ANALYSIS_FORECAST_PHY_001_024-TDS&product=global-analysis-forecast-phy-001-024 </url> </dataset> <dataset> ... <dataset> </cmemsDatasets>
Get Dataset details from the Motu server
Request:
GET /api/cmems/products/{product}/datasets/tds/{dataset}
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/products/GLOBAL_ANALYSIS_FORECAST_PHY_001_024/datasets/tds/global-analysis-forecast-phy-001-024'
Sample output:
<productMetadataInfo code="0" id="global-analysis-forecast-phy-001-024" lastUpdate="Not Available" msg="OK" title="global-analysis-forecast-phy-001-024" url=""> <dataGeospatialCoverage> <axis axisType="Time" code="0" description="Time (hours since 1950-01-01)" lower="499548" msg="OK" name="time" units="hours since 1950-01-01 00:00:00" upper="596820"/> <axis axisType="Lat" code="0" description="Latitude" lower="-80" msg="OK" name="latitude" units="degrees_north" upper="90"/> <axis axisType="Lon" code="0" description="Longitude" lower="-180" msg="OK" name="longitude" units="degrees_east" upper="179.9166717529296875"/> <axis axisType="Height" code="0" description="Depth" lower="0.4940249919891357421875" msg="OK" name="depth" units="m" upper="5727.9169921875"/> </dataGeospatialCoverage> <availableDepths> 0.49402;1.54138;2.64567;3.81949;5.07822;... </availableDepths> <availableTimes> 2006-12-27 12:00:00;2006-12-28 12:00:00;2006-12-29 12:00:00;... </availableTimes> ... </productMetadataInfo>
List Motu servers
To retrieve the list of all Motu servers publishing CMEMS data.
Request:
GET /api/cmems/motu
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/cmems/motu'
Sample output:
<motuServers> <motuServer> <endpoint> http://cmems-bs-mfc.eu/motu-web/Motu </endpoint> </motuServer> <motuServer> <endpoint> http://cmems-med-mfc.eu/motu-web/Motu </endpoint> </motuServer> ... </motuServers>
List Geographical Regions
To retrieve the list of Geographical Regions covered by CMEMS data.
Request:
GET /api/cmems/regions
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/cmems/regions'
Sample output:
<cmemsRegions> <cmemsRegion> <name> arctic-ocean </name> </cmemsRegion> <cmemsRegion> <name> baltic-sea </name> </cmemsRegion> ... </cmemsRegions>
List Variables
To retrieve the list of Variables present in CMEMS datasets.
Request:
GET /api/cmems/variables
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/cmems/variables'
Sample output:
<cmemsVariables> <cmemsVariable> <name> age_of_sea_ice </name> </cmemsVariable> <cmemsVariable> <name> air_density </name> </cmemsVariable> ... </cmemsVariables>
Managing import tasks
Calculate the size of the imported dataset
To estimate the size, in bytes, of the imported dataset.
Request:
GET /api/tasks/preview/sizes/dataset
URL parameters:
- p: (mandatory) the name of the product (e.g. GLOBAL_ANALYSIS_FORECAST_PHY_001_024).
- d: (mandatory) the name of the dataset (e.g. global-analysis-forecast-phy-001-024).
- m: (optional) the endpoint of the Motu server publishing the given dataset. If not given, the service will search for it with an extra call to CMEMS.
- v: (optional) the name of variables to import. Defaults to all variables in the dataset. Multiple parameters are allowed here.
- tlo: (optional) start date of a temporal extraction - e.g. 2017-01-24. If not set, the default value is the first date/time available for the dataset.
- thi: (optional) end date of a temporal extraction - e.g. 2017-07-24. If not set, the default value is the last date/time available for the dataset.
- xlo: (optional) low longitude of the geographic extraction. The default value is the lowest longitude in the dataset.
- xhi: (optional) high longitude of the geographic extraction. The default value is the highest longitude in the dataset.
- ylo: (optional) low latitude of the geographic extraction. The default value is the lowest latitude in the dataset.
- yhi: (optional) high latitude of the geographic extraction. The default value is the highest latitude in the dataset.
- zlo: (optional) low depth of the geographic extraction. The default value is the lowest depth in the dataset.
- zhi: (optional) high depth of the geographic extraction. The default value is the highest depth in the dataset.
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/tasks/preview/sizes/dataset?xlo=-5&xhi=5&ylo=-5&yhi=5&tlo=2010&thi=2012&p=GLOBAL_ANALYSIS_FORECAST_PHY_001_024&d=global-analysis-forecast-phy-001-024
Sample output:
14451431889375
Calculate the size of a chunk of the imported dataset
Request:
GET /api/tasks/preview/sizes/chunk
URL parameters:
- All the parameters above, plus the following one:
- s: (optional) the time span of the imported dataset chunk. Can be 'month' or 'year'. If not set, the default value is 'month'.
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/tasks/preview/sizes/dataset?xlo=-5&xhi=5&ylo=-5&yhi=5&tlo=2010&thi=2012&p=GLOBAL_ANALYSIS_FORECAST_PHY_001_024&d=global-analysis-forecast-phy-001-024&s=month
Sample output:
107206468022
Schedule an Import task
Request:
GET /api/tasks/schedule
URL parameters:
- All the parameters above, plus the following ones:
- s: (optional) the time span of the imported dataset chunk. Can be 'month' or 'year'. If not set, the default value is 'month'.
- b: (optional) how many days in the past data should not be imported, wrt the import execution time. If not set, defaults to 0.
- f: (mandatory) a cron-compliant expression to set how often the import task should run. The importer will not execute more than import task per day, per scheduled task.
With curl:
$ curl --header "gcube-token: **********" --request GET 'http://<hostname>/cmems-importer-service/api/tasks/schedule?p=GLOBAL_ANALYSIS_FORECAST_PHY_001_024&d=global-analysis-forecast-phy-001-024&xlo=-5&xhi=5&ylo=-5&yhi=5&tlo=2010&thi=2012&s=month
The operation returns the id of the scheduled task. Sample output:
...
Browsing import tasks and reports
Get/search tasks
Return a list tasks, ordered by last execution time (or submit time, if not executed yet). Tasks can be filtered by user, token and scope, provided as query parameters.
Request:
GET /api/tasks
URL parameters:
- user: (optional) the name of the user who submitted the task.
- token: (optional) the token used when submitting the task.
- scope: (optional) the scope where the task was submitted.
- limit: (optional) the maximum number of tasks returned.
Sample output:
<importTasks> <importTask> <submissionInfo> <scheduled>2018-01-10T19:28:59+02:00</scheduled> <scope>/gcube/devNext/NextNext</scope> <user>Alice</user> </submissionInfo> <id>69b529c1-6aac-48e0-9937-61fd28aa9e42</id> <lastExecution> <begin>2018-01-15T11:41:59+01:00</begin> <begin>2018-01-16T32:11:56+01:00</begin> <id>33db1806-9830-4626-8b3b-c168c4be4fa7</id> <progress>1.0</progress> <reports> <report> <name>stderr.log</name> <size>25</size> <snippet>a few error messages here</snippet> </report> <report> <name>stdout.log</name> <size>3251</size> <snippet> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae vulputate sapien. Pellentesque consequat ex quis dictum vulputate. Nunc eleifend arcu et elit sagittis viverra. Phasellus vestibulum mauris non felis elementum molestie. Suspendisse vitae lobortis ipsum. Vivamus egestas suscipit nibh. Donec ut venenatis purus. Maecenas efficitur felis eu odio bibendum, id semper lectus feugiat. Suspendisse at fringilla tellus, sit amet finibus orci. Aenean suscipit risus quis sem elementum, dapib... </snippet> </report> </reports> <status>complete</status> </lastExecution> <importParameters> <dataset>datasetname</dataset> <motu>http://somehost/...</motu> <product>productname</product> <variables> <variable>salinity</variable> <variable>velocity</variable> </variables> ... </importParameters> </importTask> ... </importTask>
Retrieving a task
Return metadata about a single task, including submission details, import parameters, last execution info and reports snippets.
Request:
GET /api/tasks/{taskId}
No parameters are expected in the URL.
Sample output:
<importTask> <submissionInfo> <scheduled>2018-01-10T19:28:59+02:00</scheduled> <scope>/gcube/devNext/NextNext</scope> <user>Alice</user> </submissionInfo> <id>69b529c1-6aac-48e0-9937-61fd28aa9e42</id> <lastExecution> <begin>2018-01-15T11:41:59+01:00</begin> <begin>2018-01-16T32:11:56+01:00</begin> <id>last</id> <progress>1.0</progress> <reports> <report> <name>stderr.log</name> <size>25</size> <snippet>a few error messages here</snippet> </report> <report> <name>stdout.log</name> <size>3251</size> <snippet>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae vulputate sapien. Pellentesque consequat ex quis dictum vulputate. Nunc eleifend arcu et elit sagittis viverra. Phasellus vestibulum mauris non felis elementum molestie. Suspendisse vitae lobortis ipsum. Vivamus egestas suscipit nibh. Donec ut venenatis purus. Maecenas efficitur felis eu odio bibendum, id semper lectus feugiat. Suspendisse at fringilla tellus, sit amet finibus orci. Aenean suscipit risus quis sem elementum, dapib...</snippet> </report> </reports> <status>complete</status> </lastExecution> <importParameters> <dataset>datasetname</dataset> <motu>http://somehost/...</motu> <product>productname</product> <variables> <variable>salinity</variable> <variable>velocity</variable> </variables> ... </importParameters> </importTask>
Retrieving task executions
Return a list of executions for a given task.
Request:
GET /api/tasks/{taskId}/executions
No parameters are expected in the URL.
Sample output:
<executions> <execution> <begin>2018-01-15T11:41:59+01:00</begin> <begin>2018-01-16T32:11:56+01:00</begin> <id>33db1806-9830-4626-8b3b-c168c4be4fa7</id> <progress>0.8725477544390946</progress> <reports> <report> <name>stderr.log</name> <size>25</size> <snippet>a few error messages here</snippet> </report> <report> <name>stdout.log</name> <size>3251</size> <snippet> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae vulputate sapien. Pellentesque consequat ex quis dictum vulputate. Nunc eleifend arcu et elit sagittis viverra. Phasellus vestibulum mauris non felis elementum molestie. Suspendisse vitae lobortis ipsum. Vivamus egestas suscipit nibh. Donec ut venenatis purus. Maecenas efficitur felis eu odio bibendum, id semper lectus feugiat. Suspendisse at fringilla tellus, sit amet finibus orci. Aenean suscipit risus quis sem elementum, dapib... </snippet> </report> </reports> <status>running</status> </execution> <execution> ... </execution> </executions>
Retrieving a task execution
Return a single execution for a given task.
Request:
GET /api/tasks/{taskId}/executions/{executionId}
No parameters are expected in the URL.
Sample output:
<execution> <begin>2018-01-15T11:41:59+01:00</begin> <begin>2018-01-16T32:11:56+01:00</begin> <id>33db1806-9830-4626-8b3b-c168c4be4fa7</id> <progress>0.8725477544390946</progress> <reports> <report> <name>stderr.log</name> <size>25</size> <snippet>a few error messages here</snippet> </report> <report> <name>stdout.log</name> <size>3251</size> <snippet> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae vulputate sapien. Pellentesque consequat ex quis dictum vulputate. Nunc eleifend arcu et elit sagittis viverra. Phasellus vestibulum mauris non felis elementum molestie. Suspendisse vitae lobortis ipsum. Vivamus egestas suscipit nibh. Donec ut venenatis purus. Maecenas efficitur felis eu odio bibendum, id semper lectus feugiat. Suspendisse at fringilla tellus, sit amet finibus orci. Aenean suscipit risus quis sem elementum, dapib... </snippet> </report> </reports> <status>running</status> </execution>
Retrieving execution reports
Return a list of execution reports (i.e. logs). For each report, a snippet of ~1000 characters is included.
Request:
GET /api/tasks/{taskId}/executions/{executionId}/reports
No parameters are expected in the URL.
Sample output:
<executionReports> <executionReport> <name>stderr.log</name> <size>25</size> <snippet>a few error messages here</snippet> </executionReport> <executionReport> <name>stdout.log</name> <size>3251</size> <snippet> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae vulputate sapien. Pellentesque consequat ex quis dictum vulputate. Nunc eleifend arcu et elit sagittis viverra. Phasellus vestibulum mauris non felis elementum molestie. Suspendisse vitae lobortis ipsum. Vivamus egestas suscipit nibh. Donec ut venenatis purus. Maecenas efficitur felis eu odio bibendum, id semper lectus feugiat. Suspendisse at fringilla tellus, sit amet finibus orci. Aenean suscipit risus quis sem elementum, dapib... </snippet> </executionReport> </executionReports>
Updating executions and reports
Creating a new execution
Create a new execution for an existing import task.
URL
- /api/tasks/{taskId}/executions
Method
- POST
URL Params
- Required:
- taskId=[String]
Data Params