1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6use crate::agent_card::AgentCard;
7use crate::push_notification::TaskPushNotificationConfig;
8use crate::task::{Task, TaskState};
9use crate::types::Message;
10
11#[derive(Debug, Clone, Default, Serialize, Deserialize)]
13pub struct SendMessageConfiguration {
14 #[serde(
16 rename = "acceptedOutputModes",
17 skip_serializing_if = "Option::is_none"
18 )]
19 pub accepted_output_modes: Option<Vec<String>>,
20 #[serde(
22 rename = "taskPushNotificationConfig",
23 skip_serializing_if = "Option::is_none"
24 )]
25 pub task_push_notification_config: Option<TaskPushNotificationConfig>,
26 #[serde(rename = "historyLength", skip_serializing_if = "Option::is_none")]
28 pub history_length: Option<i32>,
29 #[serde(rename = "returnImmediately", skip_serializing_if = "Option::is_none")]
31 pub return_immediately: Option<bool>,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct SendMessageRequest {
37 #[serde(skip_serializing_if = "Option::is_none")]
39 pub tenant: Option<String>,
40 pub message: Message,
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub configuration: Option<SendMessageConfiguration>,
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub metadata: Option<HashMap<String, serde_json::Value>>,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct GetTaskRequest {
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub tenant: Option<String>,
56 pub id: String,
58 #[serde(rename = "historyLength", skip_serializing_if = "Option::is_none")]
60 pub history_length: Option<i32>,
61}
62
63#[derive(Debug, Clone, Default, Serialize, Deserialize)]
65pub struct ListTasksRequest {
66 #[serde(skip_serializing_if = "Option::is_none")]
68 pub tenant: Option<String>,
69 #[serde(rename = "contextId", skip_serializing_if = "Option::is_none")]
71 pub context_id: Option<String>,
72 #[serde(skip_serializing_if = "Option::is_none")]
74 pub status: Option<TaskState>,
75 #[serde(rename = "pageSize", skip_serializing_if = "Option::is_none")]
77 pub page_size: Option<i32>,
78 #[serde(rename = "pageToken", skip_serializing_if = "Option::is_none")]
80 pub page_token: Option<String>,
81 #[serde(rename = "historyLength", skip_serializing_if = "Option::is_none")]
83 pub history_length: Option<i32>,
84 #[serde(
86 rename = "statusTimestampAfter",
87 skip_serializing_if = "Option::is_none"
88 )]
89 pub status_timestamp_after: Option<String>,
90 #[serde(rename = "includeArtifacts", skip_serializing_if = "Option::is_none")]
92 pub include_artifacts: Option<bool>,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize)]
97pub struct ListTasksResponse {
98 pub tasks: Vec<Task>,
100 #[serde(rename = "nextPageToken")]
102 pub next_page_token: String,
103 #[serde(rename = "pageSize")]
105 pub page_size: i32,
106 #[serde(rename = "totalSize")]
108 pub total_size: i32,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize)]
113pub struct CancelTaskRequest {
114 #[serde(skip_serializing_if = "Option::is_none")]
116 pub tenant: Option<String>,
117 pub id: String,
119 #[serde(skip_serializing_if = "Option::is_none")]
121 pub metadata: Option<HashMap<String, serde_json::Value>>,
122}
123
124#[derive(Debug, Clone, Serialize, Deserialize)]
126pub struct SubscribeToTaskRequest {
127 #[serde(skip_serializing_if = "Option::is_none")]
129 pub tenant: Option<String>,
130 pub id: String,
132}
133
134#[derive(Debug, Clone, Serialize, Deserialize)]
136pub struct GetTaskPushNotificationConfigRequest {
137 #[serde(skip_serializing_if = "Option::is_none")]
139 pub tenant: Option<String>,
140 #[serde(rename = "taskId")]
142 pub task_id: String,
143 #[serde(rename = "configId")]
145 pub config_id: String,
146}
147
148#[derive(Debug, Clone, Serialize, Deserialize)]
150pub struct DeleteTaskPushNotificationConfigRequest {
151 #[serde(skip_serializing_if = "Option::is_none")]
153 pub tenant: Option<String>,
154 #[serde(rename = "taskId")]
156 pub task_id: String,
157 #[serde(rename = "configId")]
159 pub config_id: String,
160}
161
162#[derive(Debug, Clone, Serialize, Deserialize)]
164pub struct ListTaskPushNotificationConfigsRequest {
165 #[serde(skip_serializing_if = "Option::is_none")]
167 pub tenant: Option<String>,
168 #[serde(rename = "taskId")]
170 pub task_id: String,
171 #[serde(rename = "pageSize", skip_serializing_if = "Option::is_none")]
173 pub page_size: Option<i32>,
174 #[serde(rename = "pageToken", skip_serializing_if = "Option::is_none")]
176 pub page_token: Option<String>,
177}
178
179#[derive(Debug, Clone, Serialize, Deserialize)]
181pub struct ListTaskPushNotificationConfigsResponse {
182 pub configs: Vec<TaskPushNotificationConfig>,
184 #[serde(rename = "nextPageToken", skip_serializing_if = "Option::is_none")]
186 pub next_page_token: Option<String>,
187}
188
189#[derive(Debug, Clone, Default, Serialize, Deserialize)]
191pub struct GetExtendedAgentCardRequest {
192 #[serde(skip_serializing_if = "Option::is_none")]
194 pub tenant: Option<String>,
195}
196
197pub type GetExtendedAgentCardResponse = AgentCard;