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