Skip to content

Commit b30a1fd

Browse files
committed
Add Remote UDP extension #515
1 parent 13dc6bb commit b30a1fd

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

CHANGELOG.md

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

77
## Unreleased / Draft
88

9+
### Added
10+
11+
- **New extensions:**
12+
- [Remote UDP Extension](./extensions/remote-udp/README.md)
13+
914
### Fixed
1015

1116
- `GET /file_formats`: Base paramater on top of normal JSON Schema, not Process JSON Schema

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ See also the [changelog](CHANGELOG.md) and the [milestones](https://github.com/O
3333
| ---------------------------------------------- | ------- | ------------ | ----------- |
3434
| [Commercial Data](extensions/commercial-data/) | 0.1.0 | experimental | Provides an interface for discovering, ordering and using commercial data. |
3535
| [Federation](extensions/federation/) | 0.1.0 | experimental | Covers federation aspects, i.e. where multiple back-ends are exposed as a single API. |
36+
| [Remote UDP](extensions/remote-udp/) | 0.1.0 | experimental | Load user-defined processes that are hosted on other hosts through the process namespace into process graphs. |
3637

3738
## Repository
3839

extensions/remote-udp/README.md

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Remote UDP Extension
2+
3+
The openEO API is a specification for interoperable cloud-based processing of large Earth observation datasets.
4+
5+
This extension enables user to load user-defined processes that are hosted on other hosts through the process namespace into process graphs.
6+
7+
- Version: **0.1.0**
8+
- Stability: **experimental**
9+
- Conformance class: `https://api.openeo.org/extensions/remote-udp/0.1.0`
10+
11+
## Justification
12+
13+
The openEO API defines the `namespace` property in a process node of a process graph as follows:
14+
> The following options are predefined by the openEO API, but additional namespaces may be introduced by back-ends or in a future version of the API.
15+
> * `null` [...]
16+
> * `backend` [...]
17+
> * `user` [...]
18+
19+
This makes it possible that this extension adds additional allowed values to the `namespace` property.
20+
21+
## Specification
22+
23+
This extension extends the `namespace` property of process graph nodes so that it accepts **absolute** URL with the protocols `https` (**recommended**) and `http` (discouraged). The URLs specified MUST either return
24+
25+
1. a single process (compatible to the endpoint `GET /process_graphs/{process_graph_id}`)
26+
2. a list of processes (compatible to the endpoint `GET /process_graphs`)
27+
28+
If a URL is provided for the `namespace` property, the `id` property of the process graph node MUST be set to the `id` of the process.
29+
30+
### Compatibility
31+
32+
Compatible means in this context that the requests and responses must comply to the openEO API specification with the following exceptions:
33+
34+
- The `Authorization` header is not required and will usually not be sent.
35+
- Lists of processes MUST NOT paginate and the full process description MUST be provided for each process (i.e., the recommendation to omit large properties such as `process_graph` doesn't apply).
36+
37+
### Web Considerations
38+
39+
The protocol `http` is discouraged for URLs as web-clients may not be able to retrieve HTTP URLs from a HTTPS context.
40+
Similarly, it is recommended to support CORS for all URLs.
41+
42+
### Error Handling
43+
44+
The following error SHOULD be reported if the namespace can't be resolved:
45+
46+
- Code: `ProcessNamespaceInvalid`
47+
- Message: `The value passed for namespace '{namespace}' in process '{process}' is invalid: {reason}`
48+
- HTTP Status Code: 400
49+
50+
## Example
51+
52+
An exemplary process graph node:
53+
54+
``````json
55+
{
56+
"process_id": "echo",
57+
"namespace": "https://hub.openeo.org/processes/echo",
58+
"arguments": {
59+
"message": "Hello World"
60+
},
61+
"result": true
62+
}
63+
``````

0 commit comments

Comments
 (0)