use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkspaceDirectory {
pub directory_id: String,
pub directory_name: String,
pub directory_type: String,
pub alias: String,
pub state: String,
pub registration_code: String,
pub workspace_security_group_id: String,
pub iam_role_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Workspace {
pub workspace_id: String,
pub directory_id: String,
pub user_name: String,
pub bundle_id: String,
pub state: String,
pub ip_address: String,
pub computer_name: String,
pub subnet_id: String,
pub root_volume_size_gib: i32,
pub user_volume_size_gib: i32,
pub volume_encryption_key: Option<String>,
pub user_volume_encryption_enabled: bool,
pub root_volume_encryption_enabled: bool,
pub running_mode: String,
pub running_mode_auto_stop_timeout_in_minutes: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkspaceRequest {
pub directory_id: String,
pub user_name: String,
pub bundle_id: String,
pub volume_encryption_key: Option<String>,
pub user_volume_encryption_enabled: Option<bool>,
pub root_volume_encryption_enabled: Option<bool>,
pub workspace_properties: Option<WorkspaceProperties>,
pub tags: Option<Vec<Tag>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkspaceProperties {
pub running_mode: Option<String>,
pub running_mode_auto_stop_timeout_in_minutes: Option<i32>,
pub root_volume_size_gib: Option<i32>,
pub user_volume_size_gib: Option<i32>,
pub compute_type_name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Tag {
pub key: String,
pub value: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FailedCreateWorkspaceRequest {
pub workspace_request: Option<WorkspaceRequest>,
pub error_code: String,
pub error_message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TerminateRequest {
pub workspace_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FailedTerminateWorkspaceRequest {
pub workspace_id: String,
pub error_code: String,
pub error_message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkspaceImage {
pub image_id: String,
pub name: String,
pub description: String,
pub state: String,
pub operating_system_type: Option<String>,
pub owner_account_id: String,
pub required_tenancy: String,
pub created: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClientProperties {
pub reconnect_enabled: Option<String>,
pub log_upload_enabled: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SelfservicePermissions {
pub restart_workspace: Option<String>,
pub increase_volume_size: Option<String>,
pub change_compute_type: Option<String>,
pub switch_running_mode: Option<String>,
pub rebuild_workspace: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkspaceCreationProperties {
pub custom_security_group_id: Option<String>,
pub default_ou: Option<String>,
pub enable_internet_access: Option<bool>,
pub enable_maintenance_mode: Option<bool>,
pub user_enabled_as_local_administrator: Option<bool>,
pub instance_iam_role_arn: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ImagePermission {
pub shared_account_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IpGroup {
pub group_id: String,
pub group_name: String,
pub group_desc: Option<String>,
pub user_rules: Vec<IpRule>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IpRule {
pub ip_rule: String,
pub rule_desc: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConnectionAlias {
pub alias_id: String,
pub connection_string: String,
pub owner_account_id: String,
pub state: String,
pub associations: Vec<ConnectionAliasAssociation>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConnectionAliasAssociation {
pub connection_identifier: String,
pub resource_id: Option<String>,
pub associated_account_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConnectionAliasPermission {
pub shared_account_id: String,
pub allow_association: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkspaceBundle {
pub bundle_id: String,
pub name: String,
pub owner: Option<String>,
pub description: Option<String>,
pub bundle_type: Option<String>,
pub compute_type_name: Option<String>,
pub root_storage_capacity: Option<i32>,
pub user_storage_capacity: Option<i32>,
pub creation_time: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkspacesPool {
pub pool_id: String,
pub pool_arn: String,
pub pool_name: String,
pub description: Option<String>,
pub state: String,
pub bundle_id: String,
pub directory_id: String,
pub created_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StartRequest {
pub workspace_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StopRequest {
pub workspace_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RebootRequest {
pub workspace_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RebuildRequest {
pub workspace_id: String,
}