Skip to main content

opencode_sdk/http/
parts.rs

1//! Parts API for OpenCode.
2//!
3//! Endpoints for modifying message parts.
4
5use crate::error::Result;
6use crate::http::HttpClient;
7use crate::types::api::UpdatePartResponse;
8use reqwest::Method;
9
10/// Parts API client.
11#[derive(Clone)]
12pub struct PartsApi {
13    http: HttpClient,
14}
15
16impl PartsApi {
17    /// Create a new Parts API client.
18    pub fn new(http: HttpClient) -> Self {
19        Self { http }
20    }
21
22    /// Delete a part from a message.
23    ///
24    /// # Errors
25    ///
26    /// Returns an error if the request fails.
27    pub async fn delete(&self, session_id: &str, message_id: &str, part_id: &str) -> Result<()> {
28        self.http
29            .request_empty(
30                Method::DELETE,
31                &format!(
32                    "/session/{}/message/{}/part/{}",
33                    session_id, message_id, part_id
34                ),
35                None,
36            )
37            .await
38    }
39
40    /// Update a part in a message.
41    ///
42    /// # Errors
43    ///
44    /// Returns an error if the request fails.
45    pub async fn update(
46        &self,
47        session_id: &str,
48        message_id: &str,
49        part_id: &str,
50        body: &serde_json::Value,
51    ) -> Result<UpdatePartResponse> {
52        self.http
53            .request_json(
54                Method::PATCH,
55                &format!(
56                    "/session/{}/message/{}/part/{}",
57                    session_id, message_id, part_id
58                ),
59                Some(body.clone()),
60            )
61            .await
62    }
63}