1#![allow(
6 missing_docs,
7 clippy::doc_lazy_continuation,
8 clippy::doc_overindented_list_items
9)]
10
11use serde::{Deserialize, Serialize};
12
13#[derive(Debug, Clone, Default, Serialize, Deserialize)]
15pub struct AdditionalDetailsDTO {
16 pub notes: bool,
18 pub tasks: bool,
20 #[serde(rename = "calendarEvents")]
22 pub calendar_events: bool,
23 #[serde(rename = "unReadConversations")]
25 pub un_read_conversations: bool,
26}
27
28#[derive(Debug, Clone, Default, Serialize, Deserialize)]
30pub struct CreateAddFollowersSuccessfulResponseDto {
31 #[serde(default, skip_serializing_if = "Vec::is_empty")]
32 pub followers: Vec<String>,
33 #[serde(
34 rename = "followersAdded",
35 default,
36 skip_serializing_if = "Vec::is_empty"
37 )]
38 pub followers_added: Vec<String>,
39}
40
41#[derive(Debug, Clone, Default, Serialize, Deserialize)]
43pub struct CreateDto {
44 #[serde(rename = "pipelineId")]
47 pub pipeline_id: String,
48 #[serde(rename = "locationId")]
50 pub location_id: String,
51 pub name: String,
53 #[serde(
54 rename = "pipelineStageId",
55 default,
56 skip_serializing_if = "Option::is_none"
57 )]
58 pub pipeline_stage_id: Option<String>,
59 pub status: String,
62 #[serde(rename = "contactId")]
64 pub contact_id: String,
65 #[serde(
66 rename = "monetaryValue",
67 default,
68 skip_serializing_if = "Option::is_none"
69 )]
70 pub monetary_value: Option<f64>,
71 #[serde(
72 rename = "assignedTo",
73 default,
74 skip_serializing_if = "Option::is_none"
75 )]
76 pub assigned_to: Option<String>,
77 #[serde(
80 rename = "customFields",
81 default,
82 skip_serializing_if = "Vec::is_empty"
83 )]
84 pub custom_fields: Vec<serde_json::Value>,
85}
86
87#[derive(Debug, Clone, Default, Serialize, Deserialize)]
89pub struct CustomFieldResponseSchema {
90 pub id: String,
92 #[serde(rename = "fieldValue")]
96 pub field_value: serde_json::Value,
97}
98
99#[derive(Debug, Clone, Default, Serialize, Deserialize)]
101pub struct DeleteFollowersSuccessfulResponseDto {
102 #[serde(default, skip_serializing_if = "Vec::is_empty")]
103 pub followers: Vec<String>,
104 #[serde(
105 rename = "followersRemoved",
106 default,
107 skip_serializing_if = "Vec::is_empty"
108 )]
109 pub followers_removed: Vec<String>,
110}
111
112#[derive(Debug, Clone, Default, Serialize, Deserialize)]
114pub struct DeleteUpdateOpportunitySuccessfulResponseDto {
115 #[serde(default, skip_serializing_if = "Option::is_none")]
116 pub succeded: Option<bool>,
117}
118
119#[derive(Debug, Clone, Default, Serialize, Deserialize)]
121pub struct FollowersDTO {
122 #[serde(default, skip_serializing_if = "Vec::is_empty")]
124 pub followers: Vec<String>,
125}
126
127#[derive(Debug, Clone, Default, Serialize, Deserialize)]
129pub struct GetPipelinesSuccessfulResponseDto {
130 #[serde(default, skip_serializing_if = "Vec::is_empty")]
131 pub pipelines: Vec<PipelinesResponseSchema>,
132}
133
134#[derive(Debug, Clone, Default, Serialize, Deserialize)]
136pub struct GetPostOpportunitySuccessfulResponseDto {
137 #[serde(default, skip_serializing_if = "Option::is_none")]
138 pub opportunity: Option<SearchOpportunitiesResponseSchema>,
139}
140
141#[derive(Debug, Clone, Default, Serialize, Deserialize)]
143pub struct LostReasonResponseSchema {
144 #[serde(default, skip_serializing_if = "Option::is_none")]
146 pub id: Option<String>,
147 #[serde(default, skip_serializing_if = "Option::is_none")]
149 pub name: Option<String>,
150 #[serde(
152 rename = "locationId",
153 default,
154 skip_serializing_if = "Option::is_none"
155 )]
156 pub location_id: Option<String>,
157 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
160 pub updated_at: Option<String>,
161 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
164 pub created_at: Option<String>,
165}
166
167#[derive(Debug, Clone, Default, Serialize, Deserialize)]
169pub struct LostReasonsResponseSchema {
170 #[serde(rename = "lostReasons", default, skip_serializing_if = "Vec::is_empty")]
171 pub lost_reasons: Vec<LostReasonResponseSchema>,
172 #[serde(default, skip_serializing_if = "Option::is_none")]
173 pub total: Option<f64>,
174}
175
176#[derive(Debug, Clone, Default, Serialize, Deserialize)]
178pub struct OpportunitySearchBodyDTO {
179 #[serde(rename = "locationId")]
182 pub location_id: String,
183 pub query: String,
185 pub limit: f64,
187 pub page: f64,
189 #[serde(rename = "searchAfter", default, skip_serializing_if = "Vec::is_empty")]
191 pub search_after: Vec<String>,
192 #[serde(rename = "additionalDetails")]
194 pub additional_details: AdditionalDetailsDTO,
195}
196
197#[derive(Debug, Clone, Default, Serialize, Deserialize)]
199pub struct PipelinesResponseSchema {
200 #[serde(default, skip_serializing_if = "Option::is_none")]
201 pub id: Option<String>,
202 #[serde(default, skip_serializing_if = "Option::is_none")]
203 pub name: Option<String>,
204 #[serde(default, skip_serializing_if = "Vec::is_empty")]
205 pub stages: Vec<Vec<serde_json::Value>>,
206 #[serde(
207 rename = "showInFunnel",
208 default,
209 skip_serializing_if = "Option::is_none"
210 )]
211 pub show_in_funnel: Option<bool>,
212 #[serde(
213 rename = "showInPieChart",
214 default,
215 skip_serializing_if = "Option::is_none"
216 )]
217 pub show_in_pie_chart: Option<bool>,
218 #[serde(
219 rename = "locationId",
220 default,
221 skip_serializing_if = "Option::is_none"
222 )]
223 pub location_id: Option<String>,
224 #[serde(
227 rename = "colorRenderMode",
228 default,
229 skip_serializing_if = "Option::is_none"
230 )]
231 pub color_render_mode: Option<String>,
232}
233
234#[derive(Debug, Clone, Default, Serialize, Deserialize)]
236pub struct PostSearchSuccessfulResponseDto {
237 #[serde(default, skip_serializing_if = "Vec::is_empty")]
238 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
239 pub total: f64,
241 #[serde(default, skip_serializing_if = "Option::is_none")]
242 pub aggregations: Option<serde_json::Value>,
243}
244
245#[derive(Debug, Clone, Default, Serialize, Deserialize)]
247pub struct SearchMetaResponseSchema {
248 #[serde(default, skip_serializing_if = "Option::is_none")]
249 pub total: Option<f64>,
250 #[serde(
251 rename = "nextPageUrl",
252 default,
253 skip_serializing_if = "Option::is_none"
254 )]
255 pub next_page_url: Option<String>,
256 #[serde(
257 rename = "startAfterId",
258 default,
259 skip_serializing_if = "Option::is_none"
260 )]
261 pub start_after_id: Option<String>,
262 #[serde(
263 rename = "startAfter",
264 default,
265 skip_serializing_if = "Option::is_none"
266 )]
267 pub start_after: Option<f64>,
268 #[serde(
269 rename = "currentPage",
270 default,
271 skip_serializing_if = "Option::is_none"
272 )]
273 pub current_page: Option<f64>,
274 #[serde(rename = "nextPage", default, skip_serializing_if = "Option::is_none")]
275 pub next_page: Option<f64>,
276 #[serde(rename = "prevPage", default, skip_serializing_if = "Option::is_none")]
277 pub prev_page: Option<f64>,
278}
279
280#[derive(Debug, Clone, Default, Serialize, Deserialize)]
282pub struct SearchOpportunitiesContactResponseSchema {
283 #[serde(default, skip_serializing_if = "Option::is_none")]
284 pub id: Option<String>,
285 #[serde(default, skip_serializing_if = "Option::is_none")]
286 pub name: Option<String>,
287 #[serde(
288 rename = "companyName",
289 default,
290 skip_serializing_if = "Option::is_none"
291 )]
292 pub company_name: Option<String>,
293 #[serde(default, skip_serializing_if = "Option::is_none")]
294 pub email: Option<String>,
295 #[serde(default, skip_serializing_if = "Option::is_none")]
296 pub phone: Option<String>,
297 #[serde(default, skip_serializing_if = "Vec::is_empty")]
298 pub tags: Vec<String>,
299}
300
301#[derive(Debug, Clone, Default, Serialize, Deserialize)]
303pub struct SearchOpportunitiesResponseSchema {
304 #[serde(default, skip_serializing_if = "Option::is_none")]
305 pub id: Option<String>,
306 #[serde(default, skip_serializing_if = "Option::is_none")]
307 pub name: Option<String>,
308 #[serde(
309 rename = "monetaryValue",
310 default,
311 skip_serializing_if = "Option::is_none"
312 )]
313 pub monetary_value: Option<f64>,
314 #[serde(
315 rename = "pipelineId",
316 default,
317 skip_serializing_if = "Option::is_none"
318 )]
319 pub pipeline_id: Option<String>,
320 #[serde(
321 rename = "pipelineStageId",
322 default,
323 skip_serializing_if = "Option::is_none"
324 )]
325 pub pipeline_stage_id: Option<String>,
326 #[serde(
327 rename = "assignedTo",
328 default,
329 skip_serializing_if = "Option::is_none"
330 )]
331 pub assigned_to: Option<String>,
332 #[serde(default, skip_serializing_if = "Option::is_none")]
333 pub status: Option<String>,
334 #[serde(default, skip_serializing_if = "Option::is_none")]
335 pub source: Option<String>,
336 #[serde(
337 rename = "lastStatusChangeAt",
338 default,
339 skip_serializing_if = "Option::is_none"
340 )]
341 pub last_status_change_at: Option<String>,
342 #[serde(
343 rename = "lastStageChangeAt",
344 default,
345 skip_serializing_if = "Option::is_none"
346 )]
347 pub last_stage_change_at: Option<String>,
348 #[serde(
349 rename = "lastActionDate",
350 default,
351 skip_serializing_if = "Option::is_none"
352 )]
353 pub last_action_date: Option<String>,
354 #[serde(
355 rename = "indexVersion",
356 default,
357 skip_serializing_if = "Option::is_none"
358 )]
359 pub index_version: Option<String>,
360 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
361 pub created_at: Option<String>,
362 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
363 pub updated_at: Option<String>,
364 #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
365 pub contact_id: Option<String>,
366 #[serde(
367 rename = "locationId",
368 default,
369 skip_serializing_if = "Option::is_none"
370 )]
371 pub location_id: Option<String>,
372 #[serde(default, skip_serializing_if = "Option::is_none")]
373 pub contact: Option<SearchOpportunitiesContactResponseSchema>,
374 #[serde(default, skip_serializing_if = "Vec::is_empty")]
375 pub notes: Vec<Vec<serde_json::Value>>,
376 #[serde(default, skip_serializing_if = "Vec::is_empty")]
377 pub tasks: Vec<Vec<serde_json::Value>>,
378 #[serde(
379 rename = "calendarEvents",
380 default,
381 skip_serializing_if = "Vec::is_empty"
382 )]
383 pub calendar_events: Vec<Vec<serde_json::Value>>,
384 #[serde(
385 rename = "lostReasonId",
386 default,
387 skip_serializing_if = "Option::is_none"
388 )]
389 pub lost_reason_id: Option<String>,
390 #[serde(
391 rename = "customFields",
392 default,
393 skip_serializing_if = "Vec::is_empty"
394 )]
395 pub custom_fields: Vec<CustomFieldResponseSchema>,
396 #[serde(default, skip_serializing_if = "Vec::is_empty")]
397 pub followers: Vec<Vec<serde_json::Value>>,
398 #[serde(
399 rename = "externalObjectId",
400 default,
401 skip_serializing_if = "Option::is_none"
402 )]
403 pub external_object_id: Option<String>,
404}
405
406#[derive(Debug, Clone, Default, Serialize, Deserialize)]
408pub struct SearchSuccessfulResponseDto {
409 #[serde(default, skip_serializing_if = "Vec::is_empty")]
410 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
411 #[serde(default, skip_serializing_if = "Option::is_none")]
412 pub meta: Option<SearchMetaResponseSchema>,
413 #[serde(default, skip_serializing_if = "Option::is_none")]
414 pub aggregations: Option<serde_json::Value>,
415}
416
417#[derive(Debug, Clone, Default, Serialize, Deserialize)]
419pub struct UpdateOpportunityDto {
420 #[serde(
422 rename = "pipelineId",
423 default,
424 skip_serializing_if = "Option::is_none"
425 )]
426 pub pipeline_id: Option<String>,
427 #[serde(default, skip_serializing_if = "Option::is_none")]
428 pub name: Option<String>,
429 #[serde(
430 rename = "pipelineStageId",
431 default,
432 skip_serializing_if = "Option::is_none"
433 )]
434 pub pipeline_stage_id: Option<String>,
435 #[serde(default, skip_serializing_if = "Option::is_none")]
437 pub status: Option<String>,
438 #[serde(
439 rename = "monetaryValue",
440 default,
441 skip_serializing_if = "Option::is_none"
442 )]
443 pub monetary_value: Option<f64>,
444 #[serde(
445 rename = "assignedTo",
446 default,
447 skip_serializing_if = "Option::is_none"
448 )]
449 pub assigned_to: Option<String>,
450 #[serde(
453 rename = "customFields",
454 default,
455 skip_serializing_if = "Vec::is_empty"
456 )]
457 pub custom_fields: Vec<serde_json::Value>,
458}
459
460#[derive(Debug, Clone, Default, Serialize, Deserialize)]
462pub struct UpdateStatusDto {
463 pub status: String,
466 #[serde(
468 rename = "lostReasonId",
469 default,
470 skip_serializing_if = "Option::is_none"
471 )]
472 pub lost_reason_id: Option<String>,
473}
474
475#[derive(Debug, Clone, Default, Serialize, Deserialize)]
477pub struct UpsertOpportunityDto {
478 #[serde(default, skip_serializing_if = "Option::is_none")]
480 pub id: Option<String>,
481 #[serde(rename = "pipelineId")]
484 pub pipeline_id: String,
485 #[serde(rename = "locationId")]
488 pub location_id: String,
489 #[serde(default, skip_serializing_if = "Vec::is_empty")]
492 pub followers: Vec<String>,
493 #[serde(rename = "isRemoveAllFollowers")]
496 pub is_remove_all_followers: bool,
497 #[serde(rename = "followersActionType")]
501 pub followers_action_type: String,
502 #[serde(default, skip_serializing_if = "Option::is_none")]
504 pub name: Option<String>,
505 #[serde(default, skip_serializing_if = "Option::is_none")]
507 pub status: Option<String>,
508 #[serde(
509 rename = "pipelineStageId",
510 default,
511 skip_serializing_if = "Option::is_none"
512 )]
513 pub pipeline_stage_id: Option<String>,
514 #[serde(
515 rename = "monetaryValue",
516 default,
517 skip_serializing_if = "Option::is_none"
518 )]
519 pub monetary_value: Option<serde_json::Value>,
520 #[serde(
521 rename = "assignedTo",
522 default,
523 skip_serializing_if = "Option::is_none"
524 )]
525 pub assigned_to: Option<String>,
526 #[serde(
528 rename = "lostReasonId",
529 default,
530 skip_serializing_if = "Option::is_none"
531 )]
532 pub lost_reason_id: Option<String>,
533}
534
535#[derive(Debug, Clone, Default, Serialize, Deserialize)]
537pub struct UpsertOpportunitySuccessfulResponseDto {
538 pub opportunity: serde_json::Value,
541 pub new: bool,
543}
544
545#[derive(Debug, Clone, Default, Serialize, Deserialize)]
547pub struct CustomFieldsInputArraySchema {
548 pub id: String,
550 #[serde(default, skip_serializing_if = "Option::is_none")]
551 pub key: Option<String>,
552 #[serde(default, skip_serializing_if = "Vec::is_empty")]
553 pub field_value: Vec<String>,
554}
555
556#[derive(Debug, Clone, Default, Serialize, Deserialize)]
558pub struct CustomFieldsInputObjectSchema {
559 pub id: String,
561 #[serde(default, skip_serializing_if = "Option::is_none")]
562 pub key: Option<String>,
563 #[serde(default, skip_serializing_if = "Option::is_none")]
564 pub field_value: Option<serde_json::Value>,
565}
566
567#[derive(Debug, Clone, Default, Serialize, Deserialize)]
569pub struct CustomFieldsInputStringSchema {
570 #[serde(default, skip_serializing_if = "Option::is_none")]
572 pub id: Option<String>,
573 #[serde(default, skip_serializing_if = "Option::is_none")]
575 pub key: Option<String>,
576 #[serde(default, skip_serializing_if = "Option::is_none")]
577 pub field_value: Option<String>,
578}