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 pub id: String,
100 #[serde(rename = "fieldValue")]
104 pub field_value: serde_json::Value,
105}
106
107#[derive(Debug, Clone, Default, Serialize, Deserialize)]
109pub struct DeleteFollowersSuccessfulResponseDto {
110 #[serde(default, skip_serializing_if = "Vec::is_empty")]
111 pub followers: Vec<String>,
112 #[serde(
113 rename = "followersRemoved",
114 default,
115 skip_serializing_if = "Vec::is_empty"
116 )]
117 pub followers_removed: Vec<String>,
118}
119
120#[derive(Debug, Clone, Default, Serialize, Deserialize)]
122pub struct DeleteUpdateOpportunitySuccessfulResponseDto {
123 #[serde(default, skip_serializing_if = "Option::is_none")]
124 pub succeded: Option<bool>,
125}
126
127#[derive(Debug, Clone, Default, Serialize, Deserialize)]
129pub struct FollowersDTO {
130 #[serde(default, skip_serializing_if = "Vec::is_empty")]
132 pub followers: Vec<String>,
133}
134
135#[derive(Debug, Clone, Default, Serialize, Deserialize)]
137pub struct GetPipelinesSuccessfulResponseDto {
138 #[serde(default, skip_serializing_if = "Vec::is_empty")]
139 pub pipelines: Vec<PipelinesResponseSchema>,
140}
141
142#[derive(Debug, Clone, Default, Serialize, Deserialize)]
144pub struct GetPostOpportunitySuccessfulResponseDto {
145 #[serde(default, skip_serializing_if = "Option::is_none")]
146 pub opportunity: Option<SearchOpportunitiesResponseSchema>,
147}
148
149#[derive(Debug, Clone, Default, Serialize, Deserialize)]
151pub struct LostReasonResponseSchema {
152 #[serde(default, skip_serializing_if = "Option::is_none")]
154 pub id: Option<String>,
155 #[serde(default, skip_serializing_if = "Option::is_none")]
157 pub name: Option<String>,
158 #[serde(
160 rename = "locationId",
161 default,
162 skip_serializing_if = "Option::is_none"
163 )]
164 pub location_id: Option<String>,
165 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
168 pub updated_at: Option<String>,
169 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
172 pub created_at: Option<String>,
173}
174
175#[derive(Debug, Clone, Default, Serialize, Deserialize)]
177pub struct LostReasonsResponseSchema {
178 #[serde(rename = "lostReasons", default, skip_serializing_if = "Vec::is_empty")]
179 pub lost_reasons: Vec<LostReasonResponseSchema>,
180 #[serde(default, skip_serializing_if = "Option::is_none")]
181 pub total: Option<f64>,
182}
183
184#[derive(Debug, Clone, Default, Serialize, Deserialize)]
186pub struct OpportunitySearchBodyDTO {
187 #[serde(rename = "locationId")]
190 pub location_id: String,
191 pub query: String,
193 pub limit: f64,
195 pub page: f64,
197 #[serde(rename = "searchAfter", default, skip_serializing_if = "Vec::is_empty")]
199 pub search_after: Vec<String>,
200 #[serde(rename = "additionalDetails")]
202 pub additional_details: AdditionalDetailsDTO,
203}
204
205#[derive(Debug, Clone, Default, Serialize, Deserialize)]
207pub struct PipelinesResponseSchema {
208 #[serde(default, skip_serializing_if = "Option::is_none")]
209 pub id: Option<String>,
210 #[serde(default, skip_serializing_if = "Option::is_none")]
211 pub name: Option<String>,
212 #[serde(default, skip_serializing_if = "Vec::is_empty")]
213 pub stages: Vec<Vec<serde_json::Value>>,
214 #[serde(
215 rename = "showInFunnel",
216 default,
217 skip_serializing_if = "Option::is_none"
218 )]
219 pub show_in_funnel: Option<bool>,
220 #[serde(
221 rename = "showInPieChart",
222 default,
223 skip_serializing_if = "Option::is_none"
224 )]
225 pub show_in_pie_chart: Option<bool>,
226 #[serde(
227 rename = "locationId",
228 default,
229 skip_serializing_if = "Option::is_none"
230 )]
231 pub location_id: Option<String>,
232 #[serde(
235 rename = "colorRenderMode",
236 default,
237 skip_serializing_if = "Option::is_none"
238 )]
239 pub color_render_mode: Option<String>,
240}
241
242#[derive(Debug, Clone, Default, Serialize, Deserialize)]
244pub struct PostSearchSuccessfulResponseDto {
245 #[serde(default, skip_serializing_if = "Vec::is_empty")]
246 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
247 pub total: f64,
249 #[serde(default, skip_serializing_if = "Option::is_none")]
250 pub aggregations: Option<serde_json::Value>,
251}
252
253#[derive(Debug, Clone, Default, Serialize, Deserialize)]
255pub struct SearchMetaResponseSchema {
256 #[serde(default, skip_serializing_if = "Option::is_none")]
257 pub total: Option<f64>,
258 #[serde(
259 rename = "nextPageUrl",
260 default,
261 skip_serializing_if = "Option::is_none"
262 )]
263 pub next_page_url: Option<String>,
264 #[serde(
265 rename = "startAfterId",
266 default,
267 skip_serializing_if = "Option::is_none"
268 )]
269 pub start_after_id: Option<String>,
270 #[serde(
271 rename = "startAfter",
272 default,
273 skip_serializing_if = "Option::is_none"
274 )]
275 pub start_after: Option<f64>,
276 #[serde(
277 rename = "currentPage",
278 default,
279 skip_serializing_if = "Option::is_none"
280 )]
281 pub current_page: Option<f64>,
282 #[serde(rename = "nextPage", default, skip_serializing_if = "Option::is_none")]
283 pub next_page: Option<f64>,
284 #[serde(rename = "prevPage", default, skip_serializing_if = "Option::is_none")]
285 pub prev_page: Option<f64>,
286}
287
288#[derive(Debug, Clone, Default, Serialize, Deserialize)]
290pub struct SearchOpportunitiesContactResponseSchema {
291 #[serde(default, skip_serializing_if = "Option::is_none")]
292 pub id: Option<String>,
293 #[serde(default, skip_serializing_if = "Option::is_none")]
294 pub name: Option<String>,
295 #[serde(
296 rename = "companyName",
297 default,
298 skip_serializing_if = "Option::is_none"
299 )]
300 pub company_name: Option<String>,
301 #[serde(default, skip_serializing_if = "Option::is_none")]
302 pub email: Option<String>,
303 #[serde(default, skip_serializing_if = "Option::is_none")]
304 pub phone: Option<String>,
305 #[serde(default, skip_serializing_if = "Vec::is_empty")]
306 pub tags: Vec<String>,
307}
308
309#[derive(Debug, Clone, Default, Serialize, Deserialize)]
311pub struct SearchOpportunitiesResponseSchema {
312 #[serde(default, skip_serializing_if = "Option::is_none")]
313 pub id: Option<String>,
314 #[serde(default, skip_serializing_if = "Option::is_none")]
315 pub name: Option<String>,
316 #[serde(
317 rename = "monetaryValue",
318 default,
319 skip_serializing_if = "Option::is_none"
320 )]
321 pub monetary_value: Option<f64>,
322 #[serde(
323 rename = "pipelineId",
324 default,
325 skip_serializing_if = "Option::is_none"
326 )]
327 pub pipeline_id: Option<String>,
328 #[serde(
329 rename = "pipelineStageId",
330 default,
331 skip_serializing_if = "Option::is_none"
332 )]
333 pub pipeline_stage_id: Option<String>,
334 #[serde(
335 rename = "assignedTo",
336 default,
337 skip_serializing_if = "Option::is_none"
338 )]
339 pub assigned_to: Option<String>,
340 #[serde(default, skip_serializing_if = "Option::is_none")]
341 pub status: Option<String>,
342 #[serde(default, skip_serializing_if = "Option::is_none")]
343 pub source: Option<String>,
344 #[serde(
345 rename = "lastStatusChangeAt",
346 default,
347 skip_serializing_if = "Option::is_none"
348 )]
349 pub last_status_change_at: Option<String>,
350 #[serde(
351 rename = "lastStageChangeAt",
352 default,
353 skip_serializing_if = "Option::is_none"
354 )]
355 pub last_stage_change_at: Option<String>,
356 #[serde(
357 rename = "lastActionDate",
358 default,
359 skip_serializing_if = "Option::is_none"
360 )]
361 pub last_action_date: Option<String>,
362 #[serde(
363 rename = "indexVersion",
364 default,
365 skip_serializing_if = "Option::is_none"
366 )]
367 pub index_version: Option<String>,
368 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
369 pub created_at: Option<String>,
370 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
371 pub updated_at: Option<String>,
372 #[serde(rename = "contactId", default, skip_serializing_if = "Option::is_none")]
373 pub contact_id: Option<String>,
374 #[serde(
375 rename = "locationId",
376 default,
377 skip_serializing_if = "Option::is_none"
378 )]
379 pub location_id: Option<String>,
380 #[serde(default, skip_serializing_if = "Option::is_none")]
381 pub contact: Option<SearchOpportunitiesContactResponseSchema>,
382 #[serde(default, skip_serializing_if = "Vec::is_empty")]
383 pub notes: Vec<Vec<serde_json::Value>>,
384 #[serde(default, skip_serializing_if = "Vec::is_empty")]
385 pub tasks: Vec<Vec<serde_json::Value>>,
386 #[serde(
387 rename = "calendarEvents",
388 default,
389 skip_serializing_if = "Vec::is_empty"
390 )]
391 pub calendar_events: Vec<Vec<serde_json::Value>>,
392 #[serde(
393 rename = "lostReasonId",
394 default,
395 skip_serializing_if = "Option::is_none"
396 )]
397 pub lost_reason_id: Option<String>,
398 #[serde(
399 rename = "customFields",
400 default,
401 skip_serializing_if = "Vec::is_empty"
402 )]
403 pub custom_fields: Vec<CustomFieldResponseSchema>,
404 #[serde(default, skip_serializing_if = "Vec::is_empty")]
405 pub followers: Vec<Vec<serde_json::Value>>,
406 #[serde(
407 rename = "externalObjectId",
408 default,
409 skip_serializing_if = "Option::is_none"
410 )]
411 pub external_object_id: Option<String>,
412}
413
414#[derive(Debug, Clone, Default, Serialize, Deserialize)]
416pub struct SearchSuccessfulResponseDto {
417 #[serde(default, skip_serializing_if = "Vec::is_empty")]
418 pub opportunities: Vec<SearchOpportunitiesResponseSchema>,
419 #[serde(default, skip_serializing_if = "Option::is_none")]
420 pub meta: Option<SearchMetaResponseSchema>,
421 #[serde(default, skip_serializing_if = "Option::is_none")]
422 pub aggregations: Option<serde_json::Value>,
423}
424
425#[derive(Debug, Clone, Default, Serialize, Deserialize)]
427pub struct UpdateOpportunityDto {
428 #[serde(
430 rename = "pipelineId",
431 default,
432 skip_serializing_if = "Option::is_none"
433 )]
434 pub pipeline_id: Option<String>,
435 #[serde(default, skip_serializing_if = "Option::is_none")]
436 pub name: Option<String>,
437 #[serde(
438 rename = "pipelineStageId",
439 default,
440 skip_serializing_if = "Option::is_none"
441 )]
442 pub pipeline_stage_id: Option<String>,
443 #[serde(default, skip_serializing_if = "Option::is_none")]
445 pub status: Option<String>,
446 #[serde(
447 rename = "monetaryValue",
448 default,
449 skip_serializing_if = "Option::is_none"
450 )]
451 pub monetary_value: Option<f64>,
452 #[serde(
453 rename = "assignedTo",
454 default,
455 skip_serializing_if = "Option::is_none"
456 )]
457 pub assigned_to: Option<String>,
458 #[serde(
461 rename = "customFields",
462 default,
463 skip_serializing_if = "Vec::is_empty"
464 )]
465 pub custom_fields: Vec<serde_json::Value>,
466}
467
468#[derive(Debug, Clone, Default, Serialize, Deserialize)]
470pub struct UpdateStatusDto {
471 pub status: String,
474 #[serde(
476 rename = "lostReasonId",
477 default,
478 skip_serializing_if = "Option::is_none"
479 )]
480 pub lost_reason_id: Option<String>,
481}
482
483#[derive(Debug, Clone, Default, Serialize, Deserialize)]
485pub struct UpsertOpportunityDto {
486 #[serde(default, skip_serializing_if = "Option::is_none")]
488 pub id: Option<String>,
489 #[serde(rename = "pipelineId")]
492 pub pipeline_id: String,
493 #[serde(rename = "locationId")]
496 pub location_id: String,
497 #[serde(default, skip_serializing_if = "Vec::is_empty")]
500 pub followers: Vec<String>,
501 #[serde(rename = "isRemoveAllFollowers")]
504 pub is_remove_all_followers: bool,
505 #[serde(rename = "followersActionType")]
509 pub followers_action_type: String,
510 #[serde(default, skip_serializing_if = "Option::is_none")]
512 pub name: Option<String>,
513 #[serde(default, skip_serializing_if = "Option::is_none")]
515 pub status: Option<String>,
516 #[serde(
517 rename = "pipelineStageId",
518 default,
519 skip_serializing_if = "Option::is_none"
520 )]
521 pub pipeline_stage_id: Option<String>,
522 #[serde(
523 rename = "monetaryValue",
524 default,
525 skip_serializing_if = "Option::is_none"
526 )]
527 pub monetary_value: Option<serde_json::Value>,
528 #[serde(
529 rename = "assignedTo",
530 default,
531 skip_serializing_if = "Option::is_none"
532 )]
533 pub assigned_to: Option<String>,
534 #[serde(
536 rename = "lostReasonId",
537 default,
538 skip_serializing_if = "Option::is_none"
539 )]
540 pub lost_reason_id: Option<String>,
541}
542
543#[derive(Debug, Clone, Default, Serialize, Deserialize)]
545pub struct UpsertOpportunitySuccessfulResponseDto {
546 pub opportunity: serde_json::Value,
549 pub new: bool,
551}
552
553#[derive(Debug, Clone, Default, Serialize, Deserialize)]
555pub struct CustomFieldsInputArraySchema {
556 pub id: String,
558 #[serde(default, skip_serializing_if = "Option::is_none")]
559 pub key: Option<String>,
560 #[serde(default, skip_serializing_if = "Vec::is_empty")]
561 pub field_value: Vec<String>,
562}
563
564#[derive(Debug, Clone, Default, Serialize, Deserialize)]
566pub struct CustomFieldsInputObjectSchema {
567 pub id: String,
569 #[serde(default, skip_serializing_if = "Option::is_none")]
570 pub key: Option<String>,
571 #[serde(default, skip_serializing_if = "Option::is_none")]
572 pub field_value: Option<serde_json::Value>,
573}
574
575#[derive(Debug, Clone, Default, Serialize, Deserialize)]
577pub struct CustomFieldsInputStringSchema {
578 #[serde(default, skip_serializing_if = "Option::is_none")]
580 pub id: Option<String>,
581 #[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<String>,
586}