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