diff --git a/pom.xml b/pom.xml
index 17f0c267c..0e66dbd20 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,6 +19,7 @@
iorestspi
+ web-resources
diff --git a/spi-impl/series/series-dao-webapp/src/main/webapp/chart.png b/spi-impl/series/series-dao-webapp/src/main/webapp/chart.png
new file mode 100644
index 000000000..10f3de73e
Binary files /dev/null and b/spi-impl/series/series-dao-webapp/src/main/webapp/chart.png differ
diff --git a/spi-impl/series/series-dao-webapp/src/main/webapp/landing.html b/spi-impl/series/series-dao-webapp/src/main/webapp/landing.html
new file mode 100644
index 000000000..415479c47
--- /dev/null
+++ b/spi-impl/series/series-dao-webapp/src/main/webapp/landing.html
@@ -0,0 +1,47 @@
+
+
+
+
+ Series REST-API
+
+
+
+
+
+
+
+
+
+
Series REST-API
+
The 52°North Series API provides a thin access layer to series datasets via RESTful Web binding. It provides different output formats like json, pdf or png.
Query the sensor status and get all the metadata you want with a simple REST interface. It is lightweight and can be utilized in many workflows. For example you can get a list of platforms.
+
+
\ No newline at end of file
diff --git a/web-resources/docs/.gitignore b/web-resources/docs/.gitignore
new file mode 100644
index 000000000..62bf7251e
--- /dev/null
+++ b/web-resources/docs/.gitignore
@@ -0,0 +1,10 @@
+_site
+.DS_Store
+.jekyll
+.jekyll-metadata
+.bundle
+.sass-cache
+Gemfile
+Gemfile.lock
+node_modules
+package.json
diff --git a/web-resources/docs/CNAME b/web-resources/docs/CNAME
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/web-resources/docs/CNAME
@@ -0,0 +1 @@
+
diff --git a/web-resources/docs/_config.yml b/web-resources/docs/_config.yml
new file mode 100644
index 000000000..5a4de8f21
--- /dev/null
+++ b/web-resources/docs/_config.yml
@@ -0,0 +1,35 @@
+
+# Name of your site (displayed in the header)
+name: 52°North GmbH
+
+# Short bio or description (displayed in the header)
+description: Initiative for Geospatial Open Source Software
+
+# URL of your avatar or profile pic (you could use your GitHub profile pic)
+#avatar: https://raw.githubusercontent.com//master/images/jekyll-logo.png
+
+# Your website URL (e.g. http://barryclark.github.io or http://www.barryclark.co)
+# Used for Sitemap.xml and your RSS feed
+url:
+
+# If you're hosting your site at a Project repository on GitHub pages
+# (http://yourusername.github.io/repository-name)
+# and NOT your User repository (http://yourusername.github.io)
+# then add in the baseurl here, like this: "/repository-name"
+baseurl: "/docs"
+
+permalink: /:title/
+
+markdown: kramdown
+
+# Use the following plug-ins
+gems:
+ - jekyll-sitemap
+
+# Exclude these files from your production _site
+exclude:
+ - Gemfile
+ - Gemfile.lock
+ - LICENSE
+ - README.md
+ - CNAME
diff --git a/web-resources/docs/_data/swagger.yaml b/web-resources/docs/_data/swagger.yaml
new file mode 100644
index 000000000..a8d56d547
--- /dev/null
+++ b/web-resources/docs/_data/swagger.yaml
@@ -0,0 +1,1417 @@
+swagger: '2.0'
+info:
+ title: 52°North Series API
+ description: Thin Web binding API to access series data
+ version: 2.0.0
+host: example.org
+schemes:
+ - https
+basePath: /api/v1
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /:
+ get:
+ summary: Available endpoints.
+ tags:
+ - general
+ description: >
+ A (static) collection of endpoints available from this API. Each includes a relative path and a short description.
+ responses:
+ '200':
+ description: A collection of API endpoints
+ /search:
+ get:
+ summary: A simple search.
+ tags:
+ - general
+ description: |
+ A simple search over all resource's labels over all available endpoints. Note that the searching respects the current locale being selected.
+ parameters:
+ - name: q
+ in: query
+ description: Term which shall match (case insensitive) a resource's label
+ required: true
+ type: string
+ - $ref: '#/parameters/localeParam'
+ responses:
+ '200':
+ description: A collection of search results
+
+ /platforms:
+ get:
+ summary: Available Platforms
+ tags:
+ - platform
+ - v2.0
+ description: |
+ A collection of available platforms. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/geometryTypesParam'
+ - $ref: '#/parameters/platformGeometriesParam'
+ - $ref: '#/parameters/observedGeometriesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ - $ref: '#/parameters/crsParam'
+ - $ref: '#/parameters/bboxParam'
+ - $ref: '#/parameters/nearParam'
+ responses:
+ '200':
+ description: A collection of platforms
+ '400':
+ description: A query parameter does not match expected format
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+ '/platforms/{platformId}':
+ get:
+ summary: Gets a particular platform
+ tags:
+ - platform
+ - v2.0
+ description: |
+ Full view of a platform instance. A platform encodes a POINT geometry which is the actual location for `stationary` platforms and the last detected location for `mobile` platforms.
+ parameters:
+ - name: platformId
+ in: path
+ required: true
+ type: string
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/crsParam'
+ responses:
+ '200':
+ description: An expanded item
+ '400':
+ description: A query parameter does not match expected format
+ schema:
+ $ref: '#/definitions/Error'
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/platforms/{platformId}/extras':
+ get:
+ summary: Gets extra infos for platform
+ tags:
+ - platform
+ - v2.0
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each dataset.
+
+
+ You can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: platformId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+
+ /stations:
+ get:
+ summary: Available Stations
+ tags:
+ - station
+ description: |
+ A collection of available stations. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/crsParam'
+ - $ref: '#/parameters/bboxParam'
+ - $ref: '#/parameters/nearParam'
+ responses:
+ '200':
+ description: A collection of stations
+ '400':
+ description: A query parameter does not match expected format
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/stations/{stationId}':
+ get:
+ summary: Gets a particular station
+ tags:
+ - station
+ description: |
+ Full data view of a station. A station is a [GeoJSON point geometry](https://www.rfc-editor.org/info/rfc7946) which encodes available metadata in its `properties` member.
+ parameters:
+ - name: stationId
+ in: path
+ required: true
+ type: string
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/crsParam'
+ responses:
+ '200':
+ description: An expanded item
+ '400':
+ description: A query parameter does not match expected format
+ schema:
+ $ref: '#/definitions/Error'
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/stations/{stationId}/extras':
+ get:
+ summary: Gets extra infos for station
+ tags:
+ - station
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each dataset.
+
+
+ You can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: stationId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+
+ /datasets:
+ get:
+ summary: Gets available datasets
+ tags:
+ - dataset
+ - v2.0
+ description: |
+ A collection of available datasets. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/geometryTypesParam'
+ - $ref: '#/parameters/platformGeometriesParam'
+ - $ref: '#/parameters/observedGeometriesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ - $ref: '#/parameters/crsParam'
+ - $ref: '#/parameters/bboxParam'
+ - $ref: '#/parameters/nearParam'
+ responses:
+ '200':
+ description: A collection of datasets
+ '400':
+ description: A query parameter does not match expected format
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+ '/datasets/{datasetId}':
+ get:
+ summary: Gets a particular dataset
+ tags:
+ - dataset
+ - v2.0
+ description: |
+ Full view of a dataset instance. All relevant relations (parameters, unit, platform, etc.) are inlined. If any additional information is listed in the `extras` array member it can be retrieved via `/datasets/{datasetId}/extras` (see next).
+ parameters:
+ - name: datasetId
+ in: path
+ required: true
+ type: string
+ - $ref: '#/parameters/localeParam'
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+ '/datasets/{datasetId}/extras':
+ get:
+ summary: Gets extra infos for dataset
+ tags:
+ - dataset
+ - v2.0
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each dataset.
+
+
+ You can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: datasetId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+ '/datasets/{datasetId}/{interval}':
+ get:
+ summary: Gets extra infos for dataset
+ tags:
+ - dataset
+ - v2.0
+ description: >
+ Returns a pre-rendered image of a dataset for the given interval. Allowed interval values are
+
+ * `lastDay.png`
+
+ * `lastWeek.png`
+
+ * `lastMonth.png`
+
+
+ Datasets of type `quantity` can be pre-rendered by a regular task. If pre-rendering is enabled for a given datasets depends on the API provider as it is a configuration issue.
+ parameters:
+ - name: datasetId
+ in: path
+ required: true
+ type: string
+ - name: interval
+ in: path
+ required: true
+ type: string
+ responses:
+ '200':
+ description: A list of (selected) extra infos
+ '404':
+ description: In case no prerendered image available (or is currently being rendered)
+
+ '/datasets/{datasetId}/data':
+ get:
+ summary: Gets data of a dataset
+ tags:
+ - dataset
+ - v2.0
+ description: >
+ Gets data for a given `timespan` filter. Implementations may limit the maximum amount of time intervals a client can query in one request.
+
+
+ What Mime-Types are supported depends on the `datasetType`. For example `quantity` observations can be drawn as a timeseries chart (i.e. either `image/png` or `application/pdf`). Supported Mime-Types are listed for each `datasetType` when querying `/service/{serviceId}?datasetTypes=all`
+ produces:
+ - application/json
+ - image/png
+ - text/csv
+ - application/pdf
+ - application/zip
+ parameters:
+ - name: datasetId
+ in: path
+ required: true
+ type: string
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/timespanParam'
+ responses:
+ '200':
+ description: Data for a given `timespan` in a requested output format
+ '400':
+ description: A query parameter does not match expected format
+ schema:
+ $ref: '#/definitions/Error'
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+ /timeseries:
+ get:
+ summary: Gets available timeseries
+ tags:
+ - timeseries
+ description: |
+ A collection of timeseries (i.e. datasets of type `quantity` which have been observed at `stationary`, `insitu` platforms having a 0-dimensional (POINT) location geometry. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ - $ref: '#/parameters/crsParam'
+ - $ref: '#/parameters/bboxParam'
+ - $ref: '#/parameters/nearParam'
+ responses:
+ '200':
+ description: A collection of timeseries
+ '/timeseries/{timeseriesId}':
+ get:
+ summary: Gets a particular timeseries
+ tags:
+ - timeseries
+ description: |
+ Full view of a timeseries instance. All relevant relations (parameters, unit, station, etc.) are inlined. If any additional information is listed in the `extras` array member it can be retrieved via `/datasets/{datasetId}/extras` (see next).
+
+ For backward compatibility reasons metadata about `renderingHints` and `statusIntervals` are inlined here as well. However, those are listed within `extra` infos to make it consistent.
+ parameters:
+ - name: timeseriesId
+ in: path
+ required: true
+ type: string
+ - $ref: '#/parameters/localeParam'
+ responses:
+ '200':
+ description: An expanded item
+ '400':
+ description: A query parameter does not match expected format
+ schema:
+ $ref: '#/definitions/Error'
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/timeseries/{timeseriesId}/extras':
+ get:
+ summary: Gets extra infos for timeseries
+ tags:
+ - timeseries
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each timeseries.
+
+
+ You can query just the ones you are interested in by appending the `fields`query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: timeseriesId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: A list of (selected) extra infos
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/timeseries/{timeseriesId}/getData':
+ get:
+ summary: Gets data of a timeseries
+ tags:
+ - timeseries
+ description: >
+ Gets data for a given `timespan` filter. Implementations may limit the maximum amount of time intervals a client can query in one request.
+
+
+ This operation does only return data of `quantity` dataset types from`stationary`, `insitu` platforms having a 0-dimensional location geometry (`station`). Supported Mime-Types are `application/json`, `image/png`, `application/pdf`, and `text/csv`.
+ produces:
+ - application/json
+ - image/png
+ - text/csv
+ - application/pdf
+ - application/zip
+ parameters:
+ - name: timeseriesId
+ in: path
+ required: true
+ type: string
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/timespanParam'
+ - $ref: '#/parameters/widthParam'
+ - $ref: '#/parameters/heightParam'
+ - $ref: '#/parameters/legendParam'
+ - $ref: '#/parameters/gridParam'
+ - $ref: '#/parameters/generalizeParam'
+ - $ref: '#/parameters/formatParam'
+ - $ref: '#/parameters/base64Param'
+ responses:
+ '200':
+ description: Data for a given `timespan` in a requested output format
+ '400':
+ description: A query parameter does not match expected format
+ schema:
+ $ref: '#/definitions/Error'
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+ /geometries:
+ get:
+ summary: A collection of available geometries
+ tags:
+ - geometry
+ - v2.0
+ description: |
+ All available geometries instances. Possible geometry types are
+
+ * `site`, i.e. `stationary` platform locations (fixed)
+
+ * `track`, i.e. trajectories made by a `mobile` platform
+
+ * `static`, i.e. a fixed geometry observed by a `remote` platform
+
+ * `dynamic`, i.e. geometry observed by a `remote` platform which changes over time
+ parameters:
+ - $ref: '#/parameters/geometryTypesParam'
+ - $ref: '#/parameters/platformGeometriesParam'
+ - $ref: '#/parameters/observedGeometriesParam'
+ - $ref: '#/parameters/crsParam'
+ - $ref: '#/parameters/bboxParam'
+ - $ref: '#/parameters/nearParam'
+ responses:
+ '200':
+ description: A collection of geometries
+ /geometries/{geometryId}:
+ get:
+ summary: Gets a particular geometry
+ tags:
+ - geometry
+ - v2.0
+ description: |
+ Full view of a geometry instance. Encodes as full [GeoJSON geometry](https://www.rfc-editor.org/info/rfc7946).
+ parameters:
+ - name: geometryId
+ in: path
+ required: true
+ type: string
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/crsParam'
+ responses:
+ '200':
+ description: An expanded item
+ '400':
+ description: A query parameter does not match expected format
+ schema:
+ $ref: '#/definitions/Error'
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+ /services:
+ get:
+ summary: Get available service instances
+ tags:
+ - parameter
+ description: >
+ All available service instances. For backwards compatibility reasons the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ responses:
+ '200':
+ description: A collection of services
+ '/services/{serviceId}':
+ get:
+ summary: Gets an instance
+ tags:
+ - parameter
+ description: |
+ Gets a service instance.
+
+
+ Depending on what dataset types are available, differing output formats are available. For example, `image/png` (render as chart) or `application/pdf` (generating a report).
+ parameters:
+ - name: serviceId
+ in: path
+ required: true
+ type: string
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/services/{serviceId}/extras':
+ get:
+ summary: Gets extra infos for a service
+ tags:
+ - parameter
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each service.
+
+
+ You can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: serviceId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: A list of (selected) extra infos
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ /categories:
+ get:
+ summary: Gets available categories
+ tags:
+ - parameter
+ description: >
+ All available category instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ responses:
+ '200':
+ description: A collection of categories
+ '/categories/{categoryId}':
+ get:
+ summary: Gets a catefory instance
+ tags:
+ - parameter
+ description: |
+ Gets a category instance.
+ parameters:
+ - name: categoryId
+ in: path
+ required: true
+ type: string
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/categories/{categoryId}/extras':
+ get:
+ summary: Gets extra infos for a category
+ tags:
+ - parameter
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each category.
+
+
+ You can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: categoryId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: A list of (selected) extra infos
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ /phenomena:
+ get:
+ summary: Get available phenomenon instances
+ tags:
+ - parameter
+ description: >
+ All available phenomenon instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ responses:
+ '200':
+ description: A collection of phenomena
+ '/phenomena/{phenomenonId}':
+ get:
+ summary: Gets a phenomenon instance
+ tags:
+ - parameter
+ description: |
+ Gets a phenomenon instance
+ parameters:
+ - name: phenomenonId
+ in: path
+ required: true
+ type: string
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/phenomena/{phenomenonId}/extras':
+ get:
+ summary: Gets extra infos for a phenomenon
+ tags:
+ - parameter
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each phemomenon.
+
+
+ You can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: phenomenonId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: A list of (selected) extra infos
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ /procedure:
+ get:
+ summary: Get available procedure instances
+ tags:
+ - parameter
+ description: >
+ All available procedure instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ responses:
+ '200':
+ description: A collection of procedures
+ '/procedures/{procedureId}':
+ get:
+ summary: Gets a procedure instance
+ tags:
+ - parameter
+ description: |
+ Gets a procedure instance.
+ parameters:
+ - name: procedureId
+ in: path
+ required: true
+ type: string
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/procedures/{procedureId}/extras':
+ get:
+ summary: Gets extra infos for a procedure
+ tags:
+ - parameter
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each procedure.
+
+
+ You can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: procedureId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: A list of (selected) extra infos
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ /offerings:
+ get:
+ summary: Get available offerings instances
+ tags:
+ - parameter
+ description: >
+ All available offering instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ responses:
+ '200':
+ description: A collection of offerings
+ '/offerings/{offeringId}':
+ get:
+ summary: Gets an offering instance
+ tags:
+ - parameter
+ description: |
+ Gets an offering instance.
+ parameters:
+ - name: offeringId
+ in: path
+ required: true
+ type: string
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/offerings/{offeringId}/extras':
+ get:
+ summary: Gets extra infos for a phenomenon
+ tags:
+ - parameter
+ description: >
+ Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each offering.
+
+
+ You can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it.
+ parameters:
+ - name: offeringId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: A list of (selected) extra infos
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ /features:
+ get:
+ summary: Get available feature instances
+ tags:
+ - parameter
+ description: >
+ All available instances. For backwards compatibility reasons the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`.
+ parameters:
+ - $ref: '#/parameters/localeParam'
+ - $ref: '#/parameters/expandedParam'
+ - $ref: '#/parameters/servicesParam'
+ - $ref: '#/parameters/categoriesParam'
+ - $ref: '#/parameters/phenomenaParam'
+ - $ref: '#/parameters/proceduresParam'
+ - $ref: '#/parameters/offeringsParam'
+ - $ref: '#/parameters/platformsParam'
+ - $ref: '#/parameters/stationsParam'
+ - $ref: '#/parameters/platformTypesParam'
+ - $ref: '#/parameters/datasetTypesParam'
+ responses:
+ '200':
+ description: A collection of features
+ '/features/{featureId}':
+ get:
+ summary: Gets an feature instance
+ tags:
+ - parameter
+ description: |
+ Gets a feature instance.
+ parameters:
+ - name: featureId
+ in: path
+ required: true
+ type: string
+ responses:
+ '200':
+ description: An expanded item
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+ '/features/{featureId}/extras':
+ get:
+ summary: Gets extra infos for a feature
+ tags:
+ - parameter
+ description: >
+ All available feature instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.
+
+
+ Filter options help to focus on a particular set of items. Filter either by parameters or spatially.
+ parameters:
+ - name: featureId
+ in: path
+ required: true
+ type: string
+ - name: fields
+ in: query
+ required: false
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: A list of (selected) extra infos
+ '404':
+ description: Item not found
+ schema:
+ $ref: '#/definitions/Error'
+ '415':
+ description: Media Item not supported
+ schema:
+ $ref: '#/definitions/Error'
+
+
+
+
+parameters:
+ expandedParam:
+ name: expanded
+ in: query
+ type: boolean
+ description: >
+ If `true` a list of partially expanded resource items is returned. The expansion provides more detailed information up to a certain point. However, it does not necessarily provide all item information as one may get when request the resource item itself.
+
+
+ The expanded works almost only for resource collection. However, exceptions may exist (e.g. for getting raw data). Exceptions are explicitly documented. The default is `false`.
+ platformTypesParam:
+ name: platformTypes
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: >
+ Filters the resources to get only those related to the platform type filter.
+
+
+ Allowed values are `stationary`, `mobile`, `insitu`, `remote`, `all`.
+
+
+ The default is `stationary,insitu`.
+ datasetTypesParam:
+ name: datasetTypes
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: >
+ Filters the resources to get only those related to the dataset type filter.
+
+
+ Allowed values are `quantity`, `count`, `text`, `all` or any other custom types given by the implementing backend.
+
+
+ The default is `quantity`.
+ servicesParam:
+ name: services
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: >
+ All resources where the given service id does match. The single form (`service`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.
+ categoriesParam:
+ name: categories
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: >
+ All resources where the given category id does match. The single form (`category`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.
+ phenomenaParam:
+ name: phenomena
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: >
+ All resources where the given phenomenon id does match. The single form (`phenomenon`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.
+ proceduresParam:
+ name: procedures
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: >
+ All resources where the given procedure id does match. The single form (`procedure`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.
+ offeringsParam:
+ name: offerings
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: >
+ All resources where the given offering id does match. The single form (`offering`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.
+ stationsParam:
+ name: stations
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: >
+ All resources where the given station id does match. The single form (`station`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.
+ platformsParam:
+ name: platforms
+ in: query
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ description: |
+ All resources where the given platform id does match.
+ localeParam:
+ name: locale
+ in: query
+ type: string
+ description: >
+ Specifies the language as [ISO639](http://en.wikipedia.org/wiki/ISO_639) code. Subdivisions are respected by an `_` , e.g. `en_US` for American English.
+
+
+ The REST-API should consider the following order to detect a locale
+
+
+ * Accept-Language (e.g. header information)
+
+ * locale parameter
+
+
+ A fallback language cannot be specified as it depends on the data of the service provider.
+ timespanParam:
+ name: timespan
+ in: query
+ type: string
+ description: >
+ An [ISO8601](http://en.wikipedia.org/wiki/ISO_8601#Time_intervals)
+ formatted period. Only backslash formatted values are supported.
+ crsParam:
+ name: crs
+ in: query
+ type: string
+ description: >
+ The client indicates that input geometries shall be interpreted as being referenced by the given CRS (for example in case of `crs=EPSG:25832` to [ETRS89/UTM zone 32N](http://spatialreference.org/ref/epsg/25832/)).
+
+
+ Per default geometries are referenced by the WGS84 CRS (CRS84, i.e.
+ lon/lat order). If crs value differs from default, all output geometries are transformed to match
+ the asked CRS.
+
+
+ Please note that some CRS switch coordinate axes. Double check axes
+ ordering before interpreting coordinates!
+ bboxParam:
+ name: bbox
+ in: query
+ type: string
+ description: >
+ Stations within a given bounding box (in WGS84 by default). Refer to the
+ crs parameter if a non-default CRS shall be used.
+
+
+ ```json
+ bbox={
+ "ll": {
+ "type": "Point",
+ "coordinates": [,]
+ },
+ "ur": {
+ "type": "Point",
+ "coordinates": [,]
+ }
+ }
+
+ ```
+ nearParam:
+ name: near
+ in: query
+ type: string
+ description: >
+ Stations within a given bounding box (in WGS84 by default). Refer to the `crs` parameter if a non-default CRS shall be used.
+
+
+ ```json
+ near={
+ "center": {
+ "type": "Point",
+ "coordinates": [,]
+ },
+ "radius":500
+ }
+
+ ```
+ legendParam:
+ name: legend
+ in: query
+ type: boolean
+ description: >
+ Indicates if a legend shall be rendered directly on the image output (if `image/png` shall be the output).
+ gridParam:
+ name: grid
+ in: query
+ type: boolean
+ description: ''
+ widthParam:
+ name: width
+ in: query
+ type: integer
+ format: int32
+ description: |
+ If `image/png` is requested, width determines the width in pixels.
+ heightParam:
+ name: height
+ in: query
+ type: integer
+ format: int32
+ description: |
+ If `image/png` is requested, height determines the height in pixels.
+ generalizeParam:
+ name: generalize
+ in: query
+ type: boolean
+ description: >
+ Indicates that timeseries data shall be generalized. See generalization
+ section for details.
+ formatParam:
+ name: format
+ in: query
+ type: string
+ description: >
+ Controls the output format of raw timeseries data. This avoids converting
+ between different data formats on client side which uses a 3rd party chart rendering API.
+ Currently, supported formats
+
+ * *tvp* Time value pairs (the default)
+
+ * *highcharts* [Highcharts](http://www.highcharts.com/) series data format.
+
+
+ Refer to the Format section for detailed information how the formats will look like.
+ base64Param:
+ name: base64
+ in: query
+ type: boolean
+ description: >
+ Indicates binary images shall be encoded to a base64 string on server side. This makes it easily possible to display images from JavaScript (you would need a byte parsing library otherwise).
+
+
+ Here is an example how to embed encoded base64 string
+
+ ```
+
+
+
+ ```
+
+ geometryTypesParam:
+ name: geometryTypes
+ in: query
+ type: string
+ enum:
+ - point
+ - linestring
+ - polygon
+ description: |
+ The type of geometry based on [WKT types](https://en.wikipedia.org/wiki/Well-known_text).
+ platformGeometriesParam:
+ name: platformGeometries
+ in: query
+ type: array
+ collectionFormat: csv
+ items:
+ type: string
+ enum:
+ - site
+ - track
+ description: |
+ The platform's geometry, either `site` for `stationary` platforms (or `station`s) or `track` for `mobile` platforms.
+ observedGeometriesParam:
+ name: observedGeometries
+ in: query
+ type: array
+ collectionFormat: csv
+ items:
+ type: string
+ enum:
+ - static
+ - dynamic
+ description: |
+ The platform's observed geometry, either `static` for `remote` platforms observing fixed geometries or `dynamic` otherwise.
+definitions:
+ SimpleDataRequest:
+ type: object
+ properties:
+ datasetIds:
+ type: array
+ items:
+ type: string
+ StyledDataRequest:
+ type: object
+ required:
+ - styleOptions
+ properties:
+ legend:
+ type: boolean
+ grid:
+ type: boolean
+ locale:
+ type: string
+ width:
+ type: integer
+ format: int32
+ height:
+ type: integer
+ format: int32
+ timespan:
+ type: string
+ styleOptions:
+ $ref: '#/definitions/Style'
+ Style:
+ type: object
+ description: ''
+ properties:
+ chartType:
+ type: string
+ enum:
+ - line
+ - bar
+
+ Error:
+ type: object
+ properties:
+ statusCode:
+ type: integer
+ format: int32
+ reason:
+ type: string
+ userMessage:
+ type: string
diff --git a/web-resources/docs/_data/swagger_.json b/web-resources/docs/_data/swagger_.json
new file mode 100644
index 000000000..72cb9acba
--- /dev/null
+++ b/web-resources/docs/_data/swagger_.json
@@ -0,0 +1,1945 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "52°North Series API",
+ "description": "Thin Web binding API to access series data",
+ "version": "2.0.0"
+ },
+ "host": "example.org",
+ "schemes": [
+ "https"
+ ],
+ "basePath": "/api/v1",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "paths": {
+ "/": {
+ "get": {
+ "summary": "Available endpoints.",
+ "tags": [
+ "general"
+ ],
+ "description": "A (static) collection of endpoints available from this API. Each includes a relative path and a short description.\n",
+ "responses": {
+ "200": {
+ "description": "A collection of API endpoints"
+ }
+ }
+ }
+ },
+ "/search": {
+ "get": {
+ "summary": "A simple search.",
+ "tags": [
+ "general"
+ ],
+ "description": "A simple search over all resource's labels over all available endpoints. Note that the searching respects the current locale being selected.\n",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "description": "Term which shall match (case insensitive) a resource's label",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/localeParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of search results"
+ }
+ }
+ }
+ },
+ "/platforms": {
+ "get": {
+ "summary": "Available Platforms",
+ "tags": [
+ "platform",
+ "v2.0"
+ ],
+ "description": "A collection of available platforms. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/geometryTypesParam"
+ },
+ {
+ "$ref": "#/parameters/platformGeometriesParam"
+ },
+ {
+ "$ref": "#/parameters/observedGeometriesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ },
+ {
+ "$ref": "#/parameters/crsParam"
+ },
+ {
+ "$ref": "#/parameters/bboxParam"
+ },
+ {
+ "$ref": "#/parameters/nearParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of platforms"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format"
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/platforms/{platformId}": {
+ "get": {
+ "summary": "Gets a particular platform",
+ "tags": [
+ "platform",
+ "v2.0"
+ ],
+ "description": "Full view of a platform instance. A platform encodes a POINT geometry which is the actual location for `stationary` platforms and the last detected location for `mobile` platforms.\n",
+ "parameters": [
+ {
+ "name": "platformId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/crsParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/platforms/{platformId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for platform",
+ "tags": [
+ "platform",
+ "v2.0"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each dataset.\n\nYou can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "platformId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/stations": {
+ "get": {
+ "summary": "Available Stations",
+ "tags": [
+ "station"
+ ],
+ "description": "A collection of available stations. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/crsParam"
+ },
+ {
+ "$ref": "#/parameters/bboxParam"
+ },
+ {
+ "$ref": "#/parameters/nearParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of stations"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format"
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/stations/{stationId}": {
+ "get": {
+ "summary": "Gets a particular station",
+ "tags": [
+ "station"
+ ],
+ "description": "Full data view of a station. A station is a [GeoJSON point geometry](https://www.rfc-editor.org/info/rfc7946) which encodes available metadata in its `properties` member.\n",
+ "parameters": [
+ {
+ "name": "stationId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/crsParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/stations/{stationId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for station",
+ "tags": [
+ "station"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each dataset.\n\nYou can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "stationId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/datasets": {
+ "get": {
+ "summary": "Gets available datasets",
+ "tags": [
+ "dataset",
+ "v2.0"
+ ],
+ "description": "A collection of available datasets. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/geometryTypesParam"
+ },
+ {
+ "$ref": "#/parameters/platformGeometriesParam"
+ },
+ {
+ "$ref": "#/parameters/observedGeometriesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ },
+ {
+ "$ref": "#/parameters/crsParam"
+ },
+ {
+ "$ref": "#/parameters/bboxParam"
+ },
+ {
+ "$ref": "#/parameters/nearParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of datasets"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format"
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/datasets/{datasetId}": {
+ "get": {
+ "summary": "Gets a particular dataset",
+ "tags": [
+ "dataset",
+ "v2.0"
+ ],
+ "description": "Full view of a dataset instance. All relevant relations (parameters, unit, platform, etc.) are inlined. If any additional information is listed in the `extras` array member it can be retrieved via `/datasets/{datasetId}/extras` (see next).\n",
+ "parameters": [
+ {
+ "name": "datasetId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/localeParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/datasets/{datasetId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for dataset",
+ "tags": [
+ "dataset",
+ "v2.0"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each dataset.\n\nYou can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "datasetId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/datasets/{datasetId}/{interval}": {
+ "get": {
+ "summary": "Gets extra infos for dataset",
+ "tags": [
+ "dataset",
+ "v2.0"
+ ],
+ "description": "Returns a pre-rendered image of a dataset for the given interval. Allowed interval values are\n* `lastDay.png`\n* `lastWeek.png`\n* `lastMonth.png`\n\nDatasets of type `quantity` can be pre-rendered by a regular task. If pre-rendering is enabled for a given datasets depends on the API provider as it is a configuration issue.\n",
+ "parameters": [
+ {
+ "name": "datasetId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "interval",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A list of (selected) extra infos"
+ },
+ "404": {
+ "description": "In case no prerendered image available (or is currently being rendered)"
+ }
+ }
+ }
+ },
+ "/datasets/{datasetId}/data": {
+ "get": {
+ "summary": "Gets data of a dataset",
+ "tags": [
+ "dataset",
+ "v2.0"
+ ],
+ "description": "Gets data for a given `timespan` filter. Implementations may limit the maximum amount of time intervals a client can query in one request. \n\nWhat Mime-Types are supported depends on the `datasetType`. For example `quantity` observations can be drawn as a timeseries chart (i.e. either `image/png` or `application/pdf`). Supported Mime-Types are listed for each `datasetType` when querying `/service/{serviceId}?datasetTypes=all` produces: - application/json - image/png - text/csv - application/pdf - application/zip\n",
+ "parameters": [
+ {
+ "name": "datasetId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/timespanParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Data for a given `timespan` in a requested output format"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/timeseries": {
+ "get": {
+ "summary": "Gets available timeseries",
+ "tags": [
+ "timeseries"
+ ],
+ "description": "A collection of timeseries (i.e. datasets of type `quantity` which have been observed at `stationary`, `insitu` platforms having a 0-dimensional (POINT) location geometry. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ },
+ {
+ "$ref": "#/parameters/crsParam"
+ },
+ {
+ "$ref": "#/parameters/bboxParam"
+ },
+ {
+ "$ref": "#/parameters/nearParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of timeseries"
+ }
+ }
+ }
+ },
+ "/timeseries/{timeseriesId}": {
+ "get": {
+ "summary": "Gets a particular timeseries",
+ "tags": [
+ "timeseries"
+ ],
+ "description": "Full view of a timeseries instance. All relevant relations (parameters, unit, station, etc.) are inlined. If any additional information is listed in the `extras` array member it can be retrieved via `/datasets/{datasetId}/extras` (see next).\n\nFor backward compatibility reasons metadata about `renderingHints` and `statusIntervals` are inlined here as well. However, those are listed within `extra` infos to make it consistent.\n",
+ "parameters": [
+ {
+ "name": "timeseriesId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/localeParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/timeseries/{timeseriesId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for timeseries",
+ "tags": [
+ "timeseries"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each timeseries.\n\nYou can query just the ones you are interested in by appending the `fields`query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "timeseriesId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A list of (selected) extra infos"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/timeseries/{timeseriesId}/getData": {
+ "get": {
+ "summary": "Gets data of a timeseries",
+ "tags": [
+ "timeseries"
+ ],
+ "description": "Gets data for a given `timespan` filter. Implementations may limit the maximum amount of time intervals a client can query in one request. \n\nThis operation does only return data of `quantity` dataset types from`stationary`, `insitu` platforms having a 0-dimensional location geometry (`station`). Supported Mime-Types are `application/json`, `image/png`, `application/pdf`, and `text/csv`.\n",
+ "produces": [
+ "application/json",
+ "image/png",
+ "text/csv",
+ "application/pdf",
+ "application/zip"
+ ],
+ "parameters": [
+ {
+ "name": "timeseriesId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/timespanParam"
+ },
+ {
+ "$ref": "#/parameters/widthParam"
+ },
+ {
+ "$ref": "#/parameters/heightParam"
+ },
+ {
+ "$ref": "#/parameters/legendParam"
+ },
+ {
+ "$ref": "#/parameters/gridParam"
+ },
+ {
+ "$ref": "#/parameters/generalizeParam"
+ },
+ {
+ "$ref": "#/parameters/formatParam"
+ },
+ {
+ "$ref": "#/parameters/base64Param"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Data for a given `timespan` in a requested output format"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/geometries": {
+ "get": {
+ "summary": "A collection of available geometries",
+ "tags": [
+ "geometry",
+ "v2.0"
+ ],
+ "description": "All available geometries instances. Possible geometry types are \n\n* `site`, i.e. `stationary` platform locations (fixed) \n\n* `track`, i.e. trajectories made by a `mobile` platform\n\n* `static`, i.e. a fixed geometry observed by a `remote` platform\n\n* `dynamic`, i.e. geometry observed by a `remote` platform which changes over time\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/geometryTypesParam"
+ },
+ {
+ "$ref": "#/parameters/platformGeometriesParam"
+ },
+ {
+ "$ref": "#/parameters/observedGeometriesParam"
+ },
+ {
+ "$ref": "#/parameters/crsParam"
+ },
+ {
+ "$ref": "#/parameters/bboxParam"
+ },
+ {
+ "$ref": "#/parameters/nearParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of geometries"
+ }
+ }
+ }
+ },
+ "/geometries/{geometryId}": {
+ "get": {
+ "summary": "Gets a particular geometry",
+ "tags": [
+ "geometry",
+ "v2.0"
+ ],
+ "description": "Full view of a geometry instance. Encodes as full [GeoJSON geometry](https://www.rfc-editor.org/info/rfc7946).\n",
+ "parameters": [
+ {
+ "name": "geometryId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/crsParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "400": {
+ "description": "A query parameter does not match expected format",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/services": {
+ "get": {
+ "summary": "Get available service instances",
+ "tags": [
+ "parameter"
+ ],
+ "description": "All available service instances. For backwards compatibility reasons the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of services"
+ }
+ }
+ }
+ },
+ "/services/{serviceId}": {
+ "get": {
+ "summary": "Gets an instance",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Gets a service instance.\n\n\nDepending on what dataset types are available, differing output formats are available. For example, `image/png` (render as chart) or `application/pdf` (generating a report).\n",
+ "parameters": [
+ {
+ "name": "serviceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/services/{serviceId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for a service",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each service.\n\nYou can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "serviceId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A list of (selected) extra infos"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/categories": {
+ "get": {
+ "summary": "Gets available categories",
+ "tags": [
+ "parameter"
+ ],
+ "description": "All available category instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of categories"
+ }
+ }
+ }
+ },
+ "/categories/{categoryId}": {
+ "get": {
+ "summary": "Gets a catefory instance",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Gets a category instance.\n",
+ "parameters": [
+ {
+ "name": "categoryId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/categories/{categoryId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for a category",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each category.\n\nYou can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "categoryId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A list of (selected) extra infos"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/phenomena": {
+ "get": {
+ "summary": "Get available phenomenon instances",
+ "tags": [
+ "parameter"
+ ],
+ "description": "All available phenomenon instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of phenomena"
+ }
+ }
+ }
+ },
+ "/phenomena/{phenomenonId}": {
+ "get": {
+ "summary": "Gets a phenomenon instance",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Gets a phenomenon instance\n",
+ "parameters": [
+ {
+ "name": "phenomenonId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/phenomena/{phenomenonId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for a phenomenon",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each phemomenon.\n\nYou can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "phenomenonId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A list of (selected) extra infos"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/procedure": {
+ "get": {
+ "summary": "Get available procedure instances",
+ "tags": [
+ "parameter"
+ ],
+ "description": "All available procedure instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of procedures"
+ }
+ }
+ }
+ },
+ "/procedures/{procedureId}": {
+ "get": {
+ "summary": "Gets a procedure instance",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Gets a procedure instance.\n",
+ "parameters": [
+ {
+ "name": "procedureId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/procedures/{procedureId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for a procedure",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each procedure.\n\nYou can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "procedureId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A list of (selected) extra infos"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/offerings": {
+ "get": {
+ "summary": "Get available offerings instances",
+ "tags": [
+ "parameter"
+ ],
+ "description": "All available offering instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of offerings"
+ }
+ }
+ }
+ },
+ "/offerings/{offeringId}": {
+ "get": {
+ "summary": "Gets an offering instance",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Gets an offering instance.\n",
+ "parameters": [
+ {
+ "name": "offeringId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/offerings/{offeringId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for a phenomenon",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Lists extra metadata which may vary from instance to instance. The available metadata fields are listed in the `extras` metadata field of each offering.\n\nYou can query just the ones you are interested in by appending the `fields` query parameter and passing a comma-separated value list to it. \n",
+ "parameters": [
+ {
+ "name": "offeringId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A list of (selected) extra infos"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/features": {
+ "get": {
+ "summary": "Get available feature instances",
+ "tags": [
+ "parameter"
+ ],
+ "description": "All available instances. For backwards compatibility reasons the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`.\n",
+ "parameters": [
+ {
+ "$ref": "#/parameters/localeParam"
+ },
+ {
+ "$ref": "#/parameters/expandedParam"
+ },
+ {
+ "$ref": "#/parameters/servicesParam"
+ },
+ {
+ "$ref": "#/parameters/categoriesParam"
+ },
+ {
+ "$ref": "#/parameters/phenomenaParam"
+ },
+ {
+ "$ref": "#/parameters/proceduresParam"
+ },
+ {
+ "$ref": "#/parameters/offeringsParam"
+ },
+ {
+ "$ref": "#/parameters/platformsParam"
+ },
+ {
+ "$ref": "#/parameters/stationsParam"
+ },
+ {
+ "$ref": "#/parameters/platformTypesParam"
+ },
+ {
+ "$ref": "#/parameters/datasetTypesParam"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A collection of features"
+ }
+ }
+ }
+ },
+ "/features/{featureId}": {
+ "get": {
+ "summary": "Gets an feature instance",
+ "tags": [
+ "parameter"
+ ],
+ "description": "Gets a feature instance.\n",
+ "parameters": [
+ {
+ "name": "featureId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "An expanded item"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ },
+ "/features/{featureId}/extras": {
+ "get": {
+ "summary": "Gets extra infos for a feature",
+ "tags": [
+ "parameter"
+ ],
+ "description": "All available feature instances. For backwards compatibility reasons, the output is filtered by default to list only those instances related to `stationary`, `insitu` platforms. To retrieve a full metadata view add `platformTypes=all`. Depending on the `expanded` parameter the collections items are compact or do inline full metadata.\n\nFilter options help to focus on a particular set of items. Filter either by parameters or spatially.\n",
+ "parameters": [
+ {
+ "name": "featureId",
+ "in": "path",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "in": "query",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A list of (selected) extra infos"
+ },
+ "404": {
+ "description": "Item not found",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ },
+ "415": {
+ "description": "Media Item not supported",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ }
+ }
+ }
+ },
+ "parameters": {
+ "expandedParam": {
+ "name": "expanded",
+ "in": "query",
+ "type": "boolean",
+ "description": "If `true` a list of partially expanded resource items is returned. The expansion provides more detailed information up to a certain point. However, it does not necessarily provide all item information as one may get when request the resource item itself.\n\nThe expanded works almost only for resource collection. However, exceptions may exist (e.g. for getting raw data). Exceptions are explicitly documented. The default is `false`.\n"
+ },
+ "platformTypesParam": {
+ "name": "platformTypes",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "Filters the resources to get only those related to the platform type filter.\n\nAllowed values are `stationary`, `mobile`, `insitu`, `remote`, `all`. \n\nThe default is `stationary,insitu`.\n"
+ },
+ "datasetTypesParam": {
+ "name": "datasetTypes",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "Filters the resources to get only those related to the dataset type filter.\n\nAllowed values are `quantity`, `count`, `text`, `all` or any other custom types given by the implementing backend.\n\nThe default is `quantity`.\n"
+ },
+ "servicesParam": {
+ "name": "services",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "All resources where the given service id does match. The single form (`service`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.\n"
+ },
+ "categoriesParam": {
+ "name": "categories",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "All resources where the given category id does match. The single form (`category`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.\n"
+ },
+ "phenomenaParam": {
+ "name": "phenomena",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "All resources where the given phenomenon id does match. The single form (`phenomenon`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.\n"
+ },
+ "proceduresParam": {
+ "name": "procedures",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "All resources where the given procedure id does match. The single form (`procedure`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.\n"
+ },
+ "offeringsParam": {
+ "name": "offerings",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "All resources where the given offering id does match. The single form (`offering`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.\n"
+ },
+ "stationsParam": {
+ "name": "stations",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "All resources where the given station id does match. The single form (`station`) is kept for backwards compatibility. Please use the plural form to filter on multiple ids.\n"
+ },
+ "platformsParam": {
+ "name": "platforms",
+ "in": "query",
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "collectionFormat": "csv",
+ "description": "All resources where the given platform id does match.\n"
+ },
+ "localeParam": {
+ "name": "locale",
+ "in": "query",
+ "type": "string",
+ "description": "Specifies the language as [ISO639](http://en.wikipedia.org/wiki/ISO_639) code. Subdivisions are respected by an `_` , e.g. `en_US` for American English.\n\nThe REST-API should consider the following order to detect a locale\n\n* Accept-Language (e.g. header information)\n* locale parameter\n\nA fallback language cannot be specified as it depends on the data of the service provider.\n"
+ },
+ "timespanParam": {
+ "name": "timespan",
+ "in": "query",
+ "type": "string",
+ "description": "An [ISO8601](http://en.wikipedia.org/wiki/ISO_8601#Time_intervals) formatted period. Only backslash formatted values are supported.\n"
+ },
+ "crsParam": {
+ "name": "crs",
+ "in": "query",
+ "type": "string",
+ "description": "The client indicates that input geometries shall be interpreted as being referenced by the given CRS (for example in case of `crs=EPSG:25832` to [ETRS89/UTM zone 32N](http://spatialreference.org/ref/epsg/25832/)).\n\nPer default geometries are referenced by the WGS84 CRS (CRS84, i.e. lon/lat order). If crs value differs from default, all output geometries are transformed to match the asked CRS.\n\nPlease note that some CRS switch coordinate axes. Double check axes ordering before interpreting coordinates!\n"
+ },
+ "bboxParam": {
+ "name": "bbox",
+ "in": "query",
+ "type": "string",
+ "description": "Stations within a given bounding box (in WGS84 by default). Refer to the crs parameter if a non-default CRS shall be used.\n\n```json bbox={\n \"ll\": {\n \"type\": \"Point\",\n \"coordinates\": [,]\n },\n \"ur\": {\n \"type\": \"Point\",\n \"coordinates\": [,]\n }\n}\n```\n"
+ },
+ "nearParam": {
+ "name": "near",
+ "in": "query",
+ "type": "string",
+ "description": "Stations within a given bounding box (in WGS84 by default). Refer to the `crs` parameter if a non-default CRS shall be used.\n\n```json near={\n \"center\": {\n \"type\": \"Point\",\n \"coordinates\": [,]\n },\n \"radius\":500\n}\n```\n"
+ },
+ "legendParam": {
+ "name": "legend",
+ "in": "query",
+ "type": "boolean",
+ "description": "Indicates if a legend shall be rendered directly on the image output (if `image/png` shall be the output).\n"
+ },
+ "gridParam": {
+ "name": "grid",
+ "in": "query",
+ "type": "boolean",
+ "description": ""
+ },
+ "widthParam": {
+ "name": "width",
+ "in": "query",
+ "type": "integer",
+ "format": "int32",
+ "description": "If `image/png` is requested, width determines the width in pixels.\n"
+ },
+ "heightParam": {
+ "name": "height",
+ "in": "query",
+ "type": "integer",
+ "format": "int32",
+ "description": "If `image/png` is requested, height determines the height in pixels.\n"
+ },
+ "generalizeParam": {
+ "name": "generalize",
+ "in": "query",
+ "type": "boolean",
+ "description": "Indicates that timeseries data shall be generalized. See generalization section for details.\n"
+ },
+ "formatParam": {
+ "name": "format",
+ "in": "query",
+ "type": "string",
+ "description": "Controls the output format of raw timeseries data. This avoids converting between different data formats on client side which uses a 3rd party chart rendering API. Currently, supported formats\n\n * *tvp* Time value pairs (the default)\n \n * *highcharts* [Highcharts](http://www.highcharts.com/) series data format.\n \n \nRefer to the Format section for detailed information how the formats will look like.\n"
+ },
+ "base64Param": {
+ "name": "base64",
+ "in": "query",
+ "type": "boolean",
+ "description": "Indicates binary images shall be encoded to a base64 string on server side. This makes it easily possible to display images from JavaScript (you would need a byte parsing library otherwise).\n\nHere is an example how to embed encoded base64 string\n```\n\n```\n"
+ },
+ "geometryTypesParam": {
+ "name": "geometryTypes",
+ "in": "query",
+ "type": "string",
+ "enum": [
+ "point",
+ "linestring",
+ "polygon"
+ ],
+ "description": "The type of geometry based on [WKT types](https://en.wikipedia.org/wiki/Well-known_text).\n"
+ },
+ "platformGeometriesParam": {
+ "name": "platformGeometries",
+ "in": "query",
+ "type": "array",
+ "collectionFormat": "csv",
+ "items": {
+ "type": "string",
+ "enum": [
+ "site",
+ "track"
+ ]
+ },
+ "description": "The platform's geometry, either `site` for `stationary` platforms (or `station`s) or `track` for `mobile` platforms.\n"
+ },
+ "observedGeometriesParam": {
+ "name": "observedGeometries",
+ "in": "query",
+ "type": "array",
+ "collectionFormat": "csv",
+ "items": {
+ "type": "string",
+ "enum": [
+ "static",
+ "dynamic"
+ ]
+ },
+ "description": "The platform's observed geometry, either `static` for `remote` platforms observing fixed geometries or `dynamic` otherwise.\n"
+ }
+ },
+ "definitions": {
+ "SimpleDataRequest": {
+ "type": "object",
+ "properties": {
+ "datasetIds": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "StyledDataRequest": {
+ "type": "object",
+ "required": [
+ "styleOptions"
+ ],
+ "properties": {
+ "legend": {
+ "type": "boolean"
+ },
+ "grid": {
+ "type": "boolean"
+ },
+ "locale": {
+ "type": "string"
+ },
+ "width": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "height": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "timespan": {
+ "type": "string"
+ },
+ "styleOptions": {
+ "$ref": "#/definitions/Style"
+ }
+ }
+ },
+ "Style": {
+ "type": "object",
+ "description": "",
+ "properties": {
+ "chartType": {
+ "type": "string",
+ "enum": [
+ "line",
+ "bar"
+ ]
+ }
+ }
+ },
+ "Error": {
+ "type": "object",
+ "properties": {
+ "statusCode": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "userMessage": {
+ "type": "string"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/web-resources/docs/_includes/extensions/database_metadata.md b/web-resources/docs/_includes/extensions/database_metadata.md
new file mode 100644
index 000000000..ca8c755f0
--- /dev/null
+++ b/web-resources/docs/_includes/extensions/database_metadata.md
@@ -0,0 +1,32 @@
+
+Next to the actual phenomenon time observation data may have a `resultTime` which
+indicates when the data became available. An example for such cases is forecast data
+which may be (re-)calculated multiple times (optionally based on multiple models).
+Getting the right data values (belonging to a specific result time) a client can add
+the `resultTime=...` parameter when querying `datasets//data`.
+
+In case of existing result times (which have to be different to the actual phenomenon
+time) are available to a client as `extra` data for a given dataset.
+
+### Requirements
+
+The extension is part of the [database backend](https://github.com/52North/dao-series-api).
+Therefore it requires a database (the DBMS shouldn't matter as connection is done via
+[Hibernate](http://hibernate.org/)) which has been extended by a metadata table. Also the
+`metadata` mapping files have to be configured.
+
+### Installation steps
+1. create `metadata` table by executing `src/extension/metadata/create_metadata_table.sql`
+1. add `hbm/sos/metadata/*.hbm.xml` to the `application.properties` in use, e.g.
+```
+series.database.mappings=\
+ classpath*:/hbm/sos/v44/*.hbm.xml, \
+ classpath*:/hbm/sos/metadata/*.hbm.xml
+```
+1. add metadata data for your dataset, e.g. with id `10`
+```
+INSERT INTO series_metadata VALUES (1, 10, 'integrationPeriod', 'string', 'PT1M') ;
+```
+
+{:.n52-callout .n52-callout-todo}
+`json` metadata is not serialized properly at the moment.
\ No newline at end of file
diff --git a/web-resources/docs/_includes/extensions/prerendering.md b/web-resources/docs/_includes/extensions/prerendering.md
new file mode 100644
index 000000000..28c4c09f8
--- /dev/null
+++ b/web-resources/docs/_includes/extensions/prerendering.md
@@ -0,0 +1,97 @@
+
+A data provider can configure datasets being pre-/rerendered regularly for given time intervals
+(`lastMonth`, `lastWeek`, or `lastDay`). A client experience may be instant access rather than
+to wait for that kind of fixed time intervals. Also, prerendered charts are easy to integrate via
+html tags without making requests to render charts dynamically.
+
+On prerendering mode only single series charts are rendered (no chart overlay).
+
+### Configuration Location
+
+{:.n52-callout .n52-callout-todo}
+reference to JobScheduler configuration
+
+Prerendering (styles, intervals, legend, etc.) can be configured for datasets having a particular
+phenomenon or each individually (overriding a possibly matching phenomenona config). A general
+configuration section applies to all further config unless overridden (within a `config` entry).
+
+For example:
+
+```
+{
+ "generalConfig" : {
+ "width": "800",
+ "height": "500",
+ "locale" : "de",
+ "grid" : true,
+ "generalize" : false
+ },
+ "phenomenonStyles": [
+ {
+ "id" : "3",
+ "title" : "Station: %1$s, Phenomenon: %2$s [{ %8$s}] (w/ legend)",
+ "chartQualifier" : "with_legend",
+ "interval": [
+ "lastWeek",
+ "lastMonth"
+ ],
+ "config" : {
+ "legend" : true
+ },
+ "style": {
+ "chartType": "line",
+ "properties": {
+ "color": "#00ffff",
+ "lineType": "solid",
+ "width": 2
+ }
+ }
+ }
+ ],
+ "datasetStyles": [
+ {
+ "id" : "16",
+ "interval": [
+ "lastWeek",
+ "lastMonth"
+ ],
+ "style": {
+ "chartType": "bar",
+ "properties": {
+ "interval": "byDay",
+ "width": 0.8,
+ "color": "#0000ff"
+ }
+ }
+ }
+ ]
+}
+```
+
+{:.n52-callout .n52-callout-info}
+`timeseriesStyles` and `seriesStyles` mean the same as `datasetStyles` and is kept
+for backwards compatibility reasons.
+
+### Placeholders
+
+To add fine grained title configuration on a phenomenona group a
+[`String.format` template](https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#syntax)
+can be used.
+
+Choose one of the following
+
+* `%1$s`: Platform label
+* `%2$s`: Phenomenon label
+* `%3$s`: Procedure label
+* `%4$s`: Category label
+* `%5$s`: Offering label
+* `%6$s`: Feature label
+* `%7$s`: Service label
+* `%8$s`: Unit of Measure
+
+Use the template for the title config within config file config-task-prerendering, e.g. `Platform: %1$s, Phenomenon: %2$s [{ %8$s}]`.
+
+### Accessing prerendered charts
+
+{:.n52-callout .n52-callout-todo}
+`datasets//images/`
diff --git a/web-resources/docs/_includes/extensions/rendering_hints.md b/web-resources/docs/_includes/extensions/rendering_hints.md
new file mode 100644
index 000000000..424fb63ca
--- /dev/null
+++ b/web-resources/docs/_includes/extensions/rendering_hints.md
@@ -0,0 +1,59 @@
+
+The Series API provides I/O mechanisms to render charts so that clients may directly request
+data via `accept=image/png` HTTP header. However, styles are chosen either randomly or by
+passing the `style=...` parameter. As the data provider should know best what style fit best
+to a particular dataset, it can be configured as rendering hints.
+
+
+The rendering hints are available to a client as `extra` data for a given dataset.
+
+### Configuration Location
+
+Status intervals can be configured for datasets having a particular phenomenon or each individually
+(overriding a possibly matching phenomenona config). Each entry provides a title, upper and lower
+limit and some color hint a client may use to render properly.
+
+For example:
+
+```
+{
+ "phenomenonStyles": {
+ "3": {
+ "style": {
+ "chartType": "bar",
+ "properties": {
+ "interval": "byHour",
+ "width": 0.8,
+ "color": "#0000ff"
+ }
+ }
+ }
+ },
+ "datasetStyles": {
+ "2": {
+ "style": {
+ "chartType": "line",
+ "properties": {
+ "lineType": "solid",
+ "width": 1,
+ "color": "#1E90FF"
+ },
+ "referenceValueStyleProperties": {
+ "278" : {
+ "chartType": "line",
+ "properties": {
+ "lineType": "solid",
+ "width": 1,
+ "color": "#1E90FF"
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+{:.n52-callout .n52-callout-info}
+`timeseriesStyles` and `seriesStyles` mean the same as `datasetStyles` and is kept
+for backwards compatibility reasons.
\ No newline at end of file
diff --git a/web-resources/docs/_includes/extensions/result_time.md b/web-resources/docs/_includes/extensions/result_time.md
new file mode 100644
index 000000000..8b8816dda
--- /dev/null
+++ b/web-resources/docs/_includes/extensions/result_time.md
@@ -0,0 +1,11 @@
+
+Next to the actual phenomenon time observation data may have a `resultTime` which
+indicates when the data became available. An example for such cases is forecast data
+which may be (re-)calculated multiple times (optionally based on multiple models).
+Getting the right data values (belonging to a specific result time) a client can add
+the `resultTime=...` parameter when querying `datasets//data`.
+
+In case of existing result times (which have to be different to the actual phenomenon
+time) are available to a client as `extra` data for a given dataset.
+
+Once activated no specific configuration is neccessary.
\ No newline at end of file
diff --git a/web-resources/docs/_includes/extensions/status_intervals.md b/web-resources/docs/_includes/extensions/status_intervals.md
new file mode 100644
index 000000000..cd342f297
--- /dev/null
+++ b/web-resources/docs/_includes/extensions/status_intervals.md
@@ -0,0 +1,110 @@
+
+The data provider knows best how to interpret available data and can add domain specific information
+which may help to interpret data values of a particular dataset.Clients are then able to render data
+values (e.g. when rendering `lastValue`s on a map) by comparing against those intervals. This gives a
+user hints what data values actually mean and helps to avoid misunderstandings.
+
+The status intervals are available to a client as `extra` data for a given dataset.
+
+### Configuration Location
+
+Status intervals can be configured for datasets having a particular phenomenon or each individually
+(overriding a possibly matching phenomenona config). Each entry provides a title, upper and lower
+limit and some color hint a client may use to render properly.
+
+For example:
+
+```
+{
+ "phenomenonIntervals": {
+ "1": {
+ "statusIntervals": {
+ "90-100 Percent": {
+ "upper" : 100.0,
+ "lower" : 90.0,
+ "color" : "#0000FF"
+ },
+ "80-90 Percent": {
+ "upper" : 90.0,
+ "lower" : 80.0,
+ "color" : "#1C00E2"
+ },
+ "70-80 Percent": {
+ "upper" : 80.0,
+ "lower" : 70.0,
+ "color" : "#3800C6"
+ },
+ "60-70 Percent": {
+ "upper" : 70.0,
+ "lower" : 60.0,
+ "color" : "#5500AA"
+ },
+ "50-60 Percent": {
+ "upper" : 60.0,
+ "lower" : 50.0,
+ "color" : "#71008D"
+ },
+ "40-50 Percent": {
+ "upper" : 50.0,
+ "lower" : 40.0,
+ "color" : "#8D0071"
+ },
+ "30-40 Percent": {
+ "upper" : 40.0,
+ "lower" : 30.0,
+ "color" : "#AA0055"
+ },
+ "20-30 Percent": {
+ "upper" : 30.0,
+ "lower" : 20.0,
+ "color" : "#C60038"
+ },
+ "10-20 Percent": {
+ "upper" : 20.0,
+ "lower" : 10.0,
+ "color" : "#E2001C"
+ },
+ "0-10 Percent": {
+ "upper" : 10.0,
+ "lower" : 0.0,
+ "color" : "#FF0000"
+ }
+ }
+ }
+ },
+ "datasetIntervals": {
+ "10": {
+ "statusIntervals": {
+ ">20": {
+ "lower" : 20.0,
+ "color" : "#FF0000"
+ },
+ "15-20": {
+ "upper" : 20.0,
+ "lower" : 15.0,
+ "color" : "#BF003F"
+ },
+ "10-15": {
+ "upper" : 15.0,
+ "lower" : 10.0,
+ "color" : "#7F007F"
+ },
+ "5-10": {
+ "upper" : 10.0,
+ "lower" : 5.0,
+ "color" : "#3F00BF"
+ },
+ "0-5": {
+ "upper" : 5.0,
+ "lower" : 0.0,
+ "color" : "#0000FF"
+ }
+ }
+ }
+ }
+}
+```
+
+{:.n52-callout .n52-callout-info}
+`timeseriesStyles` and `seriesStyles` mean the same as `datasetStyles` and is kept
+for backwards compatibility reasons.
\ No newline at end of file
diff --git a/web-resources/docs/_includes/meta.html b/web-resources/docs/_includes/meta.html
new file mode 100644
index 000000000..d35265317
--- /dev/null
+++ b/web-resources/docs/_includes/meta.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% if page.excerpt %}
+
+
+ {% else %}
+
+
+ {% endif %}
+
+
+ {% if page.title %}
+
+
+ {% endif %}
diff --git a/web-resources/docs/_layouts/default.html b/web-resources/docs/_layouts/default.html
new file mode 100644
index 000000000..2801f5e44
--- /dev/null
+++ b/web-resources/docs/_layouts/default.html
@@ -0,0 +1,97 @@
+
+
+
+{% if page.title %}{{ page.title }} – {% endif %}{{ site.name }} – {{
+ site.description }} {% include meta.html %}
+
+
+
+
+
+
+
+
+
+
+