schul-cloud-api 0.2.0

Library providing an interface to talk to the schul.cloud api
Documentation
use serde::{Deserialize, Serialize};
use serde_json::Value;

#[derive(Serialize, Deserialize, Clone, Debug, Hash, PartialEq, Eq)]
pub struct UserInfo {
    pub id: String,
    pub first_name: String,
    pub last_name: String,
    pub socket_id: String,
    pub online: bool,
    pub status: Value,
    pub user_status: Vec<Value>,
    pub active: String,
    pub deleted: Value,
    pub allows_voip_calls: bool,
    pub enter_is_newline: bool,
    pub mx_user_id: String,
    pub federated: bool,
    pub email: String,
    pub email_validated: String,
    pub notifications: bool,
    pub device_notifications: bool,
    pub last_login: String,
    pub language: String,
    pub image: String,
    pub quota: String,
    pub ldap_login: String,
    pub public_key: String,
    pub public_key_signature: String,
    pub public_signing_key: String,
    pub public_key_ca_signature: String,
    pub roles: Vec<UserRole>,
    pub permissions: Vec<String>,
    pub company_features: Vec<String>,
    pub notification_count: u32,
    pub device_id: String,
    pub app_name: String,
    pub push_service: Option<Value>,
    pub push_id: Option<Value>,
    pub ios_voip_push_id: Option<Value>,
    pub settings: UserSettings,
    pub is_bot: bool,
    pub marketplace_modules: Vec<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Hash, PartialEq, Eq)]
pub struct UserRole {
    pub id: String,
    pub name: String,
    pub global: String,
    pub company_id: String,
    pub time: String,
    pub editable: bool,
}
#[derive(Serialize, Deserialize, Clone, Debug, Hash, PartialEq, Eq)]
pub struct UserSettings {
    pub device_pin: String,
    pub device_pin_delay: PossibleDevicePinDelayOptions,
    pub device_gps: String,
    pub device_encryption: String,
    pub file_export: bool,
    pub file_import: bool,
    pub share_links: bool,
    pub encryption: bool,
    pub open_channels: bool,
    pub autostart: bool,
    pub lockscreen_content: String,
    pub client_count: Value,
    pub email_validation: String,
    pub may_change_email: bool,
    pub may_change_password: bool,
    pub manual_account_creation: bool,
    pub ttl_content: Value,
    pub ttl_marked_content: Value,
    pub ttl_server_content: Value,
    pub can_delete_messages: bool,
    pub share_unencrypted_files_into_encrypted_chats: bool,
    pub force_device_notifications: bool,
    pub device_login_management: bool,
    pub self_deletion: bool,
    pub link_preview: bool,
    pub password_restrictions: PasswordRestrictions,
    pub mdm: SettingsMDM,
    pub can_block_users: bool,
    pub can_report_users: bool,
    pub can_report_messages: bool,
    pub access_restrictions: AccessRestrictions,
}
#[derive(Serialize, Deserialize, Clone, Debug, Hash, PartialEq, Eq)]
#[serde(untagged)]
pub enum PossibleDevicePinDelayOptions {
    Int(u64),
    String(String),
}

#[derive(Serialize, Deserialize, Clone, Debug, Hash, PartialEq, Eq)]
pub struct AccessRestrictions {
    pub blacklisted: Vec<Value>,
    pub whitelisted: Vec<Value>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Hash, PartialEq, Eq)]
pub struct SettingsMDM {
    pub mdm_access_calendar: bool,
    pub mdm_access_camera: bool,
    pub mdm_access_gps: bool,
    pub mdm_access_microphone: bool,
    pub mdm_access_storage_pictures: bool,
    pub mdm_access_storage_videos: bool,
    pub mdm_ability_copypaste: bool,
    pub mdm_ability_sharing: bool,
    pub mdm_ability_chat_history: bool,
    pub mdm_access_attachments: bool,
}
#[derive(Serialize, Deserialize, Clone, Debug, Hash, PartialEq, Eq)]
pub struct PasswordRestrictions {
    pub pw_restrictions: bool,
    pub pw_min_length: u16,
    pub pw_uppercase_lowercase: bool,
    pub pw_specialchars: bool,
    pub pw_numbers: bool,
}