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