propelauth 0.23.3

A Rust crate for managing authentication and authorization with support for multi-tenant / B2B products, powered by PropelAuth
Documentation
/*
 * propelauth
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 0.1.0
 *
 * Generated by: https://openapi-generator.tech
 */

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,
        }
    }
}

// A Simple org response is used for fetching multiple orgs until that API returns a full org object
#[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,
        }
    }
}