stix/
campaign.rs

1use std::collections::BTreeSet;
2
3use chrono::{DateTime, Utc};
4use serde::Deserialize;
5
6use crate::CommonProperties;
7
8#[derive(Deserialize, stix_derive::TypedObject)]
9#[typed_object(core)]
10pub struct Campaign {
11    #[serde(flatten)]
12    common: CommonProperties,
13    pub name: String,
14    #[serde(default)]
15    pub description: Option<String>,
16    #[serde(default)]
17    pub aliases: BTreeSet<String>,
18    #[serde(default)]
19    pub first_seen: Option<DateTime<Utc>>,
20    #[serde(default)]
21    pub last_seen: Option<DateTime<Utc>>,
22    #[serde(default)]
23    pub objective: Option<String>,
24}
25
26impl AsRef<CommonProperties> for Campaign {
27    fn as_ref(&self) -> &CommonProperties {
28        &self.common
29    }
30}