aws_lambda_events/event/bedrock_agent_runtime/
mod.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
6#[serde(rename_all = "camelCase")]
7pub struct AgentEvent {
8 pub message_version: String,
10 pub agent: Agent,
12 pub input_text: String,
14 pub session_id: String,
16 pub action_group: String,
18 pub api_path: String,
20 pub http_method: String,
22 #[serde(default, skip_serializing_if = "Option::is_none")]
24 pub parameters: Option<Vec<Parameter>>,
25 #[serde(default, skip_serializing_if = "Option::is_none")]
27 pub request_body: Option<RequestBody>,
28 pub session_attributes: HashMap<String, String>,
30 pub prompt_session_attributes: HashMap<String, String>,
32}
33
34#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
35#[serde(rename_all = "camelCase")]
36pub struct RequestBody {
37 pub content: HashMap<String, Content>,
39}
40
41#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
42#[serde(rename_all = "camelCase")]
43pub struct Content {
44 pub properties: Vec<Property>,
46}
47
48#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
49#[serde(rename_all = "camelCase")]
50pub struct Property {
51 pub name: String,
53 pub r#type: String,
55 pub value: String,
57}
58
59#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
60#[serde(rename_all = "camelCase")]
61pub struct Parameter {
62 pub name: String,
64 pub r#type: String,
66 pub value: String,
68}
69
70#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
71#[serde(rename_all = "camelCase")]
72pub struct Agent {
73 pub name: String,
75 pub id: String,
77 pub alias: String,
79 pub version: String,
81}
82
83#[cfg(test)]
84mod tests {
85
86 use crate::event::bedrock_agent_runtime::AgentEvent;
87
88 #[test]
89 #[cfg(feature = "bedrock_agent_runtime")]
90 fn example_bedrock_agent_runtime_event() {
91 let data = include_bytes!("../../fixtures/example-bedrock-agent-runtime-event.json");
92 let parsed: AgentEvent = serde_json::from_slice(data).unwrap();
93 let output: String = serde_json::to_string(&parsed).unwrap();
94 let reparsed: AgentEvent = serde_json::from_slice(output.as_bytes()).unwrap();
95 assert_eq!(parsed, reparsed);
96 }
97 #[test]
98 #[cfg(feature = "bedrock_agent_runtime")]
99 fn example_bedrock_agent_runtime_event_without_parameters() {
100 let data = include_bytes!("../../fixtures/example-bedrock-agent-runtime-event-without-parameters.json");
101 let parsed: AgentEvent = serde_json::from_slice(data).unwrap();
102 let output: String = serde_json::to_string(&parsed).unwrap();
103 let reparsed: AgentEvent = serde_json::from_slice(output.as_bytes()).unwrap();
104 assert_eq!(parsed, reparsed);
105 }
106 #[test]
107 #[cfg(feature = "bedrock_agent_runtime")]
108 fn example_bedrock_agent_runtime_event_without_request_body() {
109 let data = include_bytes!("../../fixtures/example-bedrock-agent-runtime-event-without-request-body.json");
110 let parsed: AgentEvent = serde_json::from_slice(data).unwrap();
111 let output: String = serde_json::to_string(&parsed).unwrap();
112 let reparsed: AgentEvent = serde_json::from_slice(output.as_bytes()).unwrap();
113 assert_eq!(parsed, reparsed);
114 }
115}