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