systemprompt_agent/models/a2a/protocol/
push_notification.rs1use 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}