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,
27 pub tasks: bool,
30 #[serde(rename = "calendarEvents")]
33 pub calendar_events: bool,
34 #[serde(rename = "unReadConversations")]
37 pub un_read_conversations: bool,
38}
39
40#[derive(Debug, Clone, Default, Serialize, Deserialize)]
42pub struct CreateAddFollowersSuccessfulResponseDto {
43 #[serde(default, skip_serializing_if = "Vec::is_empty")]
45 pub followers: Vec<String>,
46 #[serde(
48 rename = "followersAdded",
49 default,
50 skip_serializing_if = "Vec::is_empty"
51 )]
52 pub followers_added: Vec<String>,
53}
54
55#[derive(Debug, Clone, Default, Serialize, Deserialize)]
57pub struct CreateDtoV3 {
58 #[serde(rename = "pipelineId")]
61 pub pipeline_id: String,
62 #[serde(rename = "locationId")]
65 pub location_id: String,
66 pub name: String,
69 #[serde(
71 rename = "pipelineStageId",
72 default,
73 skip_serializing_if = "Option::is_none"
74 )]
75 pub pipeline_stage_id: Option<String>,
76 pub status: String,
80 #[serde(rename = "contactId")]
83 pub contact_id: String,
84 #[serde(
86 rename = "monetaryValue",
87 default,
88 skip_serializing_if = "Option::is_none"
89 )]
90 pub monetary_value: Option<f64>,
91 #[serde(
94 rename = "forecastExpectedCloseDate",
95 default,
96 skip_serializing_if = "Option::is_none"
97 )]
98 pub forecast_expected_close_date: Option<String>,
99 #[serde(
101 rename = "forecastProbability",
102 default,
103 skip_serializing_if = "Option::is_none"
104 )]
105 pub forecast_probability: Option<f64>,
106 #[serde(
108 rename = "assignedTo",
109 default,
110 skip_serializing_if = "Option::is_none"
111 )]
112 pub assigned_to: Option<String>,
113 #[serde(
116 rename = "customFields",
117 default,
118 skip_serializing_if = "Vec::is_empty"
119 )]
120 pub custom_fields: Vec<serde_json::Value>,
121}
122
123#[derive(Debug, Clone, Default, Serialize, Deserialize)]
125pub struct CustomFieldResponseSchema {
126 #[serde(default, skip_serializing_if = "Option::is_none")]
130 pub id: Option<String>,
131 #[serde(
136 rename = "fieldValue",
137 default,
138 skip_serializing_if = "Option::is_none"
139 )]
140 pub field_value: Option<serde_json::Value>,
141}
142
143#[derive(Debug, Clone, Default, Serialize, Deserialize)]
145pub struct DeleteFollowersSuccessfulResponseDto {
146 #[serde(default, skip_serializing_if = "Vec::is_empty")]
148 pub followers: Vec<String>,
149 #[serde(
151 rename = "followersRemoved",
152 default,
153 skip_serializing_if = "Vec::is_empty"
154 )]
155 pub followers_removed: Vec<String>,
156}
157
158#[derive(Debug, Clone, Default, Serialize, Deserialize)]
160pub struct DeleteUpdateOpportunitySuccessfulResponseDto {
161 #[serde(default, skip_serializing_if = "Option::is_none")]
163 pub succeded: Option<bool>,
164 #[serde(default, skip_serializing_if = "Option::is_none")]
166 pub success: Option<bool>,
167}
168
169#[derive(Debug, Clone, Default, Serialize, Deserialize)]
171pub struct FollowersDTO {
172 #[serde(default, skip_serializing_if = "Vec::is_empty")]
175 pub followers: Vec<String>,
176}
177
178#[derive(Debug, Clone, Default, Serialize, Deserialize)]
180pub struct GetPipelinesSuccessfulResponseDto {
181 #[serde(default, skip_serializing_if = "Vec::is_empty")]
183 pub pipelines: Vec<PipelinesResponseSchema>,
184}
185
186#[derive(Debug, Clone, Default, Serialize, Deserialize)]
188pub struct GetPostOpportunitySuccessfulResponseDto {
189 #[serde(default, skip_serializing_if = "Option::is_none")]
191 pub opportunity: Option<SearchOpportunitiesResponseSchema>,
192}
193
194#[derive(Debug, Clone, Default, Serialize, Deserialize)]
196pub struct LostReasonResponseSchema {
197 #[serde(default, skip_serializing_if = "Option::is_none")]
199 pub id: Option<String>,
200 #[serde(default, skip_serializing_if = "Option::is_none")]
202 pub name: Option<String>,
203 #[serde(
205 rename = "locationId",
206 default,
207 skip_serializing_if = "Option::is_none"
208 )]
209 pub location_id: Option<String>,
210 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
213 pub updated_at: Option<String>,
214 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
217 pub created_at: Option<String>,
218}
219
220#[derive(Debug, Clone, Default, Serialize, Deserialize)]
222pub struct LostReasonsResponseSchema {
223 #[serde(rename = "lostReasons", default, skip_serializing_if = "Vec::is_empty")]
225 pub lost_reasons: Vec<LostReasonResponseSchema>,
226 #[serde(default, skip_serializing_if = "Option::is_none")]
228 pub total: Option<f64>,
229}
230
231#[derive(Debug, Clone, Default, Serialize, Deserialize)]
233pub struct OpportunitySearchBodyDTO {
234 #[serde(rename = "locationId")]
237 pub location_id: String,
238 pub query: String,
241 pub limit: f64,
244 pub page: f64,
247 #[serde(rename = "searchAfter", default, skip_serializing_if = "Vec::is_empty")]
250 pub search_after: Vec<String>,
251 #[serde(rename = "additionalDetails")]
254 pub additional_details: AdditionalDetailsDTO,
255}
256
257#[derive(Debug, Clone, Default, Serialize, Deserialize)]
259pub struct PipelinesResponseSchema {
260 #[serde(default, skip_serializing_if = "Option::is_none")]
262 pub id: Option<String>,
263 #[serde(default, skip_serializing_if = "Option::is_none")]
265 pub name: Option<String>,
266 #[serde(default, skip_serializing_if = "Vec::is_empty")]
268 pub stages: Vec<Vec<serde_json::Value>>,
269 #[serde(
271 rename = "showInFunnel",
272 default,
273 skip_serializing_if = "Option::is_none"
274 )]
275 pub show_in_funnel: Option<bool>,
276 #[serde(
278 rename = "showInPieChart",
279 default,
280 skip_serializing_if = "Option::is_none"
281 )]
282 pub show_in_pie_chart: Option<bool>,
283 #[serde(
285 rename = "locationId",
286 default,
287 skip_serializing_if = "Option::is_none"
288 )]
289 pub location_id: Option<String>,
290 #[serde(
292 rename = "useOpportunityProbability",
293 default,
294 skip_serializing_if = "Option::is_none"
295 )]
296 pub use_opportunity_probability: Option<bool>,
297 #[serde(
300 rename = "colorRenderMode",
301 default,
302 skip_serializing_if = "Option::is_none"
303 )]
304 pub color_render_mode: Option<String>,
305}
306
307#[derive(Debug, Clone, Default, Serialize, Deserialize)]
309pub struct PostSearchSuccessfulResponseDto {
310 #[serde(default, skip_serializing_if = "Vec::is_empty")]
312 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
313 #[serde(default, skip_serializing_if = "Option::is_none")]
317 pub total: Option<f64>,
318 #[serde(
320 rename = "stageAggregations",
321 default,
322 skip_serializing_if = "Vec::is_empty"
323 )]
324 pub stage_aggregations: Vec<StageAggregationResponseDto>,
325 #[serde(default, skip_serializing_if = "Option::is_none")]
327 pub aggregations: Option<serde_json::Value>,
328}
329
330#[derive(Debug, Clone, Default, Serialize, Deserialize)]
332pub struct SearchMetaResponseSchema {
333 #[serde(default, skip_serializing_if = "Option::is_none")]
335 pub total: Option<f64>,
336 #[serde(
338 rename = "nextPageUrl",
339 default,
340 skip_serializing_if = "Option::is_none"
341 )]
342 pub next_page_url: Option<String>,
343 #[serde(
345 rename = "startAfterId",
346 default,
347 skip_serializing_if = "Option::is_none"
348 )]
349 pub start_after_id: Option<String>,
350 #[serde(
352 rename = "startAfter",
353 default,
354 skip_serializing_if = "Option::is_none"
355 )]
356 pub start_after: Option<f64>,
357 #[serde(
359 rename = "currentPage",
360 default,
361 skip_serializing_if = "Option::is_none"
362 )]
363 pub current_page: Option<f64>,
364 #[serde(rename = "nextPage", default, skip_serializing_if = "Option::is_none")]
366 pub next_page: Option<f64>,
367 #[serde(rename = "prevPage", default, skip_serializing_if = "Option::is_none")]
369 pub prev_page: Option<f64>,
370}
371
372#[derive(Debug, Clone, Default, Serialize, Deserialize)]
374pub struct SearchOpportunitiesContactResponseSchema {
375 #[serde(default, skip_serializing_if = "Option::is_none")]
377 pub id: Option<String>,
378 #[serde(default, skip_serializing_if = "Option::is_none")]
380 pub name: Option<String>,
381 #[serde(
383 rename = "companyName",
384 default,
385 skip_serializing_if = "Option::is_none"
386 )]
387 pub company_name: Option<String>,
388 #[serde(default, skip_serializing_if = "Option::is_none")]
390 pub email: Option<String>,
391 #[serde(default, skip_serializing_if = "Option::is_none")]
393 pub phone: Option<String>,
394 #[serde(default, skip_serializing_if = "Vec::is_empty")]
396 pub tags: Vec<String>,
397}
398
399#[derive(Debug, Clone, Default, Serialize, Deserialize)]
401pub struct SearchOpportunitiesResponseSchema {
402 #[serde(default, skip_serializing_if = "Option::is_none")]
404 pub id: Option<String>,
405 #[serde(default, skip_serializing_if = "Option::is_none")]
407 pub name: Option<String>,
408 #[serde(
410 rename = "monetaryValue",
411 default,
412 skip_serializing_if = "Option::is_none"
413 )]
414 pub monetary_value: Option<f64>,
415 #[serde(
417 rename = "pipelineId",
418 default,
419 skip_serializing_if = "Option::is_none"
420 )]
421 pub pipeline_id: Option<String>,
422 #[serde(
424 rename = "pipelineStageId",
425 default,
426 skip_serializing_if = "Option::is_none"
427 )]
428 pub pipeline_stage_id: Option<String>,
429 #[serde(
431 rename = "assignedTo",
432 default,
433 skip_serializing_if = "Option::is_none"
434 )]
435 pub assigned_to: Option<String>,
436 #[serde(default, skip_serializing_if = "Option::is_none")]
438 pub status: Option<String>,
439 #[serde(default, skip_serializing_if = "Option::is_none")]
441 pub source: Option<String>,
442 #[serde(
444 rename = "lastStatusChangeAt",
445 default,
446 skip_serializing_if = "Option::is_none"
447 )]
448 pub last_status_change_at: Option<String>,
449 #[serde(
451 rename = "lastStageChangeAt",
452 default,
453 skip_serializing_if = "Option::is_none"
454 )]
455 pub last_stage_change_at: Option<String>,
456 #[serde(
458 rename = "lastActionDate",
459 default,
460 skip_serializing_if = "Option::is_none"
461 )]
462 pub last_action_date: Option<String>,
463 #[serde(
465 rename = "indexVersion",
466 default,
467 skip_serializing_if = "Option::is_none"
468 )]
469 pub index_version: Option<String>,
470 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
472 pub created_at: Option<String>,
473 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
475 pub updated_at: Option<String>,
476 #[serde(
478 rename = "forecastExpectedCloseDate",
479 default,
480 skip_serializing_if = "Option::is_none"
481 )]
482 pub forecast_expected_close_date: Option<String>,
483 #[serde(
485 rename = "forecastOriginalCloseDate",
486 default,
487 skip_serializing_if = "Option::is_none"
488 )]
489 pub forecast_original_close_date: Option<String>,
490 #[serde(
492 rename = "forecastSlippageCount",
493 default,
494 skip_serializing_if = "Option::is_none"
495 )]
496 pub forecast_slippage_count: Option<f64>,
497 #[serde(
499 rename = "forecastDaysSlipped",
500 default,
501 skip_serializing_if = "Option::is_none"
502 )]
503 pub forecast_days_slipped: Option<f64>,
504 #[serde(
506 rename = "forecastLastSlippedAt",
507 default,
508 skip_serializing_if = "Option::is_none"
509 )]
510 pub forecast_last_slipped_at: Option<String>,
511 #[serde(
513 rename = "forecastProbability",
514 default,
515 skip_serializing_if = "Option::is_none"
516 )]
517 pub forecast_probability: Option<f64>,
518 #[serde(
520 rename = "effectiveProbability",
521 default,
522 skip_serializing_if = "Option::is_none"
523 )]
524 pub effective_probability: Option<f64>,
525 #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
527 pub contact_id: Option<String>,
528 #[serde(
530 rename = "locationId",
531 default,
532 skip_serializing_if = "Option::is_none"
533 )]
534 pub location_id: Option<String>,
535 #[serde(default, skip_serializing_if = "Option::is_none")]
537 pub contact: Option<SearchOpportunitiesContactResponseSchema>,
538 #[serde(default, skip_serializing_if = "Vec::is_empty")]
540 pub notes: Vec<Vec<serde_json::Value>>,
541 #[serde(default, skip_serializing_if = "Vec::is_empty")]
543 pub tasks: Vec<Vec<serde_json::Value>>,
544 #[serde(
546 rename = "calendarEvents",
547 default,
548 skip_serializing_if = "Vec::is_empty"
549 )]
550 pub calendar_events: Vec<Vec<serde_json::Value>>,
551 #[serde(
553 rename = "lostReasonId",
554 default,
555 skip_serializing_if = "Option::is_none"
556 )]
557 pub lost_reason_id: Option<String>,
558 #[serde(
560 rename = "customFields",
561 default,
562 skip_serializing_if = "Vec::is_empty"
563 )]
564 pub custom_fields: Vec<CustomFieldResponseSchema>,
565 #[serde(default, skip_serializing_if = "Vec::is_empty")]
567 pub followers: Vec<Vec<serde_json::Value>>,
568 #[serde(
570 rename = "externalObjectId",
571 default,
572 skip_serializing_if = "Option::is_none"
573 )]
574 pub external_object_id: Option<String>,
575}
576
577#[derive(Debug, Clone, Default, Serialize, Deserialize)]
579pub struct SearchSuccessfulResponseDto {
580 #[serde(default, skip_serializing_if = "Vec::is_empty")]
582 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
583 #[serde(default, skip_serializing_if = "Option::is_none")]
585 pub meta: Option<SearchMetaResponseSchema>,
586 #[serde(default, skip_serializing_if = "Option::is_none")]
588 pub aggregations: Option<serde_json::Value>,
589}
590
591#[derive(Debug, Clone, Default, Serialize, Deserialize)]
593pub struct StageAggregationResponseDto {
594 #[serde(
598 rename = "pipelineStageId",
599 default,
600 skip_serializing_if = "Option::is_none"
601 )]
602 pub pipeline_stage_id: Option<String>,
603 #[serde(
607 rename = "totalCount",
608 default,
609 skip_serializing_if = "Option::is_none"
610 )]
611 pub total_count: Option<f64>,
612 #[serde(
616 rename = "totalValue",
617 default,
618 skip_serializing_if = "Option::is_none"
619 )]
620 pub total_value: Option<f64>,
621 #[serde(
625 rename = "weightedValue",
626 default,
627 skip_serializing_if = "Option::is_none"
628 )]
629 pub weighted_value: Option<f64>,
630 #[serde(rename = "openValue", default, skip_serializing_if = "Option::is_none")]
634 pub open_value: Option<f64>,
635 #[serde(
639 rename = "openWeightedValue",
640 default,
641 skip_serializing_if = "Option::is_none"
642 )]
643 pub open_weighted_value: Option<f64>,
644 #[serde(rename = "wonValue", default, skip_serializing_if = "Option::is_none")]
648 pub won_value: Option<f64>,
649}
650
651#[derive(Debug, Clone, Default, Serialize, Deserialize)]
653pub struct UpdateOpportunityDtoV3 {
654 #[serde(
656 rename = "pipelineId",
657 default,
658 skip_serializing_if = "Option::is_none"
659 )]
660 pub pipeline_id: Option<String>,
661 #[serde(default, skip_serializing_if = "Option::is_none")]
663 pub name: Option<String>,
664 #[serde(
666 rename = "pipelineStageId",
667 default,
668 skip_serializing_if = "Option::is_none"
669 )]
670 pub pipeline_stage_id: Option<String>,
671 #[serde(default, skip_serializing_if = "Option::is_none")]
674 pub status: Option<String>,
675 #[serde(
677 rename = "monetaryValue",
678 default,
679 skip_serializing_if = "Option::is_none"
680 )]
681 pub monetary_value: Option<f64>,
682 #[serde(
685 rename = "forecastExpectedCloseDate",
686 default,
687 skip_serializing_if = "Option::is_none"
688 )]
689 pub forecast_expected_close_date: Option<String>,
690 #[serde(
692 rename = "forecastProbability",
693 default,
694 skip_serializing_if = "Option::is_none"
695 )]
696 pub forecast_probability: Option<f64>,
697 #[serde(
699 rename = "assignedTo",
700 default,
701 skip_serializing_if = "Option::is_none"
702 )]
703 pub assigned_to: Option<String>,
704 #[serde(
707 rename = "customFields",
708 default,
709 skip_serializing_if = "Vec::is_empty"
710 )]
711 pub custom_fields: Vec<serde_json::Value>,
712}
713
714#[derive(Debug, Clone, Default, Serialize, Deserialize)]
716pub struct UpdateStatusDto {
717 pub status: String,
721 #[serde(
723 rename = "lostReasonId",
724 default,
725 skip_serializing_if = "Option::is_none"
726 )]
727 pub lost_reason_id: Option<String>,
728}
729
730#[derive(Debug, Clone, Default, Serialize, Deserialize)]
732pub struct UpsertOpportunityDto {
733 #[serde(default, skip_serializing_if = "Option::is_none")]
735 pub id: Option<String>,
736 #[serde(rename = "pipelineId")]
739 pub pipeline_id: String,
740 #[serde(rename = "locationId")]
743 pub location_id: String,
744 #[serde(default, skip_serializing_if = "Vec::is_empty")]
747 pub followers: Vec<String>,
748 #[serde(rename = "isRemoveAllFollowers")]
751 pub is_remove_all_followers: bool,
752 #[serde(rename = "followersActionType")]
756 pub followers_action_type: String,
757 #[serde(default, skip_serializing_if = "Option::is_none")]
759 pub name: Option<String>,
760 #[serde(default, skip_serializing_if = "Option::is_none")]
763 pub status: Option<String>,
764 #[serde(
766 rename = "pipelineStageId",
767 default,
768 skip_serializing_if = "Option::is_none"
769 )]
770 pub pipeline_stage_id: Option<String>,
771 #[serde(
773 rename = "monetaryValue",
774 default,
775 skip_serializing_if = "Option::is_none"
776 )]
777 pub monetary_value: Option<serde_json::Value>,
778 #[serde(
781 rename = "forecastExpectedCloseDate",
782 default,
783 skip_serializing_if = "Option::is_none"
784 )]
785 pub forecast_expected_close_date: Option<String>,
786 #[serde(
788 rename = "forecastProbability",
789 default,
790 skip_serializing_if = "Option::is_none"
791 )]
792 pub forecast_probability: Option<f64>,
793 #[serde(
795 rename = "assignedTo",
796 default,
797 skip_serializing_if = "Option::is_none"
798 )]
799 pub assigned_to: Option<String>,
800 #[serde(
802 rename = "lostReasonId",
803 default,
804 skip_serializing_if = "Option::is_none"
805 )]
806 pub lost_reason_id: Option<String>,
807}
808
809#[derive(Debug, Clone, Default, Serialize, Deserialize)]
811pub struct UpsertOpportunitySuccessfulResponseDto {
812 #[serde(default, skip_serializing_if = "Option::is_none")]
816 pub opportunity: Option<serde_json::Value>,
817 #[serde(default, skip_serializing_if = "Option::is_none")]
821 pub new: Option<bool>,
822}
823
824#[derive(Debug, Clone, Default, Serialize, Deserialize)]
826pub struct CustomFieldsInputArraySchemaV3 {
827 pub id: String,
830 #[serde(default, skip_serializing_if = "Option::is_none")]
832 pub key: Option<String>,
833 #[serde(rename = "fieldValue", default, skip_serializing_if = "Vec::is_empty")]
835 pub field_value: Vec<String>,
836}
837
838#[derive(Debug, Clone, Default, Serialize, Deserialize)]
840pub struct CustomFieldsInputObjectSchemaV3 {
841 pub id: String,
844 #[serde(default, skip_serializing_if = "Option::is_none")]
846 pub key: Option<String>,
847 #[serde(
849 rename = "fieldValue",
850 default,
851 skip_serializing_if = "Option::is_none"
852 )]
853 pub field_value: Option<serde_json::Value>,
854}
855
856#[derive(Debug, Clone, Default, Serialize, Deserialize)]
858pub struct CustomFieldsInputStringSchemaV3 {
859 #[serde(default, skip_serializing_if = "Option::is_none")]
861 pub id: Option<String>,
862 #[serde(default, skip_serializing_if = "Option::is_none")]
864 pub key: Option<String>,
865 #[serde(
867 rename = "fieldValue",
868 default,
869 skip_serializing_if = "Option::is_none"
870 )]
871 pub field_value: Option<String>,
872}