//! Red team API methods.

use serde::Serialize;
use uuid::Uuid;

use super::client::{ApiClient, ApiError};
use super::supervisor::JsonValue;

/// Request body for red team notify endpoint.
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct RedTeamNotifyRequest {
    /// The issue message
    pub message: String,

    /// Severity level: low, medium, high, critical
    pub severity: String,

    /// The specific task this relates to (optional)
    #[serde(skip_serializing_if = "Option::is_none")]
    pub related_task_id: Option<Uuid>,

    /// The file path where the issue was detected (optional)
    #[serde(skip_serializing_if = "Option::is_none")]
    pub file_path: Option<String>,

    /// Additional context about the issue (optional)
    #[serde(skip_serializing_if = "Option::is_none")]
    pub context: Option<String>,
}

impl ApiClient {
    /// Send a red team notification about an issue found during adversarial review.
    ///
    /// POST /api/v1/mesh/red-team/notify
    pub async fn red_team_notify(&self, req: RedTeamNotifyRequest) -> Result<JsonValue, ApiError> {
        self.post("/api/v1/mesh/red-team/notify", &req).await
    }
}
