1use alloc::{collections::BTreeMap, string::String, vec::Vec};
4
5#[cfg(feature = "schemars")]
6use schemars::JsonSchema;
7#[cfg(feature = "serde")]
8use serde::{Deserialize, Serialize};
9use serde_json::Value;
10
11use crate::ChannelMessageEnvelope;
12
13#[derive(Clone, Debug, PartialEq)]
15#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
16#[cfg_attr(feature = "schemars", derive(JsonSchema))]
17pub struct Header {
18 pub name: String,
20 pub value: String,
22}
23
24#[derive(Clone, Debug, PartialEq)]
26#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
27#[cfg_attr(feature = "schemars", derive(JsonSchema))]
28pub struct HttpInV1 {
29 pub method: String,
31 pub path: String,
33 #[cfg_attr(feature = "serde", serde(default))]
35 pub query: Option<String>,
36 #[cfg_attr(feature = "serde", serde(default))]
38 pub headers: Vec<Header>,
39 #[cfg_attr(feature = "serde", serde(default))]
41 pub body_b64: String,
42 #[cfg_attr(feature = "serde", serde(default))]
44 pub route_hint: Option<String>,
45 #[cfg_attr(feature = "serde", serde(default))]
47 pub binding_id: Option<String>,
48 #[cfg_attr(feature = "serde", serde(default))]
50 pub config: Option<Value>,
51}
52
53#[derive(Clone, Debug, PartialEq)]
55#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
56#[cfg_attr(feature = "schemars", derive(JsonSchema))]
57pub struct HttpOutV1 {
58 pub status: u16,
60 #[cfg_attr(feature = "serde", serde(default))]
62 pub headers: Vec<Header>,
63 #[cfg_attr(feature = "serde", serde(default))]
65 pub body_b64: String,
66 #[cfg_attr(feature = "serde", serde(default))]
68 pub events: Vec<ChannelMessageEnvelope>,
69}
70
71#[derive(Clone, Debug, PartialEq)]
73#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
74#[cfg_attr(feature = "schemars", derive(JsonSchema))]
75pub struct RenderPlanInV1 {
76 pub message: ChannelMessageEnvelope,
78 #[cfg_attr(feature = "serde", serde(default))]
80 pub metadata: BTreeMap<String, Value>,
81}
82
83#[derive(Clone, Debug, PartialEq)]
85#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
86#[cfg_attr(feature = "schemars", derive(JsonSchema))]
87pub struct RenderPlanOutV1 {
88 pub plan_json: String,
90}
91
92#[derive(Clone, Debug, PartialEq)]
94#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
95#[cfg_attr(feature = "schemars", derive(JsonSchema))]
96pub struct ProviderPayloadV1 {
97 pub content_type: String,
99 #[cfg_attr(feature = "serde", serde(default))]
101 pub body_b64: String,
102 #[cfg_attr(feature = "serde", serde(default))]
104 pub metadata: BTreeMap<String, Value>,
105}
106
107#[derive(Clone, Debug, PartialEq)]
109#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
110#[cfg_attr(feature = "schemars", derive(JsonSchema))]
111pub struct EncodeInV1 {
112 pub message: ChannelMessageEnvelope,
114 pub plan: RenderPlanInV1,
116}
117
118#[derive(Clone, Debug, Default, PartialEq, Eq)]
120#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
121#[cfg_attr(feature = "schemars", derive(JsonSchema))]
122pub struct AuthUserRefV1 {
123 pub user_id: String,
125 pub token_key: String,
127 #[cfg_attr(feature = "serde", serde(default))]
129 pub tenant_id: Option<String>,
130 #[cfg_attr(feature = "serde", serde(default))]
132 pub email: Option<String>,
133 #[cfg_attr(feature = "serde", serde(default))]
135 pub display_name: Option<String>,
136}
137
138#[derive(Clone, Debug, PartialEq)]
140#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
141#[cfg_attr(feature = "schemars", derive(JsonSchema))]
142pub struct SendPayloadInV1 {
143 pub provider_type: String,
145 #[cfg_attr(feature = "serde", serde(default))]
147 pub tenant_id: Option<String>,
148 #[cfg_attr(feature = "serde", serde(default))]
150 pub auth_user: Option<AuthUserRefV1>,
151 pub payload: ProviderPayloadV1,
153}
154
155#[derive(Clone, Debug, PartialEq)]
157#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
158#[cfg_attr(feature = "schemars", derive(JsonSchema))]
159pub struct SendPayloadResultV1 {
160 pub ok: bool,
162 #[cfg_attr(feature = "serde", serde(default))]
164 pub message: Option<String>,
165 #[cfg_attr(feature = "serde", serde(default))]
167 pub retryable: bool,
168}
169
170#[derive(Clone, Debug, PartialEq)]
172#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
173#[cfg_attr(feature = "schemars", derive(JsonSchema))]
174pub struct SubscriptionEnsureInV1 {
175 pub v: u32,
177 pub provider: String,
179 #[cfg_attr(feature = "serde", serde(default))]
181 pub tenant_hint: Option<String>,
182 #[cfg_attr(feature = "serde", serde(default))]
184 pub team_hint: Option<String>,
185 #[cfg_attr(feature = "serde", serde(default))]
187 pub binding_id: Option<String>,
188 pub resource: String,
190 #[cfg_attr(feature = "serde", serde(default))]
192 pub change_types: Vec<String>,
193 pub notification_url: String,
195 #[cfg_attr(feature = "serde", serde(default))]
197 pub expiration_minutes: Option<u32>,
198 #[cfg_attr(feature = "serde", serde(default))]
200 pub expiration_target_unix_ms: Option<u64>,
201 #[cfg_attr(feature = "serde", serde(default))]
203 pub client_state: Option<String>,
204 #[cfg_attr(feature = "serde", serde(default))]
206 pub metadata: Option<Value>,
207 #[cfg_attr(feature = "serde", serde(default))]
209 pub user: AuthUserRefV1,
210}
211
212#[derive(Clone, Debug, PartialEq)]
214#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
215#[cfg_attr(feature = "schemars", derive(JsonSchema))]
216pub struct SubscriptionEnsureOutV1 {
217 pub v: u32,
219 pub subscription_id: String,
221 pub expiration_unix_ms: u64,
223 pub resource: String,
225 pub change_types: Vec<String>,
227 #[cfg_attr(feature = "serde", serde(default))]
229 pub client_state: Option<String>,
230 #[cfg_attr(feature = "serde", serde(default))]
232 pub metadata: Option<Value>,
233 #[cfg_attr(feature = "serde", serde(default))]
235 pub binding_id: Option<String>,
236 #[cfg_attr(feature = "serde", serde(default))]
238 pub user: AuthUserRefV1,
239}
240
241#[derive(Clone, Debug, PartialEq)]
243#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
244#[cfg_attr(feature = "schemars", derive(JsonSchema))]
245pub struct SubscriptionRenewInV1 {
246 pub v: u32,
248 pub provider: String,
250 pub subscription_id: String,
252 #[cfg_attr(feature = "serde", serde(default))]
254 pub expiration_minutes: Option<u32>,
255 #[cfg_attr(feature = "serde", serde(default))]
257 pub expiration_target_unix_ms: Option<u64>,
258 #[cfg_attr(feature = "serde", serde(default))]
260 pub metadata: Option<Value>,
261 #[cfg_attr(feature = "serde", serde(default))]
263 pub user: AuthUserRefV1,
264}
265
266#[derive(Clone, Debug, PartialEq)]
268#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
269#[cfg_attr(feature = "schemars", derive(JsonSchema))]
270pub struct SubscriptionRenewOutV1 {
271 pub v: u32,
273 pub subscription_id: String,
275 pub expiration_unix_ms: u64,
277 #[cfg_attr(feature = "serde", serde(default))]
279 pub metadata: Option<Value>,
280 #[cfg_attr(feature = "serde", serde(default))]
282 pub user: AuthUserRefV1,
283}
284
285#[derive(Clone, Debug, PartialEq, Eq)]
287#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
288#[cfg_attr(feature = "schemars", derive(JsonSchema))]
289pub struct SubscriptionDeleteInV1 {
290 pub v: u32,
292 pub provider: String,
294 pub subscription_id: String,
296 #[cfg_attr(feature = "serde", serde(default))]
298 pub user: AuthUserRefV1,
299}
300
301#[derive(Clone, Debug, PartialEq, Eq)]
303#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
304#[cfg_attr(feature = "schemars", derive(JsonSchema))]
305pub struct SubscriptionDeleteOutV1 {
306 pub v: u32,
308 pub subscription_id: String,
310 #[cfg_attr(feature = "serde", serde(default))]
312 pub user: AuthUserRefV1,
313}
314
315pub type SubscriptionEnsureResultV1 = SubscriptionEnsureOutV1;
317pub type SubscriptionDeleteResultV1 = SubscriptionDeleteOutV1;
319pub type SubscriptionRenewalInV1 = SubscriptionRenewInV1;
321pub type SubscriptionRenewalOutV1 = SubscriptionRenewOutV1;