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