use std::collections::HashMap;
use serde_json::Value;
#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
pub struct OrgMetadata {
#[serde(flatten)]
pub metadata: HashMap<String, Value>,
}
impl OrgMetadata {
pub fn is_empty(&self) -> bool {
self.metadata.is_empty()
}
}
#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct FetchOrgResponse {
pub org_id: String,
pub name: String,
pub is_saml_configured: bool,
#[serde(default, skip_serializing_if = "OrgMetadata::is_empty")]
pub metadata: OrgMetadata,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_users: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub custom_role_mapping_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub legacy_org_id: Option<String>,
pub url_safe_org_slug: String,
pub can_setup_saml: bool,
pub is_saml_in_test_mode: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub domain: Option<String>,
pub extra_domains: Vec<String>,
pub domain_autojoin: bool,
pub domain_restrict: bool,
}
impl FetchOrgResponse {
pub fn new(
org_id: String,
name: String,
metadata: OrgMetadata,
is_saml_configured: bool,
url_safe_org_slug: String,
can_setup_saml: bool,
is_saml_in_test_mode: bool,
domain_autojoin: bool,
domain_restrict: bool,
) -> FetchOrgResponse {
FetchOrgResponse {
org_id,
name,
metadata,
is_saml_configured,
max_users: None,
custom_role_mapping_name: None,
legacy_org_id: None,
url_safe_org_slug,
can_setup_saml,
is_saml_in_test_mode,
domain: None,
extra_domains: Vec::new(),
domain_autojoin,
domain_restrict,
}
}
}
#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct FetchOrgBasicResponse {
pub org_id: String,
pub name: String,
pub is_saml_configured: bool,
#[serde(default, skip_serializing_if = "OrgMetadata::is_empty")]
pub metadata: OrgMetadata,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_users: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub custom_role_mapping_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub legacy_org_id: Option<String>,
}
impl crate::models::FetchOrgBasicResponse {
pub fn new(
org_id: String,
name: String,
metadata: OrgMetadata,
is_saml_configured: bool,
) -> crate::models::FetchOrgBasicResponse {
crate::models::FetchOrgBasicResponse {
org_id,
name,
metadata,
is_saml_configured,
max_users: None,
custom_role_mapping_name: None,
legacy_org_id: None,
}
}
}