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