You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/collections.md
+3-2
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Data Discovery (Collections)
2
2
3
-
openEO strives for compatibility with [STAC](https://github.com/radiantearth/stac-spec) and [OGC WFS](https://github.com/opengeospatial/WFS_FES) as far as possible. Implementing the data discovery endpoints of openEO should also produce valid STAC 0.6 and WFS 3.0 responses, including an incomplete compatibility with their APIs (see below).
3
+
openEO strives for compatibility with [STAC](https://github.com/radiantearth/stac-spec) and [OGC WFS](https://github.com/opengeospatial/WFS_FES) as far as possible. Implementing the data discovery endpoints of openEO should also produce valid STAC 0.6 and WFS 3.0 responses, including a partial compatibility with their APIs (see below).
4
4
5
5
**WARNING**: STAC and OGC WFS 3, as well as openEO, are still under development.
6
6
Therefore, it is very likely that further changes and adjustments will be made in the future.
@@ -15,7 +15,8 @@ Some commonly used extensions that are integrated in the openEO API specificatio
Copy file name to clipboardExpand all lines: docs/errors.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -48,7 +48,7 @@ The openEO API usually uses the following HTTP status codes for successful reque
48
48
49
49
The openEO API often uses the following HTTP status codes for failed requests:
50
50
51
-
-**400 Bad request**:
51
+
-**400 Bad Request**:
52
52
The back-end responds with this error code whenever the error has its origin on client side and no other HTTP status code in the 400 range is suitable.
53
53
54
54
-**401 Unauthorized**:
@@ -64,7 +64,7 @@ The openEO API often uses the following HTTP status codes for failed requests:
64
64
-**500 Internal Server Error**:
65
65
The error has its origin on server side and no other status code in the 500 range is suitable.
66
66
67
-
-**501 Not implemented**:
67
+
-**501 Not Implemented**:
68
68
An endpoint is specified in the openEO API, but is not supported.
Copy file name to clipboardExpand all lines: docs/gettingstarted-backends.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -8,17 +8,17 @@ If your preferred technology has no back-end driver yet, you may consider writin
8
8
9
9
You certainly need to understand the [architecture](arch.md) of openEO and concepts behind [jobs](jobs.md), [processes](processes.md) and [process graphs](processgraphs.md). This helps you read and understand the [API specification](apireference.md). Technical API related documents like [CORS](cors.md) and [error handing](errors.md) should be read, too.
10
10
11
-
If you do not want to start from scratch, you could try to generate a server stub from the [OpenAPI 3.0](https://www.openapis.org/)-based [API specification](apireference.md) with the [Swagger code generator](https://github.com/swagger-api/swagger-codegen). If you are using Python or NodeJS to implement your driver you may re-use some common modules of existing driver implementations:
11
+
If you do not want to start from scratch, you could try to generate a server stub from the [OpenAPI 3.0](https://www.openapis.org/)-based [API specification](apireference.md) with the [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator). If you are using Python implement your driver you may re-use some common modules of existing driver implementations:
You can implement a back-end in iterations. It is recommended to start by implementing the [Capabilities](apireference.md#tag/Capabilities) microservice. [EO Data Discovery](apireference.md#tag/EO-Data-Discovery), [Process Discovery](apireference.md#tag/Process-Discovery) are important for the client libraries to be available, too. Afterwards you should implement [Batch Job Management](apireference.md#tag/Batch-Job-Management) or [synchronous data processing](apireference.md#/paths/~1result/post). All other microservices can be added later and are not strictly required to run openEO services. Keep in mind that you don't need to implement all endpoints in the first iteration and that you can specify in the Capabilities, which endpoints you are supporting.
17
16
18
17
For example, you could start by implementing the following endpoints in the first iteration:
19
18
19
+
* Well-Known Document: `GET /.well-known/openeo`
20
20
* Capabilities: `GET /` and `GET /output_formats`
21
-
* Data discovery: `GET /collections` and `GET /collections/{name}`
21
+
* Data discovery: `GET /collections` and `GET /collections/{collection_id}`
Copy file name to clipboardExpand all lines: docs/gettingstarted-clients.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ If your preferred programming language is not part of the [available client libr
8
8
9
9
Get started by reading the [guidelines to develop client libraries](guidelines-clients.md), which have been written to ensure the client libraries provide a consistent feel and behavior across programming languages. You certainly need to understand the concepts behind [jobs](jobs.md), [processes](processes.md) and [process graphs](processgraphs.md). This helps you understand the [API specification](apireference.md) and related documents.
10
10
11
-
If you do not want to start from scratch, you could try to generate a client library stub from the [OpenAPI 3.0](https://www.openapis.org/)-based [API specification](apireference.md) with the [Swagger code generator](https://github.com/swagger-api/swagger-codegen). Make sure the generated code complies to the client library guidelines mentioned above.
11
+
If you do not want to start from scratch, you could try to generate a client library stub from the [OpenAPI 3.0](https://www.openapis.org/)-based [API specification](apireference.md) with the [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator). Make sure the generated code complies to the client library guidelines mentioned above.
12
12
13
13
*More information will follow soon, for example about client testing.*
Copy file name to clipboardExpand all lines: docs/glossary.md
+16-8
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ A **process graph** chains specific process calls. Similarly to scripts in the c
19
19
20
20
## EO data (Collections)
21
21
22
-
In our domain, different terms are used to describe EO data(sets). Within openEO, a **granule**(sometimes also called *item* or *asset* in the specification) typically refers to a limited area and a single overpass leading to a very short observation period (seconds) or a temporal aggregation of such data (e.g. for 16-day MODIS composites) while a **collection** is an aggregation of granules sharing the same product specification. It typically corresponds to the series of products derived from data acquired by a sensor on board a satellite and having the same mode of operation.
22
+
In our domain, different terms are used to describe EO data(sets). Within openEO, a **granule**(sometimes also called *item* or *asset* in the specification) typically refers to a limited area and a single overpass leading to a very short observation period (seconds) or a temporal aggregation of such data (e.g. for 16-day MODIS composites) while a **collection** is an aggregation of granules sharing the same product specification. It typically corresponds to the series of products derived from data acquired by a sensor on board a satellite and having the same mode of operation.
23
23
24
24
The [CEOS OpenSearch Best Practice Document v1.2](http://ceos.org/ourwork/workinggroups/wgiss/access/opensearch/) lists synonyms used (by organizations) for:
25
25
@@ -36,12 +36,12 @@ The figure below shows the data of
36
36
a four-dimensional (8 x 8 x 2 x 2) raster data cube, with dimension names
dimensions x and time are aligned along the x-axis; y and band are aligned along the y-axis.
47
47
@@ -128,4 +128,12 @@ When the target grid or time series has a lower resolution (larger grid cells) o
128
128
129
129
### User-defined function (UDF)
130
130
131
-
The abbreviation **UDF** stands for **user-defined function**. With this concept, users are able to upload custom code and have it executed e.g. for every pixel of a scene, or applied to a particular dimension or set of dimensions, allowing custom server-side calculations. See the section on [UDFs](udfs.md) for more information.
131
+
The abbreviation **UDF** stands for **user-defined function**. With this concept, users are able to upload custom code and have it executed e.g. for every pixel of a scene, or applied to a particular dimension or set of dimensions, allowing custom server-side calculations. See the section on [UDFs](udfs.md) for more information.
132
+
133
+
# Data Processing modes
134
+
135
+
Process graphs can be processed in three different ways:
136
+
137
+
1. Results can be pre-computed by creating a ***batch job*** using `POST /jobs`. They are submitted to the back-end's processing system, but will remain inactive until `POST /jobs/{job_id}/results` has been called. They will run only once and store results after execution. Results can be downloaded. Batch jobs are typically time consuming so that user interaction is not possible. This is the only mode that allows to get an estimate about time, volume and costs beforehand.
138
+
2. A more dynamic way of processing and accessing data is to create a **secondary web service**. They allow web-based access using different protocols such as [OGC WMS](http://www.opengeospatial.org/standards/wms), [OGC WCS](http://www.opengeospatial.org/standards/wcs) or [XYZ tiles](https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames). These protocols usually allow users to change the viewing extent or level of detail (zoom level). Therefore, computations often run *on demand* so that the requested data is calculated during the request. Back-ends should make sure to cache processed data to avoid additional/high costs and reduce waiting times for the user.
139
+
3. Process graphs can also be executed **on-demand** (i.e. synchronously) by sending the process graph to `POST /result`. Results are delivered with the request itself and no job is created. Only lightweight computations, for example small previews, should be executed using this approach as timeouts are to be expected for [long-polling HTTP requests](https://www.pubnub.com/blog/2014-12-01-http-long-polling/).
Copy file name to clipboardExpand all lines: docs/guidelines-api.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -14,13 +14,13 @@ In the specification the key words “MUST”, “MUST NOT”, “REQUIRED”,
14
14
15
15
Unless otherwise stated the API works case sensitive.
16
16
17
-
All names SHOULD be written in snake case, i.e. words are separated with oneunderscorecharacter (_) and no spaces, with all letters lowercased. Example: `hello_world`. This applies particularly to endpoints and JSON property names. HTTP header fields follow their respective casing conventions, e.g. `Content-Type` or `OpenEO-Costs`, despite being case-insensitive according to [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2).
17
+
All names SHOULD be written in snake case, i.e. words are separated with oneunderscorecharacter (_) and no spaces, with all letters lowercased. Example: `hello_world`. This applies particularly to endpoints and JSON property names. HTTP header fields follow their respective casing conventions, e.g. `Content-Type` or `OpenEO-Costs`, despite being case-insensitive according to [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2).
18
18
19
19
## Technical requirements
20
20
21
21
### HTTP
22
22
23
-
The API developed by the openEO project uses [HTTP REST](https://en.wikipedia.org/wiki/Representational_state_transfer)[Level 2](https://martinfowler.com/articles/richardsonMaturityModel.html#level2) for communication between client and back-end server.
23
+
The API developed by the openEO project uses [HTTP REST](https://en.wikipedia.org/wiki/Representational_state_transfer)[Level 2](https://martinfowler.com/articles/richardsonMaturityModel.html#level2) for communication between client and back-end server.
24
24
25
25
Public APIs MUST be available via HTTPS only and all inbound calls MUST be HTTPS.
0 commit comments