1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
* Hanzo Cloud API
*
* The Hanzo Cloud API as a customer calls it: every operation under /v1/ except the operator's admin product, relay routes, legacy spellings and capabilities still reached by flag. Tagged by product: the first path segment after /v1/.
*
* The version of the OpenAPI document: v1
*
* Generated by: https://openapi-generator.tech
*/
use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CoverRow {
/// Automated is how many clauses have an automated control behind them that something can fail on behalf of.
#[serde(rename = "automated", skip_serializing_if = "Option::is_none")]
pub automated: Option<i32>,
/// Edition is which edition the clause list is taken from.
#[serde(rename = "edition", skip_serializing_if = "Option::is_none")]
pub edition: Option<String>,
/// Framework is the framework id — \"soc2\", \"iso27001\", \"nist80053\".
#[serde(rename = "framework", skip_serializing_if = "Option::is_none")]
pub framework: Option<String>,
/// Name is the published standard's name.
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
/// None is how many have nothing behind them. It stays visible rather than dropping out of the fraction.
#[serde(rename = "none", skip_serializing_if = "Option::is_none")]
pub none: Option<i32>,
/// Note is what the clause list itself is scoped to, when the framework's catalog says something a count alone would misrepresent.
#[serde(rename = "note", skip_serializing_if = "Option::is_none")]
pub note: Option<String>,
/// Partial is how many are answered in part.
#[serde(rename = "partial", skip_serializing_if = "Option::is_none")]
pub partial: Option<i32>,
/// Publisher is who publishes it — AICPA, ISO/IEC, NIST.
#[serde(rename = "publisher", skip_serializing_if = "Option::is_none")]
pub publisher: Option<String>,
/// Statement is the counts as one sentence, carrying the unit.
#[serde(rename = "statement", skip_serializing_if = "Option::is_none")]
pub statement: Option<String>,
/// Total is the framework's WHOLE published clause list — the denominator. Counting only the clauses some control happened to name would report 100% every time.
#[serde(rename = "total", skip_serializing_if = "Option::is_none")]
pub total: Option<i32>,
/// Unit is what ONE clause is — \"criterion\", \"control\", \"family\". A count without its unit is not a fact, so it travels with every number here.
#[serde(rename = "unit", skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
/// Units is the plural of Unit, for rendering a sentence.
#[serde(rename = "units", skip_serializing_if = "Option::is_none")]
pub units: Option<String>,
}
impl CoverRow {
pub fn new() -> CoverRow {
CoverRow {
automated: None,
edition: None,
framework: None,
name: None,
none: None,
note: None,
partial: None,
publisher: None,
statement: None,
total: None,
unit: None,
units: None,
}
}
}