Skip to content

Commit 293b67c

Browse files
authored
Merge pull request #308 from Open-EO/draft - release 1.0.0
2 parents 1247172 + 760e075 commit 293b67c

15 files changed

+2237
-2546
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,5 @@ __pycache__/
22
package-lock.json
33
node_modules/
44
/redoc.html
5+
.vscode
6+
.idea

.spectral.yml

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
extends: "spectral:oas"
2+
# don't error on circular schemas, these are currently not supported by spectral
3+
# https://github.com/stoplightio/spectral/issues/894
4+
except:
5+
"openapi.yaml#/components/schemas/process_graph/example":
6+
- oas3-valid-schema-example
7+
"openapi.yaml#/paths/~1processes/get/responses/200/content/application~1json/example":
8+
- oas3-valid-oas-content-example
9+
"openapi.yaml#/paths/~1process_graphs/get/responses/200/content/application~1json/example":
10+
- oas3-valid-oas-content-example
11+
"openapi.yaml#/paths/~1service_types/get/responses/200/content/application~1json/example":
12+
- oas3-valid-oas-content-example
13+
"openapi.yaml#/paths/~1file_formats/get/responses/200/content/application~1json/example":
14+
- oas3-valid-oas-content-example
15+
rules:
16+
# Ported from Spectral 4.0
17+
contact-properties: true
18+
tag-description: true
19+
oas3-parameter-description: true
20+
operation-summary-formatted:
21+
description: Operation `summary` should start with upper case and not end with a dot.
22+
recommended: true
23+
type: style
24+
given: '$.paths.*[?( @property === ''get'' || @property === ''put'' || @property === ''post'' || @property === ''delete'' || @property === ''options'' || @property === ''head'' || @property === ''patch'' || @property === ''trace'' )]'
25+
then:
26+
field: summary
27+
function: pattern
28+
functionOptions:
29+
match: '^[A-Z].*[^\.]$'
30+
tags:
31+
- operation
32+
operation-id-kebab-case:
33+
given: "$"
34+
then:
35+
function: pattern
36+
functionOptions: # this object be passed down as options to the custom function
37+
match: ^[a-z][a-z0-9\-]*$

.travis.yml

+2-19
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,13 @@
1-
language: python
2-
3-
python:
4-
- "3.5"
1+
language: node_js
52

63
node_js:
74
- "8"
85

96
sudo: required
107

11-
before_install:
12-
# Speccy
13-
- npm install -g speccy
14-
- speccy lint openapi.yaml -r tests/speccy.yml
15-
# OpenAPI Spec Validator
16-
- pip install openapi-spec-validator
17-
- openapi-spec-validator openapi.yaml
18-
# DIY example validation (PR#194)
19-
- pip install -r tests/requirements.txt
20-
- pytest tests
21-
# ToDo: Check assets/pg-evi-example.json against the schema in pg-schema.json
22-
238
install:
249
- npm install
10+
- npm test
2511

2612
script:
2713
- npm run build
@@ -33,7 +19,6 @@ before_deploy:
3319
if [[ $TRAVIS_BRANCH == 'master' ]] ; then
3420
cp ../redoc.html index.html
3521
cp ../errors.json errors.json
36-
cp ../subtype-schemas.json subtype-schemas.json
3722
cp -r ../assets assets
3823
fi
3924
- |
@@ -42,7 +27,6 @@ before_deploy:
4227
mkdir -p draft
4328
cp ../redoc.html draft/index.html
4429
cp ../errors.json draft/errors.json
45-
cp ../subtype-schemas.json draft/subtype-schemas.json
4630
cp -r ../assets draft/assets
4731
fi
4832
- |
@@ -51,7 +35,6 @@ before_deploy:
5135
mkdir -p $TRAVIS_TAG
5236
cp ../redoc.html $TRAVIS_TAG/index.html
5337
cp ../errors.json $TRAVIS_TAG/errors.json
54-
cp ../subtype-schemas.json $TRAVIS_TAG/subtype-schemas.json
5538
cp -r ../assets $TRAVIS_TAG/assets
5639
fi
5740

CHANGELOG.md

+64-1
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,72 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## Unreleased / Draft
88

9+
10+
## 1.0.0 - 2020-07-17
11+
12+
### Added
13+
- `GET /me`: Added optional `name` property to better separate an internal user id from a displayable user name. Adopted description of `user_id` accordingly.
14+
- `GET /udf_runtimes`:
15+
- Added optional `title` property for UDF runtimes. [#266](https://github.com/Open-EO/openeo-api/issues/266)
16+
- Added required `type` property for UDF runtimes to support better code generation.
17+
- `GET /service_types`: Added optional `title` and `description` properties for service types. [#266](https://github.com/Open-EO/openeo-api/issues/266)
18+
- `GET /file_formats`: Added optional `description` property for file formats. [#266](https://github.com/Open-EO/openeo-api/issues/266)
19+
- `GET /collections/{collection_id}` and `GET /processes`: Mention of link `rel` type `example` to refer to examples. [#285](https://github.com/Open-EO/openeo-api/issues/285)
20+
- `GET /collections/{collection_id}`: Added optional `assets` property for collection-level assets. This may link to visualizations for example. [#211](https://github.com/Open-EO/openeo-api/issues/211)
21+
- `GET /collections`, `GET /jobs`, `GET /process_graphs`, `GET /Services`: Allow all non-scalar properties to be part of the response although strongly discouraged.
22+
23+
### Changed
24+
- `GET /credentials/oidc`: field `scopes` is not required anymore, but when specified, it should contain the `openid` scope. [#288](https://github.com/Open-EO/openeo-api/pull/288)
25+
- `GET /.well-known/openeo` and `GET /`: `production` fields default to `false` instead of `true`.
26+
- `GET /jobs/{job_id}/logs` and `GET /services/{service_id}/logs`: `path` property is not required any longer. [#320](https://github.com/Open-EO/openeo-api/issues/320)
27+
- `GET /file_formats`: `parameters` is now required for each file format. [#318](https://github.com/Open-EO/openeo-api/issues/318)
28+
- `GET /service_types`: `configuration` and `process_parameters` are now required for each service. [#318](https://github.com/Open-EO/openeo-api/issues/318)
29+
- `GET /service_types` and `GET /file_formats`:
30+
- Allow full JSON Schema for parameters, instead of a very limited subset.
31+
- Instead of the proprietary property `example` use `examples` from JSON Schema instead.
32+
- `GET /collections` and `GET /collections/{collection_id}`:
33+
- Additional dimensions in `cube:properties` can only be of type `other`.
34+
- The extents `interval` and `bbox` can have multiple entries.
35+
- Allow all STAC versions that are compatible to STAC 0.9.0.
36+
- Process graph nodes have an additional field `namespace` to distinguish pre-defined and user-defined processes. The default behavior has not changed. [#305](https://github.com/Open-EO/openeo-api/issues/305)
37+
- Added `format: commonmark` to all properties supporting CommonMark formatting.
38+
- `errors.json`: The pre-defined error messages have been reworked. [#272](https://github.com/Open-EO/openeo-api/issues/272), [#273](https://github.com/Open-EO/openeo-api/issues/273)
39+
- Added `FolderOperationUnsupported`, `UnsupportedApiVersion`, `PermissionsInsufficient`, `ProcessGraphIdDoesntMatch` and `PredefinedProcessExists`.
40+
- Added variable `reason` to error `FilePathInvalid` and `type` to `FileTypeInvalid` and`ServiceUnsupported`.
41+
- Replaced the following error messages. The variables in the messages may have changed, too.
42+
- `ProcessArgumentUnsupported` -> `ProcessParameterUnsupported`
43+
- `ProcessArgumentInvalid` -> `ProcessParameterInvalid`
44+
- `ProcessParameterMissing` and `ProcessArgumentRequired` -> `ProcessParameterRequired`
45+
- `ServiceArgumentUnsupported` -> `ServiceConfigUnsupported`
46+
- `ServiceArgumentInvalid` -> `ServiceConfigInvalid`
47+
- `ServiceArgumentRequired` -> `ServiceConfigRequired`
48+
- Removed all error messages with tag `Processes` (`CRSInvalid`, `CoordinateOutOfBounds`) or related to storing file formats (`FormatUnsupported`, `FormatArgumentUnsupported`, `FormatArgumentInvalid`, `FormatUnsuitable`) as they are usually defined directly in the process specification as `exceptions`.
49+
50+
### Removed
51+
- `GET /processes`: Examples containing process graphs. Use links with `rel` type `example` and `type` set to `application/json` instead. [#285](https://github.com/Open-EO/openeo-api/issues/285)
52+
- `subtype-schemas.json`. It's now published as part of [openeo-processes](https://github.com/Open-EO/openeo-processes/blob/master/meta/subtype-schemas.json).
53+
54+
### Fixed
55+
- `/.well-known/openeo`:
56+
- Clarified that version numbers must be unique. [#287](https://github.com/Open-EO/openeo-api/issues/287)
57+
- Clarified that non-production ready versions should be connected to if no production-ready version is supported. [#289](https://github.com/Open-EO/openeo-api/issues/289)
58+
- `GET /jobs/{job_id}/results`: Clarified that unlocated results set `geometry` to `null` and omit the `bbox` property.
59+
- `GET /jobs/{job_id}/logs`: Clarified that back-ends can log at any stage of the job. [#315](https://github.com/Open-EO/openeo-api/issues/315)
60+
- `POST /jobs` and `POST /services`: Clarified definition of `Location` header in `HTTP 201` responses. [#269](https://github.com/Open-EO/openeo-api/issues/269)
61+
- `GET /service/{service_id}`: Property `configuration` is required instead of a non-existing property named `parameters`.
62+
- `POST /validation`: Clarify that unresolvable process parameters must not throw. [#314](https://github.com/Open-EO/openeo-api/issues/314)
63+
- Formally forbid 5 elements in bounding boxes.
64+
- Re-use corresponding schema for header `OpenEO-Identifier` (adds `pattern`).
65+
- Parameters passed to child process graphs are not defined recursively any longer. [#268](https://github.com/Open-EO/openeo-api/issues/268)
66+
- Parameters for child process graphs are not specified for return values and service type parameters any longer. [#268](https://github.com/Open-EO/openeo-api/issues/268)
67+
- Clarified the expected behavior for process parameters, if a default value is given and the parameter is implicitly set to be required. [#303](https://github.com/Open-EO/openeo-api/issues/303)
68+
- Several clarifications and improvements for the documentation.
69+
970
## 1.0.0-rc.2 - 2020-02-20
1071

1172
### Added
1273
- `PUT /process_graphs/{process_graph_id}` to store and replace custom process-graphs. [#260](https://github.com/Open-EO/openeo-api/issues/260)
13-
- `/jobs/{job_id}/logs` and `GET /services/{service_id}/logs`: Reintroduced the missing `offset` parameter.
74+
- `GET .../logs`: Reintroduced the missing `offset` parameter.
1475

1576
### Changed
1677
- For batch jobs (`/jobs`), services (`/services`) and sync. processing (`/result`) the property `process_graph` got replaced by `process`. It contains a process graph and optionally all process metadata. [#260](https://github.com/Open-EO/openeo-api/issues/260)
@@ -32,6 +93,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3293
- Clarified that back-ends not supporting pagination will return all resources.
3394
- Clarified how `from_parameter` is resolved in case no value is given.
3495
- Clarified `GET .../logs` endpoint behaviour.
96+
- Clarify difference between STAC specification and STAC API.
97+
- Clarify that a copy of the STAC Item is recommended to be part of the assets in a batch job download.
3598
- Removed outdated error codes from `errors.json`.
3699

37100
## 1.0.0-rc.1 - 2020-01-31

README.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@ openEO develops an open API to connect R, Python and JavaScript clients to big E
66

77
## Versions / Branches
88

9-
The [master branch](https://github.com/Open-EO/openeo-api/tree/master) is the 'stable' version of the openEO API specification. It is currently version **1.0.0-rc.2** of the specification. The [draft branch](https://github.com/Open-EO/openeo-api/tree/draft) is where active development takes place.
9+
The [master branch](https://github.com/Open-EO/openeo-api/tree/master) is the 'stable' version of the openEO API specification. It is currently version **1.0.0** of the specification. The [draft branch](https://github.com/Open-EO/openeo-api/tree/draft) is where active development takes place.
1010

1111
| Version / Branch | Status | Description |
1212
| --------------------------------------------------------- | ----------- | ----------- |
13-
| [draft](https://api.openeo.org/draft) | planned | *Unstable* - Bug fixes based on developer feedback, introduce extension concept. Potentially version 1.0.0-final. |
14-
| [**1.0.0-rc.2**](https://api.openeo.org) | **current** | Release candidate 2 for first stable version of openEO, see the [changelog](CHANGELOG.md#100-rc2---2020-02-20). |
15-
| [1.0.0-rc.1](https://api.openeo.org/1.0.0-rc.1) | legacy | Release candidate 1 for first stable version of openEO, see the [changelog](CHANGELOG.md#100-rc1---2020-01-31). |
16-
| [0.4.2](https://api.openeo.org/v/0.4.2) | legacy | Bugfix release, see the [changelog](CHANGELOG.md#042---2019-06-11). |
17-
| [0.4.1](https://api.openeo.org/v/0.4.1) | legacy | Bugfix release, see the [changelog](CHANGELOG.md#041---2019-05-29). |
18-
| [0.4.0](https://api.openeo.org/v/0.4.0) | legacy | Improved discovery, added processes catalogue, new process graph structure and [more](CHANGELOG.md#040---2019-03-07). |
19-
| [0.3.1](https://api.openeo.org/v/0.3.1) | legacy | Fixing minor issues, see the [changelog](CHANGELOG.md#031---2018-11-06). |
13+
| [draft](https://api.openeo.org/draft) | planned | *Unstable* - Next version. |
14+
| [**1.0.0**](https://api.openeo.org) | **current** | First stable version of openEO. [Changelog](CHANGELOG.md#100---2020-07-17). |
15+
| [1.0.0-rc.2](https://api.openeo.org/1.0.0-rc.2) | legacy | Introduced user-defined processes. [Changelog](CHANGELOG.md#100-rc2---2020-02-20). |
16+
| [1.0.0-rc.1](https://api.openeo.org/1.0.0-rc.1) | legacy | Better UDF support, support for file import, support for processing logs, better alignment with STAC and upcoming OGC APIs. Removes WebSocket-based Subscription API. [Changelog](CHANGELOG.md#100-rc1---2020-01-31) |
17+
| [0.4.2](https://api.openeo.org/v/0.4.2) | legacy | Bugfix release. [Changelog](CHANGELOG.md#042---2019-06-11). |
18+
| [0.4.1](https://api.openeo.org/v/0.4.1) | legacy | Bugfix release. [Changelog](CHANGELOG.md#041---2019-05-29). |
19+
| [0.4.0](https://api.openeo.org/v/0.4.0) | legacy | Improved discovery, added processes catalogue, new process graph structure. [Changelog](CHANGELOG.md#040---2019-03-07). |
20+
| [0.3.1](https://api.openeo.org/v/0.3.1) | legacy | Bugfix release. [Changelog](CHANGELOG.md#031---2018-11-06). |
2021
| [0.3.0](https://api.openeo.org/v/0.3.0) | legacy | Major rework. |
2122
| [0.0.2](https://github.com/Open-EO/openeo-api/tree/0.0.2) | legacy | Proof of concept, implemented. |
2223
| [0.0.1](https://github.com/Open-EO/openeo-api/tree/0.0.1) | legacy | First draft with basic ideas, loosely implemented. |
@@ -29,5 +30,4 @@ This repository contains a set of files formally describing the openEO API, each
2930

3031
* [openapi.yaml](openapi.yaml) provides the [OpenAPI](https://www.openapis.org/) 3.0 definition of the openEO API. See the table above for human-readable versions of the OpenAPI definition.
3132
* [errors.json](errors.json) is a list of potential global error codes and messages, excluding specific exceptions separately available for each process.
32-
* [subtype-schema.json](subtype-schema.json) defines data types (subtypes) for JSON Schema used in openEO.
3333
* The [assets](assets/) folder contains some useful additional files such as examples or schemas. All of these are non-binding additions. The source of truth are the top-level specification files.

assets/pg-evi-example.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"dc": {
33
"process_id": "load_collection",
4-
"description": "Loading the data.",
4+
"description": "Loading the data",
55
"arguments": {
66
"id": "Sentinel-2",
77
"spatial_extent": {
@@ -115,7 +115,7 @@
115115
}
116116
}
117117
},
118-
"p3": {
118+
"m3": {
119119
"process_id": "multiply",
120120
"arguments": {
121121
"x": 2.5,

assets/pg-evi-example.png

-117 Bytes
Loading

assets/pg-schema.json

+9-6
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,15 @@
2424
],
2525
"properties": {
2626
"process_id": {
27-
"$ref": "#/definitions/process_id"
27+
"type": "string",
28+
"pattern": "^\\w+$"
29+
},
30+
"namespace": {
31+
"type": [
32+
"string",
33+
"null"
34+
],
35+
"default": null
2836
},
2937
"result": {
3038
"type": "boolean",
@@ -127,11 +135,6 @@
127135
}
128136
}
129137
]
130-
},
131-
"process_id": {
132-
"type": "string",
133-
"subtype": "process-id",
134-
"pattern": "^\\w+$"
135138
}
136139
}
137140
}

0 commit comments

Comments
 (0)