Skip to main content

winterbaume_workspaces/
types.rs

1use serde::{Deserialize, Serialize};
2
3/// Represents a WorkSpace directory.
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct WorkspaceDirectory {
6    pub directory_id: String,
7    pub directory_name: String,
8    pub directory_type: String,
9    pub alias: String,
10    pub state: String,
11    pub registration_code: String,
12    pub workspace_security_group_id: String,
13    pub iam_role_id: String,
14}
15
16/// Represents a WorkSpace.
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct Workspace {
19    pub workspace_id: String,
20    pub directory_id: String,
21    pub user_name: String,
22    pub bundle_id: String,
23    pub state: String,
24    pub ip_address: String,
25    pub computer_name: String,
26    pub subnet_id: String,
27    pub root_volume_size_gib: i32,
28    pub user_volume_size_gib: i32,
29    pub volume_encryption_key: Option<String>,
30    pub user_volume_encryption_enabled: bool,
31    pub root_volume_encryption_enabled: bool,
32    pub running_mode: String,
33    pub running_mode_auto_stop_timeout_in_minutes: i32,
34}
35
36/// Request to create a single workspace.
37#[derive(Debug, Clone, Serialize, Deserialize)]
38pub struct WorkspaceRequest {
39    pub directory_id: String,
40    pub user_name: String,
41    pub bundle_id: String,
42    pub volume_encryption_key: Option<String>,
43    pub user_volume_encryption_enabled: Option<bool>,
44    pub root_volume_encryption_enabled: Option<bool>,
45    pub workspace_properties: Option<WorkspaceProperties>,
46    pub tags: Option<Vec<Tag>>,
47}
48
49/// WorkSpace properties (running mode etc.).
50#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct WorkspaceProperties {
52    pub running_mode: Option<String>,
53    pub running_mode_auto_stop_timeout_in_minutes: Option<i32>,
54    pub root_volume_size_gib: Option<i32>,
55    pub user_volume_size_gib: Option<i32>,
56    pub compute_type_name: Option<String>,
57}
58
59/// A tag key-value pair.
60#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct Tag {
62    pub key: String,
63    pub value: String,
64}
65
66/// A failed workspace creation request.
67#[derive(Debug, Clone, Serialize, Deserialize)]
68pub struct FailedCreateWorkspaceRequest {
69    pub workspace_request: Option<WorkspaceRequest>,
70    pub error_code: String,
71    pub error_message: String,
72}
73
74/// A workspace ID for terminate request.
75#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct TerminateRequest {
77    pub workspace_id: String,
78}
79
80/// A failed workspace termination request.
81#[derive(Debug, Clone, Serialize, Deserialize)]
82pub struct FailedTerminateWorkspaceRequest {
83    pub workspace_id: String,
84    pub error_code: String,
85    pub error_message: String,
86}
87
88/// Represents a WorkSpace image in internal state.
89#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct WorkspaceImage {
91    pub image_id: String,
92    pub name: String,
93    pub description: String,
94    pub state: String,
95    pub operating_system_type: Option<String>,
96    pub owner_account_id: String,
97    pub required_tenancy: String,
98    pub created: String,
99}
100
101/// Client properties for a resource.
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct ClientProperties {
104    pub reconnect_enabled: Option<String>,
105    pub log_upload_enabled: Option<String>,
106}
107
108/// Self-service permissions for a directory.
109#[derive(Debug, Clone, Serialize, Deserialize)]
110pub struct SelfservicePermissions {
111    pub restart_workspace: Option<String>,
112    pub increase_volume_size: Option<String>,
113    pub change_compute_type: Option<String>,
114    pub switch_running_mode: Option<String>,
115    pub rebuild_workspace: Option<String>,
116}
117
118/// Workspace creation properties for a directory.
119#[derive(Debug, Clone, Serialize, Deserialize)]
120pub struct WorkspaceCreationProperties {
121    pub custom_security_group_id: Option<String>,
122    pub default_ou: Option<String>,
123    pub enable_internet_access: Option<bool>,
124    pub enable_maintenance_mode: Option<bool>,
125    pub user_enabled_as_local_administrator: Option<bool>,
126    pub instance_iam_role_arn: Option<String>,
127}
128
129/// Image permission entry (shared account ID).
130#[derive(Debug, Clone, Serialize, Deserialize)]
131pub struct ImagePermission {
132    pub shared_account_id: String,
133}
134
135/// An IP access control group.
136#[derive(Debug, Clone, Serialize, Deserialize)]
137pub struct IpGroup {
138    pub group_id: String,
139    pub group_name: String,
140    pub group_desc: Option<String>,
141    pub user_rules: Vec<IpRule>,
142}
143
144/// A rule in an IP access control group.
145#[derive(Debug, Clone, Serialize, Deserialize)]
146pub struct IpRule {
147    pub ip_rule: String,
148    pub rule_desc: Option<String>,
149}
150
151/// A connection alias.
152#[derive(Debug, Clone, Serialize, Deserialize)]
153pub struct ConnectionAlias {
154    pub alias_id: String,
155    pub connection_string: String,
156    pub owner_account_id: String,
157    pub state: String,
158    /// directory_id -> connection_identifier
159    pub associations: Vec<ConnectionAliasAssociation>,
160}
161
162/// A connection alias association.
163#[derive(Debug, Clone, Serialize, Deserialize)]
164pub struct ConnectionAliasAssociation {
165    pub connection_identifier: String,
166    pub resource_id: Option<String>,
167    pub associated_account_id: Option<String>,
168}
169
170/// A connection alias permission.
171#[derive(Debug, Clone, Serialize, Deserialize)]
172pub struct ConnectionAliasPermission {
173    pub shared_account_id: String,
174    pub allow_association: bool,
175}
176
177/// A workspace bundle.
178#[derive(Debug, Clone, Serialize, Deserialize)]
179pub struct WorkspaceBundle {
180    pub bundle_id: String,
181    pub name: String,
182    pub owner: Option<String>,
183    pub description: Option<String>,
184    pub bundle_type: Option<String>,
185    pub compute_type_name: Option<String>,
186    pub root_storage_capacity: Option<i32>,
187    pub user_storage_capacity: Option<i32>,
188    pub creation_time: String,
189}
190
191/// A WorkSpaces pool.
192#[derive(Debug, Clone, Serialize, Deserialize)]
193pub struct WorkspacesPool {
194    pub pool_id: String,
195    pub pool_arn: String,
196    pub pool_name: String,
197    pub description: Option<String>,
198    pub state: String,
199    pub bundle_id: String,
200    pub directory_id: String,
201    pub created_at: String,
202}
203
204/// Request to start a workspace.
205#[derive(Debug, Clone, Serialize, Deserialize)]
206pub struct StartRequest {
207    pub workspace_id: String,
208}
209
210/// Request to stop a workspace.
211#[derive(Debug, Clone, Serialize, Deserialize)]
212pub struct StopRequest {
213    pub workspace_id: String,
214}
215
216/// Request to reboot a workspace.
217#[derive(Debug, Clone, Serialize, Deserialize)]
218pub struct RebootRequest {
219    pub workspace_id: String,
220}
221
222/// Request to rebuild a workspace.
223#[derive(Debug, Clone, Serialize, Deserialize)]
224pub struct RebuildRequest {
225    pub workspace_id: String,
226}