Skip to main content

highlevel_api/apis/custom_fields/
client.rs

1use super::types::*;
2use crate::{error::Result, http::HttpClient};
3use std::sync::Arc;
4
5pub struct CustomFieldsApi {
6    http: Arc<HttpClient>,
7}
8
9impl CustomFieldsApi {
10    pub fn new(http: Arc<HttpClient>) -> Self {
11        Self { http }
12    }
13
14    pub async fn list(&self, location_id: &str) -> Result<GetCustomFieldsResponse> {
15        #[derive(serde::Serialize)]
16        struct Q<'a> {
17            #[serde(rename = "locationId")]
18            location_id: &'a str,
19        }
20        self.http
21            .get_with_query("/custom-fields", &Q { location_id })
22            .await
23    }
24
25    pub async fn get(&self, field_id: &str) -> Result<GetCustomFieldResponse> {
26        self.http.get(&format!("/custom-fields/{field_id}")).await
27    }
28
29    pub async fn create(&self, params: &CreateCustomFieldParams) -> Result<GetCustomFieldResponse> {
30        self.http.post("/custom-fields", params).await
31    }
32
33    pub async fn update(
34        &self,
35        field_id: &str,
36        params: &CreateCustomFieldParams,
37    ) -> Result<GetCustomFieldResponse> {
38        self.http
39            .put(&format!("/custom-fields/{field_id}"), params)
40            .await
41    }
42
43    pub async fn delete(&self, field_id: &str) -> Result<DeleteCustomFieldResponse> {
44        self.http
45            .delete(&format!("/custom-fields/{field_id}"))
46            .await
47    }
48}