1#![allow(
14 missing_docs,
15 clippy::doc_lazy_continuation,
16 clippy::doc_overindented_list_items
17)]
18
19use serde::{Deserialize, Serialize};
20
21#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct AdditionalDetailsDTO {
24 pub notes: bool,
26 pub tasks: bool,
28 #[serde(rename = "calendarEvents")]
30 pub calendar_events: bool,
31 #[serde(rename = "unReadConversations")]
33 pub un_read_conversations: bool,
34}
35
36#[derive(Debug, Clone, Default, Serialize, Deserialize)]
38pub struct CreateAddFollowersSuccessfulResponseDto {
39 #[serde(default, skip_serializing_if = "Vec::is_empty")]
40 pub followers: Vec<String>,
41 #[serde(
42 rename = "followersAdded",
43 default,
44 skip_serializing_if = "Vec::is_empty"
45 )]
46 pub followers_added: Vec<String>,
47}
48
49#[derive(Debug, Clone, Default, Serialize, Deserialize)]
51pub struct CreateDto {
52 #[serde(rename = "pipelineId")]
55 pub pipeline_id: String,
56 #[serde(rename = "locationId")]
58 pub location_id: String,
59 pub name: String,
61 #[serde(
62 rename = "pipelineStageId",
63 default,
64 skip_serializing_if = "Option::is_none"
65 )]
66 pub pipeline_stage_id: Option<String>,
67 pub status: String,
70 #[serde(rename = "contactId")]
72 pub contact_id: String,
73 #[serde(
74 rename = "monetaryValue",
75 default,
76 skip_serializing_if = "Option::is_none"
77 )]
78 pub monetary_value: Option<f64>,
79 #[serde(
80 rename = "assignedTo",
81 default,
82 skip_serializing_if = "Option::is_none"
83 )]
84 pub assigned_to: Option<String>,
85 #[serde(
88 rename = "customFields",
89 default,
90 skip_serializing_if = "Vec::is_empty"
91 )]
92 pub custom_fields: Vec<serde_json::Value>,
93}
94
95#[derive(Debug, Clone, Default, Serialize, Deserialize)]
97pub struct CustomFieldResponseSchema {
98 #[serde(default, skip_serializing_if = "Option::is_none")]
101 pub id: Option<String>,
102 #[serde(
107 rename = "fieldValue",
108 default,
109 skip_serializing_if = "Option::is_none"
110 )]
111 pub field_value: Option<serde_json::Value>,
112}
113
114#[derive(Debug, Clone, Default, Serialize, Deserialize)]
116pub struct DeleteFollowersSuccessfulResponseDto {
117 #[serde(default, skip_serializing_if = "Vec::is_empty")]
118 pub followers: Vec<String>,
119 #[serde(
120 rename = "followersRemoved",
121 default,
122 skip_serializing_if = "Vec::is_empty"
123 )]
124 pub followers_removed: Vec<String>,
125}
126
127#[derive(Debug, Clone, Default, Serialize, Deserialize)]
129pub struct DeleteUpdateOpportunitySuccessfulResponseDto {
130 #[serde(default, skip_serializing_if = "Option::is_none")]
131 pub succeded: Option<bool>,
132}
133
134#[derive(Debug, Clone, Default, Serialize, Deserialize)]
136pub struct FollowersDTO {
137 #[serde(default, skip_serializing_if = "Vec::is_empty")]
139 pub followers: Vec<String>,
140}
141
142#[derive(Debug, Clone, Default, Serialize, Deserialize)]
144pub struct GetPipelinesSuccessfulResponseDto {
145 #[serde(default, skip_serializing_if = "Vec::is_empty")]
146 pub pipelines: Vec<PipelinesResponseSchema>,
147}
148
149#[derive(Debug, Clone, Default, Serialize, Deserialize)]
151pub struct GetPostOpportunitySuccessfulResponseDto {
152 #[serde(default, skip_serializing_if = "Option::is_none")]
153 pub opportunity: Option<SearchOpportunitiesResponseSchema>,
154}
155
156#[derive(Debug, Clone, Default, Serialize, Deserialize)]
158pub struct LostReasonResponseSchema {
159 #[serde(default, skip_serializing_if = "Option::is_none")]
161 pub id: Option<String>,
162 #[serde(default, skip_serializing_if = "Option::is_none")]
164 pub name: Option<String>,
165 #[serde(
167 rename = "locationId",
168 default,
169 skip_serializing_if = "Option::is_none"
170 )]
171 pub location_id: Option<String>,
172 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
175 pub updated_at: Option<String>,
176 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
179 pub created_at: Option<String>,
180}
181
182#[derive(Debug, Clone, Default, Serialize, Deserialize)]
184pub struct LostReasonsResponseSchema {
185 #[serde(rename = "lostReasons", default, skip_serializing_if = "Vec::is_empty")]
186 pub lost_reasons: Vec<LostReasonResponseSchema>,
187 #[serde(default, skip_serializing_if = "Option::is_none")]
188 pub total: Option<f64>,
189}
190
191#[derive(Debug, Clone, Default, Serialize, Deserialize)]
193pub struct OpportunitySearchBodyDTO {
194 #[serde(rename = "locationId")]
197 pub location_id: String,
198 pub query: String,
200 pub limit: f64,
202 pub page: f64,
204 #[serde(rename = "searchAfter", default, skip_serializing_if = "Vec::is_empty")]
206 pub search_after: Vec<String>,
207 #[serde(rename = "additionalDetails")]
209 pub additional_details: AdditionalDetailsDTO,
210}
211
212#[derive(Debug, Clone, Default, Serialize, Deserialize)]
214pub struct PipelinesResponseSchema {
215 #[serde(default, skip_serializing_if = "Option::is_none")]
216 pub id: Option<String>,
217 #[serde(default, skip_serializing_if = "Option::is_none")]
218 pub name: Option<String>,
219 #[serde(default, skip_serializing_if = "Vec::is_empty")]
220 pub stages: Vec<Vec<serde_json::Value>>,
221 #[serde(
222 rename = "showInFunnel",
223 default,
224 skip_serializing_if = "Option::is_none"
225 )]
226 pub show_in_funnel: Option<bool>,
227 #[serde(
228 rename = "showInPieChart",
229 default,
230 skip_serializing_if = "Option::is_none"
231 )]
232 pub show_in_pie_chart: Option<bool>,
233 #[serde(
234 rename = "locationId",
235 default,
236 skip_serializing_if = "Option::is_none"
237 )]
238 pub location_id: Option<String>,
239 #[serde(
242 rename = "colorRenderMode",
243 default,
244 skip_serializing_if = "Option::is_none"
245 )]
246 pub color_render_mode: Option<String>,
247}
248
249#[derive(Debug, Clone, Default, Serialize, Deserialize)]
251pub struct PostSearchSuccessfulResponseDto {
252 #[serde(default, skip_serializing_if = "Vec::is_empty")]
253 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
254 #[serde(default, skip_serializing_if = "Option::is_none")]
257 pub total: Option<f64>,
258 #[serde(default, skip_serializing_if = "Option::is_none")]
259 pub aggregations: Option<serde_json::Value>,
260}
261
262#[derive(Debug, Clone, Default, Serialize, Deserialize)]
264pub struct SearchMetaResponseSchema {
265 #[serde(default, skip_serializing_if = "Option::is_none")]
266 pub total: Option<f64>,
267 #[serde(
268 rename = "nextPageUrl",
269 default,
270 skip_serializing_if = "Option::is_none"
271 )]
272 pub next_page_url: Option<String>,
273 #[serde(
274 rename = "startAfterId",
275 default,
276 skip_serializing_if = "Option::is_none"
277 )]
278 pub start_after_id: Option<String>,
279 #[serde(
280 rename = "startAfter",
281 default,
282 skip_serializing_if = "Option::is_none"
283 )]
284 pub start_after: Option<f64>,
285 #[serde(
286 rename = "currentPage",
287 default,
288 skip_serializing_if = "Option::is_none"
289 )]
290 pub current_page: Option<f64>,
291 #[serde(rename = "nextPage", default, skip_serializing_if = "Option::is_none")]
292 pub next_page: Option<f64>,
293 #[serde(rename = "prevPage", default, skip_serializing_if = "Option::is_none")]
294 pub prev_page: Option<f64>,
295}
296
297#[derive(Debug, Clone, Default, Serialize, Deserialize)]
299pub struct SearchOpportunitiesContactResponseSchema {
300 #[serde(default, skip_serializing_if = "Option::is_none")]
301 pub id: Option<String>,
302 #[serde(default, skip_serializing_if = "Option::is_none")]
303 pub name: Option<String>,
304 #[serde(
305 rename = "companyName",
306 default,
307 skip_serializing_if = "Option::is_none"
308 )]
309 pub company_name: Option<String>,
310 #[serde(default, skip_serializing_if = "Option::is_none")]
311 pub email: Option<String>,
312 #[serde(default, skip_serializing_if = "Option::is_none")]
313 pub phone: Option<String>,
314 #[serde(default, skip_serializing_if = "Vec::is_empty")]
315 pub tags: Vec<String>,
316}
317
318#[derive(Debug, Clone, Default, Serialize, Deserialize)]
320pub struct SearchOpportunitiesResponseSchema {
321 #[serde(default, skip_serializing_if = "Option::is_none")]
322 pub id: Option<String>,
323 #[serde(default, skip_serializing_if = "Option::is_none")]
324 pub name: Option<String>,
325 #[serde(
326 rename = "monetaryValue",
327 default,
328 skip_serializing_if = "Option::is_none"
329 )]
330 pub monetary_value: Option<f64>,
331 #[serde(
332 rename = "pipelineId",
333 default,
334 skip_serializing_if = "Option::is_none"
335 )]
336 pub pipeline_id: Option<String>,
337 #[serde(
338 rename = "pipelineStageId",
339 default,
340 skip_serializing_if = "Option::is_none"
341 )]
342 pub pipeline_stage_id: Option<String>,
343 #[serde(
344 rename = "assignedTo",
345 default,
346 skip_serializing_if = "Option::is_none"
347 )]
348 pub assigned_to: Option<String>,
349 #[serde(default, skip_serializing_if = "Option::is_none")]
350 pub status: Option<String>,
351 #[serde(default, skip_serializing_if = "Option::is_none")]
352 pub source: Option<String>,
353 #[serde(
354 rename = "lastStatusChangeAt",
355 default,
356 skip_serializing_if = "Option::is_none"
357 )]
358 pub last_status_change_at: Option<String>,
359 #[serde(
360 rename = "lastStageChangeAt",
361 default,
362 skip_serializing_if = "Option::is_none"
363 )]
364 pub last_stage_change_at: Option<String>,
365 #[serde(
366 rename = "lastActionDate",
367 default,
368 skip_serializing_if = "Option::is_none"
369 )]
370 pub last_action_date: Option<String>,
371 #[serde(
372 rename = "indexVersion",
373 default,
374 skip_serializing_if = "Option::is_none"
375 )]
376 pub index_version: Option<String>,
377 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
378 pub created_at: Option<String>,
379 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
380 pub updated_at: Option<String>,
381 #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
382 pub contact_id: Option<String>,
383 #[serde(
384 rename = "locationId",
385 default,
386 skip_serializing_if = "Option::is_none"
387 )]
388 pub location_id: Option<String>,
389 #[serde(default, skip_serializing_if = "Option::is_none")]
390 pub contact: Option<SearchOpportunitiesContactResponseSchema>,
391 #[serde(default, skip_serializing_if = "Vec::is_empty")]
392 pub notes: Vec<Vec<serde_json::Value>>,
393 #[serde(default, skip_serializing_if = "Vec::is_empty")]
394 pub tasks: Vec<Vec<serde_json::Value>>,
395 #[serde(
396 rename = "calendarEvents",
397 default,
398 skip_serializing_if = "Vec::is_empty"
399 )]
400 pub calendar_events: Vec<Vec<serde_json::Value>>,
401 #[serde(
402 rename = "lostReasonId",
403 default,
404 skip_serializing_if = "Option::is_none"
405 )]
406 pub lost_reason_id: Option<String>,
407 #[serde(
408 rename = "customFields",
409 default,
410 skip_serializing_if = "Vec::is_empty"
411 )]
412 pub custom_fields: Vec<CustomFieldResponseSchema>,
413 #[serde(default, skip_serializing_if = "Vec::is_empty")]
414 pub followers: Vec<Vec<serde_json::Value>>,
415 #[serde(
416 rename = "externalObjectId",
417 default,
418 skip_serializing_if = "Option::is_none"
419 )]
420 pub external_object_id: Option<String>,
421}
422
423#[derive(Debug, Clone, Default, Serialize, Deserialize)]
425pub struct SearchSuccessfulResponseDto {
426 #[serde(default, skip_serializing_if = "Vec::is_empty")]
427 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
428 #[serde(default, skip_serializing_if = "Option::is_none")]
429 pub meta: Option<SearchMetaResponseSchema>,
430 #[serde(default, skip_serializing_if = "Option::is_none")]
431 pub aggregations: Option<serde_json::Value>,
432}
433
434#[derive(Debug, Clone, Default, Serialize, Deserialize)]
436pub struct UpdateOpportunityDto {
437 #[serde(
439 rename = "pipelineId",
440 default,
441 skip_serializing_if = "Option::is_none"
442 )]
443 pub pipeline_id: Option<String>,
444 #[serde(default, skip_serializing_if = "Option::is_none")]
445 pub name: Option<String>,
446 #[serde(
447 rename = "pipelineStageId",
448 default,
449 skip_serializing_if = "Option::is_none"
450 )]
451 pub pipeline_stage_id: Option<String>,
452 #[serde(default, skip_serializing_if = "Option::is_none")]
454 pub status: Option<String>,
455 #[serde(
456 rename = "monetaryValue",
457 default,
458 skip_serializing_if = "Option::is_none"
459 )]
460 pub monetary_value: Option<f64>,
461 #[serde(
462 rename = "assignedTo",
463 default,
464 skip_serializing_if = "Option::is_none"
465 )]
466 pub assigned_to: Option<String>,
467 #[serde(
470 rename = "customFields",
471 default,
472 skip_serializing_if = "Vec::is_empty"
473 )]
474 pub custom_fields: Vec<serde_json::Value>,
475}
476
477#[derive(Debug, Clone, Default, Serialize, Deserialize)]
479pub struct UpdateStatusDto {
480 pub status: String,
483 #[serde(
485 rename = "lostReasonId",
486 default,
487 skip_serializing_if = "Option::is_none"
488 )]
489 pub lost_reason_id: Option<String>,
490}
491
492#[derive(Debug, Clone, Default, Serialize, Deserialize)]
494pub struct UpsertOpportunityDto {
495 #[serde(default, skip_serializing_if = "Option::is_none")]
497 pub id: Option<String>,
498 #[serde(rename = "pipelineId")]
501 pub pipeline_id: String,
502 #[serde(rename = "locationId")]
505 pub location_id: String,
506 #[serde(default, skip_serializing_if = "Vec::is_empty")]
509 pub followers: Vec<String>,
510 #[serde(rename = "isRemoveAllFollowers")]
513 pub is_remove_all_followers: bool,
514 #[serde(rename = "followersActionType")]
518 pub followers_action_type: String,
519 #[serde(default, skip_serializing_if = "Option::is_none")]
521 pub name: Option<String>,
522 #[serde(default, skip_serializing_if = "Option::is_none")]
524 pub status: Option<String>,
525 #[serde(
526 rename = "pipelineStageId",
527 default,
528 skip_serializing_if = "Option::is_none"
529 )]
530 pub pipeline_stage_id: Option<String>,
531 #[serde(
532 rename = "monetaryValue",
533 default,
534 skip_serializing_if = "Option::is_none"
535 )]
536 pub monetary_value: Option<serde_json::Value>,
537 #[serde(
538 rename = "assignedTo",
539 default,
540 skip_serializing_if = "Option::is_none"
541 )]
542 pub assigned_to: Option<String>,
543 #[serde(
545 rename = "lostReasonId",
546 default,
547 skip_serializing_if = "Option::is_none"
548 )]
549 pub lost_reason_id: Option<String>,
550}
551
552#[derive(Debug, Clone, Default, Serialize, Deserialize)]
554pub struct UpsertOpportunitySuccessfulResponseDto {
555 #[serde(default, skip_serializing_if = "Option::is_none")]
559 pub opportunity: Option<serde_json::Value>,
560 #[serde(default, skip_serializing_if = "Option::is_none")]
563 pub new: Option<bool>,
564}
565
566#[derive(Debug, Clone, Default, Serialize, Deserialize)]
568pub struct CustomFieldsInputArraySchema {
569 pub id: String,
571 #[serde(default, skip_serializing_if = "Option::is_none")]
572 pub key: Option<String>,
573 #[serde(default, skip_serializing_if = "Vec::is_empty")]
574 pub field_value: Vec<String>,
575}
576
577#[derive(Debug, Clone, Default, Serialize, Deserialize)]
579pub struct CustomFieldsInputObjectSchema {
580 pub id: String,
582 #[serde(default, skip_serializing_if = "Option::is_none")]
583 pub key: Option<String>,
584 #[serde(default, skip_serializing_if = "Option::is_none")]
585 pub field_value: Option<serde_json::Value>,
586}
587
588#[derive(Debug, Clone, Default, Serialize, Deserialize)]
590pub struct CustomFieldsInputStringSchema {
591 #[serde(default, skip_serializing_if = "Option::is_none")]
593 pub id: Option<String>,
594 #[serde(default, skip_serializing_if = "Option::is_none")]
596 pub key: Option<String>,
597 #[serde(default, skip_serializing_if = "Option::is_none")]
598 pub field_value: Option<String>,
599}