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