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