ogcapi_types/processes/
execute.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::{Map, Value};
5
6use crate::common::{Bbox, Link};
7
8#[derive(Serialize, Deserialize, Debug)]
9pub struct Execute {
10 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
11 pub inputs: HashMap<String, Input>,
12 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
13 pub outputs: HashMap<String, Output>,
14 #[serde(default)]
15 pub response: Response,
16 pub subscriber: Option<Subscriber>,
17}
18
19#[derive(Serialize, Deserialize, Debug)]
20#[serde(untagged)]
21pub enum Input {
22 InlineOrRefData(InlineOrRefData),
23 InlineOrRefDataArray(Vec<InlineOrRefData>),
24}
25
26#[derive(Serialize, Deserialize, Debug)]
27#[serde(untagged)]
28pub enum InlineOrRefData {
29 InputValueNoObject(InputValueNoObject),
30 QualifiedInputValue(QualifiedInputValue),
31 Link(Link),
32}
33
34#[derive(Serialize, Deserialize, Debug)]
35#[serde(untagged)]
36pub enum InputValueNoObject {
37 String(String),
38 Number(f64),
39 Integer(i64),
40 Boolean(bool),
41 Array(Vec<Value>),
42 }
46
47#[derive(Serialize, Deserialize, Debug)]
48pub struct BoundingBox {
49 pub bbox: Bbox,
50 pub crs: Option<String>,
51}
52
53#[derive(Serialize, Deserialize, Debug)]
54pub struct QualifiedInputValue {
55 pub value: InputValue,
56 #[serde(flatten)]
57 pub format: Format,
58}
59
60#[derive(Serialize, Deserialize, Debug)]
61#[serde(untagged)]
62pub enum InputValue {
63 InputValueNoObject(InputValueNoObject),
64 Object(Map<String, Value>),
65}
66
67#[derive(Serialize, Deserialize, Debug)]
68#[serde(rename_all = "camelCase")]
69pub struct Output {
70 pub format: Option<Format>,
71 #[serde(default)]
72 pub transmission_mode: TransmissionMode,
73}
74
75#[derive(Serialize, Deserialize, Debug)]
76#[serde(rename_all = "camelCase")]
77pub struct Format {
78 pub media_type: Option<String>,
79 pub encoding: Option<String>,
80 pub schema: Option<Schema>,
81}
82
83#[derive(Serialize, Deserialize, Debug)]
84#[serde(untagged)]
85pub enum Schema {
86 String(String),
87 Object(Map<String, Value>),
88}
89
90#[derive(Serialize, Deserialize, Default, Debug)]
91#[serde(rename_all = "lowercase")]
92pub enum TransmissionMode {
93 #[default]
94 Value,
95 Reference,
96}
97
98#[derive(Serialize, Deserialize, Default, Debug)]
99#[serde(rename_all = "lowercase")]
100pub enum Response {
101 #[default]
102 Raw,
103 Document,
104}
105
106#[derive(Serialize, Deserialize, Debug)]
107#[serde(rename_all = "camelCase")]
108pub struct Subscriber {
109 pub success_uri: String,
110 pub in_progress_uri: Option<String>,
111 pub failed_uri: Option<String>,
112}