Skip to main content

highlevel_api/apis/locations/
types.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4#[serde(rename_all = "camelCase")]
5pub struct Location {
6    pub id: String,
7    pub name: String,
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub address: Option<String>,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub city: Option<String>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub state: Option<String>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub country: Option<String>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub postal_code: Option<String>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub phone: Option<String>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub email: Option<String>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub website: Option<String>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub timezone: Option<String>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub company_id: Option<String>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub date_added: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub date_updated: Option<String>,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct GetLocationResponse {
36    pub location: Location,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, Default)]
40#[serde(rename_all = "camelCase")]
41pub struct SearchLocationsParams {
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub company_id: Option<String>,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub email: Option<String>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub limit: Option<u32>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub order: Option<String>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub search_term: Option<String>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub skip: Option<u32>,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct SearchLocationsResponse {
58    pub locations: Vec<Location>,
59    pub total: Option<u64>,
60    pub count: Option<u64>,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize, Default)]
64#[serde(rename_all = "camelCase")]
65pub struct CreateLocationParams {
66    pub name: String,
67    pub company_id: String,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub address: Option<String>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub city: Option<String>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub state: Option<String>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub country: Option<String>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub postal_code: Option<String>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub phone: Option<String>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub email: Option<String>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub website: Option<String>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub timezone: Option<String>,
86}
87
88pub type UpdateLocationParams = CreateLocationParams;
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct DeleteLocationResponse {
92    pub succeded: bool,
93}
94
95// ── Custom Fields ────────────────────────────────────────────────────────────
96
97#[derive(Debug, Clone, Serialize, Deserialize)]
98#[serde(rename_all = "camelCase")]
99pub struct CustomField {
100    pub id: String,
101    pub name: String,
102    #[serde(rename = "type")]
103    pub type_: String,
104    #[serde(skip_serializing_if = "Option::is_none")]
105    pub field_key: Option<String>,
106    #[serde(skip_serializing_if = "Option::is_none")]
107    pub placeholder: Option<String>,
108    #[serde(skip_serializing_if = "Option::is_none")]
109    pub position: Option<u32>,
110    #[serde(default)]
111    pub options: Vec<String>,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
115#[serde(rename_all = "camelCase")]
116pub struct GetCustomFieldsResponse {
117    pub custom_fields: Vec<CustomField>,
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize)]
121#[serde(rename_all = "camelCase")]
122pub struct GetCustomFieldResponse {
123    pub custom_field: CustomField,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize, Default)]
127#[serde(rename_all = "camelCase")]
128pub struct CreateCustomFieldParams {
129    pub name: String,
130    #[serde(rename = "type")]
131    pub type_: String,
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub placeholder: Option<String>,
134    #[serde(skip_serializing_if = "Option::is_none")]
135    pub position: Option<u32>,
136    #[serde(skip_serializing_if = "Option::is_none")]
137    pub options: Option<Vec<String>>,
138}
139
140// ── Tags ─────────────────────────────────────────────────────────────────────
141
142#[derive(Debug, Clone, Serialize, Deserialize)]
143#[serde(rename_all = "camelCase")]
144pub struct LocationTag {
145    pub id: String,
146    pub name: String,
147    pub location_id: String,
148}
149
150#[derive(Debug, Clone, Serialize, Deserialize)]
151pub struct GetTagsResponse {
152    pub tags: Vec<LocationTag>,
153}
154
155#[derive(Debug, Clone, Serialize, Deserialize)]
156pub struct GetTagResponse {
157    pub tag: LocationTag,
158}
159
160#[derive(Debug, Clone, Serialize, Deserialize)]
161pub struct CreateTagParams {
162    pub name: String,
163}