pub struct Report {
pub schema_version: u32,
pub plugin: PluginInfo,
pub verdict: Option<Verdict>,
pub indicators: Vec<Indicator>,
pub ttps: Vec<Ttp>,
pub artifacts: Vec<ArtifactRef>,
pub summary: Option<String>,
pub sections: Vec<Section>,
pub raw: Option<Value>,
}Expand description
A plugin’s structured analysis result for a single task.
Reports are the primary way plugins communicate findings to the
frontend. Build one with ReportBuilder, then call
Report::into_plugin_result to turn it into a PluginResult
ready for ResultSink::push.
Fields§
§schema_version: u32Schema version for forward-compatible deserialization.
plugin: PluginInfoIdentity of the plugin that produced this report.
verdict: Option<Verdict>Overall verdict (classification, score, confidence, labels).
indicators: Vec<Indicator>Indicators of compromise extracted during analysis.
ttps: Vec<Ttp>MITRE ATT&CK techniques observed during analysis.
artifacts: Vec<ArtifactRef>References to sibling PluginResults (files, captures, etc.).
summary: Option<String>Short human-readable summary of the analysis findings.
sections: Vec<Section>Presentation sections rendered by the frontend.
raw: Option<Value>Escape hatch for plugin-native JSON that doesn’t fit the typed schema.
Implementations§
Source§impl Report
impl Report
Sourcepub fn into_plugin_result(self) -> Result<PluginResult>
pub fn into_plugin_result(self) -> Result<PluginResult>
Serialize this report into a PluginResult::Json with the
well-known REPORT_RESULT_NAME name, ready for ctx.push_result.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Report
impl<'de> Deserialize<'de> for Report
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Report
impl RefUnwindSafe for Report
impl Send for Report
impl Sync for Report
impl Unpin for Report
impl UnsafeUnpin for Report
impl UnwindSafe for Report
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].