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