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