use alloc::{collections::BTreeMap, string::String, vec::Vec};
#[cfg(feature = "schemars")]
use schemars::JsonSchema;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::ChannelMessageEnvelope;
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct Header {
pub name: String,
pub value: String,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct HttpInV1 {
pub method: String,
pub path: String,
#[cfg_attr(feature = "serde", serde(default))]
pub query: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub headers: Vec<Header>,
#[cfg_attr(feature = "serde", serde(default))]
pub body_b64: String,
#[cfg_attr(feature = "serde", serde(default))]
pub route_hint: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub binding_id: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub config: Option<Value>,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct HttpOutV1 {
pub status: u16,
#[cfg_attr(feature = "serde", serde(default))]
pub headers: Vec<Header>,
#[cfg_attr(feature = "serde", serde(default))]
pub body_b64: String,
#[cfg_attr(feature = "serde", serde(default))]
pub events: Vec<ChannelMessageEnvelope>,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct RenderPlanInV1 {
pub message: ChannelMessageEnvelope,
#[cfg_attr(feature = "serde", serde(default))]
pub metadata: BTreeMap<String, Value>,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct RenderPlanOutV1 {
pub plan_json: String,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct ProviderPayloadV1 {
pub content_type: String,
#[cfg_attr(feature = "serde", serde(default))]
pub body_b64: String,
#[cfg_attr(feature = "serde", serde(default))]
pub metadata: BTreeMap<String, Value>,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct EncodeInV1 {
pub message: ChannelMessageEnvelope,
pub plan: RenderPlanInV1,
}
#[derive(Clone, Debug, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct AuthUserRefV1 {
pub user_id: String,
pub token_key: String,
#[cfg_attr(feature = "serde", serde(default))]
pub tenant_id: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub email: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub display_name: Option<String>,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct SendPayloadInV1 {
pub provider_type: String,
#[cfg_attr(feature = "serde", serde(default))]
pub tenant_id: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub auth_user: Option<AuthUserRefV1>,
pub payload: ProviderPayloadV1,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct SendPayloadResultV1 {
pub ok: bool,
#[cfg_attr(feature = "serde", serde(default))]
pub message: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub retryable: bool,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct SubscriptionEnsureInV1 {
pub v: u32,
pub provider: String,
#[cfg_attr(feature = "serde", serde(default))]
pub tenant_hint: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub team_hint: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub binding_id: Option<String>,
pub resource: String,
#[cfg_attr(feature = "serde", serde(default))]
pub change_types: Vec<String>,
pub notification_url: String,
#[cfg_attr(feature = "serde", serde(default))]
pub expiration_minutes: Option<u32>,
#[cfg_attr(feature = "serde", serde(default))]
pub expiration_target_unix_ms: Option<u64>,
#[cfg_attr(feature = "serde", serde(default))]
pub client_state: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub metadata: Option<Value>,
#[cfg_attr(feature = "serde", serde(default))]
pub user: AuthUserRefV1,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct SubscriptionEnsureOutV1 {
pub v: u32,
pub subscription_id: String,
pub expiration_unix_ms: u64,
pub resource: String,
pub change_types: Vec<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub client_state: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub metadata: Option<Value>,
#[cfg_attr(feature = "serde", serde(default))]
pub binding_id: Option<String>,
#[cfg_attr(feature = "serde", serde(default))]
pub user: AuthUserRefV1,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct SubscriptionRenewInV1 {
pub v: u32,
pub provider: String,
pub subscription_id: String,
#[cfg_attr(feature = "serde", serde(default))]
pub expiration_minutes: Option<u32>,
#[cfg_attr(feature = "serde", serde(default))]
pub expiration_target_unix_ms: Option<u64>,
#[cfg_attr(feature = "serde", serde(default))]
pub metadata: Option<Value>,
#[cfg_attr(feature = "serde", serde(default))]
pub user: AuthUserRefV1,
}
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct SubscriptionRenewOutV1 {
pub v: u32,
pub subscription_id: String,
pub expiration_unix_ms: u64,
#[cfg_attr(feature = "serde", serde(default))]
pub metadata: Option<Value>,
#[cfg_attr(feature = "serde", serde(default))]
pub user: AuthUserRefV1,
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct SubscriptionDeleteInV1 {
pub v: u32,
pub provider: String,
pub subscription_id: String,
#[cfg_attr(feature = "serde", serde(default))]
pub user: AuthUserRefV1,
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "schemars", derive(JsonSchema))]
pub struct SubscriptionDeleteOutV1 {
pub v: u32,
pub subscription_id: String,
#[cfg_attr(feature = "serde", serde(default))]
pub user: AuthUserRefV1,
}
pub type SubscriptionEnsureResultV1 = SubscriptionEnsureOutV1;
pub type SubscriptionDeleteResultV1 = SubscriptionDeleteOutV1;
pub type SubscriptionRenewalInV1 = SubscriptionRenewInV1;
pub type SubscriptionRenewalOutV1 = SubscriptionRenewOutV1;