use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ServerBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub http: Option<HTTPServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ws: Option<WebsocketsServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kafka: Option<KafkaServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub anypointmq: Option<AnyPointMQServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub amqp: Option<AMPQServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ampq1: Option<AMPQ1ServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mqtt: Option<MQTTServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mqtt5: Option<MQTT5ServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nats: Option<NATSServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jms: Option<JMSServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sns: Option<SNSServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub solace: Option<SolaceServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sqs: Option<SQSServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stomp: Option<STOMPServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub redis: Option<RedisServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mercure: Option<MercureServerBinding>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ibmmq: Option<IBMMQServerBinding>,
#[serde(flatten)]
pub extensions: IndexMap<String, serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct HTTPServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct WebsocketsServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct KafkaServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct AnyPointMQServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct AMPQServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct AMPQ1ServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MQTTServerBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub client_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub clean_session: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_will: Option<MQTTServerBindingLasWill>,
#[serde(skip_serializing_if = "Option::is_none")]
pub keep_alive: 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 MQTTServerBindingLasWill {
#[serde(skip_serializing_if = "Option::is_none")]
pub topic: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub qos: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub retain: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct MQTT5ServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct NATSServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct JMSServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct SNSServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct SolaceServerBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub msg_vpn: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct SQSServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct STOMPServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct RedisServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
pub struct MercureServerBinding {}
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct IBMMQServerBinding {
#[serde(skip_serializing_if = "Option::is_none")]
pub group_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ccdt_queue_manager_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cipher_spec: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub multi_endpoint_server: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub heart_beat_interval: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_version: Option<String>,
}