use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
use crate::Schema;
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct ChannelBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub http: Option<HTTPChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ws: Option<WebsocketsChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kafka: Option<KafkaChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub anypointmq: Option<AnyPointMQChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub amqp: Option<AMQPChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub amqp1: Option<AMQPChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mqtt: Option<MQTTChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mqtt5: Option<MQTT5ChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nats: Option<NATSChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jms: Option<JMSChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sns: Option<SNSChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub solace: Option<SolaceChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sqs: Option<SQSChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stomp: Option<STOMPChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub redis: Option<RedisChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mercure: Option<MercureChannelBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ibmmq: Option<IBMMQChannelBinding>,
#[serde(flatten)]
pub extensions: IndexMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct HTTPChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct WebsocketsChannelBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<Schema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub headers: Option<Schema>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct KafkaChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AnyPointMQChannelBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub destination: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AMQPChannelBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub is: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exchange: Option<AMQPChannelBindingExchange>,
#[serde(skip_serializing_if = "Option::is_none")]
pub queue: Option<AMQPChannelBindingQueue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AMQPChannelBindingExchange {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub typ: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub durable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_delete: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vhost: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AMQPChannelBindingQueue {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub durable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclusive: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_delete: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vhost: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct AMQP1ChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MQTTChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MQTT5ChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct NATSChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct JMSChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct SNSChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct SolaceChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct SQSChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct STOMPChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct RedisChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MercureChannelBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct IBMMQChannelBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub queue: Option<IBMMQChannelBindingQueue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub topic: Option<IBMMQChannelBindingTopic>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_msg_length: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct IBMMQChannelBindingQueue {
pub object_name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_partitioned: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exclusive: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct IBMMQChannelBindingTopic {
#[serde(skip_serializing_if = "Option::is_none")]
pub string: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub object_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub durable_permitted: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_msg_retained: Option<bool>,
}