Skip to main content

gproxy_protocol/aws/converse/trace/
policies.rs

1use 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}