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. `UnknownValue` preserves a
58/// value this SDK does not recognize yet, for forward compatibility with
59/// a server that has introduced a new ClientSessionStatus value.
60#[derive(Debug, Clone, PartialEq, Eq)]
61pub enum ClientSessionStatus {
62    Connected,
63    Active,
64    Degraded,
65    Disconnected,
66    Expired,
67    Unknown,
68    /// A value not defined when this SDK was generated.
69    UnknownValue(String),
70}
71
72impl ClientSessionStatus {
73    /// Returns the wire string for this value.
74    pub fn as_str(&self) -> &str {
75        match self {
76            ClientSessionStatus::Connected => "connected",
77            ClientSessionStatus::Active => "active",
78            ClientSessionStatus::Degraded => "degraded",
79            ClientSessionStatus::Disconnected => "disconnected",
80            ClientSessionStatus::Expired => "expired",
81            ClientSessionStatus::Unknown => "unknown",
82            ClientSessionStatus::UnknownValue(s) => s.as_str(),
83        }
84    }
85
86    /// Reports whether this is one of the values defined when this SDK was
87    /// generated (false for `UnknownValue`).
88    pub fn is_known(&self) -> bool {
89        !matches!(self, ClientSessionStatus::UnknownValue(_))
90    }
91}
92
93impl std::fmt::Display for ClientSessionStatus {
94    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
95        f.write_str(self.as_str())
96    }
97}
98
99impl From<&str> for ClientSessionStatus {
100    fn from(s: &str) -> Self {
101        match s {
102            "connected" => ClientSessionStatus::Connected,
103            "active" => ClientSessionStatus::Active,
104            "degraded" => ClientSessionStatus::Degraded,
105            "disconnected" => ClientSessionStatus::Disconnected,
106            "expired" => ClientSessionStatus::Expired,
107            "unknown" => ClientSessionStatus::Unknown,
108            other => ClientSessionStatus::UnknownValue(other.to_string()),
109        }
110    }
111}
112
113impl Serialize for ClientSessionStatus {
114    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
115    where
116        S: serde::Serializer,
117    {
118        serializer.serialize_str(self.as_str())
119    }
120}
121
122impl<'de> Deserialize<'de> for ClientSessionStatus {
123    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
124    where
125        D: serde::Deserializer<'de>,
126    {
127        let s = String::deserialize(deserializer)?;
128        Ok(ClientSessionStatus::from(s.as_str()))
129    }
130}
131
132/// `LicenseQuotaState` values accepted/returned on the wire. `Unknown` preserves a
133/// value this SDK does not recognize yet, for forward compatibility with
134/// a server that has introduced a new LicenseQuotaState value.
135#[derive(Debug, Clone, PartialEq, Eq)]
136pub enum LicenseQuotaState {
137    Ok,
138    Exceeded,
139    /// A value not defined when this SDK was generated.
140    Unknown(String),
141}
142
143impl LicenseQuotaState {
144    /// Returns the wire string for this value.
145    pub fn as_str(&self) -> &str {
146        match self {
147            LicenseQuotaState::Ok => "ok",
148            LicenseQuotaState::Exceeded => "exceeded",
149            LicenseQuotaState::Unknown(s) => s.as_str(),
150        }
151    }
152
153    /// Reports whether this is one of the values defined when this SDK was
154    /// generated (false for `Unknown`).
155    pub fn is_known(&self) -> bool {
156        !matches!(self, LicenseQuotaState::Unknown(_))
157    }
158}
159
160impl std::fmt::Display for LicenseQuotaState {
161    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
162        f.write_str(self.as_str())
163    }
164}
165
166impl From<&str> for LicenseQuotaState {
167    fn from(s: &str) -> Self {
168        match s {
169            "ok" => LicenseQuotaState::Ok,
170            "exceeded" => LicenseQuotaState::Exceeded,
171            other => LicenseQuotaState::Unknown(other.to_string()),
172        }
173    }
174}
175
176impl Serialize for LicenseQuotaState {
177    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
178    where
179        S: serde::Serializer,
180    {
181        serializer.serialize_str(self.as_str())
182    }
183}
184
185impl<'de> Deserialize<'de> for LicenseQuotaState {
186    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
187    where
188        D: serde::Deserializer<'de>,
189    {
190        let s = String::deserialize(deserializer)?;
191        Ok(LicenseQuotaState::from(s.as_str()))
192    }
193}
194
195/// `LicenseStatus` values accepted/returned on the wire. `Unknown` preserves a
196/// value this SDK does not recognize yet, for forward compatibility with
197/// a server that has introduced a new LicenseStatus value.
198#[derive(Debug, Clone, PartialEq, Eq)]
199pub enum LicenseStatus {
200    Valid,
201    Expiring,
202    Grace,
203    ExpiredAccess,
204    Expired,
205    /// A value not defined when this SDK was generated.
206    Unknown(String),
207}
208
209impl LicenseStatus {
210    /// Returns the wire string for this value.
211    pub fn as_str(&self) -> &str {
212        match self {
213            LicenseStatus::Valid => "valid",
214            LicenseStatus::Expiring => "expiring",
215            LicenseStatus::Grace => "grace",
216            LicenseStatus::ExpiredAccess => "expired_access",
217            LicenseStatus::Expired => "expired",
218            LicenseStatus::Unknown(s) => s.as_str(),
219        }
220    }
221
222    /// Reports whether this is one of the values defined when this SDK was
223    /// generated (false for `Unknown`).
224    pub fn is_known(&self) -> bool {
225        !matches!(self, LicenseStatus::Unknown(_))
226    }
227}
228
229impl std::fmt::Display for LicenseStatus {
230    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
231        f.write_str(self.as_str())
232    }
233}
234
235impl From<&str> for LicenseStatus {
236    fn from(s: &str) -> Self {
237        match s {
238            "valid" => LicenseStatus::Valid,
239            "expiring" => LicenseStatus::Expiring,
240            "grace" => LicenseStatus::Grace,
241            "expired_access" => LicenseStatus::ExpiredAccess,
242            "expired" => LicenseStatus::Expired,
243            other => LicenseStatus::Unknown(other.to_string()),
244        }
245    }
246}
247
248impl Serialize for LicenseStatus {
249    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
250    where
251        S: serde::Serializer,
252    {
253        serializer.serialize_str(self.as_str())
254    }
255}
256
257impl<'de> Deserialize<'de> for LicenseStatus {
258    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
259    where
260        D: serde::Deserializer<'de>,
261    {
262        let s = String::deserialize(deserializer)?;
263        Ok(LicenseStatus::from(s.as_str()))
264    }
265}
266
267/// `PairState` values accepted/returned on the wire. `Unknown` preserves a
268/// value this SDK does not recognize yet, for forward compatibility with
269/// a server that has introduced a new PairState value.
270#[derive(Debug, Clone, PartialEq, Eq)]
271pub enum PairState {
272    Active,
273    Draining,
274    SyncedDrained,
275    Retired,
276    /// A value not defined when this SDK was generated.
277    Unknown(String),
278}
279
280impl PairState {
281    /// Returns the wire string for this value.
282    pub fn as_str(&self) -> &str {
283        match self {
284            PairState::Active => "active",
285            PairState::Draining => "draining",
286            PairState::SyncedDrained => "synced_drained",
287            PairState::Retired => "retired",
288            PairState::Unknown(s) => s.as_str(),
289        }
290    }
291
292    /// Reports whether this is one of the values defined when this SDK was
293    /// generated (false for `Unknown`).
294    pub fn is_known(&self) -> bool {
295        !matches!(self, PairState::Unknown(_))
296    }
297}
298
299impl std::fmt::Display for PairState {
300    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
301        f.write_str(self.as_str())
302    }
303}
304
305impl From<&str> for PairState {
306    fn from(s: &str) -> Self {
307        match s {
308            "active" => PairState::Active,
309            "draining" => PairState::Draining,
310            "synced_drained" => PairState::SyncedDrained,
311            "retired" => PairState::Retired,
312            other => PairState::Unknown(other.to_string()),
313        }
314    }
315}
316
317impl Serialize for PairState {
318    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
319    where
320        S: serde::Serializer,
321    {
322        serializer.serialize_str(self.as_str())
323    }
324}
325
326impl<'de> Deserialize<'de> for PairState {
327    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
328    where
329        D: serde::Deserializer<'de>,
330    {
331        let s = String::deserialize(deserializer)?;
332        Ok(PairState::from(s.as_str()))
333    }
334}
335
336#[derive(Debug, Clone, Serialize, Deserialize)]
337pub struct Account {
338    pub id: i64,
339    pub name: String,
340    pub description: String,
341    #[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
342    pub icon_url: Option<String>,
343    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
344    pub provider_info: Option<serde_json::Value>,
345    #[serde(rename = "liveVolume")]
346    pub live_volume: i64,
347    #[serde(rename = "totalVolume")]
348    pub total_volume: i64,
349    #[serde(rename = "quotaLimit")]
350    pub quota_limit: i64,
351    #[serde(rename = "quotaExcessPct")]
352    pub quota_excess_pct: i32,
353    #[serde(rename = "isActive")]
354    pub is_active: bool,
355    pub locked: bool,
356    #[serde(skip_serializing_if = "Option::is_none")]
357    pub retention: Option<RetentionPolicy>,
358    #[serde(rename = "createdAt")]
359    pub created_at: String,
360    #[serde(rename = "updatedAt")]
361    pub updated_at: String,
362}
363
364#[derive(Debug, Clone, Serialize, Deserialize)]
365pub struct User {
366    pub id: i64,
367    #[serde(rename = "accountId")]
368    pub account_id: i64,
369    pub username: String,
370    pub email: String,
371    pub name: String,
372    #[serde(rename = "isActive")]
373    pub is_active: bool,
374}
375
376#[derive(Debug, Clone, Serialize, Deserialize)]
377pub struct Region {
378    pub id: i64,
379    #[serde(rename = "exportId")]
380    pub export_id: String,
381    #[serde(rename = "accountId")]
382    pub account_id: i64,
383    pub name: String,
384    #[serde(rename = "liveVolume")]
385    pub live_volume: i64,
386    #[serde(rename = "totalVolume")]
387    pub total_volume: i64,
388    #[serde(rename = "isActive")]
389    pub is_active: bool,
390    #[serde(rename = "createdAt")]
391    pub created_at: String,
392    #[serde(rename = "updatedAt")]
393    pub updated_at: String,
394}
395
396#[derive(Debug, Clone, Serialize, Deserialize)]
397pub struct RegionCluster {
398    pub id: i64,
399    #[serde(rename = "exportId")]
400    pub export_id: String,
401    #[serde(rename = "regionId")]
402    pub region_id: i64,
403    pub name: String,
404    #[serde(rename = "defaultCluster")]
405    pub default_cluster: bool,
406    #[serde(rename = "isReady")]
407    pub is_ready: bool,
408    #[serde(rename = "isActive")]
409    pub is_active: bool,
410    #[serde(rename = "createdAt")]
411    pub created_at: String,
412    #[serde(rename = "updatedAt")]
413    pub updated_at: String,
414}
415
416#[derive(Debug, Clone, Serialize, Deserialize)]
417pub struct Storage {
418    pub id: i64,
419    pub uuid: String,
420    pub account: Ref,
421    #[serde(rename = "regionInfo")]
422    pub region_info: Ref,
423    pub name: String,
424    #[serde(skip_serializing_if = "Option::is_none")]
425    pub description: Option<String>,
426    #[serde(rename = "storageType")]
427    pub storage_type: String,
428    #[serde(rename = "providerType")]
429    pub provider_type: String,
430    pub endpoint: String,
431    #[serde(skip_serializing_if = "Option::is_none")]
432    pub region: Option<String>,
433    #[serde(skip_serializing_if = "Option::is_none")]
434    pub bucket: Option<String>,
435    #[serde(skip_serializing_if = "Option::is_none")]
436    pub base: Option<String>,
437    #[serde(rename = "physicalFingerprint", skip_serializing_if = "Option::is_none")]
438    pub physical_fingerprint: Option<String>,
439    #[serde(rename = "blockRegion", skip_serializing_if = "Option::is_none")]
440    pub block_region: Option<String>,
441    #[serde(rename = "blockSize", skip_serializing_if = "Option::is_none")]
442    pub block_size: Option<i32>,
443    #[serde(rename = "directAccess", skip_serializing_if = "Option::is_none")]
444    pub direct_access: Option<bool>,
445    #[serde(rename = "isActive")]
446    pub is_active: bool,
447    #[serde(rename = "createdAt")]
448    pub created_at: String,
449    #[serde(rename = "updatedAt")]
450    pub updated_at: String,
451}
452
453#[derive(Debug, Clone, Serialize, Deserialize)]
454pub struct BlockVolume {
455    pub id: String,
456    #[serde(skip_serializing_if = "Option::is_none")]
457    pub name: Option<String>,
458    #[serde(rename = "clusterName", skip_serializing_if = "Option::is_none")]
459    pub cluster_name: Option<String>,
460    #[serde(rename = "clusterUuid", skip_serializing_if = "Option::is_none")]
461    pub cluster_uuid: Option<String>,
462    #[serde(rename = "shardId")]
463    pub shard_id: i64,
464    #[serde(rename = "regionClusterId")]
465    pub region_cluster_id: i64,
466    #[serde(rename = "clusterReady")]
467    pub cluster_ready: bool,
468    #[serde(rename = "isActive")]
469    pub is_active: bool,
470    #[serde(rename = "createdAt")]
471    pub created_at: String,
472    #[serde(rename = "updatedAt")]
473    pub updated_at: String,
474    #[serde(rename = "memberState", skip_serializing_if = "Option::is_none")]
475    pub member_state: Option<String>,
476    #[serde(rename = "pairId", skip_serializing_if = "Option::is_none")]
477    pub pair_id: Option<String>,
478}
479
480#[derive(Debug, Clone, Serialize, Deserialize)]
481pub struct UpdateConfigResult {
482    pub id: String,
483    #[serde(rename = "targetK")]
484    pub target_k: i32,
485    #[serde(rename = "activePairCountBefore")]
486    pub active_pair_count_before: i32,
487    #[serde(rename = "pairsNeeded")]
488    pub pairs_needed: i32,
489    #[serde(rename = "pairsFormed")]
490    pub pairs_formed: i32,
491    #[serde(rename = "activePairCountAfter")]
492    pub active_pair_count_after: i32,
493    pub partial: bool,
494    #[serde(skip_serializing_if = "Option::is_none")]
495    pub reason: Option<String>,
496}
497
498#[derive(Debug, Clone, Serialize, Deserialize)]
499pub struct Pair {
500    pub id: String,
501    #[serde(rename = "storageId")]
502    pub storage_id: String,
503    pub state: PairState,
504    #[serde(rename = "memberA", skip_serializing_if = "Option::is_none")]
505    pub member_a: Option<String>,
506    #[serde(rename = "memberB", skip_serializing_if = "Option::is_none")]
507    pub member_b: Option<String>,
508    #[serde(rename = "placementGroupA", skip_serializing_if = "Option::is_none")]
509    pub placement_group_a: Option<i64>,
510    #[serde(rename = "placementGroupB", skip_serializing_if = "Option::is_none")]
511    pub placement_group_b: Option<i64>,
512    #[serde(rename = "drainStartedAt", skip_serializing_if = "Option::is_none")]
513    pub drain_started_at: Option<String>,
514    #[serde(rename = "syncedAt", skip_serializing_if = "Option::is_none")]
515    pub synced_at: Option<String>,
516    #[serde(rename = "retiredAt", skip_serializing_if = "Option::is_none")]
517    pub retired_at: Option<String>,
518    #[serde(rename = "pendingSyncJobsA", skip_serializing_if = "Option::is_none")]
519    pub pending_sync_jobs_a: Option<i32>,
520    #[serde(rename = "pendingSyncJobsB", skip_serializing_if = "Option::is_none")]
521    pub pending_sync_jobs_b: Option<i32>,
522}
523
524#[derive(Debug, Clone, Serialize, Deserialize)]
525pub struct PoolMember {
526    pub id: String,
527    pub name: String,
528    #[serde(rename = "regionId")]
529    pub region_id: i64,
530    #[serde(rename = "regionClusterId")]
531    pub region_cluster_id: i64,
532    #[serde(rename = "memberState")]
533    pub member_state: String,
534}
535
536#[derive(Debug, Clone, Serialize, Deserialize)]
537pub struct Volume {
538    pub id: i64,
539    pub account: Ref,
540    pub storage: Ref,
541    pub region: Ref,
542    #[serde(rename = "regionCluster", skip_serializing_if = "Option::is_none")]
543    pub region_cluster: Option<Ref>,
544    pub name: String,
545    #[serde(skip_serializing_if = "Option::is_none")]
546    pub description: Option<String>,
547    #[serde(rename = "volumeType")]
548    pub volume_type: String,
549    #[serde(rename = "storageType", skip_serializing_if = "Option::is_none")]
550    pub storage_type: Option<String>,
551    pub encryption: bool,
552    #[serde(rename = "quotaLimit")]
553    pub quota_limit: i64,
554    #[serde(rename = "liveVolume")]
555    pub live_volume: i64,
556    #[serde(rename = "totalVolume")]
557    pub total_volume: i64,
558    #[serde(rename = "pendingVolume")]
559    pub pending_volume: i64,
560    #[serde(rename = "liveInactiveVolume")]
561    pub live_inactive_volume: i64,
562    pub locked: bool,
563    pub retention: VolumeRetentionPolicy,
564    pub versioning: VolumeVersioningPolicy,
565    pub compaction: String,
566    #[serde(rename = "isActive")]
567    pub is_active: bool,
568    #[serde(rename = "isCleanupMetaEnabled")]
569    pub is_cleanup_meta_enabled: bool,
570    #[serde(rename = "isCleanupStorageEnabled")]
571    pub is_cleanup_storage_enabled: bool,
572    #[serde(rename = "isCleanupVaultEnabled")]
573    pub is_cleanup_vault_enabled: bool,
574    #[serde(rename = "createdAt")]
575    pub created_at: String,
576    #[serde(rename = "updatedAt")]
577    pub updated_at: String,
578}
579
580#[derive(Debug, Clone, Serialize, Deserialize)]
581pub struct VolumeBlockPlacementConfig {
582    pub id: i64,
583    #[serde(rename = "targetPairCount")]
584    pub target_pair_count: i32,
585    #[serde(rename = "currentEpoch")]
586    pub current_epoch: i64,
587    #[serde(rename = "pairIds")]
588    pub pair_ids: Vec<String>,
589}
590
591#[derive(Debug, Clone, Serialize, Deserialize)]
592pub struct VolumeBlockPlacementResizeResult {
593    pub id: i64,
594    #[serde(rename = "targetPairCount")]
595    pub target_pair_count: i32,
596    #[serde(rename = "pairCountBefore")]
597    pub pair_count_before: i32,
598    #[serde(rename = "pairsAdded")]
599    pub pairs_added: i32,
600    #[serde(rename = "pairsRemoved")]
601    pub pairs_removed: i32,
602    #[serde(rename = "pairCountAfter")]
603    pub pair_count_after: i32,
604    pub epoch: i64,
605    pub partial: bool,
606    #[serde(skip_serializing_if = "Option::is_none")]
607    pub reason: Option<String>,
608}
609
610#[derive(Debug, Clone, Serialize, Deserialize)]
611pub struct Fork {
612    pub fid: i32,
613    pub name: String,
614    #[serde(rename = "parentFid")]
615    pub parent_fid: i32,
616    #[serde(rename = "parentName")]
617    pub parent_name: String,
618    #[serde(rename = "snapshotTs")]
619    pub snapshot_ts: i64,
620    #[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
621    pub created_by: Option<i64>,
622    #[serde(rename = "createdAt")]
623    pub created_at: i64,
624    #[serde(rename = "childrenCount")]
625    pub children_count: i32,
626    #[serde(skip_serializing_if = "Option::is_none")]
627    pub inactive: Option<bool>,
628    #[serde(rename = "inactiveAt", skip_serializing_if = "Option::is_none")]
629    pub inactive_at: Option<i64>,
630    pub status: String,
631    pub size: i64,
632}
633
634#[derive(Debug, Clone, Serialize, Deserialize)]
635pub struct ForkTreeEntry {
636    pub inode: i64,
637    pub name: String,
638    pub kind: String,
639    pub size: i64,
640    pub mtime: i64,
641    pub ctime: i64,
642    #[serde(rename = "creatorId", skip_serializing_if = "Option::is_none")]
643    pub creator_id: Option<i64>,
644    #[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
645    pub updater_id: Option<i64>,
646}
647
648#[derive(Debug, Clone, Serialize, Deserialize)]
649pub struct ForkEntryDetail {
650    pub inode: i64,
651    pub path: String,
652    pub name: String,
653    pub kind: String,
654    pub size: i64,
655    pub mtime: i64,
656    pub ctime: i64,
657    pub generation: i64,
658    #[serde(skip_serializing_if = "Option::is_none")]
659    pub owner: Option<String>,
660    #[serde(skip_serializing_if = "Option::is_none")]
661    pub mode: Option<i32>,
662    #[serde(skip_serializing_if = "Option::is_none")]
663    pub xattrs: Option<serde_json::Value>,
664    #[serde(rename = "creatorId", skip_serializing_if = "Option::is_none")]
665    pub creator_id: Option<i64>,
666    #[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
667    pub updater_id: Option<i64>,
668}
669
670#[derive(Debug, Clone, Serialize, Deserialize)]
671pub struct ForkEntryVersion {
672    pub generation: i64,
673    pub size: i64,
674    pub mtime: i64,
675    #[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
676    pub updater_id: Option<i64>,
677    #[serde(rename = "contentHash", skip_serializing_if = "Option::is_none")]
678    pub content_hash: Option<String>,
679}
680
681#[derive(Debug, Clone, Serialize, Deserialize)]
682pub struct ForkTreeMatch {
683    pub path: String,
684    pub inode: i64,
685    pub kind: String,
686    pub size: i64,
687    pub mtime: i64,
688}
689
690#[derive(Debug, Clone, Serialize, Deserialize)]
691pub struct AuditLog {
692    pub id: i64,
693    pub title: String,
694    #[serde(skip_serializing_if = "Option::is_none")]
695    pub description: Option<String>,
696    #[serde(skip_serializing_if = "Option::is_none")]
697    pub subject: Option<String>,
698    pub success: bool,
699    #[serde(skip_serializing_if = "Option::is_none")]
700    pub data: Option<serde_json::Value>,
701    #[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
702    pub created_by: Option<String>,
703    #[serde(skip_serializing_if = "Option::is_none")]
704    pub node: Option<String>,
705    #[serde(rename = "accountId", skip_serializing_if = "Option::is_none")]
706    pub account_id: Option<i64>,
707    #[serde(rename = "regionId", skip_serializing_if = "Option::is_none")]
708    pub region_id: Option<i64>,
709    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
710    pub region_cluster_id: Option<i64>,
711    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
712    pub created_at: Option<String>,
713    #[serde(rename = "updatedAt", skip_serializing_if = "Option::is_none")]
714    pub updated_at: Option<String>,
715}
716
717#[derive(Debug, Clone, Serialize, Deserialize)]
718pub struct ServiceNode {
719    pub id: i64,
720    #[serde(rename = "regionId")]
721    pub region_id: i64,
722    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
723    pub region_cluster_id: Option<i64>,
724    #[serde(rename = "serviceType")]
725    pub service_type: String,
726    #[serde(rename = "nodeId")]
727    pub node_id: String,
728    #[serde(rename = "advertiseAddr")]
729    pub advertise_addr: String,
730    #[serde(rename = "rpcAddr", skip_serializing_if = "Option::is_none")]
731    pub rpc_addr: Option<String>,
732    #[serde(skip_serializing_if = "Option::is_none")]
733    pub metadata: Option<serde_json::Value>,
734    #[serde(rename = "metricsEndpoint", skip_serializing_if = "Option::is_none")]
735    pub metrics_endpoint: Option<String>,
736    #[serde(rename = "instanceId", skip_serializing_if = "Option::is_none")]
737    pub instance_id: Option<String>,
738    #[serde(rename = "instanceInfo", skip_serializing_if = "Option::is_none")]
739    pub instance_info: Option<serde_json::Value>,
740    pub status: String,
741    #[serde(rename = "lastHeartbeat", skip_serializing_if = "Option::is_none")]
742    pub last_heartbeat: Option<i64>,
743    #[serde(rename = "isActive")]
744    pub is_active: bool,
745    #[serde(rename = "memUsage", skip_serializing_if = "Option::is_none")]
746    pub mem_usage: Option<f64>,
747    #[serde(rename = "sysLoad", skip_serializing_if = "Option::is_none")]
748    pub sys_load: Option<i64>,
749    #[serde(rename = "binaryVersion", skip_serializing_if = "Option::is_none")]
750    pub binary_version: Option<i32>,
751}
752
753#[derive(Debug, Clone, Serialize, Deserialize)]
754pub struct ClientSession {
755    pub id: i64,
756    pub account: Ref,
757    pub region: Ref,
758    #[serde(rename = "regionCluster", skip_serializing_if = "Option::is_none")]
759    pub region_cluster: Option<Ref>,
760    pub volume: VolumeRef,
761    #[serde(skip_serializing_if = "Option::is_none")]
762    pub user: Option<Ref>,
763    #[serde(rename = "clientType")]
764    pub client_type: String,
765    #[serde(rename = "osName")]
766    pub os_name: String,
767    #[serde(rename = "osVersion", skip_serializing_if = "Option::is_none")]
768    pub os_version: Option<String>,
769    #[serde(rename = "appVersion", skip_serializing_if = "Option::is_none")]
770    pub app_version: Option<String>,
771    #[serde(skip_serializing_if = "Option::is_none")]
772    pub hostname: Option<String>,
773    #[serde(rename = "ipAddr")]
774    pub ip_addr: String,
775    #[serde(rename = "mountMode", skip_serializing_if = "Option::is_none")]
776    pub mount_mode: Option<String>,
777    #[serde(rename = "mountPath", skip_serializing_if = "Option::is_none")]
778    pub mount_path: Option<String>,
779    #[serde(rename = "forkName", skip_serializing_if = "Option::is_none")]
780    pub fork_name: Option<String>,
781    #[serde(rename = "isTemporaryFork")]
782    pub is_temporary_fork: bool,
783    #[serde(skip_serializing_if = "Option::is_none")]
784    pub metadata: Option<serde_json::Value>,
785    #[serde(skip_serializing_if = "Option::is_none")]
786    pub metrics: Option<serde_json::Value>,
787    pub status: ClientSessionStatus,
788    #[serde(rename = "lastHeartbeat", skip_serializing_if = "Option::is_none")]
789    pub last_heartbeat: Option<i64>,
790    #[serde(rename = "connectedAt", skip_serializing_if = "Option::is_none")]
791    pub connected_at: Option<i64>,
792    #[serde(rename = "disconnectedAt", skip_serializing_if = "Option::is_none")]
793    pub disconnected_at: Option<i64>,
794    #[serde(rename = "isActive")]
795    pub is_active: bool,
796}
797
798#[derive(Debug, Clone, Serialize, Deserialize)]
799pub struct SessionSummary {
800    #[serde(rename = "byStatus")]
801    pub by_status: Vec<SessionSummaryStatusEntry>,
802    #[serde(rename = "byPlatform")]
803    pub by_platform: Vec<SessionSummaryFacet>,
804    #[serde(rename = "byOsName")]
805    pub by_os_name: Vec<SessionSummaryFacet>,
806    #[serde(rename = "regionCount")]
807    pub region_count: i64,
808    #[serde(rename = "volumeCount")]
809    pub volume_count: i64,
810    #[serde(rename = "hostCount")]
811    pub host_count: i64,
812    #[serde(rename = "degradedCount")]
813    pub degraded_count: i64,
814}
815
816#[derive(Debug, Clone, Serialize, Deserialize)]
817pub struct DiscoverMetaResponse {
818    #[serde(rename = "regionId")]
819    pub region_id: i64,
820    pub region: String,
821    pub endpoints: Vec<DiscoverEndpoint>,
822}
823
824#[derive(Debug, Clone, Serialize, Deserialize)]
825pub struct MetricsTarget {
826    pub targets: Vec<String>,
827    pub labels: serde_json::Value,
828}
829
830#[derive(Debug, Clone, Serialize, Deserialize)]
831pub struct MetricsTokenResponse {
832    pub token: String,
833}
834
835#[derive(Debug, Clone, Serialize, Deserialize)]
836pub struct DashboardStats {
837    #[serde(rename = "userCount")]
838    pub user_count: i64,
839    #[serde(rename = "volumeCount")]
840    pub volume_count: i64,
841    #[serde(rename = "regionCount")]
842    pub region_count: i64,
843    #[serde(rename = "storageCount")]
844    pub storage_count: i64,
845    #[serde(rename = "totalVolumeUsed")]
846    pub total_volume_used: i64,
847    #[serde(rename = "totalQuotaLimit")]
848    pub total_quota_limit: i64,
849    #[serde(rename = "activeSessionCount")]
850    pub active_session_count: i64,
851    #[serde(rename = "regionBreakdown")]
852    pub region_breakdown: Vec<RegionVolumeMetrics>,
853}
854
855#[derive(Debug, Clone, Serialize, Deserialize)]
856pub struct LicenseDetails {
857    #[serde(rename = "licenseId")]
858    pub license_id: String,
859    pub licensee: String,
860    pub contact: String,
861    #[serde(rename = "licenseType")]
862    pub license_type: String,
863    #[serde(rename = "issuedAt")]
864    pub issued_at: String,
865    #[serde(rename = "expiresAt")]
866    pub expires_at: String,
867    #[serde(rename = "gracePeriodDays")]
868    pub grace_period_days: i64,
869    #[serde(rename = "expiredAccessDays")]
870    pub expired_access_days: i64,
871    #[serde(rename = "maxNodes")]
872    pub max_nodes: i64,
873    #[serde(rename = "maxVolumes")]
874    pub max_volumes: i64,
875    #[serde(rename = "maxUsers")]
876    pub max_users: i64,
877    #[serde(rename = "maxAccounts")]
878    pub max_accounts: i64,
879    #[serde(rename = "maxRegions")]
880    pub max_regions: i64,
881    #[serde(rename = "maxStorageBytes")]
882    pub max_storage_bytes: i64,
883    pub status: LicenseStatus,
884    #[serde(rename = "daysRemaining")]
885    pub days_remaining: i64,
886    #[serde(rename = "graceEndsAt")]
887    pub grace_ends_at: String,
888    #[serde(rename = "graceDaysLeft")]
889    pub grace_days_left: i64,
890    #[serde(rename = "expiredAccessEndsAt")]
891    pub expired_access_ends_at: String,
892    #[serde(rename = "expiredAccessDaysLeft")]
893    pub expired_access_days_left: i64,
894    pub quota: LicenseQuota,
895    #[serde(skip_serializing_if = "Option::is_none")]
896    pub distribution: Option<String>,
897    #[serde(rename = "distributionRef", skip_serializing_if = "Option::is_none")]
898    pub distribution_ref: Option<Vec<String>>,
899    #[serde(rename = "unlimitedStorage", skip_serializing_if = "Option::is_none")]
900    pub unlimited_storage: Option<bool>,
901}
902
903#[derive(Debug, Clone, Serialize, Deserialize)]
904pub struct LicenseTerms {
905    pub terms: String,
906}
907
908#[derive(Debug, Clone, Serialize, Deserialize)]
909pub struct LicenseLoadResult {
910    pub loaded: i64,
911    pub ignored: i64,
912}
913
914#[derive(Debug, Clone, Serialize, Deserialize)]
915pub struct LicenseList {
916    pub items: Vec<LicenseRecord>,
917}
918
919#[derive(Debug, Clone, Serialize, Deserialize)]
920pub struct ServiceAlert {
921    pub id: i64,
922    #[serde(rename = "alertId")]
923    pub alert_id: String,
924    pub source: String,
925    #[serde(rename = "nodeId")]
926    pub node_id: String,
927    pub severity: i64,
928    pub category: String,
929    pub title: String,
930    #[serde(skip_serializing_if = "Option::is_none")]
931    pub description: Option<String>,
932    #[serde(skip_serializing_if = "Option::is_none")]
933    pub region: Option<Ref>,
934    #[serde(skip_serializing_if = "Option::is_none")]
935    pub account: Option<Ref>,
936    #[serde(rename = "eventTime")]
937    pub event_time: String,
938    #[serde(rename = "resolvedAt", skip_serializing_if = "Option::is_none")]
939    pub resolved_at: Option<String>,
940    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
941    pub created_at: Option<String>,
942}
943
944#[derive(Debug, Clone, Serialize, Deserialize)]
945pub struct AlertCountResponse {
946    pub active: i64,
947    pub recent: i64,
948    #[serde(rename = "infoCount")]
949    pub info_count: i64,
950    #[serde(rename = "warningCount")]
951    pub warning_count: i64,
952    #[serde(rename = "criticalCount")]
953    pub critical_count: i64,
954}
955
956#[derive(Debug, Clone, Serialize, Deserialize)]
957pub struct RegionAlert {
958    pub id: i64,
959    #[serde(rename = "alertId")]
960    pub alert_id: String,
961    pub source: String,
962    #[serde(rename = "nodeId")]
963    pub node_id: String,
964    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
965    pub region_cluster_id: Option<i64>,
966    pub severity: i64,
967    pub category: String,
968    pub title: String,
969    #[serde(skip_serializing_if = "Option::is_none")]
970    pub description: Option<String>,
971    #[serde(rename = "eventTime")]
972    pub event_time: String,
973    #[serde(rename = "resolvedAt", skip_serializing_if = "Option::is_none")]
974    pub resolved_at: Option<String>,
975    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
976    pub created_at: Option<String>,
977}
978
979#[derive(Debug, Clone, Serialize, Deserialize)]
980pub struct GCWorkerEvent {
981    pub id: i64,
982    #[serde(rename = "nodeId")]
983    pub node_id: String,
984    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
985    pub region_cluster_id: Option<i64>,
986    pub goal: String,
987    #[serde(skip_serializing_if = "Option::is_none")]
988    pub sid: Option<i64>,
989    #[serde(skip_serializing_if = "Option::is_none")]
990    pub subject: Option<String>,
991    pub ops: serde_json::Value,
992    #[serde(rename = "durationMs")]
993    pub duration_ms: i64,
994    #[serde(rename = "eventTime")]
995    pub event_time: String,
996    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
997    pub created_at: Option<String>,
998}
999
1000#[derive(Debug, Clone, Serialize, Deserialize)]
1001pub struct GCWorkerEventHistogramResponse {
1002    pub buckets: Vec<GCWorkerEventBucket>,
1003}
1004
1005#[derive(Debug, Clone, Serialize, Deserialize)]
1006pub struct GCWorkerEventGoalsResponse {
1007    pub goals: Vec<String>,
1008}
1009
1010#[derive(Debug, Clone, Serialize, Deserialize)]
1011pub struct BackfillFailure {
1012    #[serde(rename = "shardId")]
1013    pub shard_id: i64,
1014    pub error: String,
1015}
1016
1017#[derive(Debug, Clone, Serialize, Deserialize)]
1018pub struct BlockMember {
1019    #[serde(skip_serializing_if = "Option::is_none")]
1020    pub name: Option<String>,
1021    #[serde(rename = "regionClusterId")]
1022    pub region_cluster_id: i64,
1023}
1024
1025#[derive(Debug, Clone, Serialize, Deserialize)]
1026pub struct CompatibleStorage {
1027    pub id: i64,
1028    pub uuid: String,
1029    pub name: String,
1030    #[serde(rename = "storageType")]
1031    pub storage_type: String,
1032    #[serde(rename = "providerType")]
1033    pub provider_type: String,
1034    pub volumes: Vec<CompatibleVolume>,
1035}
1036
1037#[derive(Debug, Clone, Serialize, Deserialize)]
1038pub struct CompatibleVolume {
1039    pub id: String,
1040    pub name: String,
1041}
1042
1043#[derive(Debug, Clone, Serialize, Deserialize)]
1044pub struct DashboardUser {
1045    pub id: String,
1046    pub name: String,
1047    #[serde(skip_serializing_if = "Option::is_none")]
1048    pub email: Option<String>,
1049    pub role: String,
1050    #[serde(skip_serializing_if = "Option::is_none")]
1051    pub username: Option<String>,
1052    #[serde(rename = "accountId", skip_serializing_if = "Option::is_none")]
1053    pub account_id: Option<i64>,
1054    #[serde(rename = "userId", skip_serializing_if = "Option::is_none")]
1055    pub user_id: Option<i64>,
1056    #[serde(rename = "volumeId", skip_serializing_if = "Option::is_none")]
1057    pub volume_id: Option<i64>,
1058    #[serde(skip_serializing_if = "Option::is_none")]
1059    pub exp: Option<i64>,
1060}
1061
1062#[derive(Debug, Clone, Serialize, Deserialize)]
1063pub struct DiscoverEndpoint {
1064    #[serde(rename = "nodeId")]
1065    pub node_id: String,
1066    pub addr: String,
1067    pub status: String,
1068}
1069
1070#[derive(Debug, Clone, Serialize, Deserialize)]
1071pub struct GCWorkerEventBucket {
1072    #[serde(rename = "bucketStart")]
1073    pub bucket_start: String,
1074    pub goal: String,
1075    pub count: i64,
1076}
1077
1078#[derive(Debug, Clone, Serialize, Deserialize)]
1079pub struct LicenseQuota {
1080    pub state: LicenseQuotaState,
1081    #[serde(rename = "liveVolume")]
1082    pub live_volume: i64,
1083    #[serde(rename = "totalVolume")]
1084    pub total_volume: i64,
1085    pub generation: i64,
1086    #[serde(rename = "lastTransitionAtMs")]
1087    pub last_transition_at_ms: i64,
1088}
1089
1090#[derive(Debug, Clone, Serialize, Deserialize)]
1091pub struct LicenseRecord {
1092    pub key: String,
1093    pub licensee: String,
1094    pub status: LicenseStatus,
1095    #[serde(rename = "issuedAt")]
1096    pub issued_at: String,
1097    #[serde(rename = "expiresAt")]
1098    pub expires_at: String,
1099    #[serde(rename = "maxStorageBytes")]
1100    pub max_storage_bytes: i64,
1101    #[serde(rename = "insertedAt")]
1102    pub inserted_at: String,
1103}
1104
1105#[derive(Debug, Clone, Serialize, Deserialize)]
1106pub struct MoveVolumeFailure {
1107    #[serde(rename = "volumeId")]
1108    pub volume_id: String,
1109    pub error: String,
1110}
1111
1112#[derive(Debug, Clone, Serialize, Deserialize)]
1113pub struct NodeStatsSample {
1114    #[serde(rename = "timestampMs")]
1115    pub timestamp_ms: i64,
1116    #[serde(rename = "intervalMs")]
1117    pub interval_ms: i64,
1118    #[serde(rename = "loadAvg1")]
1119    pub load_avg1: f64,
1120    #[serde(rename = "loadAvg5")]
1121    pub load_avg5: f64,
1122    #[serde(rename = "loadAvg15")]
1123    pub load_avg15: f64,
1124    #[serde(rename = "memUsage")]
1125    pub mem_usage: f64,
1126    #[serde(rename = "readIops")]
1127    pub read_iops: f64,
1128    #[serde(rename = "writeIops")]
1129    pub write_iops: f64,
1130    #[serde(rename = "netRxBytesPerSec")]
1131    pub net_rx_bytes_per_sec: f64,
1132    #[serde(rename = "netTxBytesPerSec")]
1133    pub net_tx_bytes_per_sec: f64,
1134    #[serde(rename = "processCount")]
1135    pub process_count: i64,
1136    #[serde(rename = "diskUsedBytes", skip_serializing_if = "Option::is_none")]
1137    pub disk_used_bytes: Option<i64>,
1138    #[serde(rename = "diskTotalBytes", skip_serializing_if = "Option::is_none")]
1139    pub disk_total_bytes: Option<i64>,
1140    #[serde(rename = "dbLatency1mUs", skip_serializing_if = "Option::is_none")]
1141    pub db_latency1m_us: Option<f64>,
1142    #[serde(rename = "dbLatency5mUs", skip_serializing_if = "Option::is_none")]
1143    pub db_latency5m_us: Option<f64>,
1144    #[serde(rename = "dbLatency15mUs", skip_serializing_if = "Option::is_none")]
1145    pub db_latency15m_us: Option<f64>,
1146    #[serde(rename = "dbQueriesPerSec", skip_serializing_if = "Option::is_none")]
1147    pub db_queries_per_sec: Option<f64>,
1148    #[serde(rename = "dbConnsInUse", skip_serializing_if = "Option::is_none")]
1149    pub db_conns_in_use: Option<i64>,
1150    #[serde(rename = "dbConnsMax", skip_serializing_if = "Option::is_none")]
1151    pub db_conns_max: Option<i64>,
1152    #[serde(rename = "dbConnsIdle", skip_serializing_if = "Option::is_none")]
1153    pub db_conns_idle: Option<i64>,
1154    #[serde(rename = "dbConnsFree", skip_serializing_if = "Option::is_none")]
1155    pub db_conns_free: Option<i64>,
1156    #[serde(rename = "dbConnsInUse1m", skip_serializing_if = "Option::is_none")]
1157    pub db_conns_in_use1m: Option<f64>,
1158    #[serde(rename = "dbConnsInUse5m", skip_serializing_if = "Option::is_none")]
1159    pub db_conns_in_use5m: Option<f64>,
1160    #[serde(rename = "dbConnsInUse15m", skip_serializing_if = "Option::is_none")]
1161    pub db_conns_in_use15m: Option<f64>,
1162    #[serde(rename = "dbPingAvgUs", skip_serializing_if = "Option::is_none")]
1163    pub db_ping_avg_us: Option<f64>,
1164    #[serde(rename = "dbPingMinUs", skip_serializing_if = "Option::is_none")]
1165    pub db_ping_min_us: Option<f64>,
1166    #[serde(rename = "dbPingMaxUs", skip_serializing_if = "Option::is_none")]
1167    pub db_ping_max_us: Option<f64>,
1168    #[serde(rename = "dbPingStdDevUs", skip_serializing_if = "Option::is_none")]
1169    pub db_ping_std_dev_us: Option<f64>,
1170}
1171
1172#[derive(Debug, Clone, Serialize, Deserialize)]
1173pub struct Ref {
1174    pub id: i64,
1175    pub name: String,
1176}
1177
1178#[derive(Debug, Clone, Serialize, Deserialize)]
1179pub struct RegionVolumeMetrics {
1180    #[serde(rename = "regionId")]
1181    pub region_id: i64,
1182    #[serde(rename = "regionName")]
1183    pub region_name: String,
1184    #[serde(rename = "volumeCount")]
1185    pub volume_count: i64,
1186    #[serde(rename = "totalVolumeUsed")]
1187    pub total_volume_used: i64,
1188    #[serde(rename = "totalQuotaLimit")]
1189    pub total_quota_limit: i64,
1190}
1191
1192#[derive(Debug, Clone, Serialize, Deserialize)]
1193pub struct RetentionPolicy {
1194    #[serde(rename = "clientSessionDays", skip_serializing_if = "Option::is_none")]
1195    pub client_session_days: Option<i32>,
1196}
1197
1198#[derive(Debug, Clone, Serialize, Deserialize)]
1199pub struct SessionSummaryFacet {
1200    pub label: String,
1201    pub count: i64,
1202}
1203
1204#[derive(Debug, Clone, Serialize, Deserialize)]
1205pub struct SessionSummaryStatusEntry {
1206    #[serde(rename = "clientType")]
1207    pub client_type: String,
1208    pub status: String,
1209    pub count: i64,
1210}
1211
1212#[derive(Debug, Clone, Serialize, Deserialize)]
1213pub struct UserLite {
1214    pub id: i64,
1215    pub username: String,
1216    pub name: String,
1217}
1218
1219#[derive(Debug, Clone, Serialize, Deserialize)]
1220pub struct VolumeApiKey {
1221    #[serde(rename = "apiKey")]
1222    pub api_key: String,
1223    #[serde(skip_serializing_if = "Option::is_none")]
1224    pub name: Option<String>,
1225    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
1226    pub created_at: Option<String>,
1227    #[serde(rename = "lastUsedAt", skip_serializing_if = "Option::is_none")]
1228    pub last_used_at: Option<String>,
1229}
1230
1231#[derive(Debug, Clone, Serialize, Deserialize)]
1232pub struct VolumeRef {
1233    pub id: i64,
1234    pub name: String,
1235    #[serde(skip_serializing_if = "Option::is_none")]
1236    pub r#type: Option<String>,
1237}
1238
1239#[derive(Debug, Clone, Serialize, Deserialize)]
1240pub struct VolumeRetentionPolicy {
1241    #[serde(rename = "dataDays", skip_serializing_if = "Option::is_none")]
1242    pub data_days: Option<i32>,
1243    #[serde(rename = "graceDays", skip_serializing_if = "Option::is_none")]
1244    pub grace_days: Option<i32>,
1245    #[serde(rename = "forkGraceDays", skip_serializing_if = "Option::is_none")]
1246    pub fork_grace_days: Option<i32>,
1247    #[serde(rename = "eventLogDays", skip_serializing_if = "Option::is_none")]
1248    pub event_log_days: Option<i32>,
1249}
1250
1251#[derive(Debug, Clone, Serialize, Deserialize)]
1252pub struct VolumeSizePoint {
1253    #[serde(rename = "bucketEnd")]
1254    pub bucket_end: String,
1255    #[serde(rename = "liveVolume")]
1256    pub live_volume: i64,
1257    #[serde(rename = "totalVolume")]
1258    pub total_volume: i64,
1259    #[serde(rename = "pendingVolume")]
1260    pub pending_volume: i64,
1261    #[serde(rename = "liveInactiveVolume")]
1262    pub live_inactive_volume: i64,
1263}
1264
1265#[derive(Debug, Clone, Serialize, Deserialize)]
1266pub struct VolumeVersioningPolicy {
1267    #[serde(rename = "contentWindowSeconds", skip_serializing_if = "Option::is_none")]
1268    pub content_window_seconds: Option<i32>,
1269}
1270
1271// Accounts
1272
1273#[derive(Debug, Clone, Serialize)]
1274pub struct CreateAccountRequest {
1275    pub name: String,
1276    #[serde(skip_serializing_if = "Option::is_none")]
1277    pub description: Option<String>,
1278    #[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
1279    pub icon_url: Option<String>,
1280    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
1281    pub provider_info: Option<serde_json::Value>,
1282}
1283
1284#[derive(Debug, Clone, Serialize)]
1285pub struct EditAccountRequest {
1286    pub name: String,
1287    #[serde(skip_serializing_if = "Option::is_none")]
1288    pub description: Option<String>,
1289    #[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
1290    pub icon_url: Option<String>,
1291    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
1292    pub provider_info: Option<serde_json::Value>,
1293    #[serde(skip_serializing_if = "Option::is_none")]
1294    pub retention: Option<RetentionPolicy>,
1295}
1296
1297#[derive(Debug, Clone, Serialize)]
1298pub struct UpdateAccountQuotaRequest {
1299    #[serde(rename = "quotaLimit")]
1300    pub quota_limit: i64,
1301    #[serde(rename = "quotaExcessPct", skip_serializing_if = "Option::is_none")]
1302    pub quota_excess_pct: Option<i32>,
1303}
1304
1305#[derive(Debug, Clone, Default)]
1306pub struct AccountListOptions {
1307    pub is_active: Option<bool>,
1308    pub page: Option<i64>,
1309    pub limit: Option<i64>,
1310}
1311
1312// Users
1313
1314#[derive(Debug, Clone, Serialize)]
1315pub struct AddUserRequest {
1316    #[serde(rename = "accountId")]
1317    pub account_id: i64,
1318    pub username: String,
1319    pub email: String,
1320    #[serde(skip_serializing_if = "Option::is_none")]
1321    pub name: Option<String>,
1322    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
1323    pub provider_info: Option<serde_json::Value>,
1324}
1325
1326#[derive(Debug, Clone, Serialize)]
1327pub struct BulkUserRequest {
1328    pub ids: Vec<i64>,
1329}
1330
1331#[derive(Debug, Clone, Serialize, Deserialize)]
1332pub struct BulkUserResponse {
1333    pub users: Vec<UserLite>,
1334}
1335
1336#[derive(Debug, Clone, Serialize)]
1337pub struct EditUserRequest {
1338    pub username: String,
1339    pub email: String,
1340    #[serde(skip_serializing_if = "Option::is_none")]
1341    pub name: Option<String>,
1342    #[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
1343    pub provider_info: Option<serde_json::Value>,
1344}
1345
1346#[derive(Debug, Clone, Default)]
1347pub struct UserListOptions {
1348    pub account_id: i64,
1349    pub search: Option<String>,
1350    pub is_active: Option<bool>,
1351    pub page: Option<i64>,
1352    pub limit: Option<i64>,
1353}
1354
1355// Regions
1356
1357#[derive(Debug, Clone, Serialize)]
1358pub struct CreateRegionRequest {
1359    #[serde(rename = "accountId")]
1360    pub account_id: i64,
1361    pub name: String,
1362}
1363
1364#[derive(Debug, Clone, Serialize)]
1365pub struct EditRegionRequest {
1366    #[serde(rename = "accountId")]
1367    pub account_id: i64,
1368    pub name: String,
1369}
1370
1371#[derive(Debug, Clone, Default)]
1372pub struct RegionListOptions {
1373    pub account_id: i64,
1374    pub is_active: Option<bool>,
1375    pub page: Option<i64>,
1376    pub limit: Option<i64>,
1377}
1378
1379// Clusters
1380
1381#[derive(Debug, Clone, Default)]
1382pub struct ClusterListOptions {
1383    pub account_id: i64,
1384    pub region_id: Option<i64>,
1385    pub is_active: Option<bool>,
1386    pub page: Option<i64>,
1387    pub limit: Option<i64>,
1388}
1389
1390// RegionClusters
1391
1392#[derive(Debug, Clone, Serialize)]
1393pub struct CreateRegionClusterRequest {
1394    pub name: String,
1395}
1396
1397#[derive(Debug, Clone, Serialize)]
1398pub struct EditRegionClusterRequest {
1399    pub name: String,
1400}
1401
1402#[derive(Debug, Clone, Serialize)]
1403pub struct SetRegionClusterReadyRequest {
1404    pub ready: bool,
1405}
1406
1407#[derive(Debug, Clone, Serialize, Deserialize)]
1408pub struct SetReadyRegionClusterResponse {
1409    pub id: i64,
1410    pub ready: bool,
1411}
1412
1413#[derive(Debug, Clone, Default)]
1414pub struct RegionClusterListOptions {
1415    pub is_active: Option<bool>,
1416    pub page: Option<i64>,
1417    pub limit: Option<i64>,
1418}
1419
1420// Storages
1421
1422#[derive(Debug, Clone, Serialize)]
1423pub struct CreateStorageRequest {
1424    #[serde(rename = "accountId")]
1425    pub account_id: i64,
1426    #[serde(rename = "regionId")]
1427    pub region_id: i64,
1428    pub name: String,
1429    #[serde(skip_serializing_if = "Option::is_none")]
1430    pub description: Option<String>,
1431    #[serde(rename = "storageType")]
1432    pub storage_type: String,
1433    #[serde(rename = "providerType")]
1434    pub provider_type: String,
1435    pub endpoint: String,
1436    #[serde(skip_serializing_if = "Option::is_none")]
1437    pub region: Option<String>,
1438    #[serde(skip_serializing_if = "Option::is_none")]
1439    pub bucket: Option<String>,
1440    #[serde(skip_serializing_if = "Option::is_none")]
1441    pub base: Option<String>,
1442    #[serde(rename = "blockRegion", skip_serializing_if = "Option::is_none")]
1443    pub block_region: Option<String>,
1444    #[serde(rename = "blockSize", skip_serializing_if = "Option::is_none")]
1445    pub block_size: Option<i32>,
1446    #[serde(skip_serializing_if = "Option::is_none")]
1447    pub members: Option<Vec<BlockMember>>,
1448    #[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
1449    pub access_key: Option<String>,
1450    #[serde(rename = "secretKey", skip_serializing_if = "Option::is_none")]
1451    pub secret_key: Option<String>,
1452}
1453
1454#[derive(Debug, Clone, Serialize, Deserialize)]
1455pub struct CreateStorageResponse {
1456    pub id: i64,
1457    #[serde(rename = "blockVolumeIds", skip_serializing_if = "Option::is_none")]
1458    pub block_volume_ids: Option<Vec<String>>,
1459}
1460
1461#[derive(Debug, Clone, Serialize)]
1462pub struct EditStorageRequest {
1463    pub name: String,
1464    #[serde(skip_serializing_if = "Option::is_none")]
1465    pub description: Option<String>,
1466    #[serde(skip_serializing_if = "Option::is_none")]
1467    pub endpoint: Option<String>,
1468    #[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
1469    pub access_key: Option<String>,
1470    #[serde(rename = "secretKey", skip_serializing_if = "Option::is_none")]
1471    pub secret_key: Option<String>,
1472    #[serde(rename = "directAccess", skip_serializing_if = "Option::is_none")]
1473    pub direct_access: Option<bool>,
1474}
1475
1476#[derive(Debug, Clone, Serialize)]
1477pub struct TestStorageNewBucketRequest {
1478    pub endpoint: String,
1479    #[serde(skip_serializing_if = "Option::is_none")]
1480    pub region: Option<String>,
1481    pub bucket: String,
1482    #[serde(rename = "accessKey")]
1483    pub access_key: String,
1484    #[serde(rename = "secretKey")]
1485    pub secret_key: String,
1486    #[serde(rename = "providerType", skip_serializing_if = "Option::is_none")]
1487    pub provider_type: Option<String>,
1488}
1489
1490#[derive(Debug, Clone, Serialize, Deserialize)]
1491pub struct TestNewBucketStorageResponse {
1492    #[serde(rename = "bucketExists")]
1493    pub bucket_exists: bool,
1494    pub list: bool,
1495    pub write: bool,
1496    pub read: bool,
1497    pub delete: bool,
1498    pub multipart: bool,
1499}
1500
1501#[derive(Debug, Clone, Serialize, Deserialize)]
1502pub struct TestStorageBucketStorageResponse {
1503    #[serde(rename = "bucketExists")]
1504    pub bucket_exists: bool,
1505    pub list: bool,
1506    pub write: bool,
1507    pub read: bool,
1508    pub delete: bool,
1509    pub multipart: bool,
1510}
1511
1512#[derive(Debug, Clone, Serialize, Deserialize)]
1513pub struct ListCompatibleStorageResponse {
1514    pub storages: Vec<CompatibleStorage>,
1515}
1516
1517#[derive(Debug, Clone, Serialize)]
1518pub struct MoveStorageVolumesRequest {
1519    #[serde(rename = "volumeIds")]
1520    pub volume_ids: Vec<String>,
1521}
1522
1523#[derive(Debug, Clone, Serialize, Deserialize)]
1524pub struct MoveVolumesStorageResponse {
1525    pub moved: Vec<String>,
1526    pub failures: Vec<MoveVolumeFailure>,
1527}
1528
1529#[derive(Debug, Clone, Serialize)]
1530pub struct UpdateStorageConfigRequest {
1531    pub k: i32,
1532}
1533
1534#[derive(Debug, Clone, Serialize, Deserialize)]
1535pub struct GetConfigStorageResponse {
1536    pub id: String,
1537    pub k: i32,
1538    #[serde(rename = "algorithmVersion")]
1539    pub algorithm_version: i32,
1540    #[serde(rename = "epochPolicyVersion")]
1541    pub epoch_policy_version: i32,
1542}
1543
1544#[derive(Debug, Clone, Serialize, Deserialize)]
1545pub struct DrainPairStorageResponse {
1546    pub id: String,
1547    pub state: String,
1548}
1549
1550#[derive(Debug, Clone, Serialize, Deserialize)]
1551pub struct CancelDrainStorageResponse {
1552    pub id: String,
1553    pub state: String,
1554}
1555
1556#[derive(Debug, Clone, Serialize)]
1557pub struct RegisterStorageMemberRequest {
1558    #[serde(rename = "regionClusterId")]
1559    pub region_cluster_id: i64,
1560    pub name: String,
1561}
1562
1563#[derive(Debug, Clone, Serialize, Deserialize)]
1564pub struct BackfillFingerprintsStorageResponse {
1565    pub scanned: i32,
1566    pub updated: i32,
1567    pub failures: Vec<BackfillFailure>,
1568    #[serde(rename = "hasMore")]
1569    pub has_more: bool,
1570}
1571
1572#[derive(Debug, Clone, Default)]
1573pub struct StorageListOptions {
1574    pub account_id: i64,
1575    pub search: Option<String>,
1576    pub region_id: Option<i64>,
1577    pub storage_type: Option<String>,
1578    pub provider_type: Option<String>,
1579    pub is_active: Option<bool>,
1580    pub direct_access: Option<bool>,
1581    pub page: Option<i64>,
1582    pub limit: Option<i64>,
1583}
1584
1585// Volumes
1586
1587#[derive(Debug, Clone, Serialize)]
1588pub struct CreateVolumeRequest {
1589    #[serde(rename = "accountId")]
1590    pub account_id: i64,
1591    #[serde(rename = "storageId")]
1592    pub storage_id: i64,
1593    pub name: String,
1594    #[serde(skip_serializing_if = "Option::is_none")]
1595    pub description: Option<String>,
1596    #[serde(rename = "volumeType")]
1597    pub volume_type: String,
1598    #[serde(skip_serializing_if = "Option::is_none")]
1599    pub encryption: Option<bool>,
1600    #[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
1601    pub encryption_key: Option<String>,
1602    #[serde(skip_serializing_if = "Option::is_none")]
1603    pub retention: Option<VolumeRetentionPolicy>,
1604    #[serde(skip_serializing_if = "Option::is_none")]
1605    pub versioning: Option<VolumeVersioningPolicy>,
1606    #[serde(skip_serializing_if = "Option::is_none")]
1607    pub compaction: Option<String>,
1608    #[serde(rename = "quotaLimit", skip_serializing_if = "Option::is_none")]
1609    pub quota_limit: Option<i64>,
1610    #[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
1611    pub region_cluster_id: Option<i64>,
1612    #[serde(rename = "regionClusterUuid", skip_serializing_if = "Option::is_none")]
1613    pub region_cluster_uuid: Option<String>,
1614}
1615
1616#[derive(Debug, Clone, Serialize, Deserialize)]
1617pub struct CreateVolumeResponse {
1618    pub id: i64,
1619    #[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
1620    pub encryption_key: Option<String>,
1621}
1622
1623#[derive(Debug, Clone, Serialize)]
1624pub struct EditVolumeRequest {
1625    #[serde(skip_serializing_if = "Option::is_none")]
1626    pub description: Option<String>,
1627    #[serde(skip_serializing_if = "Option::is_none")]
1628    pub retention: Option<VolumeRetentionPolicy>,
1629    #[serde(skip_serializing_if = "Option::is_none")]
1630    pub versioning: Option<VolumeVersioningPolicy>,
1631    #[serde(skip_serializing_if = "Option::is_none")]
1632    pub compaction: Option<String>,
1633}
1634
1635#[derive(Debug, Clone, Serialize)]
1636pub struct MoveVolumeClusterRequest {
1637    #[serde(rename = "targetClusterId", skip_serializing_if = "Option::is_none")]
1638    pub target_cluster_id: Option<i64>,
1639    #[serde(rename = "targetClusterUuid", skip_serializing_if = "Option::is_none")]
1640    pub target_cluster_uuid: Option<String>,
1641}
1642
1643#[derive(Debug, Clone, Serialize, Deserialize)]
1644pub struct MoveClusterVolumeResponse {
1645    pub id: i64,
1646    #[serde(rename = "sourceClusterId")]
1647    pub source_cluster_id: i64,
1648    #[serde(rename = "targetClusterId")]
1649    pub target_cluster_id: i64,
1650    #[serde(rename = "handoverUntil")]
1651    pub handover_until: i64,
1652}
1653
1654#[derive(Debug, Clone, Serialize)]
1655pub struct DeactivateVolumeRequest {
1656    #[serde(rename = "isCleanupMetaEnabled", skip_serializing_if = "Option::is_none")]
1657    pub is_cleanup_meta_enabled: Option<bool>,
1658    #[serde(rename = "isCleanupStorageEnabled", skip_serializing_if = "Option::is_none")]
1659    pub is_cleanup_storage_enabled: Option<bool>,
1660    #[serde(rename = "isCleanupVaultEnabled", skip_serializing_if = "Option::is_none")]
1661    pub is_cleanup_vault_enabled: Option<bool>,
1662}
1663
1664#[derive(Debug, Clone, Serialize)]
1665pub struct GenerateVolumeAPIKeysRequest {
1666    #[serde(rename = "userId")]
1667    pub user_id: i64,
1668    #[serde(skip_serializing_if = "Option::is_none")]
1669    pub name: Option<String>,
1670}
1671
1672#[derive(Debug, Clone, Serialize, Deserialize)]
1673pub struct GenerateAPIKeysVolumeResponse {
1674    #[serde(rename = "apiKey")]
1675    pub api_key: String,
1676    #[serde(rename = "apiSecret")]
1677    pub api_secret: String,
1678    #[serde(rename = "evictedApiKeys", skip_serializing_if = "Option::is_none")]
1679    pub evicted_api_keys: Option<Vec<String>>,
1680}
1681
1682#[derive(Debug, Clone, Serialize, Deserialize)]
1683pub struct ListAPIKeysVolumeResponse {
1684    pub keys: Vec<VolumeApiKey>,
1685}
1686
1687#[derive(Debug, Clone, Serialize)]
1688pub struct RevokeVolumeAPIKeyRequest {
1689    #[serde(rename = "apiKey")]
1690    pub api_key: String,
1691}
1692
1693#[derive(Debug, Clone, Serialize)]
1694pub struct RevokeVolumeAPIKeysByUserRequest {
1695    #[serde(rename = "userId")]
1696    pub user_id: i64,
1697}
1698
1699#[derive(Debug, Clone, Serialize)]
1700pub struct GenerateVolumeSttKeyRequest {
1701    #[serde(rename = "userId", skip_serializing_if = "Option::is_none")]
1702    pub user_id: Option<i64>,
1703    #[serde(rename = "expirySeconds")]
1704    pub expiry_seconds: i64,
1705}
1706
1707#[derive(Debug, Clone, Serialize, Deserialize)]
1708pub struct GenerateSttKeyVolumeResponse {
1709    #[serde(rename = "apiKey")]
1710    pub api_key: String,
1711    #[serde(rename = "apiSecret")]
1712    pub api_secret: String,
1713    #[serde(rename = "expiresAt")]
1714    pub expires_at: String,
1715}
1716
1717#[derive(Debug, Clone, Serialize)]
1718pub struct UpdateVolumeQuotaRequest {
1719    #[serde(rename = "quotaLimit")]
1720    pub quota_limit: i64,
1721}
1722
1723#[derive(Debug, Clone, Serialize)]
1724pub struct UpdateVolumePairConfigRequest {
1725    #[serde(rename = "targetPairCount")]
1726    pub target_pair_count: i32,
1727}
1728
1729#[derive(Debug, Clone, Serialize, Deserialize)]
1730pub struct StatsVolumeResponse {
1731    #[serde(rename = "volumeId")]
1732    pub volume_id: String,
1733    #[serde(rename = "liveVolume")]
1734    pub live_volume: i64,
1735    #[serde(rename = "totalVolume")]
1736    pub total_volume: i64,
1737    #[serde(rename = "pendingVolume")]
1738    pub pending_volume: i64,
1739    #[serde(rename = "liveInactiveVolume")]
1740    pub live_inactive_volume: i64,
1741}
1742
1743#[derive(Debug, Clone, Serialize, Deserialize)]
1744pub struct SizeHistoryVolumeResponse {
1745    pub points: Vec<VolumeSizePoint>,
1746}
1747
1748#[derive(Debug, Clone, Serialize)]
1749pub struct CreateVolumeForkRequest {
1750    pub name: String,
1751    #[serde(rename = "parentName", skip_serializing_if = "Option::is_none")]
1752    pub parent_name: Option<String>,
1753    #[serde(rename = "asOf", skip_serializing_if = "Option::is_none")]
1754    pub as_of: Option<i64>,
1755    #[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
1756    pub volume_type: Option<String>,
1757}
1758
1759#[derive(Debug, Clone, Serialize)]
1760pub struct DeleteVolumeForkRequest {
1761    #[serde(skip_serializing_if = "Option::is_none")]
1762    pub force: Option<bool>,
1763    #[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
1764    pub volume_type: Option<String>,
1765}
1766
1767#[derive(Debug, Clone, Serialize, Deserialize)]
1768pub struct DeleteForkVolumeResponse {
1769    #[serde(rename = "inactivatedFids")]
1770    pub inactivated_fids: Vec<i32>,
1771}
1772
1773#[derive(Debug, Clone, Serialize)]
1774pub struct RestoreVolumeForkRequest {
1775    #[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
1776    pub volume_type: Option<String>,
1777}
1778
1779#[derive(Debug, Clone, Default)]
1780pub struct VolumeListOptions {
1781    pub account_id: i64,
1782    pub region_id: Option<i64>,
1783    pub region_cluster_id: Option<i64>,
1784    pub storage_id: Option<i64>,
1785    pub volume_type: Option<String>,
1786    pub locked: Option<bool>,
1787    pub is_active: Option<bool>,
1788    pub page: Option<i64>,
1789    pub limit: Option<i64>,
1790}
1791
1792// VolumeForkTrees
1793
1794#[derive(Debug, Clone, Default)]
1795pub struct VolumeForkTreeListOptions {
1796    pub path: Option<String>,
1797    pub as_of: Option<i64>,
1798    pub cursor: Option<i64>,
1799    pub limit: Option<i64>,
1800    pub sort: Option<String>,
1801    pub kind: Option<String>,
1802}
1803
1804// VolumeForkEntries
1805
1806#[derive(Debug, Clone, Default)]
1807pub struct VolumeForkEntryListOptions {
1808    pub path: Option<String>,
1809    pub cursor: Option<i64>,
1810    pub limit: Option<i64>,
1811}
1812
1813// VolumeForkSearches
1814
1815#[derive(Debug, Clone, Default)]
1816pub struct VolumeForkSearchListOptions {
1817    pub q: Option<String>,
1818    pub path: Option<String>,
1819    pub as_of: Option<i64>,
1820    pub exact: Option<bool>,
1821    pub cursor: Option<i64>,
1822    pub limit: Option<i64>,
1823    pub kind: Option<String>,
1824}
1825
1826// AuditLogs
1827
1828#[derive(Debug, Clone, Default)]
1829pub struct AuditLogListOptions {
1830    pub account_id: i64,
1831    pub region_id: Option<i64>,
1832    pub region_cluster_id: Option<i64>,
1833    pub cursor: Option<i64>,
1834    pub limit: Option<i64>,
1835    pub subject: Option<String>,
1836    pub created_by: Option<String>,
1837}
1838
1839// RegionAuditLogs
1840
1841#[derive(Debug, Clone, Default)]
1842pub struct RegionAuditLogListOptions {
1843    pub region_cluster_id: Option<i64>,
1844    pub cursor: Option<i64>,
1845    pub limit: Option<i64>,
1846    pub subject: Option<String>,
1847    pub node: Option<String>,
1848}
1849
1850// ServiceNodes
1851
1852#[derive(Debug, Clone, Serialize, Deserialize)]
1853pub struct StatsHistoryServiceNodeResponse {
1854    #[serde(rename = "intervalMs")]
1855    pub interval_ms: i64,
1856    pub samples: Vec<NodeStatsSample>,
1857}
1858
1859// Nodes
1860
1861// ClientSessions
1862
1863#[derive(Debug, Clone, Default)]
1864pub struct ClientSessionListOptions {
1865    pub account_id: i64,
1866    pub region_id: Option<i64>,
1867    pub region_cluster_id: Option<i64>,
1868    pub volume_id: Option<i64>,
1869    pub user_id: Option<i64>,
1870    pub client_type: Option<String>,
1871    pub status: Option<ClientSessionStatus>,
1872    pub is_active: Option<bool>,
1873    pub os_name: Option<String>,
1874    pub platform: Option<String>,
1875    pub search: Option<String>,
1876    pub page: Option<i64>,
1877    pub limit: Option<i64>,
1878}
1879
1880// Discover
1881
1882// Metrics
1883
1884#[derive(Debug, Clone, Serialize)]
1885pub struct GenerateMetricTokenRequest {
1886    #[serde(rename = "expirySeconds")]
1887    pub expiry_seconds: i64,
1888}
1889
1890// Dashboard
1891
1892// License
1893
1894#[derive(Debug, Clone, Serialize)]
1895pub struct LoadLicenseRequest {
1896    pub payloads: Vec<String>,
1897}
1898
1899// Alerts
1900
1901#[derive(Debug, Clone, Serialize, Deserialize)]
1902pub struct ResolveAlertResponse {
1903    #[serde(rename = "alertId")]
1904    pub alert_id: String,
1905}
1906
1907#[derive(Debug, Clone, Default)]
1908pub struct AlertListOptions {
1909    pub active: Option<bool>,
1910    pub account_id: Option<i64>,
1911    pub region_id: Option<i64>,
1912    pub severity: Option<i64>,
1913    pub category: Option<String>,
1914    pub since: Option<String>,
1915    pub page: Option<i64>,
1916    pub limit: Option<i64>,
1917}
1918
1919// RegionAlerts
1920
1921#[derive(Debug, Clone, Serialize, Deserialize)]
1922pub struct ResolveRegionAlertResponse {
1923    #[serde(rename = "alertId")]
1924    pub alert_id: String,
1925}
1926
1927#[derive(Debug, Clone, Default)]
1928pub struct RegionAlertListOptions {
1929    pub active: Option<bool>,
1930    pub severity: Option<i64>,
1931    pub category: Option<String>,
1932    pub node_id: Option<String>,
1933    pub region_cluster_id: Option<i64>,
1934    pub since: Option<String>,
1935    pub page: Option<i64>,
1936    pub limit: Option<i64>,
1937}
1938
1939// GCWorkerEvents
1940
1941#[derive(Debug, Clone, Default)]
1942pub struct GCWorkerEventListOptions {
1943    pub node_id: Option<String>,
1944    pub goal: Option<String>,
1945    pub sid: Option<i64>,
1946    pub region_cluster_id: Option<i64>,
1947    pub since: Option<String>,
1948    pub page: Option<i64>,
1949    pub limit: Option<i64>,
1950}
1951
1952// Vault