1use std::rc::Rc;
2use serde::Deserialize;
3use crate::cwe::content_history::ContentHistory;
4use crate::cwe::notes::Notes;
5use crate::cwe::relationships::Relationships;
6use crate::cwe::structured_text::StructuredText;
7use crate::cwe::weaknesses::MappingNotes;
8
9#[derive(Debug, Deserialize)]
10#[serde(deny_unknown_fields)]
11pub struct Views {
12 #[serde(rename = "$value", default)]
13 pub views: Vec<Rc<View>>,
14}
15
16#[derive(Debug, Deserialize)]
17#[serde(deny_unknown_fields)]
18pub struct View {
19 #[serde(rename = "@ID")]
20 pub id: i64,
21 #[serde(rename = "@Name")]
22 pub name: String,
23 #[serde(rename = "@Type")]
24 pub r#type: String,
25 #[serde(rename = "@Status")]
26 pub status: String,
27 #[serde(rename = "Objective")]
28 pub objective: StructuredText,
29 #[serde(rename = "Audience")]
30 pub audience: Option<Audience>,
31 #[serde(rename = "Members")]
32 pub members: Option<Relationships>,
33 #[serde(rename = "Notes")]
34 pub notes: Option<Notes>,
35 #[serde(rename = "Filter")]
36 pub filter: Option<String>,
37 #[serde(rename = "Content_History")]
38 pub content_history: ContentHistory,
39 #[serde(rename = "Mapping_Notes")]
40 pub mapping_notes: Option<MappingNotes>,
41}
42
43#[derive(Debug, Deserialize)]
44#[serde(deny_unknown_fields)]
45pub struct Audience {
46 #[serde(rename = "$value", default)]
47 pub stake_holders: Vec<StakeHolder>,
48}
49
50#[derive(Debug, Deserialize)]
51#[serde(deny_unknown_fields)]
52pub struct StakeHolder {
53 #[serde(rename = "Type")]
54 pub r#type: String,
55 #[serde(rename = "Description")]
56 pub description: Option<String>,
57}