systemprompt-agent 0.2.2

Agent-to-Agent (A2A) protocol for systemprompt.io AI governance: streaming, JSON-RPC models, task lifecycle, .well-known discovery, and governed agent orchestration.
Documentation
use crate::models::a2a::AgentAuthentication;
use serde::{Deserialize, Serialize};
use systemprompt_identifiers::TaskId;

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct PushNotificationConfig {
    #[serde(default)]
    #[serde(skip_serializing_if = "String::is_empty")]
    pub endpoint: String,
    pub headers: Option<serde_json::Map<String, serde_json::Value>>,
    pub url: String,
    pub token: Option<String>,
    pub authentication: Option<AgentAuthentication>,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct PushNotificationNotSupportedError {
    pub message: String,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct TaskPushNotificationConfig {
    pub id: TaskId,
    pub push_notification_config: PushNotificationConfig,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct SetTaskPushNotificationConfigRequest {
    pub task_id: TaskId,
    pub config: PushNotificationConfig,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct SetTaskPushNotificationConfigResponse {
    pub success: bool,
    pub message: Option<String>,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct GetTaskPushNotificationConfigRequest {
    pub task_id: TaskId,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct GetTaskPushNotificationConfigResponse {
    pub config: Option<PushNotificationConfig>,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct GetTaskPushNotificationConfigParams {
    pub id: TaskId,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct DeleteTaskPushNotificationConfigRequest {
    pub task_id: TaskId,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct DeleteTaskPushNotificationConfigResponse {
    pub success: bool,
    pub message: Option<String>,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct DeleteTaskPushNotificationConfigParams {
    pub id: TaskId,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct ListTaskPushNotificationConfigRequest {
    pub task_id: TaskId,
    pub limit: Option<u32>,
    pub offset: Option<u32>,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct ListTaskPushNotificationConfigResponse {
    pub configs: Vec<PushNotificationConfig>,
    pub total: u32,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct TaskResubscriptionRequest {
    pub task_id: TaskId,
    pub config: PushNotificationConfig,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub struct TaskResubscriptionResponse {
    pub success: bool,
    pub message: Option<String>,
}