#[cfg(feature = "red-team")]
use scm_sdk::{
RequestOptions, Result,
airs::red_team::{
RedTeamClient,
models::{FileFormat, RegenerateResponse, ThreatOverrideItem, ThreatOverrideRequest},
},
data::Nullable,
};
#[cfg(feature = "red-team")]
pub async fn inspect_report(client: &RedTeamClient, job_id: &str) -> Result<()> {
let options = RequestOptions::with_timeout(std::time::Duration::from_secs(10))?
.without_response_defaults();
let status = client.reports().get_status(job_id, Some(&options)).await?;
let descriptor = client
.reports()
.get_download_url(job_id, FileFormat::CSV, Some(&options))
.await?;
let csv = client.download_error_logs(job_id, Some(&options)).await?;
let _ = (status, descriptor, csv);
Ok(())
}
#[cfg(feature = "red-team")]
pub async fn regenerate_report(client: &RedTeamClient, job_id: &str) -> Result<RegenerateResponse> {
let options = RequestOptions::with_timeout(std::time::Duration::from_secs(10))?;
client.reports().regenerate(job_id, Some(&options)).await
}
#[cfg(feature = "red-team")]
fn main() -> Result<()> {
let edit = ThreatOverrideItem::builder()
.output_id("550e8400-e29b-41d4-a716-446655440011".into())
.threat_override(Nullable::Null)
.build()?;
let request = ThreatOverrideRequest::builder()
.overrides(vec![edit])
.build_validated(scm_sdk::validation::Mode::Request)?;
assert_eq!(request.overrides.len(), 1);
Ok(())
}
#[cfg(not(feature = "red-team"))]
fn main() {}