// !!!
// WARNING: This file is autogenerated
// Only modify code within MANUAL() sections
// or your changes may be overwritten later!
// !!!

use crate::b2b::scim_connection::Connection;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SCIMConnection {
    pub organization_id: String,
    pub connection_id: String,
    pub status: String,
    pub display_name: String,
    pub identity_provider: String,
    pub base_url: String,
    pub bearer_token_last_four: String,
    pub scim_group_implicit_role_assignments: std::vec::Vec<SCIMGroupImplicitRoleAssignments>,
    pub next_bearer_token_last_four: String,
    pub bearer_token_expires_at: std::option::Option<chrono::DateTime<chrono::Utc>>,
    pub next_bearer_token_expires_at: std::option::Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SCIMConnectionWithNextToken {
    pub organization_id: String,
    pub connection_id: String,
    pub status: String,
    pub display_name: String,
    pub base_url: String,
    pub identity_provider: String,
    pub bearer_token_last_four: String,
    pub next_bearer_token: String,
    pub scim_group_implicit_role_assignments: std::vec::Vec<SCIMGroupImplicitRoleAssignments>,
    pub bearer_token_expires_at: std::option::Option<chrono::DateTime<chrono::Utc>>,
    pub next_bearer_token_expires_at: std::option::Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SCIMConnectionWithToken {
    pub organization_id: String,
    pub connection_id: String,
    pub status: String,
    pub display_name: String,
    pub identity_provider: String,
    pub base_url: String,
    pub bearer_token: String,
    pub scim_group_implicit_role_assignments: std::vec::Vec<SCIMGroupImplicitRoleAssignments>,
    pub bearer_token_expires_at: std::option::Option<chrono::DateTime<chrono::Utc>>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SCIMGroupImplicitRoleAssignments {
    pub role_id: String,
    pub group_id: String,
    pub group_name: String,
}

pub struct SCIM {
    pub connection: Connection,
}

impl SCIM {
    pub fn new(http_client: crate::client::Client) -> Self {
        Self {
            connection: Connection::new(http_client.clone()),
        }
    }
}
