Skip to main content

systemprompt_agent/models/a2a/protocol/
push_notification.rs

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