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