schemas_v1_api_alerts - OmniCloudOrg/OmniOrchestrator GitHub Wiki
Path: src/schemas/v1/api/alerts.rs
Alert management module for handling CRUD operations on alerts.
This module provides functionality to create, read, update, and delete alerts in the system. It includes endpoints for managing alerts associated with applications and organizations.
- struct CreateAlertRequest
- struct UpdateAlertStatusRequest
- struct AcknowledgeAlertRequest
- struct CreateEscalationRequest
- struct BulkUpdateStatusRequest
- async fn list_alerts
- async fn get_alert
- async fn create_alert
- async fn update_alert_status
- async fn acknowledge_alert
- async fn resolve_alert
- async fn escalate_alert
- async fn get_app_alerts
- async fn get_org_active_alerts
- async fn get_org_alert_stats
- async fn get_alerts_needing_escalation
- async fn auto_resolve_old_alerts
- async fn search_alerts
- async fn bulk_update_alert_status
pub struct CreateAlertRequest {
alert_type: String,
severity: String,
service: String,
message: String,
#[serde(skip_serializing_if = "Option::is_none")]
metadata: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
org_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
app_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
instance_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
region_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
node_id: Option<i64>,
}
pub struct UpdateAlertStatusRequest {
status: String,
#[serde(skip_serializing_if = "Option::is_none")]
notes: Option<String>,
}
pub struct AcknowledgeAlertRequest {
#[serde(skip_serializing_if = "Option::is_none")]
notes: Option<String>,
#[serde(default)]
update_status: bool,
}
pub struct CreateEscalationRequest {
escalation_level: i64,
escalated_to: serde_json::Value,
escalation_method: String,
#[serde(skip_serializing_if = "Option::is_none")]
response_required_by: Option<DateTime<Utc>>,
}
pub struct BulkUpdateStatusRequest {
#[serde(skip_serializing_if = "Option::is_none")]
ids: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
service: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
app_id: Option<i64>,
status: String,
#[serde(skip_serializing_if = "Option::is_none")]
notes: Option<String>,
}
pub async fn list_alerts(
platform_id: i64,
page: Option<i64>,
per_page: Option<i64>,
status: Option<String>,
severity: Option<String>,
org_id: Option<i64>,
app_id: Option<i64>,
service: Option<String>,
from_date: Option<String>,
to_date: Option<String>,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get a paginated list of alerts with filtering options
pub async fn get_alert(
platform_id: i64,
id: i64,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get details of a specific alert including related data
pub async fn create_alert(
platform_id: i64,
alert_data: Json<CreateAlertRequest>,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Create a new alert
pub async fn update_alert_status(
platform_id: i64,
id: i64,
status_data: Json<UpdateAlertStatusRequest>,
user: User, // Extract user from request guard
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Update an alert's status
pub async fn acknowledge_alert(
platform_id: i64,
id: i64,
ack_data: Json<AcknowledgeAlertRequest>,
user: User, // Extract user from request guard
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Acknowledge an alert
pub async fn resolve_alert(
platform_id: i64,
id: i64,
resolve_data: Option<Json<HashMap<String, String>>>,
user: User, // Extract user from request guard
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Resolve an alert
pub async fn escalate_alert(
platform_id: i64,
id: i64,
escalation_data: Json<CreateEscalationRequest>,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Create an escalation for an alert
pub async fn get_app_alerts(
platform_id: i64,
app_id: i64,
limit: Option<i64>,
include_resolved: Option<bool>,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get alerts for a specific application
pub async fn get_org_active_alerts(
platform_id: i64,
org_id: i64,
limit: Option<i64>,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get active alerts for an organization
pub async fn get_org_alert_stats(
platform_id: i64,
org_id: i64,
days: Option<i64>,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get alert statistics for an organization
pub async fn get_alerts_needing_escalation(
platform_id: i64,
org_id: Option<i64>,
hours_threshold: Option<i64>,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Get alerts needing escalation
pub async fn auto_resolve_old_alerts(
platform_id: i64,
days_threshold: Option<i64>,
severity_level: Option<Vec<String>>, // Can provide multiple severity levels
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Auto-resolve old alerts
pub async fn search_alerts(
platform_id: i64,
query: String,
org_id: Option<i64>,
page: Option<i64>,
per_page: Option<i64>,
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Search for alerts
pub async fn bulk_update_alert_status(
platform_id: i64,
update_data: Json<BulkUpdateStatusRequest>,
user: User, // Extract user from request guard
db_manager: &State<Arc<DatabaseManager>>,
) -> Result<Json<Value>, (Status, Json<Value>)> {
// ... function body
}
Bulk update alert status