// authentik
//
// Making authentication simple.
//
// The version of the OpenAPI document: 2026.5.0-rc1
// Contact: hello@goauthentik.io
// Generated by: https://openapi-generator.tech

use serde::{Deserialize, Serialize};

use crate::models;

/// LogoutUrl : Data for a single logout URL
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct LogoutUrl {
    #[serde(rename = "url")]
    pub url: String,
    #[serde(
        rename = "provider_name",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub provider_name: Option<Option<String>>,
    #[serde(
        rename = "binding",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub binding: Option<Option<String>>,
    #[serde(
        rename = "saml_request",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub saml_request: Option<Option<String>>,
    #[serde(
        rename = "saml_response",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub saml_response: Option<Option<String>>,
    #[serde(
        rename = "saml_relay_state",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub saml_relay_state: Option<Option<String>>,
}

impl LogoutUrl {
    /// Data for a single logout URL
    pub fn new(url: String) -> LogoutUrl {
        LogoutUrl {
            url,
            provider_name: None,
            binding: None,
            saml_request: None,
            saml_response: None,
            saml_relay_state: None,
        }
    }
}
