Skip to main content

mountos_admin_sdk/
types_gen.rs

1// Code generated by gen; DO NOT EDIT.
2
3use serde::{Deserialize, Serialize};
4
5/// Client configuration.
6#[derive(Debug, Clone, Default)]
7pub struct Config {
8    /// Base URL of the appserv provider API, e.g. `https://appserv.example.com`.
9    pub base_url: String,
10    /// Base64-encoded ED25519 private key (32-byte seed or 64-byte seed+public key).
11    pub private_key: String,
12    /// Optional dashboard operator context, signed into each request.
13    pub dashboard_user: Option<DashboardUser>,
14    /// Dedicated HMAC secret for the `X-MountOS-Dashboard-User` header (appserv
15    /// `DASHBOARD_USER_HMAC_KEY`); required when `dashboard_user` is set.
16    pub dashboard_hmac_key: Option<String>,
17}
18
19/// Page-based pagination options.
20#[derive(Debug, Clone, Default)]
21pub struct ListOptions {
22    pub page: Option<i64>,
23    pub limit: Option<i64>,
24}
25
26/// Pagination metadata returned by page-based list endpoints.
27#[derive(Debug, Clone, Deserialize)]
28pub struct PaginationMeta {
29    pub page: i64,
30    pub limit: i64,
31    pub total: i64,
32    #[serde(rename = "totalPages")]
33    pub total_pages: i64,
34}
35
36/// Page-based list response.
37#[derive(Debug, Clone, Deserialize)]
38pub struct PaginatedResponse<T> {
39    pub items: Vec<T>,
40    pub pagination: PaginationMeta,
41}
42
43/// Cursor-based list response.
44#[derive(Debug, Clone, Deserialize)]
45pub struct CursorPaginatedResponse<T> {
46    pub items: Vec<T>,
47    #[serde(rename = "nextCursor")]
48    pub next_cursor: Option<i64>,
49}
50
51/// Identifier returned by create/edit/toggle endpoints.
52#[derive(Debug, Clone, Deserialize)]
53pub struct IdResponse {
54    pub id: i64,
55}
56
57/// `ClientSessionStatus` values accepted/returned on the wire.
58pub type ClientSessionStatus = String;
59pub const CLIENT_SESSION_STATUS_CONNECTED: &str = "connected";
60pub const CLIENT_SESSION_STATUS_ACTIVE: &str = "active";
61pub const CLIENT_SESSION_STATUS_UNHEALTHY: &str = "unhealthy";
62pub const CLIENT_SESSION_STATUS_DISCONNECTED: &str = "disconnected";
63pub const CLIENT_SESSION_STATUS_EXPIRED: &str = "expired";
64pub const CLIENT_SESSION_STATUS_UNKNOWN: &str = "unknown";
65
66/// `LicenseQuotaState` values accepted/returned on the wire.
67pub type LicenseQuotaState = String;
68pub const LICENSE_QUOTA_STATE_OK: &str = "ok";
69pub const LICENSE_QUOTA_STATE_EXCEEDED: &str = "exceeded";
70
71/// `LicenseStatus` values accepted/returned on the wire.
72pub type LicenseStatus = String;
73pub const LICENSE_STATUS_VALID: &str = "valid";
74pub const LICENSE_STATUS_EXPIRING: &str = "expiring";
75pub const LICENSE_STATUS_GRACE: &str = "grace";
76pub const LICENSE_STATUS_EXPIRED_ACCESS: &str = "expired_access";
77pub const LICENSE_STATUS_EXPIRED: &str = "expired";
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
80pub struct Account {
81    pub id: i64,
82    pub name: String,
83    pub description: String,
84    #[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
85    pub icon_url: Option<String>,
86    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
87    pub provider_info: Option<serde_json::Value>,
88    #[serde(rename = "liveVolume")]
89    pub live_volume: i64,
90    #[serde(rename = "totalVolume")]
91    pub total_volume: i64,
92    #[serde(rename = "quotaLimit")]
93    pub quota_limit: i64,
94    #[serde(rename = "quotaExcessPct")]
95    pub quota_excess_pct: i32,
96    #[serde(rename = "isActive")]
97    pub is_active: bool,
98    pub locked: bool,
99    #[serde(rename = "createdAt")]
100    pub created_at: String,
101    #[serde(rename = "updatedAt")]
102    pub updated_at: String,
103}
104
105#[derive(Debug, Clone, Serialize, Deserialize)]
106pub struct User {
107    pub id: i64,
108    #[serde(rename = "accountId")]
109    pub account_id: i64,
110    pub username: String,
111    pub email: String,
112    pub name: String,
113    #[serde(rename = "isActive")]
114    pub is_active: bool,
115}
116
117#[derive(Debug, Clone, Serialize, Deserialize)]
118pub struct Region {
119    pub id: i64,
120    #[serde(rename = "exportId")]
121    pub export_id: String,
122    #[serde(rename = "accountId")]
123    pub account_id: i64,
124    pub name: String,
125    pub dns: String,
126    #[serde(rename = "liveVolume")]
127    pub live_volume: i64,
128    #[serde(rename = "totalVolume")]
129    pub total_volume: i64,
130    #[serde(rename = "isActive")]
131    pub is_active: bool,
132    #[serde(rename = "createdAt")]
133    pub created_at: String,
134    #[serde(rename = "updatedAt")]
135    pub updated_at: String,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
139pub struct RegionCluster {
140    pub id: i64,
141    #[serde(rename = "exportId")]
142    pub export_id: String,
143    #[serde(rename = "regionId")]
144    pub region_id: i64,
145    pub name: String,
146    #[serde(rename = "defaultCluster")]
147    pub default_cluster: bool,
148    #[serde(rename = "isReady")]
149    pub is_ready: bool,
150    #[serde(rename = "isActive")]
151    pub is_active: bool,
152    #[serde(rename = "createdAt")]
153    pub created_at: String,
154    #[serde(rename = "updatedAt")]
155    pub updated_at: String,
156}
157
158#[derive(Debug, Clone, Serialize, Deserialize)]
159pub struct Storage {
160    pub id: i64,
161    pub account: Ref,
162    #[serde(rename = "regionInfo")]
163    pub region_info: Ref,
164    pub name: String,
165    #[serde(skip_serializing_if = "Option::is_none")]
166    pub description: Option<String>,
167    #[serde(rename = "storageType")]
168    pub storage_type: String,
169    #[serde(rename = "providerType")]
170    pub provider_type: String,
171    pub endpoint: String,
172    #[serde(skip_serializing_if = "Option::is_none")]
173    pub region: Option<String>,
174    #[serde(skip_serializing_if = "Option::is_none")]
175    pub bucket: Option<String>,
176    #[serde(skip_serializing_if = "Option::is_none")]
177    pub base: Option<String>,
178    #[serde(rename = "blockRegion", skip_serializing_if = "Option::is_none")]
179    pub block_region: Option<String>,
180    #[serde(rename = "blockSize", skip_serializing_if = "Option::is_none")]
181    pub block_size: Option<i32>,
182    #[serde(rename = "isActive")]
183    pub is_active: bool,
184    #[serde(rename = "createdAt")]
185    pub created_at: String,
186    #[serde(rename = "updatedAt")]
187    pub updated_at: String,
188}
189
190#[derive(Debug, Clone, Serialize, Deserialize)]
191pub struct BlockVolume {
192    pub id: String,
193    #[serde(skip_serializing_if = "Option::is_none")]
194    pub name: Option<String>,
195    #[serde(rename = "clusterName", skip_serializing_if = "Option::is_none")]
196    pub cluster_name: Option<String>,
197    #[serde(rename = "clusterUuid", skip_serializing_if = "Option::is_none")]
198    pub cluster_uuid: Option<String>,
199    #[serde(rename = "shardId")]
200    pub shard_id: i64,
201    #[serde(rename = "regionClusterId")]
202    pub region_cluster_id: i64,
203    #[serde(rename = "clusterReady")]
204    pub cluster_ready: bool,
205    #[serde(rename = "isActive")]
206    pub is_active: bool,
207    #[serde(rename = "createdAt")]
208    pub created_at: String,
209    #[serde(rename = "updatedAt")]
210    pub updated_at: String,
211}
212
213#[derive(Debug, Clone, Serialize, Deserialize)]
214pub struct Volume {
215    pub id: i64,
216    pub account: Ref,
217    pub storage: Ref,
218    pub region: Ref,
219    #[serde(rename = "regionCluster", skip_serializing_if = "Option::is_none")]
220    pub region_cluster: Option<Ref>,
221    pub name: String,
222    #[serde(skip_serializing_if = "Option::is_none")]
223    pub description: Option<String>,
224    #[serde(rename = "volumeType")]
225    pub volume_type: String,
226    #[serde(rename = "storageType", skip_serializing_if = "Option::is_none")]
227    pub storage_type: Option<String>,
228    pub encryption: bool,
229    #[serde(rename = "quotaLimit")]
230    pub quota_limit: i64,
231    #[serde(rename = "liveVolume")]
232    pub live_volume: i64,
233    #[serde(rename = "totalVolume")]
234    pub total_volume: i64,
235    #[serde(rename = "pendingVolume")]
236    pub pending_volume: i64,
237    #[serde(rename = "liveInactiveVolume")]
238    pub live_inactive_volume: i64,
239    pub locked: bool,
240    #[serde(rename = "retentionPeriod")]
241    pub retention_period: i32,
242    #[serde(rename = "gracePeriod")]
243    pub grace_period: i32,
244    #[serde(rename = "forkGracePeriod")]
245    pub fork_grace_period: i32,
246    #[serde(rename = "eventLogRetentionPeriod")]
247    pub event_log_retention_period: i32,
248    #[serde(rename = "isActive")]
249    pub is_active: bool,
250    #[serde(rename = "isCleanupMetaEnabled")]
251    pub is_cleanup_meta_enabled: bool,
252    #[serde(rename = "isCleanupStorageEnabled")]
253    pub is_cleanup_storage_enabled: bool,
254    #[serde(rename = "isCleanupVaultEnabled")]
255    pub is_cleanup_vault_enabled: bool,
256    #[serde(rename = "createdAt")]
257    pub created_at: String,
258    #[serde(rename = "updatedAt")]
259    pub updated_at: String,
260}
261
262#[derive(Debug, Clone, Serialize, Deserialize)]
263pub struct Fork {
264    pub fid: i32,
265    pub name: String,
266    #[serde(rename = "parentFid")]
267    pub parent_fid: i32,
268    #[serde(rename = "parentName")]
269    pub parent_name: String,
270    #[serde(rename = "snapshotTs")]
271    pub snapshot_ts: i64,
272    #[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
273    pub created_by: Option<i64>,
274    #[serde(rename = "createdAt")]
275    pub created_at: i64,
276    #[serde(rename = "childrenCount")]
277    pub children_count: i32,
278    #[serde(skip_serializing_if = "Option::is_none")]
279    pub inactive: Option<bool>,
280    #[serde(rename = "inactiveAt", skip_serializing_if = "Option::is_none")]
281    pub inactive_at: Option<i64>,
282    pub status: String,
283    pub size: i64,
284}
285
286#[derive(Debug, Clone, Serialize, Deserialize)]
287pub struct ForkTreeEntry {
288    pub inode: i64,
289    pub name: String,
290    pub kind: String,
291    pub size: i64,
292    pub mtime: i64,
293    pub ctime: i64,
294    #[serde(rename = "creatorId", skip_serializing_if = "Option::is_none")]
295    pub creator_id: Option<i64>,
296    #[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
297    pub updater_id: Option<i64>,
298}
299
300#[derive(Debug, Clone, Serialize, Deserialize)]
301pub struct ForkEntryDetail {
302    pub inode: i64,
303    pub path: String,
304    pub name: String,
305    pub kind: String,
306    pub size: i64,
307    pub mtime: i64,
308    pub ctime: i64,
309    pub generation: i64,
310    #[serde(skip_serializing_if = "Option::is_none")]
311    pub owner: Option<String>,
312    #[serde(skip_serializing_if = "Option::is_none")]
313    pub mode: Option<i32>,
314    #[serde(skip_serializing_if = "Option::is_none")]
315    pub xattrs: Option<serde_json::Value>,
316    #[serde(rename = "creatorId", skip_serializing_if = "Option::is_none")]
317    pub creator_id: Option<i64>,
318    #[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
319    pub updater_id: Option<i64>,
320}
321
322#[derive(Debug, Clone, Serialize, Deserialize)]
323pub struct ForkEntryVersion {
324    pub generation: i64,
325    pub size: i64,
326    pub mtime: i64,
327    #[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
328    pub updater_id: Option<i64>,
329    #[serde(rename = "contentHash", skip_serializing_if = "Option::is_none")]
330    pub content_hash: Option<String>,
331}
332
333#[derive(Debug, Clone, Serialize, Deserialize)]
334pub struct ForkTreeMatch {
335    pub path: String,
336    pub inode: i64,
337    pub kind: String,
338    pub size: i64,
339    pub mtime: i64,
340}
341
342#[derive(Debug, Clone, Serialize, Deserialize)]
343pub struct AuditLog {
344    pub id: i64,
345    pub title: String,
346    #[serde(skip_serializing_if = "Option::is_none")]
347    pub description: Option<String>,
348    #[serde(skip_serializing_if = "Option::is_none")]
349    pub subject: Option<String>,
350    pub success: bool,
351    #[serde(skip_serializing_if = "Option::is_none")]
352    pub data: Option<serde_json::Value>,
353    #[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
354    pub created_by: Option<String>,
355    #[serde(skip_serializing_if = "Option::is_none")]
356    pub node: Option<String>,
357    #[serde(rename = "accountId", skip_serializing_if = "Option::is_none")]
358    pub account_id: Option<i64>,
359    #[serde(rename = "regionId", skip_serializing_if = "Option::is_none")]
360    pub region_id: Option<i64>,
361    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
362    pub region_cluster_id: Option<i64>,
363    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
364    pub created_at: Option<String>,
365    #[serde(rename = "updatedAt", skip_serializing_if = "Option::is_none")]
366    pub updated_at: Option<String>,
367}
368
369#[derive(Debug, Clone, Serialize, Deserialize)]
370pub struct ServiceNode {
371    pub id: i64,
372    #[serde(rename = "regionId")]
373    pub region_id: i64,
374    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
375    pub region_cluster_id: Option<i64>,
376    #[serde(rename = "serviceType")]
377    pub service_type: String,
378    #[serde(rename = "nodeId")]
379    pub node_id: String,
380    #[serde(rename = "advertiseAddr")]
381    pub advertise_addr: String,
382    #[serde(rename = "rpcAddr", skip_serializing_if = "Option::is_none")]
383    pub rpc_addr: Option<String>,
384    #[serde(skip_serializing_if = "Option::is_none")]
385    pub metadata: Option<serde_json::Value>,
386    pub status: String,
387    #[serde(rename = "lastHeartbeat", skip_serializing_if = "Option::is_none")]
388    pub last_heartbeat: Option<i64>,
389    #[serde(rename = "isActive")]
390    pub is_active: bool,
391    #[serde(rename = "memUsage", skip_serializing_if = "Option::is_none")]
392    pub mem_usage: Option<f64>,
393    #[serde(rename = "sysLoad", skip_serializing_if = "Option::is_none")]
394    pub sys_load: Option<i64>,
395}
396
397#[derive(Debug, Clone, Serialize, Deserialize)]
398pub struct ClientSession {
399    pub id: i64,
400    pub account: Ref,
401    pub region: Ref,
402    #[serde(rename = "regionCluster", skip_serializing_if = "Option::is_none")]
403    pub region_cluster: Option<Ref>,
404    pub volume: VolumeRef,
405    #[serde(skip_serializing_if = "Option::is_none")]
406    pub user: Option<Ref>,
407    #[serde(rename = "clientType")]
408    pub client_type: String,
409    #[serde(rename = "osName")]
410    pub os_name: String,
411    #[serde(rename = "osVersion", skip_serializing_if = "Option::is_none")]
412    pub os_version: Option<String>,
413    #[serde(rename = "appVersion", skip_serializing_if = "Option::is_none")]
414    pub app_version: Option<String>,
415    #[serde(skip_serializing_if = "Option::is_none")]
416    pub hostname: Option<String>,
417    #[serde(rename = "ipAddr")]
418    pub ip_addr: String,
419    #[serde(rename = "mountMode", skip_serializing_if = "Option::is_none")]
420    pub mount_mode: Option<String>,
421    #[serde(rename = "mountPath", skip_serializing_if = "Option::is_none")]
422    pub mount_path: Option<String>,
423    #[serde(rename = "forkName", skip_serializing_if = "Option::is_none")]
424    pub fork_name: Option<String>,
425    #[serde(rename = "isTemporaryFork")]
426    pub is_temporary_fork: bool,
427    #[serde(skip_serializing_if = "Option::is_none")]
428    pub metadata: Option<serde_json::Value>,
429    #[serde(skip_serializing_if = "Option::is_none")]
430    pub metrics: Option<serde_json::Value>,
431    pub status: ClientSessionStatus,
432    #[serde(rename = "lastHeartbeat", skip_serializing_if = "Option::is_none")]
433    pub last_heartbeat: Option<i64>,
434    #[serde(rename = "connectedAt", skip_serializing_if = "Option::is_none")]
435    pub connected_at: Option<i64>,
436    #[serde(rename = "disconnectedAt", skip_serializing_if = "Option::is_none")]
437    pub disconnected_at: Option<i64>,
438    #[serde(rename = "isActive")]
439    pub is_active: bool,
440}
441
442#[derive(Debug, Clone, Serialize, Deserialize)]
443pub struct SessionSummary {
444    #[serde(rename = "byStatus")]
445    pub by_status: Vec<SessionSummaryStatusEntry>,
446    #[serde(rename = "byPlatform")]
447    pub by_platform: Vec<SessionSummaryFacet>,
448    #[serde(rename = "byOsName")]
449    pub by_os_name: Vec<SessionSummaryFacet>,
450    #[serde(rename = "regionCount")]
451    pub region_count: i64,
452    #[serde(rename = "volumeCount")]
453    pub volume_count: i64,
454    #[serde(rename = "hostCount")]
455    pub host_count: i64,
456    #[serde(rename = "unhealthyCount")]
457    pub unhealthy_count: i64,
458}
459
460#[derive(Debug, Clone, Serialize, Deserialize)]
461pub struct DiscoverMetaResponse {
462    #[serde(rename = "regionId")]
463    pub region_id: i64,
464    pub region: String,
465    pub endpoints: Vec<DiscoverEndpoint>,
466}
467
468#[derive(Debug, Clone, Serialize, Deserialize)]
469pub struct DashboardStats {
470    #[serde(rename = "userCount")]
471    pub user_count: i64,
472    #[serde(rename = "volumeCount")]
473    pub volume_count: i64,
474    #[serde(rename = "regionCount")]
475    pub region_count: i64,
476    #[serde(rename = "storageCount")]
477    pub storage_count: i64,
478    #[serde(rename = "totalVolumeUsed")]
479    pub total_volume_used: i64,
480    #[serde(rename = "totalQuotaLimit")]
481    pub total_quota_limit: i64,
482    #[serde(rename = "activeSessionCount")]
483    pub active_session_count: i64,
484    #[serde(rename = "regionBreakdown")]
485    pub region_breakdown: Vec<RegionVolumeMetrics>,
486}
487
488#[derive(Debug, Clone, Serialize, Deserialize)]
489pub struct LicenseDetails {
490    #[serde(rename = "licenseId")]
491    pub license_id: String,
492    pub licensee: String,
493    pub contact: String,
494    #[serde(rename = "licenseType")]
495    pub license_type: String,
496    #[serde(rename = "issuedAt")]
497    pub issued_at: String,
498    #[serde(rename = "expiresAt")]
499    pub expires_at: String,
500    #[serde(rename = "gracePeriodDays")]
501    pub grace_period_days: i64,
502    #[serde(rename = "expiredAccessDays")]
503    pub expired_access_days: i64,
504    #[serde(rename = "maxNodes")]
505    pub max_nodes: i64,
506    #[serde(rename = "maxVolumes")]
507    pub max_volumes: i64,
508    #[serde(rename = "maxUsers")]
509    pub max_users: i64,
510    #[serde(rename = "maxAccounts")]
511    pub max_accounts: i64,
512    #[serde(rename = "maxRegions")]
513    pub max_regions: i64,
514    #[serde(rename = "maxStorageBytes")]
515    pub max_storage_bytes: i64,
516    pub status: LicenseStatus,
517    #[serde(rename = "daysRemaining")]
518    pub days_remaining: i64,
519    #[serde(rename = "graceEndsAt")]
520    pub grace_ends_at: String,
521    #[serde(rename = "graceDaysLeft")]
522    pub grace_days_left: i64,
523    #[serde(rename = "expiredAccessEndsAt")]
524    pub expired_access_ends_at: String,
525    #[serde(rename = "expiredAccessDaysLeft")]
526    pub expired_access_days_left: i64,
527    pub quota: LicenseQuota,
528}
529
530#[derive(Debug, Clone, Serialize, Deserialize)]
531pub struct LicenseTerms {
532    pub terms: String,
533}
534
535#[derive(Debug, Clone, Serialize, Deserialize)]
536pub struct ServiceAlert {
537    pub id: i64,
538    #[serde(rename = "alertId")]
539    pub alert_id: String,
540    pub source: String,
541    #[serde(rename = "nodeId")]
542    pub node_id: String,
543    pub severity: i64,
544    pub category: String,
545    pub title: String,
546    #[serde(skip_serializing_if = "Option::is_none")]
547    pub description: Option<String>,
548    #[serde(skip_serializing_if = "Option::is_none")]
549    pub region: Option<Ref>,
550    #[serde(skip_serializing_if = "Option::is_none")]
551    pub account: Option<Ref>,
552    #[serde(rename = "eventTime")]
553    pub event_time: String,
554    #[serde(rename = "resolvedAt", skip_serializing_if = "Option::is_none")]
555    pub resolved_at: Option<String>,
556    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
557    pub created_at: Option<String>,
558}
559
560#[derive(Debug, Clone, Serialize, Deserialize)]
561pub struct AlertCountResponse {
562    pub active: i64,
563    pub recent: i64,
564    #[serde(rename = "infoCount")]
565    pub info_count: i64,
566    #[serde(rename = "warningCount")]
567    pub warning_count: i64,
568    #[serde(rename = "criticalCount")]
569    pub critical_count: i64,
570}
571
572#[derive(Debug, Clone, Serialize, Deserialize)]
573pub struct RegionAlert {
574    pub id: i64,
575    #[serde(rename = "alertId")]
576    pub alert_id: String,
577    pub source: String,
578    #[serde(rename = "nodeId")]
579    pub node_id: String,
580    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
581    pub region_cluster_id: Option<i64>,
582    pub severity: i64,
583    pub category: String,
584    pub title: String,
585    #[serde(skip_serializing_if = "Option::is_none")]
586    pub description: Option<String>,
587    #[serde(rename = "eventTime")]
588    pub event_time: String,
589    #[serde(rename = "resolvedAt", skip_serializing_if = "Option::is_none")]
590    pub resolved_at: Option<String>,
591    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
592    pub created_at: Option<String>,
593}
594
595#[derive(Debug, Clone, Serialize, Deserialize)]
596pub struct BlockMember {
597    #[serde(skip_serializing_if = "Option::is_none")]
598    pub name: Option<String>,
599    #[serde(rename = "regionClusterId")]
600    pub region_cluster_id: i64,
601}
602
603#[derive(Debug, Clone, Serialize, Deserialize)]
604pub struct DashboardUser {
605    pub id: String,
606    pub name: String,
607    #[serde(skip_serializing_if = "Option::is_none")]
608    pub email: Option<String>,
609    pub role: String,
610    #[serde(skip_serializing_if = "Option::is_none")]
611    pub username: Option<String>,
612    #[serde(rename = "accountId", skip_serializing_if = "Option::is_none")]
613    pub account_id: Option<i64>,
614    #[serde(rename = "userId", skip_serializing_if = "Option::is_none")]
615    pub user_id: Option<i64>,
616    #[serde(rename = "volumeId", skip_serializing_if = "Option::is_none")]
617    pub volume_id: Option<i64>,
618    #[serde(skip_serializing_if = "Option::is_none")]
619    pub exp: Option<i64>,
620}
621
622#[derive(Debug, Clone, Serialize, Deserialize)]
623pub struct DiscoverEndpoint {
624    #[serde(rename = "nodeId")]
625    pub node_id: String,
626    pub addr: String,
627    pub status: String,
628}
629
630#[derive(Debug, Clone, Serialize, Deserialize)]
631pub struct LicenseQuota {
632    pub state: LicenseQuotaState,
633    #[serde(rename = "liveVolume")]
634    pub live_volume: i64,
635    #[serde(rename = "totalVolume")]
636    pub total_volume: i64,
637    pub generation: i64,
638    #[serde(rename = "lastTransitionAtMs")]
639    pub last_transition_at_ms: i64,
640}
641
642#[derive(Debug, Clone, Serialize, Deserialize)]
643pub struct Ref {
644    pub id: i64,
645    pub name: String,
646}
647
648#[derive(Debug, Clone, Serialize, Deserialize)]
649pub struct RegionVolumeMetrics {
650    #[serde(rename = "regionId")]
651    pub region_id: i64,
652    #[serde(rename = "regionName")]
653    pub region_name: String,
654    #[serde(rename = "volumeCount")]
655    pub volume_count: i64,
656    #[serde(rename = "totalVolumeUsed")]
657    pub total_volume_used: i64,
658    #[serde(rename = "totalQuotaLimit")]
659    pub total_quota_limit: i64,
660}
661
662#[derive(Debug, Clone, Serialize, Deserialize)]
663pub struct SessionSummaryFacet {
664    pub label: String,
665    pub count: i64,
666}
667
668#[derive(Debug, Clone, Serialize, Deserialize)]
669pub struct SessionSummaryStatusEntry {
670    #[serde(rename = "clientType")]
671    pub client_type: String,
672    pub status: String,
673    pub count: i64,
674}
675
676#[derive(Debug, Clone, Serialize, Deserialize)]
677pub struct UserLite {
678    pub id: i64,
679    pub username: String,
680    pub name: String,
681}
682
683#[derive(Debug, Clone, Serialize, Deserialize)]
684pub struct VolumeRef {
685    pub id: i64,
686    pub name: String,
687    #[serde(skip_serializing_if = "Option::is_none")]
688    pub r#type: Option<String>,
689}
690
691#[derive(Debug, Clone, Serialize, Deserialize)]
692pub struct VolumeSizePoint {
693    #[serde(rename = "bucketEnd")]
694    pub bucket_end: String,
695    #[serde(rename = "liveVolume")]
696    pub live_volume: i64,
697    #[serde(rename = "totalVolume")]
698    pub total_volume: i64,
699    #[serde(rename = "pendingVolume")]
700    pub pending_volume: i64,
701    #[serde(rename = "liveInactiveVolume")]
702    pub live_inactive_volume: i64,
703}
704
705// Accounts
706
707#[derive(Debug, Clone, Serialize)]
708pub struct CreateAccountRequest {
709    pub name: String,
710    #[serde(skip_serializing_if = "Option::is_none")]
711    pub description: Option<String>,
712    #[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
713    pub icon_url: Option<String>,
714    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
715    pub provider_info: Option<serde_json::Value>,
716}
717
718#[derive(Debug, Clone, Serialize)]
719pub struct EditAccountRequest {
720    pub name: String,
721    #[serde(skip_serializing_if = "Option::is_none")]
722    pub description: Option<String>,
723    #[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
724    pub icon_url: Option<String>,
725    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
726    pub provider_info: Option<serde_json::Value>,
727}
728
729#[derive(Debug, Clone, Serialize)]
730pub struct UpdateAccountQuotaRequest {
731    #[serde(rename = "quotaLimit")]
732    pub quota_limit: i64,
733    #[serde(rename = "quotaExcessPct", skip_serializing_if = "Option::is_none")]
734    pub quota_excess_pct: Option<i32>,
735}
736
737#[derive(Debug, Clone, Default)]
738pub struct AccountListOptions {
739    pub is_active: Option<bool>,
740    pub page: Option<i64>,
741    pub limit: Option<i64>,
742}
743
744// Users
745
746#[derive(Debug, Clone, Serialize)]
747pub struct AddUserRequest {
748    #[serde(rename = "accountId")]
749    pub account_id: i64,
750    pub username: String,
751    pub email: String,
752    #[serde(skip_serializing_if = "Option::is_none")]
753    pub name: Option<String>,
754    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
755    pub provider_info: Option<serde_json::Value>,
756}
757
758#[derive(Debug, Clone, Serialize)]
759pub struct BulkUserRequest {
760    pub ids: Vec<i64>,
761}
762
763#[derive(Debug, Clone, Serialize, Deserialize)]
764pub struct BulkUserResponse {
765    pub users: Vec<UserLite>,
766}
767
768#[derive(Debug, Clone, Serialize)]
769pub struct EditUserRequest {
770    pub username: String,
771    pub email: String,
772    #[serde(skip_serializing_if = "Option::is_none")]
773    pub name: Option<String>,
774    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
775    pub provider_info: Option<serde_json::Value>,
776}
777
778#[derive(Debug, Clone, Default)]
779pub struct UserListOptions {
780    pub account_id: i64,
781    pub search: Option<String>,
782    pub is_active: Option<bool>,
783    pub page: Option<i64>,
784    pub limit: Option<i64>,
785}
786
787// Regions
788
789#[derive(Debug, Clone, Serialize)]
790pub struct CreateRegionRequest {
791    #[serde(rename = "accountId")]
792    pub account_id: i64,
793    pub name: String,
794    pub dns: String,
795}
796
797#[derive(Debug, Clone, Serialize)]
798pub struct EditRegionRequest {
799    #[serde(rename = "accountId")]
800    pub account_id: i64,
801    pub name: String,
802    pub dns: String,
803}
804
805#[derive(Debug, Clone, Default)]
806pub struct RegionListOptions {
807    pub is_active: Option<bool>,
808    pub page: Option<i64>,
809    pub limit: Option<i64>,
810}
811
812// RegionClusters
813
814#[derive(Debug, Clone, Serialize)]
815pub struct CreateRegionClusterRequest {
816    pub name: String,
817}
818
819#[derive(Debug, Clone, Serialize)]
820pub struct EditRegionClusterRequest {
821    pub name: String,
822}
823
824#[derive(Debug, Clone, Serialize)]
825pub struct SetRegionClusterReadyRequest {
826    pub ready: bool,
827}
828
829#[derive(Debug, Clone, Serialize, Deserialize)]
830pub struct SetReadyRegionClusterResponse {
831    pub id: i64,
832    pub ready: bool,
833}
834
835#[derive(Debug, Clone, Default)]
836pub struct RegionClusterListOptions {
837    pub is_active: Option<bool>,
838    pub page: Option<i64>,
839    pub limit: Option<i64>,
840}
841
842// Storages
843
844#[derive(Debug, Clone, Serialize)]
845pub struct CreateStorageRequest {
846    #[serde(rename = "accountId")]
847    pub account_id: i64,
848    #[serde(rename = "regionId")]
849    pub region_id: i64,
850    pub name: String,
851    #[serde(skip_serializing_if = "Option::is_none")]
852    pub description: Option<String>,
853    #[serde(rename = "storageType")]
854    pub storage_type: String,
855    #[serde(rename = "providerType")]
856    pub provider_type: String,
857    pub endpoint: String,
858    #[serde(skip_serializing_if = "Option::is_none")]
859    pub region: Option<String>,
860    #[serde(skip_serializing_if = "Option::is_none")]
861    pub bucket: Option<String>,
862    #[serde(skip_serializing_if = "Option::is_none")]
863    pub base: Option<String>,
864    #[serde(rename = "blockRegion", skip_serializing_if = "Option::is_none")]
865    pub block_region: Option<String>,
866    #[serde(rename = "blockSize", skip_serializing_if = "Option::is_none")]
867    pub block_size: Option<i32>,
868    #[serde(skip_serializing_if = "Option::is_none")]
869    pub members: Option<Vec<BlockMember>>,
870    #[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
871    pub access_key: Option<String>,
872    #[serde(rename = "secretKey", skip_serializing_if = "Option::is_none")]
873    pub secret_key: Option<String>,
874}
875
876#[derive(Debug, Clone, Serialize, Deserialize)]
877pub struct CreateStorageResponse {
878    pub id: i64,
879    #[serde(rename = "blockVolumeIds", skip_serializing_if = "Option::is_none")]
880    pub block_volume_ids: Option<Vec<String>>,
881}
882
883#[derive(Debug, Clone, Serialize)]
884pub struct EditStorageRequest {
885    pub name: String,
886    #[serde(skip_serializing_if = "Option::is_none")]
887    pub description: Option<String>,
888    #[serde(skip_serializing_if = "Option::is_none")]
889    pub endpoint: Option<String>,
890    #[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
891    pub access_key: Option<String>,
892    #[serde(rename = "secretKey", skip_serializing_if = "Option::is_none")]
893    pub secret_key: Option<String>,
894}
895
896#[derive(Debug, Clone, Serialize)]
897pub struct TestStorageBucketRequest {
898    pub endpoint: String,
899    #[serde(skip_serializing_if = "Option::is_none")]
900    pub region: Option<String>,
901    pub bucket: String,
902    #[serde(rename = "accessKey")]
903    pub access_key: String,
904    #[serde(rename = "secretKey")]
905    pub secret_key: String,
906    #[serde(rename = "providerType", skip_serializing_if = "Option::is_none")]
907    pub provider_type: Option<String>,
908}
909
910#[derive(Debug, Clone, Serialize, Deserialize)]
911pub struct TestBucketStorageResponse {
912    #[serde(rename = "bucketExists")]
913    pub bucket_exists: bool,
914    pub list: bool,
915    pub write: bool,
916    pub read: bool,
917    pub delete: bool,
918    pub multipart: bool,
919}
920
921#[derive(Debug, Clone, Serialize, Deserialize)]
922pub struct TestStorageBucketStorageResponse {
923    #[serde(rename = "bucketExists")]
924    pub bucket_exists: bool,
925    pub list: bool,
926    pub write: bool,
927    pub read: bool,
928    pub delete: bool,
929    pub multipart: bool,
930}
931
932#[derive(Debug, Clone, Default)]
933pub struct StorageListOptions {
934    pub account_id: i64,
935    pub search: Option<String>,
936    pub region_id: Option<i64>,
937    pub storage_type: Option<String>,
938    pub provider_type: Option<String>,
939    pub is_active: Option<bool>,
940    pub page: Option<i64>,
941    pub limit: Option<i64>,
942}
943
944// Volumes
945
946#[derive(Debug, Clone, Serialize)]
947pub struct CreateVolumeRequest {
948    #[serde(rename = "accountId")]
949    pub account_id: i64,
950    #[serde(rename = "storageId")]
951    pub storage_id: i64,
952    pub name: String,
953    #[serde(skip_serializing_if = "Option::is_none")]
954    pub description: Option<String>,
955    #[serde(rename = "volumeType")]
956    pub volume_type: String,
957    #[serde(skip_serializing_if = "Option::is_none")]
958    pub encryption: Option<bool>,
959    #[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
960    pub encryption_key: Option<String>,
961    #[serde(rename = "retentionPeriod", skip_serializing_if = "Option::is_none")]
962    pub retention_period: Option<i32>,
963    #[serde(rename = "gracePeriod", skip_serializing_if = "Option::is_none")]
964    pub grace_period: Option<i32>,
965    #[serde(rename = "forkGracePeriod", skip_serializing_if = "Option::is_none")]
966    pub fork_grace_period: Option<i32>,
967    #[serde(rename = "eventLogRetentionPeriod", skip_serializing_if = "Option::is_none")]
968    pub event_log_retention_period: Option<i32>,
969    #[serde(rename = "quotaLimit", skip_serializing_if = "Option::is_none")]
970    pub quota_limit: Option<i64>,
971    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
972    pub region_cluster_id: Option<i64>,
973    #[serde(rename = "regionClusterUuid", skip_serializing_if = "Option::is_none")]
974    pub region_cluster_uuid: Option<String>,
975}
976
977#[derive(Debug, Clone, Serialize, Deserialize)]
978pub struct CreateVolumeResponse {
979    pub id: i64,
980    #[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
981    pub encryption_key: Option<String>,
982}
983
984#[derive(Debug, Clone, Serialize)]
985pub struct EditVolumeRequest {
986    #[serde(skip_serializing_if = "Option::is_none")]
987    pub description: Option<String>,
988    #[serde(rename = "retentionPeriod", skip_serializing_if = "Option::is_none")]
989    pub retention_period: Option<i32>,
990    #[serde(rename = "gracePeriod", skip_serializing_if = "Option::is_none")]
991    pub grace_period: Option<i32>,
992    #[serde(rename = "forkGracePeriod", skip_serializing_if = "Option::is_none")]
993    pub fork_grace_period: Option<i32>,
994    #[serde(rename = "eventLogRetentionPeriod", skip_serializing_if = "Option::is_none")]
995    pub event_log_retention_period: Option<i32>,
996}
997
998#[derive(Debug, Clone, Serialize)]
999pub struct MoveVolumeClusterRequest {
1000    #[serde(rename = "targetClusterId", skip_serializing_if = "Option::is_none")]
1001    pub target_cluster_id: Option<i64>,
1002    #[serde(rename = "targetClusterUuid", skip_serializing_if = "Option::is_none")]
1003    pub target_cluster_uuid: Option<String>,
1004}
1005
1006#[derive(Debug, Clone, Serialize, Deserialize)]
1007pub struct MoveClusterVolumeResponse {
1008    pub id: i64,
1009    #[serde(rename = "sourceClusterId")]
1010    pub source_cluster_id: i64,
1011    #[serde(rename = "targetClusterId")]
1012    pub target_cluster_id: i64,
1013    #[serde(rename = "handoverUntil")]
1014    pub handover_until: i64,
1015}
1016
1017#[derive(Debug, Clone, Serialize)]
1018pub struct DeactivateVolumeRequest {
1019    #[serde(rename = "isCleanupMetaEnabled", skip_serializing_if = "Option::is_none")]
1020    pub is_cleanup_meta_enabled: Option<bool>,
1021    #[serde(rename = "isCleanupStorageEnabled", skip_serializing_if = "Option::is_none")]
1022    pub is_cleanup_storage_enabled: Option<bool>,
1023    #[serde(rename = "isCleanupVaultEnabled", skip_serializing_if = "Option::is_none")]
1024    pub is_cleanup_vault_enabled: Option<bool>,
1025}
1026
1027#[derive(Debug, Clone, Serialize)]
1028pub struct GenerateVolumeAPIKeysRequest {
1029    #[serde(rename = "userId")]
1030    pub user_id: i64,
1031}
1032
1033#[derive(Debug, Clone, Serialize, Deserialize)]
1034pub struct GenerateAPIKeysVolumeResponse {
1035    #[serde(rename = "apiKey")]
1036    pub api_key: String,
1037    #[serde(rename = "apiSecret")]
1038    pub api_secret: String,
1039}
1040
1041#[derive(Debug, Clone, Serialize)]
1042pub struct RevokeVolumeAPIKeyRequest {
1043    #[serde(rename = "apiKey")]
1044    pub api_key: String,
1045}
1046
1047#[derive(Debug, Clone, Serialize)]
1048pub struct RevokeVolumeAPIKeysByUserRequest {
1049    #[serde(rename = "userId")]
1050    pub user_id: i64,
1051}
1052
1053#[derive(Debug, Clone, Serialize)]
1054pub struct UpdateVolumeQuotaRequest {
1055    #[serde(rename = "quotaLimit")]
1056    pub quota_limit: i64,
1057}
1058
1059#[derive(Debug, Clone, Serialize, Deserialize)]
1060pub struct StatsVolumeResponse {
1061    #[serde(rename = "volumeId")]
1062    pub volume_id: String,
1063    #[serde(rename = "liveVolume")]
1064    pub live_volume: i64,
1065    #[serde(rename = "totalVolume")]
1066    pub total_volume: i64,
1067    #[serde(rename = "pendingVolume")]
1068    pub pending_volume: i64,
1069    #[serde(rename = "liveInactiveVolume")]
1070    pub live_inactive_volume: i64,
1071}
1072
1073#[derive(Debug, Clone, Serialize, Deserialize)]
1074pub struct SizeHistoryVolumeResponse {
1075    pub points: Vec<VolumeSizePoint>,
1076}
1077
1078#[derive(Debug, Clone, Serialize)]
1079pub struct CreateVolumeForkRequest {
1080    pub name: String,
1081    #[serde(rename = "parentName", skip_serializing_if = "Option::is_none")]
1082    pub parent_name: Option<String>,
1083    #[serde(rename = "asOf", skip_serializing_if = "Option::is_none")]
1084    pub as_of: Option<i64>,
1085    #[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
1086    pub volume_type: Option<String>,
1087}
1088
1089#[derive(Debug, Clone, Serialize)]
1090pub struct DeleteVolumeForkRequest {
1091    #[serde(skip_serializing_if = "Option::is_none")]
1092    pub force: Option<bool>,
1093    #[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
1094    pub volume_type: Option<String>,
1095}
1096
1097#[derive(Debug, Clone, Serialize, Deserialize)]
1098pub struct DeleteForkVolumeResponse {
1099    #[serde(rename = "inactivatedFids")]
1100    pub inactivated_fids: Vec<i32>,
1101}
1102
1103#[derive(Debug, Clone, Serialize)]
1104pub struct RestoreVolumeForkRequest {
1105    #[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
1106    pub volume_type: Option<String>,
1107}
1108
1109#[derive(Debug, Clone, Default)]
1110pub struct VolumeListOptions {
1111    pub account_id: i64,
1112    pub region_id: Option<i64>,
1113    pub region_cluster_id: Option<i64>,
1114    pub storage_id: Option<i64>,
1115    pub volume_type: Option<String>,
1116    pub locked: Option<bool>,
1117    pub is_active: Option<bool>,
1118    pub page: Option<i64>,
1119    pub limit: Option<i64>,
1120}
1121
1122// VolumeForkTrees
1123
1124#[derive(Debug, Clone, Default)]
1125pub struct VolumeForkTreeListOptions {
1126    pub path: Option<String>,
1127    pub as_of: Option<i64>,
1128    pub cursor: Option<i64>,
1129    pub limit: Option<i64>,
1130    pub sort: Option<String>,
1131    pub kind: Option<String>,
1132}
1133
1134// VolumeForkEntries
1135
1136#[derive(Debug, Clone, Default)]
1137pub struct VolumeForkEntryListOptions {
1138    pub path: Option<String>,
1139    pub cursor: Option<i64>,
1140    pub limit: Option<i64>,
1141}
1142
1143// VolumeForkSearches
1144
1145#[derive(Debug, Clone, Default)]
1146pub struct VolumeForkSearchListOptions {
1147    pub q: Option<String>,
1148    pub path: Option<String>,
1149    pub as_of: Option<i64>,
1150    pub exact: Option<bool>,
1151    pub cursor: Option<i64>,
1152    pub limit: Option<i64>,
1153    pub kind: Option<String>,
1154}
1155
1156// AuditLogs
1157
1158#[derive(Debug, Clone, Default)]
1159pub struct AuditLogListOptions {
1160    pub account_id: Option<i64>,
1161    pub region_id: Option<i64>,
1162    pub region_cluster_id: Option<i64>,
1163    pub cursor: Option<i64>,
1164    pub limit: Option<i64>,
1165    pub subject: Option<String>,
1166}
1167
1168// RegionAuditLogs
1169
1170#[derive(Debug, Clone, Default)]
1171pub struct RegionAuditLogListOptions {
1172    pub region_cluster_id: Option<i64>,
1173    pub cursor: Option<i64>,
1174    pub limit: Option<i64>,
1175    pub subject: Option<String>,
1176    pub node: Option<String>,
1177}
1178
1179// ServiceNodes
1180
1181// Nodes
1182
1183// ClientSessions
1184
1185#[derive(Debug, Clone, Default)]
1186pub struct ClientSessionListOptions {
1187    pub account_id: Option<i64>,
1188    pub region_id: Option<i64>,
1189    pub region_cluster_id: Option<i64>,
1190    pub volume_id: Option<i64>,
1191    pub user_id: Option<i64>,
1192    pub client_type: Option<String>,
1193    pub status: Option<ClientSessionStatus>,
1194    pub is_active: Option<String>,
1195    pub os_name: Option<String>,
1196    pub platform: Option<String>,
1197    pub search: Option<String>,
1198    pub page: Option<i64>,
1199    pub limit: Option<i64>,
1200}
1201
1202// Discover
1203
1204// Dashboard
1205
1206// License
1207
1208// Alerts
1209
1210#[derive(Debug, Clone, Default)]
1211pub struct AlertListOptions {
1212    pub active: Option<bool>,
1213    pub account_id: Option<i64>,
1214    pub region_id: Option<i64>,
1215    pub severity: Option<i64>,
1216    pub category: Option<String>,
1217    pub since: Option<String>,
1218    pub page: Option<i64>,
1219    pub limit: Option<i64>,
1220}
1221
1222// RegionAlerts
1223
1224#[derive(Debug, Clone, Default)]
1225pub struct RegionAlertListOptions {
1226    pub active: Option<bool>,
1227    pub severity: Option<i64>,
1228    pub category: Option<String>,
1229    pub node_id: Option<String>,
1230    pub region_cluster_id: Option<i64>,
1231    pub since: Option<String>,
1232    pub page: Option<i64>,
1233    pub limit: Option<i64>,
1234}
1235
1236// Vault