1use serde::{Deserialize, Serialize};
2use url::Url;
3
4#[derive(Debug, Clone, Deserialize, Serialize)]
5pub struct ExternalReference {
6 pub source_name: String,
7 #[serde(default, skip_serializing_if = "Option::is_none")]
8 pub external_id: Option<String>,
9 #[serde(default, skip_serializing_if = "Option::is_none")]
10 pub url: Option<Url>,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub description: Option<String>,
13}
14#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
15pub struct KillChainPhase {
16 pub kill_chain_name: String,
17 pub phase_name: String,
18}
19
20impl KillChainPhase {
21 pub fn mitre(phase_name: impl Into<String>) -> Self {
23 Self {
24 kill_chain_name: "mitre-attack".into(),
25 phase_name: phase_name.into(),
26 }
27 }
28}