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