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