Skip to main content

mountos_admin_sdk/
types_gen.rs

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