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 pub id: String,
129 #[serde(rename = "fieldValue")]
133 pub field_value: serde_json::Value,
134}
135
136#[derive(Debug, Clone, Default, Serialize, Deserialize)]
138pub struct DeleteFollowersSuccessfulResponseDto {
139 #[serde(default, skip_serializing_if = "Vec::is_empty")]
141 pub followers: Vec<String>,
142 #[serde(
144 rename = "followersRemoved",
145 default,
146 skip_serializing_if = "Vec::is_empty"
147 )]
148 pub followers_removed: Vec<String>,
149}
150
151#[derive(Debug, Clone, Default, Serialize, Deserialize)]
153pub struct DeleteUpdateOpportunitySuccessfulResponseDto {
154 #[serde(default, skip_serializing_if = "Option::is_none")]
156 pub succeded: Option<bool>,
157 #[serde(default, skip_serializing_if = "Option::is_none")]
159 pub success: Option<bool>,
160}
161
162#[derive(Debug, Clone, Default, Serialize, Deserialize)]
164pub struct FollowersDTO {
165 #[serde(default, skip_serializing_if = "Vec::is_empty")]
168 pub followers: Vec<String>,
169}
170
171#[derive(Debug, Clone, Default, Serialize, Deserialize)]
173pub struct GetPipelinesSuccessfulResponseDto {
174 #[serde(default, skip_serializing_if = "Vec::is_empty")]
176 pub pipelines: Vec<PipelinesResponseSchema>,
177}
178
179#[derive(Debug, Clone, Default, Serialize, Deserialize)]
181pub struct GetPostOpportunitySuccessfulResponseDto {
182 #[serde(default, skip_serializing_if = "Option::is_none")]
184 pub opportunity: Option<SearchOpportunitiesResponseSchema>,
185}
186
187#[derive(Debug, Clone, Default, Serialize, Deserialize)]
189pub struct LostReasonResponseSchema {
190 #[serde(default, skip_serializing_if = "Option::is_none")]
192 pub id: Option<String>,
193 #[serde(default, skip_serializing_if = "Option::is_none")]
195 pub name: Option<String>,
196 #[serde(
198 rename = "locationId",
199 default,
200 skip_serializing_if = "Option::is_none"
201 )]
202 pub location_id: Option<String>,
203 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
206 pub updated_at: Option<String>,
207 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
210 pub created_at: Option<String>,
211}
212
213#[derive(Debug, Clone, Default, Serialize, Deserialize)]
215pub struct LostReasonsResponseSchema {
216 #[serde(rename = "lostReasons", default, skip_serializing_if = "Vec::is_empty")]
218 pub lost_reasons: Vec<LostReasonResponseSchema>,
219 #[serde(default, skip_serializing_if = "Option::is_none")]
221 pub total: Option<f64>,
222}
223
224#[derive(Debug, Clone, Default, Serialize, Deserialize)]
226pub struct OpportunitySearchBodyDTO {
227 #[serde(rename = "locationId")]
230 pub location_id: String,
231 pub query: String,
234 pub limit: f64,
237 pub page: f64,
240 #[serde(rename = "searchAfter", default, skip_serializing_if = "Vec::is_empty")]
243 pub search_after: Vec<String>,
244 #[serde(rename = "additionalDetails")]
247 pub additional_details: AdditionalDetailsDTO,
248}
249
250#[derive(Debug, Clone, Default, Serialize, Deserialize)]
252pub struct PipelinesResponseSchema {
253 #[serde(default, skip_serializing_if = "Option::is_none")]
255 pub id: Option<String>,
256 #[serde(default, skip_serializing_if = "Option::is_none")]
258 pub name: Option<String>,
259 #[serde(default, skip_serializing_if = "Vec::is_empty")]
261 pub stages: Vec<Vec<serde_json::Value>>,
262 #[serde(
264 rename = "showInFunnel",
265 default,
266 skip_serializing_if = "Option::is_none"
267 )]
268 pub show_in_funnel: Option<bool>,
269 #[serde(
271 rename = "showInPieChart",
272 default,
273 skip_serializing_if = "Option::is_none"
274 )]
275 pub show_in_pie_chart: Option<bool>,
276 #[serde(
278 rename = "locationId",
279 default,
280 skip_serializing_if = "Option::is_none"
281 )]
282 pub location_id: Option<String>,
283 #[serde(
285 rename = "useOpportunityProbability",
286 default,
287 skip_serializing_if = "Option::is_none"
288 )]
289 pub use_opportunity_probability: Option<bool>,
290 #[serde(
293 rename = "colorRenderMode",
294 default,
295 skip_serializing_if = "Option::is_none"
296 )]
297 pub color_render_mode: Option<String>,
298}
299
300#[derive(Debug, Clone, Default, Serialize, Deserialize)]
302pub struct PostSearchSuccessfulResponseDto {
303 #[serde(default, skip_serializing_if = "Vec::is_empty")]
305 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
306 pub total: f64,
309 #[serde(
311 rename = "stageAggregations",
312 default,
313 skip_serializing_if = "Vec::is_empty"
314 )]
315 pub stage_aggregations: Vec<StageAggregationResponseDto>,
316 #[serde(default, skip_serializing_if = "Option::is_none")]
318 pub aggregations: Option<serde_json::Value>,
319}
320
321#[derive(Debug, Clone, Default, Serialize, Deserialize)]
323pub struct SearchMetaResponseSchema {
324 #[serde(default, skip_serializing_if = "Option::is_none")]
326 pub total: Option<f64>,
327 #[serde(
329 rename = "nextPageUrl",
330 default,
331 skip_serializing_if = "Option::is_none"
332 )]
333 pub next_page_url: Option<String>,
334 #[serde(
336 rename = "startAfterId",
337 default,
338 skip_serializing_if = "Option::is_none"
339 )]
340 pub start_after_id: Option<String>,
341 #[serde(
343 rename = "startAfter",
344 default,
345 skip_serializing_if = "Option::is_none"
346 )]
347 pub start_after: Option<f64>,
348 #[serde(
350 rename = "currentPage",
351 default,
352 skip_serializing_if = "Option::is_none"
353 )]
354 pub current_page: Option<f64>,
355 #[serde(rename = "nextPage", default, skip_serializing_if = "Option::is_none")]
357 pub next_page: Option<f64>,
358 #[serde(rename = "prevPage", default, skip_serializing_if = "Option::is_none")]
360 pub prev_page: Option<f64>,
361}
362
363#[derive(Debug, Clone, Default, Serialize, Deserialize)]
365pub struct SearchOpportunitiesContactResponseSchema {
366 #[serde(default, skip_serializing_if = "Option::is_none")]
368 pub id: Option<String>,
369 #[serde(default, skip_serializing_if = "Option::is_none")]
371 pub name: Option<String>,
372 #[serde(
374 rename = "companyName",
375 default,
376 skip_serializing_if = "Option::is_none"
377 )]
378 pub company_name: Option<String>,
379 #[serde(default, skip_serializing_if = "Option::is_none")]
381 pub email: Option<String>,
382 #[serde(default, skip_serializing_if = "Option::is_none")]
384 pub phone: Option<String>,
385 #[serde(default, skip_serializing_if = "Vec::is_empty")]
387 pub tags: Vec<String>,
388}
389
390#[derive(Debug, Clone, Default, Serialize, Deserialize)]
392pub struct SearchOpportunitiesResponseSchema {
393 #[serde(default, skip_serializing_if = "Option::is_none")]
395 pub id: Option<String>,
396 #[serde(default, skip_serializing_if = "Option::is_none")]
398 pub name: Option<String>,
399 #[serde(
401 rename = "monetaryValue",
402 default,
403 skip_serializing_if = "Option::is_none"
404 )]
405 pub monetary_value: Option<f64>,
406 #[serde(
408 rename = "pipelineId",
409 default,
410 skip_serializing_if = "Option::is_none"
411 )]
412 pub pipeline_id: Option<String>,
413 #[serde(
415 rename = "pipelineStageId",
416 default,
417 skip_serializing_if = "Option::is_none"
418 )]
419 pub pipeline_stage_id: Option<String>,
420 #[serde(
422 rename = "assignedTo",
423 default,
424 skip_serializing_if = "Option::is_none"
425 )]
426 pub assigned_to: Option<String>,
427 #[serde(default, skip_serializing_if = "Option::is_none")]
429 pub status: Option<String>,
430 #[serde(default, skip_serializing_if = "Option::is_none")]
432 pub source: Option<String>,
433 #[serde(
435 rename = "lastStatusChangeAt",
436 default,
437 skip_serializing_if = "Option::is_none"
438 )]
439 pub last_status_change_at: Option<String>,
440 #[serde(
442 rename = "lastStageChangeAt",
443 default,
444 skip_serializing_if = "Option::is_none"
445 )]
446 pub last_stage_change_at: Option<String>,
447 #[serde(
449 rename = "lastActionDate",
450 default,
451 skip_serializing_if = "Option::is_none"
452 )]
453 pub last_action_date: Option<String>,
454 #[serde(
456 rename = "indexVersion",
457 default,
458 skip_serializing_if = "Option::is_none"
459 )]
460 pub index_version: Option<String>,
461 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
463 pub created_at: Option<String>,
464 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
466 pub updated_at: Option<String>,
467 #[serde(
469 rename = "forecastExpectedCloseDate",
470 default,
471 skip_serializing_if = "Option::is_none"
472 )]
473 pub forecast_expected_close_date: Option<String>,
474 #[serde(
476 rename = "forecastOriginalCloseDate",
477 default,
478 skip_serializing_if = "Option::is_none"
479 )]
480 pub forecast_original_close_date: Option<String>,
481 #[serde(
483 rename = "forecastSlippageCount",
484 default,
485 skip_serializing_if = "Option::is_none"
486 )]
487 pub forecast_slippage_count: Option<f64>,
488 #[serde(
490 rename = "forecastDaysSlipped",
491 default,
492 skip_serializing_if = "Option::is_none"
493 )]
494 pub forecast_days_slipped: Option<f64>,
495 #[serde(
497 rename = "forecastLastSlippedAt",
498 default,
499 skip_serializing_if = "Option::is_none"
500 )]
501 pub forecast_last_slipped_at: Option<String>,
502 #[serde(
504 rename = "forecastProbability",
505 default,
506 skip_serializing_if = "Option::is_none"
507 )]
508 pub forecast_probability: Option<f64>,
509 #[serde(
511 rename = "effectiveProbability",
512 default,
513 skip_serializing_if = "Option::is_none"
514 )]
515 pub effective_probability: Option<f64>,
516 #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
518 pub contact_id: Option<String>,
519 #[serde(
521 rename = "locationId",
522 default,
523 skip_serializing_if = "Option::is_none"
524 )]
525 pub location_id: Option<String>,
526 #[serde(default, skip_serializing_if = "Option::is_none")]
528 pub contact: Option<SearchOpportunitiesContactResponseSchema>,
529 #[serde(default, skip_serializing_if = "Vec::is_empty")]
531 pub notes: Vec<Vec<serde_json::Value>>,
532 #[serde(default, skip_serializing_if = "Vec::is_empty")]
534 pub tasks: Vec<Vec<serde_json::Value>>,
535 #[serde(
537 rename = "calendarEvents",
538 default,
539 skip_serializing_if = "Vec::is_empty"
540 )]
541 pub calendar_events: Vec<Vec<serde_json::Value>>,
542 #[serde(
544 rename = "lostReasonId",
545 default,
546 skip_serializing_if = "Option::is_none"
547 )]
548 pub lost_reason_id: Option<String>,
549 #[serde(
551 rename = "customFields",
552 default,
553 skip_serializing_if = "Vec::is_empty"
554 )]
555 pub custom_fields: Vec<CustomFieldResponseSchema>,
556 #[serde(default, skip_serializing_if = "Vec::is_empty")]
558 pub followers: Vec<Vec<serde_json::Value>>,
559 #[serde(
561 rename = "externalObjectId",
562 default,
563 skip_serializing_if = "Option::is_none"
564 )]
565 pub external_object_id: Option<String>,
566}
567
568#[derive(Debug, Clone, Default, Serialize, Deserialize)]
570pub struct SearchSuccessfulResponseDto {
571 #[serde(default, skip_serializing_if = "Vec::is_empty")]
573 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
574 #[serde(default, skip_serializing_if = "Option::is_none")]
576 pub meta: Option<SearchMetaResponseSchema>,
577 #[serde(default, skip_serializing_if = "Option::is_none")]
579 pub aggregations: Option<serde_json::Value>,
580}
581
582#[derive(Debug, Clone, Default, Serialize, Deserialize)]
584pub struct StageAggregationResponseDto {
585 #[serde(rename = "pipelineStageId")]
588 pub pipeline_stage_id: String,
589 #[serde(rename = "totalCount")]
592 pub total_count: f64,
593 #[serde(rename = "totalValue")]
596 pub total_value: f64,
597 #[serde(rename = "weightedValue")]
600 pub weighted_value: f64,
601 #[serde(rename = "openValue")]
604 pub open_value: f64,
605 #[serde(rename = "openWeightedValue")]
608 pub open_weighted_value: f64,
609 #[serde(rename = "wonValue")]
612 pub won_value: f64,
613}
614
615#[derive(Debug, Clone, Default, Serialize, Deserialize)]
617pub struct UpdateOpportunityDtoV3 {
618 #[serde(
620 rename = "pipelineId",
621 default,
622 skip_serializing_if = "Option::is_none"
623 )]
624 pub pipeline_id: Option<String>,
625 #[serde(default, skip_serializing_if = "Option::is_none")]
627 pub name: Option<String>,
628 #[serde(
630 rename = "pipelineStageId",
631 default,
632 skip_serializing_if = "Option::is_none"
633 )]
634 pub pipeline_stage_id: Option<String>,
635 #[serde(default, skip_serializing_if = "Option::is_none")]
638 pub status: Option<String>,
639 #[serde(
641 rename = "monetaryValue",
642 default,
643 skip_serializing_if = "Option::is_none"
644 )]
645 pub monetary_value: Option<f64>,
646 #[serde(
649 rename = "forecastExpectedCloseDate",
650 default,
651 skip_serializing_if = "Option::is_none"
652 )]
653 pub forecast_expected_close_date: Option<String>,
654 #[serde(
656 rename = "forecastProbability",
657 default,
658 skip_serializing_if = "Option::is_none"
659 )]
660 pub forecast_probability: Option<f64>,
661 #[serde(
663 rename = "assignedTo",
664 default,
665 skip_serializing_if = "Option::is_none"
666 )]
667 pub assigned_to: Option<String>,
668 #[serde(
671 rename = "customFields",
672 default,
673 skip_serializing_if = "Vec::is_empty"
674 )]
675 pub custom_fields: Vec<serde_json::Value>,
676}
677
678#[derive(Debug, Clone, Default, Serialize, Deserialize)]
680pub struct UpdateStatusDto {
681 pub status: String,
685 #[serde(
687 rename = "lostReasonId",
688 default,
689 skip_serializing_if = "Option::is_none"
690 )]
691 pub lost_reason_id: Option<String>,
692}
693
694#[derive(Debug, Clone, Default, Serialize, Deserialize)]
696pub struct UpsertOpportunityDto {
697 #[serde(default, skip_serializing_if = "Option::is_none")]
699 pub id: Option<String>,
700 #[serde(rename = "pipelineId")]
703 pub pipeline_id: String,
704 #[serde(rename = "locationId")]
707 pub location_id: String,
708 #[serde(default, skip_serializing_if = "Vec::is_empty")]
711 pub followers: Vec<String>,
712 #[serde(rename = "isRemoveAllFollowers")]
715 pub is_remove_all_followers: bool,
716 #[serde(rename = "followersActionType")]
720 pub followers_action_type: String,
721 #[serde(default, skip_serializing_if = "Option::is_none")]
723 pub name: Option<String>,
724 #[serde(default, skip_serializing_if = "Option::is_none")]
727 pub status: Option<String>,
728 #[serde(
730 rename = "pipelineStageId",
731 default,
732 skip_serializing_if = "Option::is_none"
733 )]
734 pub pipeline_stage_id: Option<String>,
735 #[serde(
737 rename = "monetaryValue",
738 default,
739 skip_serializing_if = "Option::is_none"
740 )]
741 pub monetary_value: Option<serde_json::Value>,
742 #[serde(
745 rename = "forecastExpectedCloseDate",
746 default,
747 skip_serializing_if = "Option::is_none"
748 )]
749 pub forecast_expected_close_date: Option<String>,
750 #[serde(
752 rename = "forecastProbability",
753 default,
754 skip_serializing_if = "Option::is_none"
755 )]
756 pub forecast_probability: Option<f64>,
757 #[serde(
759 rename = "assignedTo",
760 default,
761 skip_serializing_if = "Option::is_none"
762 )]
763 pub assigned_to: Option<String>,
764 #[serde(
766 rename = "lostReasonId",
767 default,
768 skip_serializing_if = "Option::is_none"
769 )]
770 pub lost_reason_id: Option<String>,
771}
772
773#[derive(Debug, Clone, Default, Serialize, Deserialize)]
775pub struct UpsertOpportunitySuccessfulResponseDto {
776 pub opportunity: serde_json::Value,
779 pub new: bool,
782}
783
784#[derive(Debug, Clone, Default, Serialize, Deserialize)]
786pub struct CustomFieldsInputArraySchemaV3 {
787 pub id: String,
790 #[serde(default, skip_serializing_if = "Option::is_none")]
792 pub key: Option<String>,
793 #[serde(rename = "fieldValue", default, skip_serializing_if = "Vec::is_empty")]
795 pub field_value: Vec<String>,
796}
797
798#[derive(Debug, Clone, Default, Serialize, Deserialize)]
800pub struct CustomFieldsInputObjectSchemaV3 {
801 pub id: String,
804 #[serde(default, skip_serializing_if = "Option::is_none")]
806 pub key: Option<String>,
807 #[serde(
809 rename = "fieldValue",
810 default,
811 skip_serializing_if = "Option::is_none"
812 )]
813 pub field_value: Option<serde_json::Value>,
814}
815
816#[derive(Debug, Clone, Default, Serialize, Deserialize)]
818pub struct CustomFieldsInputStringSchemaV3 {
819 #[serde(default, skip_serializing_if = "Option::is_none")]
821 pub id: Option<String>,
822 #[serde(default, skip_serializing_if = "Option::is_none")]
824 pub key: Option<String>,
825 #[serde(
827 rename = "fieldValue",
828 default,
829 skip_serializing_if = "Option::is_none"
830 )]
831 pub field_value: Option<String>,
832}