Skip to main content

systemprompt_agent/models/a2a/protocol/
push_notification.rs

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