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