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