ghl_models/v2/conversation_ai.rs
1//! `conversation-ai` data models for GoHighLevel API V2 (28 types).
2//!
3//! Generated from HighLevel's official OpenAPI spec for the
4//! **Conversation Ai** module. Every endpoint that uses these types, with its
5//! parameters, required scopes and enum values, is documented in the
6//! [`conversation-ai` API reference](https://github.com/Shahroz/ghl-rs/blob/main/docs/api/conversation-ai.md).
7//!
8//! Enable with `features = ["conversation-ai"]`.
9// @generated by xtask/generate_models.py — do not edit by hand.
10// Source: https://github.com/GoHighLevel/highlevel-api-docs
11// Doc comments are HighLevel's own field descriptions, reflowed verbatim, so
12// they aren't held to rustdoc's markdown conventions.
13#![allow(
14 missing_docs,
15 clippy::doc_lazy_continuation,
16 clippy::doc_overindented_list_items
17)]
18
19use serde::{Deserialize, Serialize};
20
21/// `ActionDataDTO` from the GoHighLevel OpenAPI spec.
22#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23pub struct ActionDataDTO {
24 /// Unique identifier for the action
25 /// Required by the API.
26 /// (Optional here so responses that omit it still parse.)
27 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub id: Option<String>,
29 /// Name of the action
30 /// Required by the API.
31 /// (Optional here so responses that omit it still parse.)
32 #[serde(default, skip_serializing_if = "Option::is_none")]
33 pub name: Option<String>,
34 /// Type of the action
35 /// Allowed values: `triggerWorkflow`, `updateContactField`, `appointmentBooking`,
36 /// `stopBot`, `humanHandOver`, `advancedFollowup`, `transferBot`.
37 /// Required by the API.
38 /// (Optional here so responses that omit it still parse.)
39 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
40 pub type_: Option<String>,
41 /// Agent ID where the action belongs
42 #[serde(rename = "agentId", default, skip_serializing_if = "Option::is_none")]
43 pub agent_id: Option<String>,
44 /// Action-specific details. The structure depends on the action type. For TRIGGER_WORKFLOW
45 /// use triggerWorkflowDto, for UPDATE_CONTACT_FIELD use updateContactFieldDto, for
46 /// APPOINTMENT_BOOKING use appointmentBookingDto, for STOP_BOT use stopBotDto, for
47 /// HUMAN_HAND_OVER use humanHandOverDto, for ADVANCED_FOLLOWUP use advancedFollowupDto, and
48 /// for TRANSFER_BOT use transferBotDto.
49 /// Multiple possible shapes in the spec; raw JSON.
50 /// Required by the API.
51 /// (Optional here so responses that omit it still parse.)
52 #[serde(default, skip_serializing_if = "Option::is_none")]
53 pub details: Option<serde_json::Value>,
54}
55
56/// `ActionsIdDto` from the GoHighLevel OpenAPI spec.
57#[derive(Debug, Clone, Default, Serialize, Deserialize)]
58pub struct ActionsIdDto {
59 /// Unique identifier for the action.
60 /// Required by the API.
61 /// (Optional here so responses that omit it still parse.)
62 #[serde(default, skip_serializing_if = "Option::is_none")]
63 pub id: Option<String>,
64 /// type of action.
65 /// Allowed values: `triggerWorkflow`, `updateContactField`, `appointmentBooking`,
66 /// `stopBot`, `humanHandOver`, `advancedFollowup`, `transferBot`.
67 /// Required by the API.
68 /// (Optional here so responses that omit it still parse.)
69 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
70 pub type_: Option<String>,
71}
72
73/// `CreateActionDTO` from the GoHighLevel OpenAPI spec.
74#[derive(Debug, Clone, Default, Serialize, Deserialize)]
75pub struct CreateActionDTO {
76 /// Allowed values: `triggerWorkflow`, `updateContactField`, `appointmentBooking`,
77 /// `stopBot`, `humanHandOver`, `advancedFollowup`, `transferBot`.
78 /// Required by the API.
79 #[serde(rename = "type")]
80 pub type_: String,
81 /// Required by the API.
82 pub name: String,
83 /// Action-specific details. The structure depends on the action type. For TRIGGER_WORKFLOW
84 /// use triggerWorkflowDto, for UPDATE_CONTACT_FIELD use updateContactFieldDto, for
85 /// APPOINTMENT_BOOKING use appointmentBookingDto, for STOP_BOT use stopBotDto, for
86 /// HUMAN_HAND_OVER use humanHandOverDto, for ADVANCED_FOLLOWUP use advancedFollowupDto, and
87 /// for TRANSFER_BOT use transferBotDto.
88 /// Multiple possible shapes in the spec; raw JSON.
89 /// Required by the API.
90 pub details: serde_json::Value,
91}
92
93/// `CreateEmployeeDto` from the GoHighLevel OpenAPI spec.
94#[derive(Debug, Clone, Default, Serialize, Deserialize)]
95pub struct CreateEmployeeDto {
96 /// Name of the agent.
97 /// Required by the API.
98 pub name: String,
99 /// Name of the business the agent represents.
100 #[serde(
101 rename = "businessName",
102 default,
103 skip_serializing_if = "Option::is_none"
104 )]
105 pub business_name: Option<String>,
106 /// Mode of operation - OFF, SUGGESTIVE, or AUTO_PILOT
107 /// Allowed values: `off`, `suggestive`, `auto-pilot`.
108 #[serde(default, skip_serializing_if = "Option::is_none")]
109 pub mode: Option<String>,
110 /// Communication channels the agent can operate on
111 /// Allowed values: `IG`, `FB`, `SMS`, `WebChat`, `WhatsApp`, `Live_Chat`.
112 #[serde(default, skip_serializing_if = "Vec::is_empty")]
113 pub channels: Vec<String>,
114 /// Indicates if this agent is a primary agent.
115 #[serde(rename = "isPrimary", default, skip_serializing_if = "Option::is_none")]
116 pub is_primary: Option<bool>,
117 /// Wait time before agent responds (max 5 for minutes, 300 for seconds)
118 #[serde(rename = "waitTime", default, skip_serializing_if = "Option::is_none")]
119 pub wait_time: Option<f64>,
120 /// Unit for wait time - SECONDS or MINUTES
121 /// Allowed values: `minutes`, `seconds`.
122 #[serde(
123 rename = "waitTimeUnit",
124 default,
125 skip_serializing_if = "Option::is_none"
126 )]
127 pub wait_time_unit: Option<String>,
128 /// Indicates if sleep functionality is enabled.
129 #[serde(
130 rename = "sleepEnabled",
131 default,
132 skip_serializing_if = "Option::is_none"
133 )]
134 pub sleep_enabled: Option<bool>,
135 /// Duration of sleep period (required if sleepEnabled is true). Set to null for indefinite
136 /// sleep. (max 2880 for minutes, 172800 for seconds, 48 for hours)
137 #[serde(rename = "sleepTime", default, skip_serializing_if = "Option::is_none")]
138 pub sleep_time: Option<f64>,
139 /// Unit of sleep time - HOURS, MINUTES, or SECONDS (required if sleepEnabled is true). Set
140 /// to null for indefinite sleep.
141 /// Allowed values: `hours`, `minutes`, `seconds`.
142 #[serde(
143 rename = "sleepTimeUnit",
144 default,
145 skip_serializing_if = "Option::is_none"
146 )]
147 pub sleep_time_unit: Option<String>,
148 /// Personality traits of the agent.
149 /// Required by the API.
150 pub personality: String,
151 /// The goal of the agent.
152 /// Required by the API.
153 pub goal: String,
154 /// Instructions for the agent.
155 /// Required by the API.
156 pub instructions: String,
157 /// Maximum number of messages in auto-pilot mode before requiring human intervention. (max:
158 /// 100, min: 1)
159 #[serde(
160 rename = "autoPilotMaxMessages",
161 default,
162 skip_serializing_if = "Option::is_none"
163 )]
164 pub auto_pilot_max_messages: Option<f64>,
165 /// Array of knowledge base IDs associated with this agent.
166 #[serde(
167 rename = "knowledgeBaseIds",
168 default,
169 skip_serializing_if = "Vec::is_empty"
170 )]
171 pub knowledge_base_ids: Vec<String>,
172 /// Allow agent to respond to images
173 #[serde(
174 rename = "respondToImages",
175 default,
176 skip_serializing_if = "Option::is_none"
177 )]
178 pub respond_to_images: Option<bool>,
179 /// Allow agent to respond to audio
180 #[serde(
181 rename = "respondToAudio",
182 default,
183 skip_serializing_if = "Option::is_none"
184 )]
185 pub respond_to_audio: Option<bool>,
186 /// Enable sleep when a manual outbound message is sent.
187 #[serde(
188 rename = "sleepOnManualMessage",
189 default,
190 skip_serializing_if = "Option::is_none"
191 )]
192 pub sleep_on_manual_message: Option<bool>,
193 /// Enable sleep when a workflow outbound message is sent.
194 #[serde(
195 rename = "sleepOnWorkflowMessage",
196 default,
197 skip_serializing_if = "Option::is_none"
198 )]
199 pub sleep_on_workflow_message: Option<bool>,
200}
201
202/// `DeleteActionDataDTO` from the GoHighLevel OpenAPI spec.
203#[derive(Debug, Clone, Default, Serialize, Deserialize)]
204pub struct DeleteActionDataDTO {
205 /// ID of the deleted action
206 /// Required by the API.
207 /// (Optional here so responses that omit it still parse.)
208 #[serde(default, skip_serializing_if = "Option::is_none")]
209 pub id: Option<String>,
210}
211
212/// `DeleteEmployeeResponseDTO` from the GoHighLevel OpenAPI spec.
213#[derive(Debug, Clone, Default, Serialize, Deserialize)]
214pub struct DeleteEmployeeResponseDTO {
215 /// Indicates if the agent was deleted successfully.
216 /// Required by the API.
217 /// (Optional here so responses that omit it still parse.)
218 #[serde(default, skip_serializing_if = "Option::is_none")]
219 pub success: Option<bool>,
220 /// Unique identifier of the deleted agent.
221 /// Required by the API.
222 /// (Optional here so responses that omit it still parse.)
223 #[serde(default, skip_serializing_if = "Option::is_none")]
224 pub id: Option<String>,
225}
226
227/// `EmployeeListItemDTO` from the GoHighLevel OpenAPI spec.
228#[derive(Debug, Clone, Default, Serialize, Deserialize)]
229pub struct EmployeeListItemDTO {
230 /// Unique identifier for the agent.
231 /// Required by the API.
232 /// (Optional here so responses that omit it still parse.)
233 #[serde(default, skip_serializing_if = "Option::is_none")]
234 pub id: Option<String>,
235 /// Name of the agent.
236 /// Required by the API.
237 /// (Optional here so responses that omit it still parse.)
238 #[serde(default, skip_serializing_if = "Option::is_none")]
239 pub name: Option<String>,
240 /// Name of the business the agent represents.
241 #[serde(
242 rename = "businessName",
243 default,
244 skip_serializing_if = "Option::is_none"
245 )]
246 pub business_name: Option<String>,
247 /// Current operating mode of the agent.
248 /// Allowed values: `off`, `suggestive`, `auto-pilot`.
249 /// Required by the API.
250 /// (Optional here so responses that omit it still parse.)
251 #[serde(default, skip_serializing_if = "Option::is_none")]
252 pub mode: Option<String>,
253 /// Communication channels the agent operates on.
254 /// Required by the API.
255 /// (Optional here so responses that omit it still parse.)
256 #[serde(default, skip_serializing_if = "Vec::is_empty")]
257 pub channels: Vec<String>,
258 /// Wait time before agent responds.
259 /// Required by the API.
260 /// (Optional here so responses that omit it still parse.)
261 #[serde(rename = "waitTime", default, skip_serializing_if = "Option::is_none")]
262 pub wait_time: Option<f64>,
263 /// Unit for wait time.
264 /// Allowed values: `minutes`, `seconds`.
265 /// Required by the API.
266 /// (Optional here so responses that omit it still parse.)
267 #[serde(
268 rename = "waitTimeUnit",
269 default,
270 skip_serializing_if = "Option::is_none"
271 )]
272 pub wait_time_unit: Option<String>,
273 /// Indicates if sleep functionality is enabled.
274 /// Required by the API.
275 /// (Optional here so responses that omit it still parse.)
276 #[serde(
277 rename = "sleepEnabled",
278 default,
279 skip_serializing_if = "Option::is_none"
280 )]
281 pub sleep_enabled: Option<bool>,
282 /// Duration of sleep period.
283 #[serde(rename = "sleepTime", default, skip_serializing_if = "Option::is_none")]
284 pub sleep_time: Option<f64>,
285 /// Unit of sleep time.
286 /// Allowed values: `hours`, `minutes`, `seconds`.
287 #[serde(
288 rename = "sleepTimeUnit",
289 default,
290 skip_serializing_if = "Option::is_none"
291 )]
292 pub sleep_time_unit: Option<String>,
293 /// List of actions associated with this agent.
294 /// Required by the API.
295 /// (Optional here so responses that omit it still parse.)
296 #[serde(default, skip_serializing_if = "Vec::is_empty")]
297 pub actions: Vec<serde_json::Value>,
298 /// Indicates if this agent is a primary agent. (First agent created for a location is
299 /// primary by default)
300 /// Required by the API.
301 /// (Optional here so responses that omit it still parse.)
302 #[serde(rename = "isPrimary", default, skip_serializing_if = "Option::is_none")]
303 pub is_primary: Option<bool>,
304 /// Maximum number of messages in auto-pilot mode before requiring human intervention.
305 /// Required by the API.
306 /// (Optional here so responses that omit it still parse.)
307 #[serde(
308 rename = "autoPilotMaxMessages",
309 default,
310 skip_serializing_if = "Option::is_none"
311 )]
312 pub auto_pilot_max_messages: Option<f64>,
313 /// Goal configuration for the agent.
314 #[serde(default, skip_serializing_if = "Option::is_none")]
315 pub goal: Option<serde_json::Value>,
316 /// Array of knowledge base IDs associated with this agent.
317 #[serde(
318 rename = "knowledgeBaseIds",
319 default,
320 skip_serializing_if = "Vec::is_empty"
321 )]
322 pub knowledge_base_ids: Vec<String>,
323 /// Timestamp when the agent was created.
324 /// Required by the API.
325 /// (Optional here so responses that omit it still parse.)
326 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
327 pub created_at: Option<String>,
328 /// Timestamp when the agent was last updated.
329 /// Required by the API.
330 /// (Optional here so responses that omit it still parse.)
331 #[serde(rename = "updatedAt", default, skip_serializing_if = "Option::is_none")]
332 pub updated_at: Option<String>,
333 /// Whether the bot sleeps on manual outbound messages.
334 #[serde(
335 rename = "sleepOnManualMessage",
336 default,
337 skip_serializing_if = "Option::is_none"
338 )]
339 pub sleep_on_manual_message: Option<bool>,
340 /// Whether the bot sleeps on workflow outbound messages.
341 #[serde(
342 rename = "sleepOnWorkflowMessage",
343 default,
344 skip_serializing_if = "Option::is_none"
345 )]
346 pub sleep_on_workflow_message: Option<bool>,
347}
348
349/// `EmployeeResponseDTO` from the GoHighLevel OpenAPI spec.
350#[derive(Debug, Clone, Default, Serialize, Deserialize)]
351pub struct EmployeeResponseDTO {
352 /// Unique identifier for the agent.
353 /// Required by the API.
354 /// (Optional here so responses that omit it still parse.)
355 #[serde(default, skip_serializing_if = "Option::is_none")]
356 pub id: Option<String>,
357 /// Name of the agent.
358 /// Required by the API.
359 /// (Optional here so responses that omit it still parse.)
360 #[serde(default, skip_serializing_if = "Option::is_none")]
361 pub name: Option<String>,
362 /// Name of the business the agent represents.
363 #[serde(
364 rename = "businessName",
365 default,
366 skip_serializing_if = "Option::is_none"
367 )]
368 pub business_name: Option<String>,
369 /// Current operating mode of the agent.
370 /// Allowed values: `off`, `suggestive`, `auto-pilot`.
371 /// Required by the API.
372 /// (Optional here so responses that omit it still parse.)
373 #[serde(default, skip_serializing_if = "Option::is_none")]
374 pub mode: Option<String>,
375 /// Communication channels the agent operates on.
376 /// Allowed values: `IG`, `FB`, `SMS`, `WebChat`, `WhatsApp`, `Live_Chat`.
377 /// Required by the API.
378 /// (Optional here so responses that omit it still parse.)
379 #[serde(default, skip_serializing_if = "Vec::is_empty")]
380 pub channels: Vec<String>,
381 /// Wait time before agent responds.
382 /// Required by the API.
383 /// (Optional here so responses that omit it still parse.)
384 #[serde(rename = "waitTime", default, skip_serializing_if = "Option::is_none")]
385 pub wait_time: Option<f64>,
386 /// Unit for wait time.
387 /// Allowed values: `minutes`, `seconds`.
388 /// Required by the API.
389 /// (Optional here so responses that omit it still parse.)
390 #[serde(
391 rename = "waitTimeUnit",
392 default,
393 skip_serializing_if = "Option::is_none"
394 )]
395 pub wait_time_unit: Option<String>,
396 /// Indicates if sleep functionality is enabled.
397 /// Required by the API.
398 /// (Optional here so responses that omit it still parse.)
399 #[serde(
400 rename = "sleepEnabled",
401 default,
402 skip_serializing_if = "Option::is_none"
403 )]
404 pub sleep_enabled: Option<bool>,
405 /// Duration of sleep period.
406 #[serde(rename = "sleepTime", default, skip_serializing_if = "Option::is_none")]
407 pub sleep_time: Option<f64>,
408 /// Unit of sleep time.
409 /// Allowed values: `hours`, `minutes`, `seconds`.
410 #[serde(
411 rename = "sleepTimeUnit",
412 default,
413 skip_serializing_if = "Option::is_none"
414 )]
415 pub sleep_time_unit: Option<String>,
416 /// List of actions associated with this agent.
417 /// Required by the API.
418 /// (Optional here so responses that omit it still parse.)
419 #[serde(default, skip_serializing_if = "Vec::is_empty")]
420 pub actions: Vec<ActionsIdDto>,
421 /// Indicates if this agent is a primary agent.
422 /// Required by the API.
423 /// (Optional here so responses that omit it still parse.)
424 #[serde(rename = "isPrimary", default, skip_serializing_if = "Option::is_none")]
425 pub is_primary: Option<bool>,
426 /// Maximum number of messages in auto-pilot mode before requiring human intervention.
427 /// Required by the API.
428 /// (Optional here so responses that omit it still parse.)
429 #[serde(
430 rename = "autoPilotMaxMessages",
431 default,
432 skip_serializing_if = "Option::is_none"
433 )]
434 pub auto_pilot_max_messages: Option<f64>,
435 /// The goal of the agent.
436 #[serde(default, skip_serializing_if = "Option::is_none")]
437 pub goal: Option<String>,
438 /// Personality traits of the agent.
439 #[serde(default, skip_serializing_if = "Option::is_none")]
440 pub personality: Option<String>,
441 /// Instructions for the agent.
442 #[serde(default, skip_serializing_if = "Option::is_none")]
443 pub instructions: Option<String>,
444 /// Array of knowledge base IDs associated with this agent.
445 #[serde(
446 rename = "knowledgeBaseIds",
447 default,
448 skip_serializing_if = "Vec::is_empty"
449 )]
450 pub knowledge_base_ids: Vec<String>,
451 /// Whether the bot sleeps on manual outbound messages.
452 #[serde(
453 rename = "sleepOnManualMessage",
454 default,
455 skip_serializing_if = "Option::is_none"
456 )]
457 pub sleep_on_manual_message: Option<bool>,
458 /// Whether the bot sleeps on workflow outbound messages.
459 #[serde(
460 rename = "sleepOnWorkflowMessage",
461 default,
462 skip_serializing_if = "Option::is_none"
463 )]
464 pub sleep_on_workflow_message: Option<bool>,
465}
466
467/// `FetchAIResponseDetailsResponseDTO` from the GoHighLevel OpenAPI spec.
468#[derive(Debug, Clone, Default, Serialize, Deserialize)]
469pub struct FetchAIResponseDetailsResponseDTO {
470 /// The complete prompt used for the AI response.
471 /// Required by the API.
472 /// (Optional here so responses that omit it still parse.)
473 #[serde(default, skip_serializing_if = "Option::is_none")]
474 pub prompt: Option<String>,
475 /// The intent/goal extracted from location prompt.
476 #[serde(default, skip_serializing_if = "Option::is_none")]
477 pub intent: Option<String>,
478 /// The response message generated by the AI.
479 /// Required by the API.
480 /// (Optional here so responses that omit it still parse.)
481 #[serde(
482 rename = "responseMessage",
483 default,
484 skip_serializing_if = "Option::is_none"
485 )]
486 pub response_message: Option<String>,
487 /// FAQ chunks used in generating the response from fine-tuned data.
488 #[serde(default, skip_serializing_if = "Vec::is_empty")]
489 pub faqs: Vec<serde_json::Value>,
490 /// Website content chunks used in generating the response.
491 #[serde(default, skip_serializing_if = "Vec::is_empty")]
492 pub website: Vec<serde_json::Value>,
493 /// ID of the employee/agent that generated the response.
494 #[serde(rename = "agentId", default, skip_serializing_if = "Option::is_none")]
495 pub agent_id: Option<String>,
496 /// The original input message that triggered this response.
497 #[serde(default, skip_serializing_if = "Option::is_none")]
498 pub input: Option<String>,
499 /// List of actions taken during this interaction.
500 /// Required by the API.
501 /// (Optional here so responses that omit it still parse.)
502 #[serde(rename = "actionLogs", default, skip_serializing_if = "Vec::is_empty")]
503 pub action_logs: Vec<serde_json::Value>,
504 /// Conversation history leading up to this response.
505 /// Required by the API.
506 /// (Optional here so responses that omit it still parse.)
507 #[serde(default, skip_serializing_if = "Vec::is_empty")]
508 pub history: Vec<serde_json::Value>,
509 /// Mode of operation during this interaction.
510 #[serde(default, skip_serializing_if = "Option::is_none")]
511 pub mode: Option<String>,
512}
513
514/// `FollowupSequence` from the GoHighLevel OpenAPI spec.
515#[derive(Debug, Clone, Default, Serialize, Deserialize)]
516pub struct FollowupSequence {
517 /// Unique identifier for this followup step
518 /// Required by the API.
519 /// (Optional here so responses that omit it still parse.)
520 #[serde(default, skip_serializing_if = "Option::is_none")]
521 pub id: Option<f64>,
522 /// Time unit for followup delay
523 /// Allowed values: `days`, `hours`, `minutes`.
524 /// Required by the API.
525 /// (Optional here so responses that omit it still parse.)
526 #[serde(
527 rename = "followupTimeUnit",
528 default,
529 skip_serializing_if = "Option::is_none"
530 )]
531 pub followup_time_unit: Option<String>,
532 /// Time duration before followup (max: 60 minutes, 24 hours, or 180 days depending on unit)
533 /// Required by the API.
534 /// (Optional here so responses that omit it still parse.)
535 #[serde(
536 rename = "followupTime",
537 default,
538 skip_serializing_if = "Option::is_none"
539 )]
540 pub followup_time: Option<f64>,
541 /// Whether to use AI to generate the followup message
542 #[serde(
543 rename = "aiEnabledMessage",
544 default,
545 skip_serializing_if = "Option::is_none"
546 )]
547 pub ai_enabled_message: Option<bool>,
548 /// Whether to trigger a workflow during this followup
549 #[serde(
550 rename = "triggerWorkflow",
551 default,
552 skip_serializing_if = "Option::is_none"
553 )]
554 pub trigger_workflow: Option<bool>,
555 /// Custom message to send (when aiEnabledMessage is false)
556 #[serde(
557 rename = "customMessage",
558 default,
559 skip_serializing_if = "Option::is_none"
560 )]
561 pub custom_message: Option<String>,
562 /// Workflow ID to trigger (when triggerWorkflow is true)
563 #[serde(
564 rename = "workflowId",
565 default,
566 skip_serializing_if = "Option::is_none"
567 )]
568 pub workflow_id: Option<String>,
569 /// Whether contact was requested in this followup
570 #[serde(
571 rename = "contactRequested",
572 default,
573 skip_serializing_if = "Option::is_none"
574 )]
575 pub contact_requested: Option<bool>,
576}
577
578/// `FollowupSettings` from the GoHighLevel OpenAPI spec.
579#[derive(Debug, Clone, Default, Serialize, Deserialize)]
580pub struct FollowupSettings {
581 /// Whether to dynamically switch channels for followups
582 /// Required by the API.
583 /// (Optional here so responses that omit it still parse.)
584 #[serde(
585 rename = "dynamicChannelSwitching",
586 default,
587 skip_serializing_if = "Option::is_none"
588 )]
589 pub dynamic_channel_switching: Option<bool>,
590 /// Whether to respect working hours for followups
591 #[serde(
592 rename = "followUpHours",
593 default,
594 skip_serializing_if = "Option::is_none"
595 )]
596 pub follow_up_hours: Option<bool>,
597 /// Working hours configuration for followups
598 #[serde(
599 rename = "workingHours",
600 default,
601 skip_serializing_if = "Vec::is_empty"
602 )]
603 pub working_hours: Vec<WorkingHours>,
604 /// Timezone to use for followups, contact or location
605 /// Allowed values: `contact`, `business`.
606 #[serde(
607 rename = "timezoneToUse",
608 default,
609 skip_serializing_if = "Option::is_none"
610 )]
611 pub timezone_to_use: Option<String>,
612}
613
614/// `Interval` from the GoHighLevel OpenAPI spec.
615#[derive(Debug, Clone, Default, Serialize, Deserialize)]
616pub struct Interval {
617 /// Start hour (24-hour format)
618 /// Required by the API.
619 /// (Optional here so responses that omit it still parse.)
620 #[serde(rename = "startHour", default, skip_serializing_if = "Option::is_none")]
621 pub start_hour: Option<f64>,
622 /// Start minute
623 /// Required by the API.
624 /// (Optional here so responses that omit it still parse.)
625 #[serde(
626 rename = "startMinute",
627 default,
628 skip_serializing_if = "Option::is_none"
629 )]
630 pub start_minute: Option<f64>,
631 /// End hour (24-hour format)
632 /// Required by the API.
633 /// (Optional here so responses that omit it still parse.)
634 #[serde(rename = "endHour", default, skip_serializing_if = "Option::is_none")]
635 pub end_hour: Option<f64>,
636 /// End minute
637 /// Required by the API.
638 /// (Optional here so responses that omit it still parse.)
639 #[serde(rename = "endMinute", default, skip_serializing_if = "Option::is_none")]
640 pub end_minute: Option<f64>,
641}
642
643/// `SearchEmployeeResponseDTO` from the GoHighLevel OpenAPI spec.
644#[derive(Debug, Clone, Default, Serialize, Deserialize)]
645pub struct SearchEmployeeResponseDTO {
646 /// List of agents matching the search criteria.
647 /// Required by the API.
648 /// (Optional here so responses that omit it still parse.)
649 #[serde(default, skip_serializing_if = "Vec::is_empty")]
650 pub agents: Vec<EmployeeListItemDTO>,
651 /// Total number of agents in the location (unfiltered count).
652 /// Required by the API.
653 /// (Optional here so responses that omit it still parse.)
654 #[serde(
655 rename = "totalCount",
656 default,
657 skip_serializing_if = "Option::is_none"
658 )]
659 pub total_count: Option<f64>,
660 /// Number of agents in the current response (filtered/paginated count).
661 /// Required by the API.
662 /// (Optional here so responses that omit it still parse.)
663 #[serde(default, skip_serializing_if = "Option::is_none")]
664 pub count: Option<f64>,
665}
666
667/// `UpdateEmployeeDto` from the GoHighLevel OpenAPI spec.
668#[derive(Debug, Clone, Default, Serialize, Deserialize)]
669pub struct UpdateEmployeeDto {
670 /// Name of the agent.
671 #[serde(default, skip_serializing_if = "Option::is_none")]
672 pub name: Option<String>,
673 /// Name of the business the agent represents.
674 #[serde(
675 rename = "businessName",
676 default,
677 skip_serializing_if = "Option::is_none"
678 )]
679 pub business_name: Option<String>,
680 /// Mode of operation for the agent, required if primary is enabled.
681 /// Allowed values: `off`, `suggestive`, `auto-pilot`.
682 #[serde(default, skip_serializing_if = "Option::is_none")]
683 pub mode: Option<String>,
684 /// Channels the agent can use.
685 /// Allowed values: `IG`, `FB`, `SMS`, `WebChat`, `WhatsApp`, `Live_Chat`.
686 #[serde(default, skip_serializing_if = "Vec::is_empty")]
687 pub channels: Vec<String>,
688 /// Indicates if this agent is a primary agent.
689 #[serde(rename = "isPrimary", default, skip_serializing_if = "Option::is_none")]
690 pub is_primary: Option<bool>,
691 /// Wait time before agent responds (max 5 for minutes, 300 for seconds).
692 #[serde(rename = "waitTime", default, skip_serializing_if = "Option::is_none")]
693 pub wait_time: Option<f64>,
694 /// Unit for wait time - SECONDS or MINUTES
695 /// Allowed values: `minutes`, `seconds`.
696 #[serde(
697 rename = "waitTimeUnit",
698 default,
699 skip_serializing_if = "Option::is_none"
700 )]
701 pub wait_time_unit: Option<String>,
702 /// Indicates if sleep functionality is enabled.
703 #[serde(
704 rename = "sleepEnabled",
705 default,
706 skip_serializing_if = "Option::is_none"
707 )]
708 pub sleep_enabled: Option<bool>,
709 /// Duration of sleep period (required if sleepEnabled is true). Set to null for indefinite
710 /// sleep. (max 2880 for minutes, 172800 for seconds, 48 for hours)
711 #[serde(rename = "sleepTime", default, skip_serializing_if = "Option::is_none")]
712 pub sleep_time: Option<f64>,
713 /// Unit of sleep time - HOURS, MINUTES, or SECONDS (required if sleepEnabled is true). Set
714 /// to null for indefinite sleep.
715 /// Allowed values: `hours`, `minutes`, `seconds`.
716 #[serde(
717 rename = "sleepTimeUnit",
718 default,
719 skip_serializing_if = "Option::is_none"
720 )]
721 pub sleep_time_unit: Option<String>,
722 /// Personality traits of the agent.
723 #[serde(default, skip_serializing_if = "Option::is_none")]
724 pub personality: Option<String>,
725 /// The goal of the agent.
726 #[serde(default, skip_serializing_if = "Option::is_none")]
727 pub goal: Option<String>,
728 /// Instructions for the agent.
729 #[serde(default, skip_serializing_if = "Option::is_none")]
730 pub instructions: Option<String>,
731 /// Maximum number of messages in auto-pilot mode before requiring human intervention. (max:
732 /// 100, min: 1)
733 /// Required by the API.
734 #[serde(rename = "autoPilotMaxMessages")]
735 pub auto_pilot_max_messages: f64,
736 /// Array of knowledge base IDs associated with this agent.
737 #[serde(
738 rename = "knowledgeBaseIds",
739 default,
740 skip_serializing_if = "Vec::is_empty"
741 )]
742 pub knowledge_base_ids: Vec<String>,
743 /// Allow agent to respond to images
744 #[serde(
745 rename = "respondToImages",
746 default,
747 skip_serializing_if = "Option::is_none"
748 )]
749 pub respond_to_images: Option<bool>,
750 /// Allow agent to respond to audio
751 #[serde(
752 rename = "respondToAudio",
753 default,
754 skip_serializing_if = "Option::is_none"
755 )]
756 pub respond_to_audio: Option<bool>,
757 /// Enable sleep when a manual outbound message is sent.
758 #[serde(
759 rename = "sleepOnManualMessage",
760 default,
761 skip_serializing_if = "Option::is_none"
762 )]
763 pub sleep_on_manual_message: Option<bool>,
764 /// Enable sleep when a workflow outbound message is sent.
765 #[serde(
766 rename = "sleepOnWorkflowMessage",
767 default,
768 skip_serializing_if = "Option::is_none"
769 )]
770 pub sleep_on_workflow_message: Option<bool>,
771}
772
773/// `UpdateFollowupSettingsDTO` from the GoHighLevel OpenAPI spec.
774#[derive(Debug, Clone, Default, Serialize, Deserialize)]
775pub struct UpdateFollowupSettingsDTO {
776 /// Required by the API.
777 #[serde(rename = "actionIds", default, skip_serializing_if = "Vec::is_empty")]
778 pub action_ids: Vec<String>,
779 /// Required by the API.
780 #[serde(rename = "followupSettings")]
781 pub followup_settings: FollowupSettings,
782}
783
784/// `WorkingHours` from the GoHighLevel OpenAPI spec.
785#[derive(Debug, Clone, Default, Serialize, Deserialize)]
786pub struct WorkingHours {
787 /// Day of the week (0=Sunday, 1=Monday, etc.)
788 /// Required by the API.
789 /// (Optional here so responses that omit it still parse.)
790 #[serde(
791 rename = "dayOfTheWeek",
792 default,
793 skip_serializing_if = "Option::is_none"
794 )]
795 pub day_of_the_week: Option<f64>,
796 /// Time intervals for this day
797 #[serde(default, skip_serializing_if = "Vec::is_empty")]
798 pub intervals: Vec<Interval>,
799}
800
801/// `advancedFollowupDto` from the GoHighLevel OpenAPI spec.
802#[derive(Debug, Clone, Default, Serialize, Deserialize)]
803pub struct AdvancedFollowupDto {
804 /// Whether advanced followup is enabled
805 /// Required by the API.
806 /// (Optional here so responses that omit it still parse.)
807 #[serde(default, skip_serializing_if = "Option::is_none")]
808 pub enabled: Option<bool>,
809 /// ID of the followup scenario
810 /// Allowed values: `contactStoppedReplying`, `contactIsBusy`, `contactRequested`.
811 /// Required by the API.
812 /// (Optional here so responses that omit it still parse.)
813 #[serde(
814 rename = "scenarioId",
815 default,
816 skip_serializing_if = "Option::is_none"
817 )]
818 pub scenario_id: Option<String>,
819 /// Sequence of followup actions to perform
820 /// Required by the API.
821 /// (Optional here so responses that omit it still parse.)
822 #[serde(
823 rename = "followupSequence",
824 default,
825 skip_serializing_if = "Vec::is_empty"
826 )]
827 pub followup_sequence: Vec<FollowupSequence>,
828 /// Additional settings for followup behavior
829 #[serde(
830 rename = "followupSettings",
831 default,
832 skip_serializing_if = "Option::is_none"
833 )]
834 pub followup_settings: Option<FollowupSettings>,
835}
836
837/// `appointmentBookingDto` from the GoHighLevel OpenAPI spec.
838#[derive(Debug, Clone, Default, Serialize, Deserialize)]
839pub struct AppointmentBookingDto {
840 /// Optional action ID reference
841 #[serde(rename = "actionId", default, skip_serializing_if = "Option::is_none")]
842 pub action_id: Option<String>,
843 /// Calendar ID for appointment booking
844 /// Required by the API.
845 /// (Optional here so responses that omit it still parse.)
846 #[serde(
847 rename = "calendarId",
848 default,
849 skip_serializing_if = "Option::is_none"
850 )]
851 pub calendar_id: Option<String>,
852 /// If true, only sends the appointment link without booking
853 /// Required by the API.
854 /// (Optional here so responses that omit it still parse.)
855 #[serde(
856 rename = "onlySendLink",
857 default,
858 skip_serializing_if = "Option::is_none"
859 )]
860 pub only_send_link: Option<bool>,
861 /// Whether to trigger a workflow after booking (cannot be true when onlySendLink is true)
862 /// Required by the API.
863 /// (Optional here so responses that omit it still parse.)
864 #[serde(
865 rename = "triggerWorkflow",
866 default,
867 skip_serializing_if = "Option::is_none"
868 )]
869 pub trigger_workflow: Option<bool>,
870 /// Workflow IDs to trigger after booking (required when triggerWorkflow is true)
871 #[serde(rename = "workflowIds", default, skip_serializing_if = "Vec::is_empty")]
872 pub workflow_ids: Vec<String>,
873 /// Whether to put the agent to sleep after booking (cannot be true when onlySendLink is
874 /// true)
875 /// Required by the API.
876 /// (Optional here so responses that omit it still parse.)
877 #[serde(
878 rename = "sleepAfterBooking",
879 default,
880 skip_serializing_if = "Option::is_none"
881 )]
882 pub sleep_after_booking: Option<bool>,
883 /// Unit for sleep time (required when sleepAfterBooking is true)
884 /// Allowed values: `days`, `hours`, `minutes`.
885 #[serde(
886 rename = "sleepTimeUnit",
887 default,
888 skip_serializing_if = "Option::is_none"
889 )]
890 pub sleep_time_unit: Option<String>,
891 /// Sleep duration (required when sleepAfterBooking is true)
892 #[serde(rename = "sleepTime", default, skip_serializing_if = "Option::is_none")]
893 pub sleep_time: Option<f64>,
894 /// Whether to transfer to another agent after booking (cannot be true when onlySendLink is
895 /// true)
896 /// Required by the API.
897 /// (Optional here so responses that omit it still parse.)
898 #[serde(
899 rename = "transferBot",
900 default,
901 skip_serializing_if = "Option::is_none"
902 )]
903 pub transfer_bot: Option<bool>,
904 /// Agent ID to transfer to (required when transferBot is true)
905 #[serde(
906 rename = "transferAgent",
907 default,
908 skip_serializing_if = "Option::is_none"
909 )]
910 pub transfer_agent: Option<String>,
911 /// Whether to allow appointment rescheduling (cannot be true when onlySendLink is true)
912 /// Required by the API.
913 /// (Optional here so responses that omit it still parse.)
914 #[serde(
915 rename = "rescheduleEnabled",
916 default,
917 skip_serializing_if = "Option::is_none"
918 )]
919 pub reschedule_enabled: Option<bool>,
920 /// Whether to allow appointment cancellation (cannot be true when onlySendLink is true)
921 /// Required by the API.
922 /// (Optional here so responses that omit it still parse.)
923 #[serde(
924 rename = "cancelEnabled",
925 default,
926 skip_serializing_if = "Option::is_none"
927 )]
928 pub cancel_enabled: Option<bool>,
929}
930
931/// `createActionResponseDTO` from the GoHighLevel OpenAPI spec.
932#[derive(Debug, Clone, Default, Serialize, Deserialize)]
933pub struct CreateActionResponseDTO {
934 /// Created action details
935 /// Required by the API.
936 /// (Optional here so responses that omit it still parse.)
937 #[serde(default, skip_serializing_if = "Option::is_none")]
938 pub data: Option<ActionDataDTO>,
939 /// Success status of the request
940 /// Required by the API.
941 /// (Optional here so responses that omit it still parse.)
942 #[serde(default, skip_serializing_if = "Option::is_none")]
943 pub success: Option<bool>,
944}
945
946/// `deleteActionResponseDTO` from the GoHighLevel OpenAPI spec.
947#[derive(Debug, Clone, Default, Serialize, Deserialize)]
948pub struct DeleteActionResponseDTO {
949 /// Deleted action information
950 /// Required by the API.
951 /// (Optional here so responses that omit it still parse.)
952 #[serde(default, skip_serializing_if = "Option::is_none")]
953 pub data: Option<DeleteActionDataDTO>,
954 /// Success status of the request
955 /// Required by the API.
956 /// (Optional here so responses that omit it still parse.)
957 #[serde(default, skip_serializing_if = "Option::is_none")]
958 pub success: Option<bool>,
959}
960
961/// `fetchActionDetailsResponseDTO` from the GoHighLevel OpenAPI spec.
962#[derive(Debug, Clone, Default, Serialize, Deserialize)]
963pub struct FetchActionDetailsResponseDTO {
964 /// Action details
965 /// Required by the API.
966 /// (Optional here so responses that omit it still parse.)
967 #[serde(default, skip_serializing_if = "Option::is_none")]
968 pub data: Option<ActionDataDTO>,
969 /// Success status of the request
970 /// Required by the API.
971 /// (Optional here so responses that omit it still parse.)
972 #[serde(default, skip_serializing_if = "Option::is_none")]
973 pub success: Option<bool>,
974}
975
976/// `fetchActionsForEmployeeResponseDTO` from the GoHighLevel OpenAPI spec.
977#[derive(Debug, Clone, Default, Serialize, Deserialize)]
978pub struct FetchActionsForEmployeeResponseDTO {
979 /// Grouped actions by type
980 /// Required by the API.
981 /// (Optional here so responses that omit it still parse.)
982 #[serde(default, skip_serializing_if = "Vec::is_empty")]
983 pub data: Vec<ActionDataDTO>,
984 /// Success status of the request
985 /// Required by the API.
986 /// (Optional here so responses that omit it still parse.)
987 #[serde(default, skip_serializing_if = "Option::is_none")]
988 pub success: Option<bool>,
989}
990
991/// `humanHandOverDto` from the GoHighLevel OpenAPI spec.
992#[derive(Debug, Clone, Default, Serialize, Deserialize)]
993pub struct HumanHandOverDto {
994 /// Whether human handover action is enabled
995 /// Required by the API.
996 /// (Optional here so responses that omit it still parse.)
997 #[serde(default, skip_serializing_if = "Option::is_none")]
998 pub enabled: Option<bool>,
999 /// Condition that triggers human handover
1000 /// Required by the API.
1001 /// (Optional here so responses that omit it still parse.)
1002 #[serde(
1003 rename = "triggerCondition",
1004 default,
1005 skip_serializing_if = "Option::is_none"
1006 )]
1007 pub trigger_condition: Option<String>,
1008 /// Example phrases that trigger human handover (required when handoverType is custom or
1009 /// contactRequest)
1010 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1011 pub examples: Vec<String>,
1012 /// ID of the user to assign the conversation to
1013 #[serde(
1014 rename = "assignToUserId",
1015 default,
1016 skip_serializing_if = "Option::is_none"
1017 )]
1018 pub assign_to_user_id: Option<String>,
1019 /// Whether to skip assigning to a specific user
1020 #[serde(
1021 rename = "skipAssignToUser",
1022 default,
1023 skip_serializing_if = "Option::is_none"
1024 )]
1025 pub skip_assign_to_user: Option<bool>,
1026 /// Whether to create a task when handing over
1027 #[serde(
1028 rename = "createTask",
1029 default,
1030 skip_serializing_if = "Option::is_none"
1031 )]
1032 pub create_task: Option<bool>,
1033 /// Whether the agent can be reactivated after handover
1034 /// Required by the API.
1035 /// (Optional here so responses that omit it still parse.)
1036 #[serde(
1037 rename = "reactivateEnabled",
1038 default,
1039 skip_serializing_if = "Option::is_none"
1040 )]
1041 pub reactivate_enabled: Option<bool>,
1042 /// Time unit for reactivation delay (required when reactivateEnabled is true)
1043 /// Allowed values: `days`, `hours`, `minutes`.
1044 #[serde(
1045 rename = "sleepTimeUnit",
1046 default,
1047 skip_serializing_if = "Option::is_none"
1048 )]
1049 pub sleep_time_unit: Option<String>,
1050 /// Time duration before reactivation (required when reactivateEnabled is true)
1051 #[serde(rename = "sleepTime", default, skip_serializing_if = "Option::is_none")]
1052 pub sleep_time: Option<f64>,
1053 /// Final message sent when handing over to human
1054 /// Required by the API.
1055 /// (Optional here so responses that omit it still parse.)
1056 #[serde(
1057 rename = "finalMessage",
1058 default,
1059 skip_serializing_if = "Option::is_none"
1060 )]
1061 pub final_message: Option<String>,
1062 /// Tags to apply during handover
1063 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1064 pub tags: Vec<String>,
1065 /// Type of human handover detection
1066 /// Allowed values: `contactRequest`, `lackOfInformation`, `failedToResolveIssue`, `custom`.
1067 /// Required by the API.
1068 /// (Optional here so responses that omit it still parse.)
1069 #[serde(
1070 rename = "handoverType",
1071 default,
1072 skip_serializing_if = "Option::is_none"
1073 )]
1074 pub handover_type: Option<String>,
1075}
1076
1077/// `stopBotDto` from the GoHighLevel OpenAPI spec.
1078#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1079pub struct StopBotDto {
1080 /// Type of stop bot detection - Goodbye or Custom
1081 /// Allowed values: `Goodbye`, `Custom`.
1082 /// Required by the API.
1083 /// (Optional here so responses that omit it still parse.)
1084 #[serde(
1085 rename = "stopBotDetectionType",
1086 default,
1087 skip_serializing_if = "Option::is_none"
1088 )]
1089 pub stop_bot_detection_type: Option<String>,
1090 /// Condition that triggers stopping the bot
1091 /// Required by the API.
1092 /// (Optional here so responses that omit it still parse.)
1093 #[serde(
1094 rename = "stopBotTriggerCondition",
1095 default,
1096 skip_serializing_if = "Option::is_none"
1097 )]
1098 pub stop_bot_trigger_condition: Option<String>,
1099 /// Whether the bot can be reactivated after being stopped
1100 /// Required by the API.
1101 /// (Optional here so responses that omit it still parse.)
1102 #[serde(
1103 rename = "reactivateEnabled",
1104 default,
1105 skip_serializing_if = "Option::is_none"
1106 )]
1107 pub reactivate_enabled: Option<bool>,
1108 /// Time unit for reactivation delay (required when reactivateEnabled is true)
1109 /// Allowed values: `days`, `hours`, `minutes`.
1110 #[serde(
1111 rename = "sleepTimeUnit",
1112 default,
1113 skip_serializing_if = "Option::is_none"
1114 )]
1115 pub sleep_time_unit: Option<String>,
1116 /// Time duration before reactivation (required when reactivateEnabled is true)
1117 #[serde(rename = "sleepTime", default, skip_serializing_if = "Option::is_none")]
1118 pub sleep_time: Option<f64>,
1119 /// Whether this action is enabled for the agent
1120 /// Required by the API.
1121 /// (Optional here so responses that omit it still parse.)
1122 #[serde(default, skip_serializing_if = "Option::is_none")]
1123 pub enabled: Option<bool>,
1124 /// Example phrases that trigger stop bot action (minimum 2 required)
1125 /// Required by the API.
1126 /// (Optional here so responses that omit it still parse.)
1127 #[serde(
1128 rename = "stopBotExamples",
1129 default,
1130 skip_serializing_if = "Vec::is_empty"
1131 )]
1132 pub stop_bot_examples: Vec<String>,
1133 /// Final message sent when stopping the bot
1134 /// Required by the API.
1135 /// (Optional here so responses that omit it still parse.)
1136 #[serde(
1137 rename = "finalMessage",
1138 default,
1139 skip_serializing_if = "Option::is_none"
1140 )]
1141 pub final_message: Option<String>,
1142 /// Tags to apply when stopping the bot
1143 #[serde(default, skip_serializing_if = "Vec::is_empty")]
1144 pub tags: Vec<String>,
1145}
1146
1147/// `transferBotDto` from the GoHighLevel OpenAPI spec.
1148#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1149pub struct TransferBotDto {
1150 /// Type of transfer - Default or Custom
1151 /// Allowed values: `Default`, `Custom`.
1152 /// Required by the API.
1153 /// (Optional here so responses that omit it still parse.)
1154 #[serde(
1155 rename = "transferBotType",
1156 default,
1157 skip_serializing_if = "Option::is_none"
1158 )]
1159 pub transfer_bot_type: Option<String>,
1160 /// ID of the bot/agent to transfer to
1161 /// Required by the API.
1162 /// (Optional here so responses that omit it still parse.)
1163 #[serde(
1164 rename = "transferToBot",
1165 default,
1166 skip_serializing_if = "Option::is_none"
1167 )]
1168 pub transfer_to_bot: Option<String>,
1169 /// Whether this transfer action is enabled
1170 /// Required by the API.
1171 /// (Optional here so responses that omit it still parse.)
1172 #[serde(default, skip_serializing_if = "Option::is_none")]
1173 pub enabled: Option<bool>,
1174 /// Condition that triggers the transfer (required for Custom type)
1175 #[serde(
1176 rename = "transferBotTriggerCondition",
1177 default,
1178 skip_serializing_if = "Option::is_none"
1179 )]
1180 pub transfer_bot_trigger_condition: Option<String>,
1181 /// Example phrases that trigger transfer (required for Custom type, minimum 2)
1182 #[serde(
1183 rename = "transferBotExamples",
1184 default,
1185 skip_serializing_if = "Vec::is_empty"
1186 )]
1187 pub transfer_bot_examples: Vec<String>,
1188}
1189
1190/// `triggerWorkflowDto` from the GoHighLevel OpenAPI spec.
1191#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1192pub struct TriggerWorkflowDto {
1193 /// Array of workflow IDs to trigger
1194 /// Required by the API.
1195 /// (Optional here so responses that omit it still parse.)
1196 #[serde(rename = "workflowIds", default, skip_serializing_if = "Vec::is_empty")]
1197 pub workflow_ids: Vec<String>,
1198 /// Condition that triggers the workflow
1199 /// Required by the API.
1200 /// (Optional here so responses that omit it still parse.)
1201 #[serde(
1202 rename = "triggerCondition",
1203 default,
1204 skip_serializing_if = "Option::is_none"
1205 )]
1206 pub trigger_condition: Option<String>,
1207 /// Optional message to send when triggering the workflow
1208 #[serde(
1209 rename = "triggerMessage",
1210 default,
1211 skip_serializing_if = "Option::is_none"
1212 )]
1213 pub trigger_message: Option<String>,
1214}
1215
1216/// `updateActionResponseDTO` from the GoHighLevel OpenAPI spec.
1217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1218pub struct UpdateActionResponseDTO {
1219 /// Updated action details
1220 /// Required by the API.
1221 /// (Optional here so responses that omit it still parse.)
1222 #[serde(default, skip_serializing_if = "Option::is_none")]
1223 pub data: Option<ActionDataDTO>,
1224 /// Success status of the request
1225 /// Required by the API.
1226 /// (Optional here so responses that omit it still parse.)
1227 #[serde(default, skip_serializing_if = "Option::is_none")]
1228 pub success: Option<bool>,
1229}
1230
1231/// `updateContactFieldDto` from the GoHighLevel OpenAPI spec.
1232#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1233pub struct UpdateContactFieldDto {
1234 /// ID of the contact field in Contacts Table
1235 /// Required by the API.
1236 /// (Optional here so responses that omit it still parse.)
1237 #[serde(
1238 rename = "contactFieldId",
1239 default,
1240 skip_serializing_if = "Option::is_none"
1241 )]
1242 pub contact_field_id: Option<String>,
1243 /// Description of the contact field in Contacts Table
1244 /// Required by the API.
1245 /// (Optional here so responses that omit it still parse.)
1246 #[serde(default, skip_serializing_if = "Option::is_none")]
1247 pub description: Option<String>,
1248 /// Contact update examples in Contacts Table. Not required when using standard fields,
1249 /// Monetory or Date Custom fields.
1250 #[serde(
1251 rename = "contactUpdateExamples",
1252 default,
1253 skip_serializing_if = "Vec::is_empty"
1254 )]
1255 pub contact_update_examples: Vec<String>,
1256}