systemprompt_agent/models/a2a/protocol/
push_notification.rs1use crate::models::a2a::AgentAuthentication;
7use serde::{Deserialize, Serialize};
8use systemprompt_identifiers::TaskId;
9
10#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
11pub struct PushNotificationConfig {
12 #[serde(default)]
13 #[serde(skip_serializing_if = "String::is_empty")]
14 pub endpoint: String,
15 pub headers: Option<serde_json::Map<String, serde_json::Value>>,
16 pub url: String,
17 pub token: Option<String>,
18 pub authentication: Option<AgentAuthentication>,
19}
20
21#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
22pub struct PushNotificationNotSupportedError {
23 pub message: String,
24}
25
26#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
27pub struct TaskPushNotificationConfig {
28 pub id: TaskId,
29 pub push_notification_config: PushNotificationConfig,
30}
31
32#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
33pub struct SetTaskPushNotificationConfigRequest {
34 pub task_id: TaskId,
35 pub config: PushNotificationConfig,
36}
37
38#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
39pub struct SetTaskPushNotificationConfigResponse {
40 pub success: bool,
41 pub message: Option<String>,
42}
43
44#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
45pub struct GetTaskPushNotificationConfigRequest {
46 pub task_id: TaskId,
47}
48
49#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
50pub struct GetTaskPushNotificationConfigResponse {
51 pub config: Option<PushNotificationConfig>,
52}
53
54#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
55pub struct GetTaskPushNotificationConfigParams {
56 pub id: TaskId,
57}
58
59#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
60pub struct DeleteTaskPushNotificationConfigRequest {
61 pub task_id: TaskId,
62}
63
64#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
65pub struct DeleteTaskPushNotificationConfigResponse {
66 pub success: bool,
67 pub message: Option<String>,
68}
69
70#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
71pub struct DeleteTaskPushNotificationConfigParams {
72 pub id: TaskId,
73}
74
75#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
76pub struct ListTaskPushNotificationConfigRequest {
77 pub task_id: TaskId,
78 pub limit: Option<u32>,
79 pub offset: Option<u32>,
80}
81
82#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
83pub struct ListTaskPushNotificationConfigResponse {
84 pub configs: Vec<PushNotificationConfig>,
85 pub total: u32,
86}
87
88#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
89pub struct TaskResubscriptionRequest {
90 pub task_id: TaskId,
91 pub config: PushNotificationConfig,
92}
93
94#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
95pub struct TaskResubscriptionResponse {
96 pub success: bool,
97 pub message: Option<String>,
98}