use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default)]
pub struct Config {
pub base_url: String,
pub private_key: String,
pub dashboard_user: Option<DashboardUser>,
pub dashboard_hmac_key: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct ListOptions {
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PaginationMeta {
pub page: i64,
pub limit: i64,
pub total: i64,
#[serde(rename = "totalPages")]
pub total_pages: i64,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PaginatedResponse<T> {
pub items: Vec<T>,
pub pagination: PaginationMeta,
}
#[derive(Debug, Clone, Deserialize)]
pub struct CursorPaginatedResponse<T> {
pub items: Vec<T>,
#[serde(rename = "nextCursor")]
pub next_cursor: Option<i64>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct IdResponse {
pub id: i64,
}
pub type ClientSessionStatus = String;
pub const CLIENT_SESSION_STATUS_CONNECTED: &str = "connected";
pub const CLIENT_SESSION_STATUS_ACTIVE: &str = "active";
pub const CLIENT_SESSION_STATUS_UNHEALTHY: &str = "unhealthy";
pub const CLIENT_SESSION_STATUS_DISCONNECTED: &str = "disconnected";
pub const CLIENT_SESSION_STATUS_EXPIRED: &str = "expired";
pub const CLIENT_SESSION_STATUS_UNKNOWN: &str = "unknown";
pub type LicenseQuotaState = String;
pub const LICENSE_QUOTA_STATE_OK: &str = "ok";
pub const LICENSE_QUOTA_STATE_EXCEEDED: &str = "exceeded";
pub type LicenseStatus = String;
pub const LICENSE_STATUS_VALID: &str = "valid";
pub const LICENSE_STATUS_EXPIRING: &str = "expiring";
pub const LICENSE_STATUS_GRACE: &str = "grace";
pub const LICENSE_STATUS_EXPIRED_ACCESS: &str = "expired_access";
pub const LICENSE_STATUS_EXPIRED: &str = "expired";
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Account {
pub id: i64,
pub name: String,
pub description: String,
#[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
pub icon_url: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "quotaLimit")]
pub quota_limit: i64,
#[serde(rename = "quotaExcessPct")]
pub quota_excess_pct: i32,
#[serde(rename = "isActive")]
pub is_active: bool,
pub locked: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct User {
pub id: i64,
#[serde(rename = "accountId")]
pub account_id: i64,
pub username: String,
pub email: String,
pub name: String,
#[serde(rename = "isActive")]
pub is_active: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Region {
pub id: i64,
#[serde(rename = "exportId")]
pub export_id: String,
#[serde(rename = "accountId")]
pub account_id: i64,
pub name: String,
pub dns: String,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegionCluster {
pub id: i64,
#[serde(rename = "exportId")]
pub export_id: String,
#[serde(rename = "regionId")]
pub region_id: i64,
pub name: String,
#[serde(rename = "defaultCluster")]
pub default_cluster: bool,
#[serde(rename = "isReady")]
pub is_ready: bool,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Storage {
pub id: i64,
pub uuid: String,
pub account: Ref,
#[serde(rename = "regionInfo")]
pub region_info: Ref,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "storageType")]
pub storage_type: String,
#[serde(rename = "providerType")]
pub provider_type: String,
pub endpoint: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bucket: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub base: Option<String>,
#[serde(rename = "blockRegion", skip_serializing_if = "Option::is_none")]
pub block_region: Option<String>,
#[serde(rename = "blockSize", skip_serializing_if = "Option::is_none")]
pub block_size: Option<i32>,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockVolume {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "clusterName", skip_serializing_if = "Option::is_none")]
pub cluster_name: Option<String>,
#[serde(rename = "clusterUuid", skip_serializing_if = "Option::is_none")]
pub cluster_uuid: Option<String>,
#[serde(rename = "shardId")]
pub shard_id: i64,
#[serde(rename = "regionClusterId")]
pub region_cluster_id: i64,
#[serde(rename = "clusterReady")]
pub cluster_ready: bool,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Volume {
pub id: i64,
pub account: Ref,
pub storage: Ref,
pub region: Ref,
#[serde(rename = "regionCluster", skip_serializing_if = "Option::is_none")]
pub region_cluster: Option<Ref>,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "volumeType")]
pub volume_type: String,
#[serde(rename = "storageType", skip_serializing_if = "Option::is_none")]
pub storage_type: Option<String>,
pub encryption: bool,
#[serde(rename = "quotaLimit")]
pub quota_limit: i64,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "pendingVolume")]
pub pending_volume: i64,
#[serde(rename = "liveInactiveVolume")]
pub live_inactive_volume: i64,
pub locked: bool,
#[serde(rename = "retentionPeriod")]
pub retention_period: i32,
#[serde(rename = "gracePeriod")]
pub grace_period: i32,
#[serde(rename = "forkGracePeriod")]
pub fork_grace_period: i32,
#[serde(rename = "eventLogRetentionPeriod")]
pub event_log_retention_period: i32,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "isCleanupMetaEnabled")]
pub is_cleanup_meta_enabled: bool,
#[serde(rename = "isCleanupStorageEnabled")]
pub is_cleanup_storage_enabled: bool,
#[serde(rename = "isCleanupVaultEnabled")]
pub is_cleanup_vault_enabled: bool,
#[serde(rename = "createdAt")]
pub created_at: String,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Fork {
pub fid: i32,
pub name: String,
#[serde(rename = "parentFid")]
pub parent_fid: i32,
#[serde(rename = "parentName")]
pub parent_name: String,
#[serde(rename = "snapshotTs")]
pub snapshot_ts: i64,
#[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
pub created_by: Option<i64>,
#[serde(rename = "createdAt")]
pub created_at: i64,
#[serde(rename = "childrenCount")]
pub children_count: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub inactive: Option<bool>,
#[serde(rename = "inactiveAt", skip_serializing_if = "Option::is_none")]
pub inactive_at: Option<i64>,
pub status: String,
pub size: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForkTreeEntry {
pub inode: i64,
pub name: String,
pub kind: String,
pub size: i64,
pub mtime: i64,
pub ctime: i64,
#[serde(rename = "creatorId", skip_serializing_if = "Option::is_none")]
pub creator_id: Option<i64>,
#[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
pub updater_id: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForkEntryDetail {
pub inode: i64,
pub path: String,
pub name: String,
pub kind: String,
pub size: i64,
pub mtime: i64,
pub ctime: i64,
pub generation: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub owner: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub xattrs: Option<serde_json::Value>,
#[serde(rename = "creatorId", skip_serializing_if = "Option::is_none")]
pub creator_id: Option<i64>,
#[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
pub updater_id: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForkEntryVersion {
pub generation: i64,
pub size: i64,
pub mtime: i64,
#[serde(rename = "updaterId", skip_serializing_if = "Option::is_none")]
pub updater_id: Option<i64>,
#[serde(rename = "contentHash", skip_serializing_if = "Option::is_none")]
pub content_hash: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ForkTreeMatch {
pub path: String,
pub inode: i64,
pub kind: String,
pub size: i64,
pub mtime: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuditLog {
pub id: i64,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
pub success: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub data: Option<serde_json::Value>,
#[serde(rename = "createdBy", skip_serializing_if = "Option::is_none")]
pub created_by: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub node: Option<String>,
#[serde(rename = "accountId", skip_serializing_if = "Option::is_none")]
pub account_id: Option<i64>,
#[serde(rename = "regionId", skip_serializing_if = "Option::is_none")]
pub region_id: Option<i64>,
#[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
pub region_cluster_id: Option<i64>,
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(rename = "updatedAt", skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceNode {
pub id: i64,
#[serde(rename = "regionId")]
pub region_id: i64,
#[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
pub region_cluster_id: Option<i64>,
#[serde(rename = "serviceType")]
pub service_type: String,
#[serde(rename = "nodeId")]
pub node_id: String,
#[serde(rename = "advertiseAddr")]
pub advertise_addr: String,
#[serde(rename = "rpcAddr", skip_serializing_if = "Option::is_none")]
pub rpc_addr: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
pub status: String,
#[serde(rename = "lastHeartbeat", skip_serializing_if = "Option::is_none")]
pub last_heartbeat: Option<i64>,
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(rename = "memUsage", skip_serializing_if = "Option::is_none")]
pub mem_usage: Option<f64>,
#[serde(rename = "sysLoad", skip_serializing_if = "Option::is_none")]
pub sys_load: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClientSession {
pub id: i64,
pub account: Ref,
pub region: Ref,
#[serde(rename = "regionCluster", skip_serializing_if = "Option::is_none")]
pub region_cluster: Option<Ref>,
pub volume: VolumeRef,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<Ref>,
#[serde(rename = "clientType")]
pub client_type: String,
#[serde(rename = "osName")]
pub os_name: String,
#[serde(rename = "osVersion", skip_serializing_if = "Option::is_none")]
pub os_version: Option<String>,
#[serde(rename = "appVersion", skip_serializing_if = "Option::is_none")]
pub app_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(rename = "ipAddr")]
pub ip_addr: String,
#[serde(rename = "mountMode", skip_serializing_if = "Option::is_none")]
pub mount_mode: Option<String>,
#[serde(rename = "mountPath", skip_serializing_if = "Option::is_none")]
pub mount_path: Option<String>,
#[serde(rename = "forkName", skip_serializing_if = "Option::is_none")]
pub fork_name: Option<String>,
#[serde(rename = "isTemporaryFork")]
pub is_temporary_fork: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metrics: Option<serde_json::Value>,
pub status: ClientSessionStatus,
#[serde(rename = "lastHeartbeat", skip_serializing_if = "Option::is_none")]
pub last_heartbeat: Option<i64>,
#[serde(rename = "connectedAt", skip_serializing_if = "Option::is_none")]
pub connected_at: Option<i64>,
#[serde(rename = "disconnectedAt", skip_serializing_if = "Option::is_none")]
pub disconnected_at: Option<i64>,
#[serde(rename = "isActive")]
pub is_active: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionSummary {
#[serde(rename = "byStatus")]
pub by_status: Vec<SessionSummaryStatusEntry>,
#[serde(rename = "byPlatform")]
pub by_platform: Vec<SessionSummaryFacet>,
#[serde(rename = "byOsName")]
pub by_os_name: Vec<SessionSummaryFacet>,
#[serde(rename = "regionCount")]
pub region_count: i64,
#[serde(rename = "volumeCount")]
pub volume_count: i64,
#[serde(rename = "hostCount")]
pub host_count: i64,
#[serde(rename = "unhealthyCount")]
pub unhealthy_count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DiscoverMetaResponse {
#[serde(rename = "regionId")]
pub region_id: i64,
pub region: String,
pub endpoints: Vec<DiscoverEndpoint>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DashboardStats {
#[serde(rename = "userCount")]
pub user_count: i64,
#[serde(rename = "volumeCount")]
pub volume_count: i64,
#[serde(rename = "regionCount")]
pub region_count: i64,
#[serde(rename = "storageCount")]
pub storage_count: i64,
#[serde(rename = "totalVolumeUsed")]
pub total_volume_used: i64,
#[serde(rename = "totalQuotaLimit")]
pub total_quota_limit: i64,
#[serde(rename = "activeSessionCount")]
pub active_session_count: i64,
#[serde(rename = "regionBreakdown")]
pub region_breakdown: Vec<RegionVolumeMetrics>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseDetails {
#[serde(rename = "licenseId")]
pub license_id: String,
pub licensee: String,
pub contact: String,
#[serde(rename = "licenseType")]
pub license_type: String,
#[serde(rename = "issuedAt")]
pub issued_at: String,
#[serde(rename = "expiresAt")]
pub expires_at: String,
#[serde(rename = "gracePeriodDays")]
pub grace_period_days: i64,
#[serde(rename = "expiredAccessDays")]
pub expired_access_days: i64,
#[serde(rename = "maxNodes")]
pub max_nodes: i64,
#[serde(rename = "maxVolumes")]
pub max_volumes: i64,
#[serde(rename = "maxUsers")]
pub max_users: i64,
#[serde(rename = "maxAccounts")]
pub max_accounts: i64,
#[serde(rename = "maxRegions")]
pub max_regions: i64,
#[serde(rename = "maxStorageBytes")]
pub max_storage_bytes: i64,
pub status: LicenseStatus,
#[serde(rename = "daysRemaining")]
pub days_remaining: i64,
#[serde(rename = "graceEndsAt")]
pub grace_ends_at: String,
#[serde(rename = "graceDaysLeft")]
pub grace_days_left: i64,
#[serde(rename = "expiredAccessEndsAt")]
pub expired_access_ends_at: String,
#[serde(rename = "expiredAccessDaysLeft")]
pub expired_access_days_left: i64,
pub quota: LicenseQuota,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseTerms {
pub terms: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ServiceAlert {
pub id: i64,
#[serde(rename = "alertId")]
pub alert_id: String,
pub source: String,
#[serde(rename = "nodeId")]
pub node_id: String,
pub severity: i64,
pub category: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<Ref>,
#[serde(skip_serializing_if = "Option::is_none")]
pub account: Option<Ref>,
#[serde(rename = "eventTime")]
pub event_time: String,
#[serde(rename = "resolvedAt", skip_serializing_if = "Option::is_none")]
pub resolved_at: Option<String>,
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlertCountResponse {
pub active: i64,
pub recent: i64,
#[serde(rename = "infoCount")]
pub info_count: i64,
#[serde(rename = "warningCount")]
pub warning_count: i64,
#[serde(rename = "criticalCount")]
pub critical_count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegionAlert {
pub id: i64,
#[serde(rename = "alertId")]
pub alert_id: String,
pub source: String,
#[serde(rename = "nodeId")]
pub node_id: String,
#[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
pub region_cluster_id: Option<i64>,
pub severity: i64,
pub category: String,
pub title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "eventTime")]
pub event_time: String,
#[serde(rename = "resolvedAt", skip_serializing_if = "Option::is_none")]
pub resolved_at: Option<String>,
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockMember {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "regionClusterId")]
pub region_cluster_id: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DashboardUser {
pub id: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
pub role: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub username: Option<String>,
#[serde(rename = "accountId", skip_serializing_if = "Option::is_none")]
pub account_id: Option<i64>,
#[serde(rename = "userId", skip_serializing_if = "Option::is_none")]
pub user_id: Option<i64>,
#[serde(rename = "volumeId", skip_serializing_if = "Option::is_none")]
pub volume_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exp: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DiscoverEndpoint {
#[serde(rename = "nodeId")]
pub node_id: String,
pub addr: String,
pub status: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LicenseQuota {
pub state: LicenseQuotaState,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
pub generation: i64,
#[serde(rename = "lastTransitionAtMs")]
pub last_transition_at_ms: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Ref {
pub id: i64,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegionVolumeMetrics {
#[serde(rename = "regionId")]
pub region_id: i64,
#[serde(rename = "regionName")]
pub region_name: String,
#[serde(rename = "volumeCount")]
pub volume_count: i64,
#[serde(rename = "totalVolumeUsed")]
pub total_volume_used: i64,
#[serde(rename = "totalQuotaLimit")]
pub total_quota_limit: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionSummaryFacet {
pub label: String,
pub count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SessionSummaryStatusEntry {
#[serde(rename = "clientType")]
pub client_type: String,
pub status: String,
pub count: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserLite {
pub id: i64,
pub username: String,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeRef {
pub id: i64,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VolumeSizePoint {
#[serde(rename = "bucketEnd")]
pub bucket_end: String,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "pendingVolume")]
pub pending_volume: i64,
#[serde(rename = "liveInactiveVolume")]
pub live_inactive_volume: i64,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateAccountRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
pub icon_url: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditAccountRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "iconUrl", skip_serializing_if = "Option::is_none")]
pub icon_url: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize)]
pub struct UpdateAccountQuotaRequest {
#[serde(rename = "quotaLimit")]
pub quota_limit: i64,
#[serde(rename = "quotaExcessPct", skip_serializing_if = "Option::is_none")]
pub quota_excess_pct: Option<i32>,
}
#[derive(Debug, Clone, Default)]
pub struct AccountListOptions {
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct AddUserRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
pub username: String,
pub email: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize)]
pub struct BulkUserRequest {
pub ids: Vec<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BulkUserResponse {
pub users: Vec<UserLite>,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditUserRequest {
pub username: String,
pub email: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "providerInfo", skip_serializing_if = "Option::is_none")]
pub provider_info: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default)]
pub struct UserListOptions {
pub account_id: i64,
pub search: Option<String>,
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateRegionRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
pub name: String,
pub dns: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditRegionRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
pub name: String,
pub dns: String,
}
#[derive(Debug, Clone, Default)]
pub struct RegionListOptions {
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct ClusterListOptions {
pub account_id: i64,
pub region_id: Option<i64>,
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateRegionClusterRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditRegionClusterRequest {
pub name: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct SetRegionClusterReadyRequest {
pub ready: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SetReadyRegionClusterResponse {
pub id: i64,
pub ready: bool,
}
#[derive(Debug, Clone, Default)]
pub struct RegionClusterListOptions {
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateStorageRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
#[serde(rename = "regionId")]
pub region_id: i64,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "storageType")]
pub storage_type: String,
#[serde(rename = "providerType")]
pub provider_type: String,
pub endpoint: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bucket: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub base: Option<String>,
#[serde(rename = "blockRegion", skip_serializing_if = "Option::is_none")]
pub block_region: Option<String>,
#[serde(rename = "blockSize", skip_serializing_if = "Option::is_none")]
pub block_size: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub members: Option<Vec<BlockMember>>,
#[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
pub access_key: Option<String>,
#[serde(rename = "secretKey", skip_serializing_if = "Option::is_none")]
pub secret_key: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateStorageResponse {
pub id: i64,
#[serde(rename = "blockVolumeIds", skip_serializing_if = "Option::is_none")]
pub block_volume_ids: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditStorageRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub endpoint: Option<String>,
#[serde(rename = "accessKey", skip_serializing_if = "Option::is_none")]
pub access_key: Option<String>,
#[serde(rename = "secretKey", skip_serializing_if = "Option::is_none")]
pub secret_key: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct TestStorageBucketRequest {
pub endpoint: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
pub bucket: String,
#[serde(rename = "accessKey")]
pub access_key: String,
#[serde(rename = "secretKey")]
pub secret_key: String,
#[serde(rename = "providerType", skip_serializing_if = "Option::is_none")]
pub provider_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TestBucketStorageResponse {
#[serde(rename = "bucketExists")]
pub bucket_exists: bool,
pub list: bool,
pub write: bool,
pub read: bool,
pub delete: bool,
pub multipart: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TestStorageBucketStorageResponse {
#[serde(rename = "bucketExists")]
pub bucket_exists: bool,
pub list: bool,
pub write: bool,
pub read: bool,
pub delete: bool,
pub multipart: bool,
}
#[derive(Debug, Clone, Default)]
pub struct StorageListOptions {
pub account_id: i64,
pub search: Option<String>,
pub region_id: Option<i64>,
pub storage_type: Option<String>,
pub provider_type: Option<String>,
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateVolumeRequest {
#[serde(rename = "accountId")]
pub account_id: i64,
#[serde(rename = "storageId")]
pub storage_id: i64,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "volumeType")]
pub volume_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub encryption: Option<bool>,
#[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
pub encryption_key: Option<String>,
#[serde(rename = "retentionPeriod", skip_serializing_if = "Option::is_none")]
pub retention_period: Option<i32>,
#[serde(rename = "gracePeriod", skip_serializing_if = "Option::is_none")]
pub grace_period: Option<i32>,
#[serde(rename = "forkGracePeriod", skip_serializing_if = "Option::is_none")]
pub fork_grace_period: Option<i32>,
#[serde(rename = "eventLogRetentionPeriod", skip_serializing_if = "Option::is_none")]
pub event_log_retention_period: Option<i32>,
#[serde(rename = "quotaLimit", skip_serializing_if = "Option::is_none")]
pub quota_limit: Option<i64>,
#[serde(rename = "regionClusterId", skip_serializing_if = "Option::is_none")]
pub region_cluster_id: Option<i64>,
#[serde(rename = "regionClusterUuid", skip_serializing_if = "Option::is_none")]
pub region_cluster_uuid: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateVolumeResponse {
pub id: i64,
#[serde(rename = "encryptionKey", skip_serializing_if = "Option::is_none")]
pub encryption_key: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct EditVolumeRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "retentionPeriod", skip_serializing_if = "Option::is_none")]
pub retention_period: Option<i32>,
#[serde(rename = "gracePeriod", skip_serializing_if = "Option::is_none")]
pub grace_period: Option<i32>,
#[serde(rename = "forkGracePeriod", skip_serializing_if = "Option::is_none")]
pub fork_grace_period: Option<i32>,
#[serde(rename = "eventLogRetentionPeriod", skip_serializing_if = "Option::is_none")]
pub event_log_retention_period: Option<i32>,
}
#[derive(Debug, Clone, Serialize)]
pub struct MoveVolumeClusterRequest {
#[serde(rename = "targetClusterId", skip_serializing_if = "Option::is_none")]
pub target_cluster_id: Option<i64>,
#[serde(rename = "targetClusterUuid", skip_serializing_if = "Option::is_none")]
pub target_cluster_uuid: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MoveClusterVolumeResponse {
pub id: i64,
#[serde(rename = "sourceClusterId")]
pub source_cluster_id: i64,
#[serde(rename = "targetClusterId")]
pub target_cluster_id: i64,
#[serde(rename = "handoverUntil")]
pub handover_until: i64,
}
#[derive(Debug, Clone, Serialize)]
pub struct DeactivateVolumeRequest {
#[serde(rename = "isCleanupMetaEnabled", skip_serializing_if = "Option::is_none")]
pub is_cleanup_meta_enabled: Option<bool>,
#[serde(rename = "isCleanupStorageEnabled", skip_serializing_if = "Option::is_none")]
pub is_cleanup_storage_enabled: Option<bool>,
#[serde(rename = "isCleanupVaultEnabled", skip_serializing_if = "Option::is_none")]
pub is_cleanup_vault_enabled: Option<bool>,
}
#[derive(Debug, Clone, Serialize)]
pub struct GenerateVolumeAPIKeysRequest {
#[serde(rename = "userId")]
pub user_id: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GenerateAPIKeysVolumeResponse {
#[serde(rename = "apiKey")]
pub api_key: String,
#[serde(rename = "apiSecret")]
pub api_secret: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct RevokeVolumeAPIKeyRequest {
#[serde(rename = "apiKey")]
pub api_key: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct RevokeVolumeAPIKeysByUserRequest {
#[serde(rename = "userId")]
pub user_id: i64,
}
#[derive(Debug, Clone, Serialize)]
pub struct UpdateVolumeQuotaRequest {
#[serde(rename = "quotaLimit")]
pub quota_limit: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StatsVolumeResponse {
#[serde(rename = "volumeId")]
pub volume_id: String,
#[serde(rename = "liveVolume")]
pub live_volume: i64,
#[serde(rename = "totalVolume")]
pub total_volume: i64,
#[serde(rename = "pendingVolume")]
pub pending_volume: i64,
#[serde(rename = "liveInactiveVolume")]
pub live_inactive_volume: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SizeHistoryVolumeResponse {
pub points: Vec<VolumeSizePoint>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CreateVolumeForkRequest {
pub name: String,
#[serde(rename = "parentName", skip_serializing_if = "Option::is_none")]
pub parent_name: Option<String>,
#[serde(rename = "asOf", skip_serializing_if = "Option::is_none")]
pub as_of: Option<i64>,
#[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
pub volume_type: Option<String>,
}
#[derive(Debug, Clone, Serialize)]
pub struct DeleteVolumeForkRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub force: Option<bool>,
#[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
pub volume_type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteForkVolumeResponse {
#[serde(rename = "inactivatedFids")]
pub inactivated_fids: Vec<i32>,
}
#[derive(Debug, Clone, Serialize)]
pub struct RestoreVolumeForkRequest {
#[serde(rename = "volumeType", skip_serializing_if = "Option::is_none")]
pub volume_type: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct VolumeListOptions {
pub account_id: i64,
pub region_id: Option<i64>,
pub region_cluster_id: Option<i64>,
pub storage_id: Option<i64>,
pub volume_type: Option<String>,
pub locked: Option<bool>,
pub is_active: Option<bool>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct VolumeForkTreeListOptions {
pub path: Option<String>,
pub as_of: Option<i64>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
pub sort: Option<String>,
pub kind: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct VolumeForkEntryListOptions {
pub path: Option<String>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct VolumeForkSearchListOptions {
pub q: Option<String>,
pub path: Option<String>,
pub as_of: Option<i64>,
pub exact: Option<bool>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
pub kind: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct AuditLogListOptions {
pub account_id: Option<i64>,
pub region_id: Option<i64>,
pub region_cluster_id: Option<i64>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
pub subject: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct RegionAuditLogListOptions {
pub region_cluster_id: Option<i64>,
pub cursor: Option<i64>,
pub limit: Option<i64>,
pub subject: Option<String>,
pub node: Option<String>,
}
#[derive(Debug, Clone, Default)]
pub struct ClientSessionListOptions {
pub account_id: Option<i64>,
pub region_id: Option<i64>,
pub region_cluster_id: Option<i64>,
pub volume_id: Option<i64>,
pub user_id: Option<i64>,
pub client_type: Option<String>,
pub status: Option<ClientSessionStatus>,
pub is_active: Option<String>,
pub os_name: Option<String>,
pub platform: Option<String>,
pub search: Option<String>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct AlertListOptions {
pub active: Option<bool>,
pub account_id: Option<i64>,
pub region_id: Option<i64>,
pub severity: Option<i64>,
pub category: Option<String>,
pub since: Option<String>,
pub page: Option<i64>,
pub limit: Option<i64>,
}
#[derive(Debug, Clone, Default)]
pub struct RegionAlertListOptions {
pub active: Option<bool>,
pub severity: Option<i64>,
pub category: Option<String>,
pub node_id: Option<String>,
pub region_cluster_id: Option<i64>,
pub since: Option<String>,
pub page: Option<i64>,
pub limit: Option<i64>,
}