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