highlevel_api/apis/objects/
types.rs1use serde::{Deserialize, Serialize};
2use serde_json::Map;
3
4#[derive(Debug, Clone, Serialize, Deserialize, Default)]
7#[serde(rename_all = "camelCase")]
8pub struct ListSchemasParams {
9 pub location_id: String,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub limit: Option<u32>,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub offset: Option<u32>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase")]
18pub struct ObjectSchema {
19 pub id: String,
20 pub key: String,
21 pub name: String,
22 pub location_id: String,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub description: Option<String>,
25 #[serde(default)]
26 pub fields: Vec<SchemaField>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub date_added: Option<String>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub date_updated: Option<String>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct SchemaField {
36 pub key: String,
37 pub name: String,
38 pub field_type: String,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub is_required: Option<bool>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub is_unique: Option<bool>,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct ListSchemasResponse {
47 pub objects: Vec<ObjectSchema>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub count: Option<u64>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub total: Option<u64>,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct GetSchemaResponse {
56 pub object: ObjectSchema,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize, Default)]
60#[serde(rename_all = "camelCase")]
61pub struct CreateSchemaParams {
62 pub name: String,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub description: Option<String>,
65 pub fields: Vec<CreateSchemaField>,
66}
67
68#[derive(Debug, Clone, Serialize, Deserialize)]
69#[serde(rename_all = "camelCase")]
70pub struct CreateSchemaField {
71 pub key: String,
72 pub name: String,
73 pub field_type: String,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub is_required: Option<bool>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub is_unique: Option<bool>,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize, Default)]
81#[serde(rename_all = "camelCase")]
82pub struct UpdateSchemaParams {
83 #[serde(skip_serializing_if = "Option::is_none")]
84 pub name: Option<String>,
85 #[serde(skip_serializing_if = "Option::is_none")]
86 pub description: Option<String>,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub fields: Option<Vec<CreateSchemaField>>,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize, Default)]
94#[serde(rename_all = "camelCase")]
95pub struct CreateRecordParams {
96 pub location_id: String,
97 pub properties: Map<String, serde_json::Value>,
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize, Default)]
101#[serde(rename_all = "camelCase")]
102pub struct UpdateRecordParams {
103 pub properties: Map<String, serde_json::Value>,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
107#[serde(rename_all = "camelCase")]
108pub struct ObjectRecord {
109 pub id: String,
110 pub location_id: String,
111 pub schema_key: String,
112 pub properties: Map<String, serde_json::Value>,
113 #[serde(skip_serializing_if = "Option::is_none")]
114 pub date_added: Option<String>,
115 #[serde(skip_serializing_if = "Option::is_none")]
116 pub date_updated: Option<String>,
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize)]
120pub struct GetRecordResponse {
121 pub record: ObjectRecord,
122}
123
124#[derive(Debug, Clone, Serialize, Deserialize)]
125pub struct CreateRecordResponse {
126 pub record: ObjectRecord,
127}
128
129#[derive(Debug, Clone, Serialize, Deserialize)]
130pub struct DeleteRecordResponse {
131 pub succeeded: bool,
132}
133
134#[derive(Debug, Clone, Serialize, Deserialize)]
137#[serde(rename_all = "camelCase")]
138pub struct SearchRecordsParams {
139 pub location_id: String,
140 #[serde(skip_serializing_if = "Option::is_none")]
141 pub limit: Option<u32>,
142 #[serde(skip_serializing_if = "Option::is_none")]
143 pub offset: Option<u32>,
144 #[serde(skip_serializing_if = "Option::is_none")]
145 pub filters: Option<Vec<SearchFilter>>,
146}
147
148#[derive(Debug, Clone, Serialize, Deserialize)]
149#[serde(rename_all = "camelCase")]
150pub struct SearchFilter {
151 pub field: String,
152 pub operator: FilterOperator,
153 pub value: serde_json::Value,
154}
155
156#[derive(Debug, Clone, Serialize, Deserialize)]
157#[serde(rename_all = "snake_case")]
158pub enum FilterOperator {
159 Equals,
160 NotEquals,
161 Contains,
162 NotContains,
163 GreaterThan,
164 LessThan,
165 GreaterThanOrEquals,
166 LessThanOrEquals,
167 Exists,
168 NotExists,
169 In,
170 NotIn,
171 Between,
172}
173
174#[derive(Debug, Clone, Serialize, Deserialize)]
175#[serde(rename_all = "camelCase")]
176pub struct SearchRecordsResponse {
177 pub records: Vec<ObjectRecord>,
178 #[serde(skip_serializing_if = "Option::is_none")]
179 pub total: Option<u64>,
180 #[serde(skip_serializing_if = "Option::is_none")]
181 pub count: Option<u64>,
182}