gproxy_protocol/aws/converse/trace/
policies.rs1use serde::{Deserialize, Serialize};
2
3use crate::aws::{GuardrailOrigin, GuardrailOwnership, Rest};
4
5use super::{
6 GuardrailContentFilter, GuardrailContextualGroundingFilter, GuardrailCustomWord,
7 GuardrailManagedWord, GuardrailPiiEntityFilter, GuardrailRegexFilter, GuardrailTopic,
8};
9
10#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12#[derive(gproxy_protocol_macros::WireBuilder)]
13#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
14pub struct AppliedGuardrailDetails {
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub guardrail_arn: Option<String>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub guardrail_id: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub guardrail_origin: Option<Vec<GuardrailOrigin>>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub guardrail_ownership: Option<GuardrailOwnership>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub guardrail_version: Option<String>,
25 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
26 pub rest: Rest,
27}
28
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
30#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
31pub struct GuardrailContentPolicyAssessment {
32 pub filters: Vec<GuardrailContentFilter>,
33 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
34 pub rest: Rest,
35}
36
37#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
38#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
39pub struct GuardrailContextualGroundingPolicyAssessment {
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub filters: Option<Vec<GuardrailContextualGroundingFilter>>,
42 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
43 pub rest: Rest,
44}
45
46#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
47#[serde(rename_all = "camelCase")]
48#[derive(gproxy_protocol_macros::WireBuilder)]
49#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
50pub struct GuardrailInvocationMetrics {
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub guardrail_coverage: Option<GuardrailCoverage>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub guardrail_processing_latency: Option<i64>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub usage: Option<GuardrailUsage>,
57 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
58 pub rest: Rest,
59}
60
61#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
62#[serde(rename_all = "camelCase")]
63#[derive(gproxy_protocol_macros::WireBuilder)]
64#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
65pub struct GuardrailCoverage {
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub images: Option<GuardrailImageCoverage>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub text_characters: Option<GuardrailTextCharactersCoverage>,
70 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
71 pub rest: Rest,
72}
73
74#[derive(
75 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
76)]
77#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
78pub struct GuardrailImageCoverage {
79 #[serde(skip_serializing_if = "Option::is_none")]
80 pub guarded: Option<i32>,
81 #[serde(skip_serializing_if = "Option::is_none")]
82 pub total: Option<i32>,
83 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
84 pub rest: Rest,
85}
86
87pub type GuardrailTextCharactersCoverage = GuardrailImageCoverage;
88
89#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
90#[serde(rename_all = "camelCase")]
91#[derive(gproxy_protocol_macros::WireBuilder)]
92#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
93pub struct GuardrailUsage {
94 pub content_policy_units: i32,
95 pub contextual_grounding_policy_units: i32,
96 pub sensitive_information_policy_free_units: i32,
97 pub sensitive_information_policy_units: i32,
98 pub topic_policy_units: i32,
99 pub word_policy_units: i32,
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub automated_reasoning_policies: Option<i32>,
102 #[serde(skip_serializing_if = "Option::is_none")]
103 pub automated_reasoning_policy_units: Option<i32>,
104 #[serde(skip_serializing_if = "Option::is_none")]
105 pub content_policy_image_units: Option<i32>,
106 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
107 pub rest: Rest,
108}
109
110#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
111#[serde(rename_all = "camelCase")]
112#[derive(gproxy_protocol_macros::WireBuilder)]
113#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
114pub struct GuardrailSensitiveInformationPolicyAssessment {
115 pub pii_entities: Vec<GuardrailPiiEntityFilter>,
116 pub regexes: Vec<GuardrailRegexFilter>,
117 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
118 pub rest: Rest,
119}
120
121#[derive(
122 Debug, Clone, PartialEq, Eq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder,
123)]
124#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
125pub struct GuardrailTopicPolicyAssessment {
126 pub topics: Vec<GuardrailTopic>,
127 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
128 pub rest: Rest,
129}
130
131#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
132#[serde(rename_all = "camelCase")]
133#[derive(gproxy_protocol_macros::WireBuilder)]
134#[cfg_attr(not(feature = "exhaustive"), non_exhaustive)]
135pub struct GuardrailWordPolicyAssessment {
136 pub custom_words: Vec<GuardrailCustomWord>,
137 pub managed_word_lists: Vec<GuardrailManagedWord>,
138 #[serde(default, flatten, skip_serializing_if = "serde_json::Map::is_empty")]
139 pub rest: Rest,
140}