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