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