|
| 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