1use serde::{Deserialize, Serialize};
4
5use super::ExtensionMap;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
12#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
13#[serde(rename_all = "camelCase")]
14pub struct SecurityMetadata {
15 #[serde(default, skip_serializing_if = "Vec::is_empty")]
17 pub secret_refs: Vec<SecretReference>,
18 #[serde(default, skip_serializing_if = "Vec::is_empty")]
20 pub integrity_refs: Vec<IntegrityReference>,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
23 pub security_domain: Option<String>,
24 #[serde(default, skip_serializing_if = "Option::is_none")]
26 pub audit_policy_ref: Option<String>,
27 #[serde(default, flatten)]
29 pub extensions: ExtensionMap,
30}
31
32#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
34#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
35#[serde(rename_all = "camelCase")]
36pub struct SecretReference {
37 pub id: String,
39 pub loc: String,
41 #[serde(default, skip_serializing_if = "Option::is_none")]
43 pub provider: Option<String>,
44 #[serde(default, flatten)]
46 pub extensions: ExtensionMap,
47}
48
49#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
51#[cfg_attr(feature = "jsonschema", derive(schemars::JsonSchema))]
52#[serde(rename_all = "camelCase")]
53pub struct IntegrityReference {
54 pub kind: String,
56 pub value: String,
58 #[serde(default, flatten)]
60 pub extensions: ExtensionMap,
61}