Skip to main content

a2a_rust/types/
push.rs

1use serde::{Deserialize, Serialize};
2
3/// Authentication details for a push target.
4#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(rename_all = "camelCase")]
6pub struct AuthenticationInfo {
7    /// Authentication scheme name.
8    pub scheme: String,
9    #[serde(default, skip_serializing_if = "Option::is_none")]
10    /// Optional scheme-specific credentials.
11    pub credentials: Option<String>,
12}
13
14/// Stored push-notification configuration associated with a task.
15#[derive(Debug, Clone, Serialize, Deserialize)]
16#[serde(rename_all = "camelCase")]
17pub struct TaskPushNotificationConfig {
18    #[serde(default, skip_serializing_if = "Option::is_none")]
19    /// Optional tenant associated with the configuration.
20    pub tenant: Option<String>,
21    #[serde(default, skip_serializing_if = "String::is_empty")]
22    /// Unique configuration identifier.
23    pub id: String,
24    #[serde(default, skip_serializing_if = "String::is_empty")]
25    /// Task identifier that owns the configuration.
26    pub task_id: String,
27    /// Destination URL for push delivery.
28    pub url: String,
29    #[serde(default, skip_serializing_if = "Option::is_none")]
30    /// Optional opaque bearer token or shared secret.
31    pub token: Option<String>,
32    #[serde(default, skip_serializing_if = "Option::is_none")]
33    /// Optional authentication description.
34    pub authentication: Option<AuthenticationInfo>,
35}