1use serde::{Deserialize, Serialize};
2
3#[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#[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#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct Tag {
62 pub key: String,
63 pub value: String,
64}
65
66#[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#[derive(Debug, Clone, Serialize, Deserialize)]
76pub struct TerminateRequest {
77 pub workspace_id: String,
78}
79
80#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct ClientProperties {
104 pub reconnect_enabled: Option<String>,
105 pub log_upload_enabled: Option<String>,
106}
107
108#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
131pub struct ImagePermission {
132 pub shared_account_id: String,
133}
134
135#[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#[derive(Debug, Clone, Serialize, Deserialize)]
146pub struct IpRule {
147 pub ip_rule: String,
148 pub rule_desc: Option<String>,
149}
150
151#[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 pub associations: Vec<ConnectionAliasAssociation>,
160}
161
162#[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#[derive(Debug, Clone, Serialize, Deserialize)]
172pub struct ConnectionAliasPermission {
173 pub shared_account_id: String,
174 pub allow_association: bool,
175}
176
177#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
206pub struct StartRequest {
207 pub workspace_id: String,
208}
209
210#[derive(Debug, Clone, Serialize, Deserialize)]
212pub struct StopRequest {
213 pub workspace_id: String,
214}
215
216#[derive(Debug, Clone, Serialize, Deserialize)]
218pub struct RebootRequest {
219 pub workspace_id: String,
220}
221
222#[derive(Debug, Clone, Serialize, Deserialize)]
224pub struct RebuildRequest {
225 pub workspace_id: String,
226}