use serde::{Deserialize, Serialize};
use super::id::TaskId;
use super::{Message, Metadata, TaskPushNotificationConfig, TaskState};
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct SendMessageConfiguration {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub accepted_output_modes: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub task_push_notification_config: Option<TaskPushNotificationConfig>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub history_length: Option<i32>,
#[serde(default, skip_serializing_if = "super::is_false")]
pub return_immediately: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SendMessageRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
pub message: Message,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub configuration: Option<SendMessageConfiguration>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
}
impl SendMessageRequest {
#[must_use]
pub const fn new(message: Message) -> Self {
Self {
tenant: None,
message,
configuration: None,
metadata: None,
}
}
#[must_use]
pub fn with_configuration(mut self, config: SendMessageConfiguration) -> Self {
self.configuration = Some(config);
self
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct GetTaskRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
pub id: TaskId,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub history_length: Option<i32>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ListTasksRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub context_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<TaskState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub history_length: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status_timestamp_after: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub include_artifacts: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct CancelTaskRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
pub id: TaskId,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct SubscribeToTaskRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
pub id: TaskId,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct GetTaskPushNotificationConfigRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
pub task_id: TaskId,
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct DeleteTaskPushNotificationConfigRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
pub task_id: TaskId,
pub id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ListTaskPushNotificationConfigsRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
pub task_id: TaskId,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page_size: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub page_token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]
pub struct GetExtendedAgentCardRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tenant: Option<String>,
}