greentic_operator/messaging_universal/
dto.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct HttpInV1 {
6 pub v: u32,
7 pub provider: String,
8 #[serde(default, skip_serializing_if = "Option::is_none")]
9 pub route: Option<String>,
10 #[serde(default, skip_serializing_if = "Option::is_none")]
11 pub binding_id: Option<String>,
12 #[serde(default, skip_serializing_if = "Option::is_none")]
13 pub tenant_hint: Option<String>,
14 #[serde(default, skip_serializing_if = "Option::is_none")]
15 pub team_hint: Option<String>,
16 pub method: String,
17 pub path: String,
18 #[serde(default, skip_serializing_if = "Vec::is_empty")]
19 pub query: Vec<(String, String)>,
20 #[serde(default, skip_serializing_if = "Vec::is_empty")]
21 pub headers: Vec<(String, String)>,
22 pub body_b64: String,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26pub struct HttpOutV1 {
27 pub v: u32,
28 pub status: u16,
29 #[serde(default, skip_serializing_if = "Vec::is_empty")]
30 pub headers: Vec<(String, String)>,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub body_b64: Option<String>,
33 #[serde(default, skip_serializing_if = "Vec::is_empty")]
34 pub events: Vec<serde_json::Value>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct RenderPlanInV1 {
39 pub v: u32,
40 pub message: serde_json::Value,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct RenderPlanOutPlan {
45 pub plan_json: String,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct RenderPlanOutV1 {
50 pub ok: bool,
51 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub plan: Option<RenderPlanOutPlan>,
53 #[serde(default, skip_serializing_if = "Option::is_none")]
54 pub error: Option<String>,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct EncodeInV1 {
59 pub v: u32,
60 pub message: serde_json::Value,
61 pub plan: serde_json::Value,
62}
63
64#[derive(Debug, Clone, Serialize, Deserialize)]
65pub struct EncodeOutV1 {
66 pub ok: bool,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub payload: Option<ProviderPayloadV1>,
69 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub error: Option<String>,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct ProviderPayloadV1 {
75 pub content_type: String,
76 pub body_b64: String,
77 #[serde(default, skip_serializing_if = "Option::is_none")]
79 pub metadata_json: Option<String>,
80 #[serde(default, skip_serializing_if = "Option::is_none")]
81 pub metadata: Option<serde_json::Value>,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize)]
85pub struct SendPayloadInV1 {
86 pub v: u32,
87 pub provider_type: String,
88 pub payload: ProviderPayloadV1,
89 pub tenant: TenantHint,
90 #[serde(default, skip_serializing_if = "Option::is_none")]
91 pub reply_scope: Option<serde_json::Value>,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize)]
95pub struct SendPayloadOutV1 {
96 pub ok: bool,
97 #[serde(default, skip_serializing_if = "Option::is_none")]
98 pub message: Option<String>,
99 #[serde(default)]
100 pub retryable: bool,
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
105pub struct TenantHint {
106 pub tenant: String,
107 #[serde(default, skip_serializing_if = "Option::is_none")]
108 pub team: Option<String>,
109 #[serde(default, skip_serializing_if = "Option::is_none")]
110 pub user: Option<String>,
111 #[serde(default, skip_serializing_if = "Option::is_none")]
112 pub correlation_id: Option<String>,
113}