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,
19 pub tasks: bool,
22 #[serde(rename = "calendarEvents")]
25 pub calendar_events: bool,
26 #[serde(rename = "unReadConversations")]
29 pub un_read_conversations: bool,
30}
31
32#[derive(Debug, Clone, Default, Serialize, Deserialize)]
34pub struct CreateAddFollowersSuccessfulResponseDto {
35 #[serde(default, skip_serializing_if = "Vec::is_empty")]
37 pub followers: Vec<String>,
38 #[serde(
40 rename = "followersAdded",
41 default,
42 skip_serializing_if = "Vec::is_empty"
43 )]
44 pub followers_added: Vec<String>,
45}
46
47#[derive(Debug, Clone, Default, Serialize, Deserialize)]
49pub struct CreateDtoV3 {
50 #[serde(rename = "pipelineId")]
53 pub pipeline_id: String,
54 #[serde(rename = "locationId")]
57 pub location_id: String,
58 pub name: String,
61 #[serde(
63 rename = "pipelineStageId",
64 default,
65 skip_serializing_if = "Option::is_none"
66 )]
67 pub pipeline_stage_id: Option<String>,
68 pub status: String,
72 #[serde(rename = "contactId")]
75 pub contact_id: String,
76 #[serde(
78 rename = "monetaryValue",
79 default,
80 skip_serializing_if = "Option::is_none"
81 )]
82 pub monetary_value: Option<f64>,
83 #[serde(
86 rename = "forecastExpectedCloseDate",
87 default,
88 skip_serializing_if = "Option::is_none"
89 )]
90 pub forecast_expected_close_date: Option<String>,
91 #[serde(
93 rename = "forecastProbability",
94 default,
95 skip_serializing_if = "Option::is_none"
96 )]
97 pub forecast_probability: Option<f64>,
98 #[serde(
100 rename = "assignedTo",
101 default,
102 skip_serializing_if = "Option::is_none"
103 )]
104 pub assigned_to: Option<String>,
105 #[serde(
108 rename = "customFields",
109 default,
110 skip_serializing_if = "Vec::is_empty"
111 )]
112 pub custom_fields: Vec<serde_json::Value>,
113}
114
115#[derive(Debug, Clone, Default, Serialize, Deserialize)]
117pub struct CustomFieldResponseSchema {
118 pub id: String,
121 #[serde(rename = "fieldValue")]
125 pub field_value: serde_json::Value,
126}
127
128#[derive(Debug, Clone, Default, Serialize, Deserialize)]
130pub struct DeleteFollowersSuccessfulResponseDto {
131 #[serde(default, skip_serializing_if = "Vec::is_empty")]
133 pub followers: Vec<String>,
134 #[serde(
136 rename = "followersRemoved",
137 default,
138 skip_serializing_if = "Vec::is_empty"
139 )]
140 pub followers_removed: Vec<String>,
141}
142
143#[derive(Debug, Clone, Default, Serialize, Deserialize)]
145pub struct DeleteUpdateOpportunitySuccessfulResponseDto {
146 #[serde(default, skip_serializing_if = "Option::is_none")]
148 pub succeded: Option<bool>,
149 #[serde(default, skip_serializing_if = "Option::is_none")]
151 pub success: Option<bool>,
152}
153
154#[derive(Debug, Clone, Default, Serialize, Deserialize)]
156pub struct FollowersDTO {
157 #[serde(default, skip_serializing_if = "Vec::is_empty")]
160 pub followers: Vec<String>,
161}
162
163#[derive(Debug, Clone, Default, Serialize, Deserialize)]
165pub struct GetPipelinesSuccessfulResponseDto {
166 #[serde(default, skip_serializing_if = "Vec::is_empty")]
168 pub pipelines: Vec<PipelinesResponseSchema>,
169}
170
171#[derive(Debug, Clone, Default, Serialize, Deserialize)]
173pub struct GetPostOpportunitySuccessfulResponseDto {
174 #[serde(default, skip_serializing_if = "Option::is_none")]
176 pub opportunity: Option<SearchOpportunitiesResponseSchema>,
177}
178
179#[derive(Debug, Clone, Default, Serialize, Deserialize)]
181pub struct LostReasonResponseSchema {
182 #[serde(default, skip_serializing_if = "Option::is_none")]
184 pub id: Option<String>,
185 #[serde(default, skip_serializing_if = "Option::is_none")]
187 pub name: Option<String>,
188 #[serde(
190 rename = "locationId",
191 default,
192 skip_serializing_if = "Option::is_none"
193 )]
194 pub location_id: Option<String>,
195 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
198 pub updated_at: Option<String>,
199 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
202 pub created_at: Option<String>,
203}
204
205#[derive(Debug, Clone, Default, Serialize, Deserialize)]
207pub struct LostReasonsResponseSchema {
208 #[serde(rename = "lostReasons", default, skip_serializing_if = "Vec::is_empty")]
210 pub lost_reasons: Vec<LostReasonResponseSchema>,
211 #[serde(default, skip_serializing_if = "Option::is_none")]
213 pub total: Option<f64>,
214}
215
216#[derive(Debug, Clone, Default, Serialize, Deserialize)]
218pub struct OpportunitySearchBodyDTO {
219 #[serde(rename = "locationId")]
222 pub location_id: String,
223 pub query: String,
226 pub limit: f64,
229 pub page: f64,
232 #[serde(rename = "searchAfter", default, skip_serializing_if = "Vec::is_empty")]
235 pub search_after: Vec<String>,
236 #[serde(rename = "additionalDetails")]
239 pub additional_details: AdditionalDetailsDTO,
240}
241
242#[derive(Debug, Clone, Default, Serialize, Deserialize)]
244pub struct PipelinesResponseSchema {
245 #[serde(default, skip_serializing_if = "Option::is_none")]
247 pub id: Option<String>,
248 #[serde(default, skip_serializing_if = "Option::is_none")]
250 pub name: Option<String>,
251 #[serde(default, skip_serializing_if = "Vec::is_empty")]
253 pub stages: Vec<Vec<serde_json::Value>>,
254 #[serde(
256 rename = "showInFunnel",
257 default,
258 skip_serializing_if = "Option::is_none"
259 )]
260 pub show_in_funnel: Option<bool>,
261 #[serde(
263 rename = "showInPieChart",
264 default,
265 skip_serializing_if = "Option::is_none"
266 )]
267 pub show_in_pie_chart: Option<bool>,
268 #[serde(
270 rename = "locationId",
271 default,
272 skip_serializing_if = "Option::is_none"
273 )]
274 pub location_id: Option<String>,
275 #[serde(
277 rename = "useOpportunityProbability",
278 default,
279 skip_serializing_if = "Option::is_none"
280 )]
281 pub use_opportunity_probability: Option<bool>,
282 #[serde(
285 rename = "colorRenderMode",
286 default,
287 skip_serializing_if = "Option::is_none"
288 )]
289 pub color_render_mode: Option<String>,
290}
291
292#[derive(Debug, Clone, Default, Serialize, Deserialize)]
294pub struct PostSearchSuccessfulResponseDto {
295 #[serde(default, skip_serializing_if = "Vec::is_empty")]
297 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
298 pub total: f64,
301 #[serde(
303 rename = "stageAggregations",
304 default,
305 skip_serializing_if = "Vec::is_empty"
306 )]
307 pub stage_aggregations: Vec<StageAggregationResponseDto>,
308 #[serde(default, skip_serializing_if = "Option::is_none")]
310 pub aggregations: Option<serde_json::Value>,
311}
312
313#[derive(Debug, Clone, Default, Serialize, Deserialize)]
315pub struct SearchMetaResponseSchema {
316 #[serde(default, skip_serializing_if = "Option::is_none")]
318 pub total: Option<f64>,
319 #[serde(
321 rename = "nextPageUrl",
322 default,
323 skip_serializing_if = "Option::is_none"
324 )]
325 pub next_page_url: Option<String>,
326 #[serde(
328 rename = "startAfterId",
329 default,
330 skip_serializing_if = "Option::is_none"
331 )]
332 pub start_after_id: Option<String>,
333 #[serde(
335 rename = "startAfter",
336 default,
337 skip_serializing_if = "Option::is_none"
338 )]
339 pub start_after: Option<f64>,
340 #[serde(
342 rename = "currentPage",
343 default,
344 skip_serializing_if = "Option::is_none"
345 )]
346 pub current_page: Option<f64>,
347 #[serde(rename = "nextPage", default, skip_serializing_if = "Option::is_none")]
349 pub next_page: Option<f64>,
350 #[serde(rename = "prevPage", default, skip_serializing_if = "Option::is_none")]
352 pub prev_page: Option<f64>,
353}
354
355#[derive(Debug, Clone, Default, Serialize, Deserialize)]
357pub struct SearchOpportunitiesContactResponseSchema {
358 #[serde(default, skip_serializing_if = "Option::is_none")]
360 pub id: Option<String>,
361 #[serde(default, skip_serializing_if = "Option::is_none")]
363 pub name: Option<String>,
364 #[serde(
366 rename = "companyName",
367 default,
368 skip_serializing_if = "Option::is_none"
369 )]
370 pub company_name: Option<String>,
371 #[serde(default, skip_serializing_if = "Option::is_none")]
373 pub email: Option<String>,
374 #[serde(default, skip_serializing_if = "Option::is_none")]
376 pub phone: Option<String>,
377 #[serde(default, skip_serializing_if = "Vec::is_empty")]
379 pub tags: Vec<String>,
380}
381
382#[derive(Debug, Clone, Default, Serialize, Deserialize)]
384pub struct SearchOpportunitiesResponseSchema {
385 #[serde(default, skip_serializing_if = "Option::is_none")]
387 pub id: Option<String>,
388 #[serde(default, skip_serializing_if = "Option::is_none")]
390 pub name: Option<String>,
391 #[serde(
393 rename = "monetaryValue",
394 default,
395 skip_serializing_if = "Option::is_none"
396 )]
397 pub monetary_value: Option<f64>,
398 #[serde(
400 rename = "pipelineId",
401 default,
402 skip_serializing_if = "Option::is_none"
403 )]
404 pub pipeline_id: Option<String>,
405 #[serde(
407 rename = "pipelineStageId",
408 default,
409 skip_serializing_if = "Option::is_none"
410 )]
411 pub pipeline_stage_id: Option<String>,
412 #[serde(
414 rename = "assignedTo",
415 default,
416 skip_serializing_if = "Option::is_none"
417 )]
418 pub assigned_to: Option<String>,
419 #[serde(default, skip_serializing_if = "Option::is_none")]
421 pub status: Option<String>,
422 #[serde(default, skip_serializing_if = "Option::is_none")]
424 pub source: Option<String>,
425 #[serde(
427 rename = "lastStatusChangeAt",
428 default,
429 skip_serializing_if = "Option::is_none"
430 )]
431 pub last_status_change_at: Option<String>,
432 #[serde(
434 rename = "lastStageChangeAt",
435 default,
436 skip_serializing_if = "Option::is_none"
437 )]
438 pub last_stage_change_at: Option<String>,
439 #[serde(
441 rename = "lastActionDate",
442 default,
443 skip_serializing_if = "Option::is_none"
444 )]
445 pub last_action_date: Option<String>,
446 #[serde(
448 rename = "indexVersion",
449 default,
450 skip_serializing_if = "Option::is_none"
451 )]
452 pub index_version: Option<String>,
453 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
455 pub created_at: Option<String>,
456 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
458 pub updated_at: Option<String>,
459 #[serde(
461 rename = "forecastExpectedCloseDate",
462 default,
463 skip_serializing_if = "Option::is_none"
464 )]
465 pub forecast_expected_close_date: Option<String>,
466 #[serde(
468 rename = "forecastOriginalCloseDate",
469 default,
470 skip_serializing_if = "Option::is_none"
471 )]
472 pub forecast_original_close_date: Option<String>,
473 #[serde(
475 rename = "forecastSlippageCount",
476 default,
477 skip_serializing_if = "Option::is_none"
478 )]
479 pub forecast_slippage_count: Option<f64>,
480 #[serde(
482 rename = "forecastDaysSlipped",
483 default,
484 skip_serializing_if = "Option::is_none"
485 )]
486 pub forecast_days_slipped: Option<f64>,
487 #[serde(
489 rename = "forecastLastSlippedAt",
490 default,
491 skip_serializing_if = "Option::is_none"
492 )]
493 pub forecast_last_slipped_at: Option<String>,
494 #[serde(
496 rename = "forecastProbability",
497 default,
498 skip_serializing_if = "Option::is_none"
499 )]
500 pub forecast_probability: Option<f64>,
501 #[serde(
503 rename = "effectiveProbability",
504 default,
505 skip_serializing_if = "Option::is_none"
506 )]
507 pub effective_probability: Option<f64>,
508 #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
510 pub contact_id: Option<String>,
511 #[serde(
513 rename = "locationId",
514 default,
515 skip_serializing_if = "Option::is_none"
516 )]
517 pub location_id: Option<String>,
518 #[serde(default, skip_serializing_if = "Option::is_none")]
520 pub contact: Option<SearchOpportunitiesContactResponseSchema>,
521 #[serde(default, skip_serializing_if = "Vec::is_empty")]
523 pub notes: Vec<Vec<serde_json::Value>>,
524 #[serde(default, skip_serializing_if = "Vec::is_empty")]
526 pub tasks: Vec<Vec<serde_json::Value>>,
527 #[serde(
529 rename = "calendarEvents",
530 default,
531 skip_serializing_if = "Vec::is_empty"
532 )]
533 pub calendar_events: Vec<Vec<serde_json::Value>>,
534 #[serde(
536 rename = "lostReasonId",
537 default,
538 skip_serializing_if = "Option::is_none"
539 )]
540 pub lost_reason_id: Option<String>,
541 #[serde(
543 rename = "customFields",
544 default,
545 skip_serializing_if = "Vec::is_empty"
546 )]
547 pub custom_fields: Vec<CustomFieldResponseSchema>,
548 #[serde(default, skip_serializing_if = "Vec::is_empty")]
550 pub followers: Vec<Vec<serde_json::Value>>,
551 #[serde(
553 rename = "externalObjectId",
554 default,
555 skip_serializing_if = "Option::is_none"
556 )]
557 pub external_object_id: Option<String>,
558}
559
560#[derive(Debug, Clone, Default, Serialize, Deserialize)]
562pub struct SearchSuccessfulResponseDto {
563 #[serde(default, skip_serializing_if = "Vec::is_empty")]
565 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
566 #[serde(default, skip_serializing_if = "Option::is_none")]
568 pub meta: Option<SearchMetaResponseSchema>,
569 #[serde(default, skip_serializing_if = "Option::is_none")]
571 pub aggregations: Option<serde_json::Value>,
572}
573
574#[derive(Debug, Clone, Default, Serialize, Deserialize)]
576pub struct StageAggregationResponseDto {
577 #[serde(rename = "pipelineStageId")]
580 pub pipeline_stage_id: String,
581 #[serde(rename = "totalCount")]
584 pub total_count: f64,
585 #[serde(rename = "totalValue")]
588 pub total_value: f64,
589 #[serde(rename = "weightedValue")]
592 pub weighted_value: f64,
593 #[serde(rename = "openValue")]
596 pub open_value: f64,
597 #[serde(rename = "openWeightedValue")]
600 pub open_weighted_value: f64,
601 #[serde(rename = "wonValue")]
604 pub won_value: f64,
605}
606
607#[derive(Debug, Clone, Default, Serialize, Deserialize)]
609pub struct UpdateOpportunityDtoV3 {
610 #[serde(
612 rename = "pipelineId",
613 default,
614 skip_serializing_if = "Option::is_none"
615 )]
616 pub pipeline_id: Option<String>,
617 #[serde(default, skip_serializing_if = "Option::is_none")]
619 pub name: Option<String>,
620 #[serde(
622 rename = "pipelineStageId",
623 default,
624 skip_serializing_if = "Option::is_none"
625 )]
626 pub pipeline_stage_id: Option<String>,
627 #[serde(default, skip_serializing_if = "Option::is_none")]
630 pub status: Option<String>,
631 #[serde(
633 rename = "monetaryValue",
634 default,
635 skip_serializing_if = "Option::is_none"
636 )]
637 pub monetary_value: Option<f64>,
638 #[serde(
641 rename = "forecastExpectedCloseDate",
642 default,
643 skip_serializing_if = "Option::is_none"
644 )]
645 pub forecast_expected_close_date: Option<String>,
646 #[serde(
648 rename = "forecastProbability",
649 default,
650 skip_serializing_if = "Option::is_none"
651 )]
652 pub forecast_probability: Option<f64>,
653 #[serde(
655 rename = "assignedTo",
656 default,
657 skip_serializing_if = "Option::is_none"
658 )]
659 pub assigned_to: Option<String>,
660 #[serde(
663 rename = "customFields",
664 default,
665 skip_serializing_if = "Vec::is_empty"
666 )]
667 pub custom_fields: Vec<serde_json::Value>,
668}
669
670#[derive(Debug, Clone, Default, Serialize, Deserialize)]
672pub struct UpdateStatusDto {
673 pub status: String,
677 #[serde(
679 rename = "lostReasonId",
680 default,
681 skip_serializing_if = "Option::is_none"
682 )]
683 pub lost_reason_id: Option<String>,
684}
685
686#[derive(Debug, Clone, Default, Serialize, Deserialize)]
688pub struct UpsertOpportunityDto {
689 #[serde(default, skip_serializing_if = "Option::is_none")]
691 pub id: Option<String>,
692 #[serde(rename = "pipelineId")]
695 pub pipeline_id: String,
696 #[serde(rename = "locationId")]
699 pub location_id: String,
700 #[serde(default, skip_serializing_if = "Vec::is_empty")]
703 pub followers: Vec<String>,
704 #[serde(rename = "isRemoveAllFollowers")]
707 pub is_remove_all_followers: bool,
708 #[serde(rename = "followersActionType")]
712 pub followers_action_type: String,
713 #[serde(default, skip_serializing_if = "Option::is_none")]
715 pub name: Option<String>,
716 #[serde(default, skip_serializing_if = "Option::is_none")]
719 pub status: Option<String>,
720 #[serde(
722 rename = "pipelineStageId",
723 default,
724 skip_serializing_if = "Option::is_none"
725 )]
726 pub pipeline_stage_id: Option<String>,
727 #[serde(
729 rename = "monetaryValue",
730 default,
731 skip_serializing_if = "Option::is_none"
732 )]
733 pub monetary_value: Option<serde_json::Value>,
734 #[serde(
737 rename = "forecastExpectedCloseDate",
738 default,
739 skip_serializing_if = "Option::is_none"
740 )]
741 pub forecast_expected_close_date: Option<String>,
742 #[serde(
744 rename = "forecastProbability",
745 default,
746 skip_serializing_if = "Option::is_none"
747 )]
748 pub forecast_probability: Option<f64>,
749 #[serde(
751 rename = "assignedTo",
752 default,
753 skip_serializing_if = "Option::is_none"
754 )]
755 pub assigned_to: Option<String>,
756 #[serde(
758 rename = "lostReasonId",
759 default,
760 skip_serializing_if = "Option::is_none"
761 )]
762 pub lost_reason_id: Option<String>,
763}
764
765#[derive(Debug, Clone, Default, Serialize, Deserialize)]
767pub struct UpsertOpportunitySuccessfulResponseDto {
768 pub opportunity: serde_json::Value,
771 pub new: bool,
774}
775
776#[derive(Debug, Clone, Default, Serialize, Deserialize)]
778pub struct CustomFieldsInputArraySchemaV3 {
779 pub id: String,
782 #[serde(default, skip_serializing_if = "Option::is_none")]
784 pub key: Option<String>,
785 #[serde(rename = "fieldValue", default, skip_serializing_if = "Vec::is_empty")]
787 pub field_value: Vec<String>,
788}
789
790#[derive(Debug, Clone, Default, Serialize, Deserialize)]
792pub struct CustomFieldsInputObjectSchemaV3 {
793 pub id: String,
796 #[serde(default, skip_serializing_if = "Option::is_none")]
798 pub key: Option<String>,
799 #[serde(
801 rename = "fieldValue",
802 default,
803 skip_serializing_if = "Option::is_none"
804 )]
805 pub field_value: Option<serde_json::Value>,
806}
807
808#[derive(Debug, Clone, Default, Serialize, Deserialize)]
810pub struct CustomFieldsInputStringSchemaV3 {
811 #[serde(default, skip_serializing_if = "Option::is_none")]
813 pub id: Option<String>,
814 #[serde(default, skip_serializing_if = "Option::is_none")]
816 pub key: Option<String>,
817 #[serde(
819 rename = "fieldValue",
820 default,
821 skip_serializing_if = "Option::is_none"
822 )]
823 pub field_value: Option<String>,
824}