Skip to main content

mountos_admin_sdk/
types_gen.rs

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