use securitydept_utils::secret::{SecretString, deserialize_optional_secret_string};
use serde::Deserialize;
use serde_with::serde_as;
#[cfg_attr(feature = "config-schema", derive(schemars::JsonSchema))]
#[derive(Debug, Clone, Deserialize, Default)]
#[serde_as]
pub struct OAuthResourceServerIntrospectionConfig {
#[serde(default)]
#[serde_as(as = "serde_with::NoneAsEmptyString")]
#[cfg_attr(feature = "config-schema", schemars(with = "Option<String>"))]
pub introspection_url: Option<String>,
#[serde(default)]
#[serde_as(as = "serde_with::NoneAsEmptyString")]
#[cfg_attr(feature = "config-schema", schemars(with = "Option<String>"))]
pub client_id: Option<String>,
#[serde(default, deserialize_with = "deserialize_optional_secret_string")]
pub client_secret: Option<SecretString>,
#[serde(default)]
#[serde_as(as = "serde_with::NoneAsEmptyString")]
#[cfg_attr(feature = "config-schema", schemars(with = "Option<String>"))]
pub token_type_hint: Option<String>,
}