Skip to main content

systemprompt_agent/models/a2a/protocol/
push_notification.rs

1//! A2A push-notification config wire types.
2//!
3//! Copyright (c) systemprompt.io — Business Source License 1.1.
4//! See <https://systemprompt.io> for licensing details.
5
6use 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}