bucketwarden-server 0.1.0

BucketWarden storage server runtime.
Documentation
use super::*;

mod admin;
mod audit_evidence;
mod auth;
mod dispatch;
mod governance;
mod paging;
mod preferences;
mod reports;
mod state;

pub use dispatch::*;
pub(crate) use paging::*;

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiLoginRequest {
    pub principal_id: String,
    pub shared_secret: String,
}

pub type ConsoleApiSession = BrowserUiSession;

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiIdentityProvider {
    pub provider_id: String,
    pub label: String,
    pub method: String,
    pub enabled: bool,
    pub description: String,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiIdentityProviderList {
    pub default_provider_id: String,
    pub providers: Vec<ConsoleApiIdentityProvider>,
}

#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiListQuery {
    pub limit: Option<usize>,
    pub offset: Option<usize>,
    pub prefix: Option<String>,
    pub q: Option<String>,
    pub sort: Option<String>,
}

#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiPage {
    pub limit: usize,
    pub offset: usize,
    pub total: usize,
    pub returned: usize,
    pub sort: String,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiErrorEnvelope {
    pub code: String,
    pub message: String,
    pub retryable: bool,
    pub status: u16,
    pub request_id: String,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiOverviewReport {
    pub generated_at_epoch_seconds: u64,
    pub session: ConsoleApiSession,
    pub health: OpsHealthReport,
    pub metrics: ConsoleMetricSummary,
    pub retention_bucket_count: usize,
    pub retained_version_count: usize,
    pub lifecycle_bucket_count: usize,
    pub lifecycle_rule_count: usize,
    pub security_governance_findings: Vec<String>,
    pub failure_modes: Vec<String>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiReportSummary {
    pub id: String,
    pub title: String,
    pub category: String,
    pub status: String,
    pub endpoint: String,
    pub export_endpoint: Option<String>,
    pub generated_at_epoch_seconds: u64,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiReportsDashboard {
    pub generated_at_epoch_seconds: u64,
    pub reports: Vec<ConsoleApiReportSummary>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiBucketList {
    pub page: ConsoleApiPage,
    pub buckets: Vec<ConsoleBucketRow>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiBucketDetail {
    pub bucket: ConsoleBucketRow,
    pub policies: Vec<ConsolePolicyRow>,
    pub findings: Vec<String>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiObjectList {
    pub page: ConsoleApiPage,
    pub objects: Vec<ConsoleObjectRow>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiObjectVersionRow {
    pub bucket: String,
    pub key: String,
    pub version_id: String,
    pub version_ordinal: u64,
    pub version_label: String,
    pub is_latest: bool,
    pub delete_marker: bool,
    pub content_length: usize,
    pub etag: String,
    pub last_modified_epoch_seconds: u64,
    pub owner: String,
    pub legal_hold: bool,
    pub retention_mode: Option<String>,
    pub retain_until_epoch_seconds: Option<u64>,
    pub replication_status: Option<String>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiObjectVersionHistory {
    pub page: ConsoleApiPage,
    pub versions: Vec<ConsoleApiObjectVersionRow>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiObjectGovernanceSummary {
    pub bucket: String,
    pub key: String,
    pub version_id: String,
    pub legal_hold: bool,
    pub retention_mode: Option<String>,
    pub retain_until_epoch_seconds: Option<u64>,
    pub retention_active: bool,
    pub delete_allowed_without_bypass: bool,
    pub effective_constraints: Vec<String>,
    pub delete_marker: bool,
}

#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiAuditQuery {
    pub limit: Option<usize>,
    pub offset: Option<usize>,
    pub q: Option<String>,
    pub sort: Option<String>,
    pub subject: Option<String>,
    pub action: Option<String>,
    pub resource: Option<String>,
    pub outcome: Option<String>,
    pub min_sequence: Option<u64>,
    pub max_sequence: Option<u64>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiAuditEvents {
    pub page: ConsoleApiPage,
    pub events: Vec<AuditEvent>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiEvidenceItem {
    pub name: String,
    pub content_type: String,
    pub bytes: usize,
    pub record_count: usize,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiEvidenceList {
    pub page: ConsoleApiPage,
    pub evidence: Vec<ConsoleApiEvidenceItem>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiEvidenceExport {
    pub filename: String,
    pub content_type: String,
    pub report: OpsEvidenceExportReport,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiTenantScope {
    pub selected_tenant_id: String,
    pub tenant_ids: Vec<String>,
    pub scoped_request_header: String,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiRoleAssignmentRow {
    pub principal_id: String,
    pub role: String,
    pub scope: String,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiRoleRow {
    pub role: String,
    pub assignment_count: usize,
    pub actions: Vec<String>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiUserDetail {
    pub principal_id: String,
    pub tenant_id: String,
    pub kind: String,
    pub enabled: bool,
    pub assignments: Vec<ConsoleApiRoleAssignmentRow>,
    pub effective_permissions: Vec<String>,
}

#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiAdminSummary {
    pub tenant_scope: ConsoleApiTenantScope,
    pub users: Vec<ConsoleUserRow>,
    pub roles: Vec<ConsoleApiRoleRow>,
    pub assignments: Vec<ConsoleApiRoleAssignmentRow>,
    pub effective_permissions: Vec<String>,
}

#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct ConsoleApiPreferences {
    pub values: BTreeMap<String, String>,
}