-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Processing Parameters Extension #276 #545 #471
Open
m-mohr
wants to merge
8
commits into
draft
Choose a base branch
from
processing-parameters
base: draft
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
0de6500
Jobs and services: Added `create_parameters` property in responses to…
m-mohr f03f747
Merge remote-tracking branch 'origin/draft' into processing-parameters
m-mohr e3265f7
Add processing options to a separate endpoint #276
m-mohr da3ca56
Merge branch 'draft' into processing-parameters
m-mohr 514b35b
Options should be optional
m-mohr 830f9c2
Move to an extension
m-mohr da2eefe
Add UDP extension
m-mohr 917a3fd
Apply suggestions from code review
m-mohr File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
extends: "spectral:oas" | ||
rules: | ||
contact-properties: true | ||
tag-description: true | ||
oas3-parameter-description: true | ||
oas3-unused-component: true | ||
operation-id-kebab-case: | ||
given: "$..operationId" | ||
then: | ||
function: pattern | ||
functionOptions: | ||
match: ^[a-z][a-z0-9\-]*$ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# Processing Parameters Extension | ||
|
||
The Processing Parameters Extension to the openEO API provides an interface to explore and handle additional processing options that a back-end can offer for the three processing modes (synchronous processing, batch jobs, secondary web services). | ||
|
||
- Version: **0.1.0** | ||
- Stability: **experimental** | ||
- [OpenAPI document](openapi.yaml) | ||
- Conformance class: `https://api.openeo.org/extensions/processing-parameters/0.1.0` | ||
|
||
**Note:** This document only documents the additions to the specification. | ||
Extensions can not change or break existing behavior of the openEO API. | ||
|
||
This extension adds a new endpoint (`GET /processing_options`, see [OpenAPI document](openapi.yaml)) | ||
to discover the additional processing options that a back-end offers. | ||
|
||
Additionally, this extension allows to provide specific default values for user-defined processes (UDPs, see below). | ||
|
||
In both cases, the parameters and its values are provided separately for each processing mode. | ||
|
||
## Processing Parameters in UDPs | ||
|
||
UDPs can provide default values for specific processing parameters. | ||
|
||
The values for each parameter are provided separately for each processing mode. | ||
The following properties are added to the top-level of a UDP for the respective processing modes: | ||
|
||
- `default_synchronous_parameters` for synchronous processing | ||
- `default_job_parameters` for batch jobs | ||
- `default_service_parameters` for secondary web services | ||
|
||
The schema for each of these properties is: | ||
|
||
```yaml | ||
type: object | ||
additionalProperties: | ||
description: Any type | ||
``` | ||
|
||
The keys of the object are the respective parameter names. | ||
The values of the object are the default values for the parameters. | ||
Schematic restrictions are not defined for the object, but the schemas for the parameters as defined in `GET /processing_options` apply to the given values. | ||
These values provide the defaults unless a user overrides them in the actual data processing request (e.g. `POST /jobs`, see below). | ||
|
||
## Resolving parameters | ||
|
||
Due to the variety of places where processing parameters can be provided, the following | ||
list defines how the parameters must be resolved. The prioritization is as follows: | ||
|
||
1. If present, use the parameter specified in the processing request directly (e.g. in `POST /jobs` as a top-level property) | ||
2. If present, use the default parameter specified in the UDP | ||
3. Otherwise, use the default value for the parameter as specified in `GET /processing_options` | ||
|
||
"Present" means that the property is present in the JSON representation regardless of the value given, i.e. | ||
properties are present if an empty string, an empty array, an empty object, `false`, `0`, or `null` are provided. | ||
|
||
Unrecognized/unknown parameters that are provided through UDPs must be ignored by backends. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
openapi: 3.0.2 | ||
info: | ||
title: openEO API - Processing Parameters Extension | ||
version: 0.1.0 | ||
description: >- | ||
The Processing Parameters Extension to the openEO API provides an interface to explore and handle additional processing options that a back-end can offer for the three processing modes (synchronous processing, batch jobs, and secondary web services). | ||
The openEO API specification allows back-ends to accept "additional back-end specific properties" for each of the processing modes. | ||
As the openEO API specification does not define the name and schemas of these properties, this extension provides a standardized way to define and document these properties. | ||
contact: | ||
name: openEO Consortium | ||
url: 'https://openeo.org' | ||
email: [email protected] | ||
license: | ||
name: Apache 2.0 | ||
url: 'http://www.apache.org/licenses/LICENSE-2.0.html' | ||
externalDocs: | ||
url: https://github.com/Open-EO/openeo-api/blob/draft/extensions/workspaces/README.md | ||
tags: | ||
- name: Capabilities | ||
description: General information about the API implementation and other supported capabilities provided by the back-end. | ||
- name: Data Processing | ||
description: Organizes and manages data processing on the back-end, either as synchronous on-demand computation or batch jobs. | ||
- name: Batch Jobs | ||
description: Management of batch processing tasks (jobs) and their results. | ||
- name: Secondary Services | ||
description: On-demand access to data using other web service protocols. | ||
servers: | ||
- url: 'https://openeo.example/api/{version}' | ||
description: >- | ||
The URL of the API MAY freely be chosen by the back-end providers. The | ||
path, including API versioning, is a *recommendation* only. Nevertheless, | ||
all servers MUST support HTTPS as the authentication methods are not | ||
secure with HTTP only! | ||
variables: | ||
version: | ||
default: v1 | ||
description: >- | ||
API versioning is RECOMMENDED. As the openEO API is following | ||
[SemVer](https://semver.org/) only the MAJOR part of the stable | ||
version numbers (i.e. versions >= 1.0.0) SHOULD be used for API | ||
versioning in the URL. The reason is that backward-incompatible | ||
changes are usually introduced by major changes. Therefore, the | ||
version number in the URL MUST not be used by the clients to detect | ||
the version number of the API. Use the version number returned from | ||
`GET /` instead. | ||
paths: | ||
/processing_options: | ||
get: | ||
summary: Additional processing options | ||
operationId: list-processing-options | ||
description: |- | ||
Lists additional custom processing options | ||
that a back-end offers for the different processing modes (synchronous processing, batch jobs, secondary web services). | ||
The options specified here can be added to the corresponding `POST` requests at the top-level of the object that is sent as the payload. | ||
All options SHOULD explicitly be made optional with reasonable defaults as otherwise the interoperability between the implementations decreases. | ||
tags: | ||
- Capabilities | ||
- Data Processing | ||
- Batch Jobs | ||
- Secondary Services | ||
security: | ||
- {} | ||
- Bearer: [] | ||
responses: | ||
'200': | ||
description: >- | ||
An object with a list of parameters per processing mode. | ||
content: | ||
application/json: | ||
schema: | ||
description: Processing parameters per processing mode. | ||
type: object | ||
properties: | ||
create_job_parameters: | ||
$ref: '#/components/schemas/processing_create_parameters' | ||
create_service_parameters: | ||
$ref: '#/components/schemas/processing_create_parameters' | ||
create_synchronous_parameters: | ||
$ref: '#/components/schemas/processing_create_parameters' | ||
components: | ||
schemas: | ||
processing_create_parameters: | ||
title: Creation Parameters | ||
description: |- | ||
List of additional custom parameters that a back-end offers during the creation | ||
of batch jobs (`POST /jobs`) and secondary web services (`POST /services`) respectively. | ||
type: array | ||
items: | ||
$ref: '../../openapi.yaml#/components/schemas/parameter' | ||
example: | ||
- name: memory | ||
description: Maximum amount of memory that will be allocated for processing, in gigabytes. | ||
optional: true | ||
default: 32 | ||
schema: | ||
type: integer | ||
minimum: 1 | ||
securitySchemes: | ||
Bearer: | ||
$ref: '../../openapi.yaml#/components/securitySchemes/Bearer' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
{ | ||
"name": "@openeo/api-extension-processing-parameters", | ||
"version": "0.1.0", | ||
"author": "openEO Consortium", | ||
"license": "Apache-2.0", | ||
"description": "The openEO API specification.", | ||
"homepage": "https://openeo.org", | ||
"bugs": { | ||
"url": "https://github.com/Open-EO/openeo-api/issues" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/Open-EO/openeo-api.git" | ||
}, | ||
"devDependencies": { | ||
"@stoplight/spectral-cli": "^6.6.0", | ||
"redoc-cli": "^0.13.21" | ||
}, | ||
"scripts": { | ||
"start": "redoc-cli serve openapi.yaml --watch --options.expandResponses \"200,201,202,203,204\" --options.pathInMiddlePanel true", | ||
"build": "redoc-cli bundle openapi.yaml -o redoc.html --title \"openEO API - Processing Parameters Extension\" --cdn --options.expandResponses \"200,201,202,203,204\" --options.pathInMiddlePanel true", | ||
"test": "spectral lint openapi.yaml" | ||
} | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(feel free to ignore if this is too much bike-shedding)
I'm not sure if it is intentional and there is a reasoning behind it, but the current description mixes "parameter" and "option": "processing parameter extension",
GET /processing_options
,default_job_parameters
, ...To me, "parameter" sounds more like a non-concrete placeholder, while "option" sounds a bit more concrete (e.g. a value provided by the user to make a parameter concrete). So in that sense, I'd think that the naming should be switched to:
GET /processing_parameters
default_synchronous_options
,default_job_options
, ....I would also be fine with just collapsing everything to a single name, e.g. "option"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed, it should just be a single name for it. Not sure yet which is better, but something to consider. Will have another look tomorrow.