use serde::Serialize;
use crate::client::AgentTrustClient;
use crate::error::Result;
use crate::models::ApprovalRequestStatus;
#[derive(Debug, Serialize)]
struct ApprovalDecisionRequest {
decided_by: String,
}
pub struct ApprovalsAPI<'a> {
pub(crate) client: &'a AgentTrustClient,
}
impl<'a> ApprovalsAPI<'a> {
pub fn approve(&self, approval_id: &str, decided_by: &str) -> Result<()> {
let path = format!("/mcp/approvals/{}/approve", approval_id);
let req = ApprovalDecisionRequest {
decided_by: decided_by.to_string(),
};
self.client.request_no_response("POST", &path, Some(&req))
}
pub fn deny(&self, approval_id: &str, decided_by: &str) -> Result<()> {
let path = format!("/mcp/approvals/{}/deny", approval_id);
let req = ApprovalDecisionRequest {
decided_by: decided_by.to_string(),
};
self.client.request_no_response("POST", &path, Some(&req))
}
pub fn get(&self, approval_id: &str) -> Result<ApprovalRequestStatus> {
let path = format!("/mcp/approvals/{}", approval_id);
self.client.request("GET", &path, None::<&()>)
}
}