greentic_flow/
model.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use std::collections::BTreeMap;
4
5fn default_parameters() -> Value {
6    Value::Object(Default::default())
7}
8
9fn default_entrypoints() -> BTreeMap<String, Value> {
10    BTreeMap::new()
11}
12
13fn default_routing() -> Value {
14    Value::Array(Vec::new())
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct FlowDoc {
19    pub id: String,
20    #[serde(default)]
21    pub title: Option<String>,
22    #[serde(default)]
23    pub description: Option<String>,
24    #[serde(rename = "type")]
25    pub flow_type: String,
26    #[serde(default)]
27    pub start: Option<String>,
28    #[serde(default = "default_parameters")]
29    pub parameters: Value,
30    #[serde(default)]
31    pub tags: Vec<String>,
32    #[serde(default = "default_entrypoints")]
33    pub entrypoints: BTreeMap<String, Value>,
34    pub nodes: BTreeMap<String, NodeDoc>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, Default)]
38pub struct NodeDoc {
39    #[serde(skip_serializing, skip_deserializing, default)]
40    pub component: String,
41    #[serde(skip_serializing, skip_deserializing, default)]
42    pub pack_alias: Option<String>,
43    #[serde(skip_serializing, skip_deserializing, default)]
44    pub operation: Option<String>,
45    #[serde(skip_serializing, skip_deserializing, default)]
46    pub payload: Value,
47    #[serde(skip_serializing, skip_deserializing, default)]
48    pub output: Option<Value>,
49    #[serde(default = "default_routing")]
50    pub routing: Value,
51    #[serde(skip_serializing, skip_deserializing, default)]
52    pub telemetry: Option<TelemetryDoc>,
53    #[serde(flatten, default)]
54    pub raw: BTreeMap<String, Value>,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize, Default)]
58pub struct TelemetryDoc {
59    #[serde(default)]
60    pub span_name: Option<String>,
61    #[serde(default)]
62    pub attributes: BTreeMap<String, String>,
63    #[serde(default)]
64    pub sampling: Option<String>,
65}