use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Calendar {
pub id: String,
pub location_id: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub event_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub event_title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slot_duration: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slot_buffer: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pre_buffer_unit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub appointment_per_slot: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub appointment_per_day: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_active: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetCalendarsResponse {
pub calendars: Vec<Calendar>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetCalendarResponse {
pub calendar: Calendar,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CreateCalendarParams {
pub location_id: String,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub event_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slot_duration: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slot_buffer: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub appointment_per_slot: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct UpdateCalendarParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub event_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slot_duration: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slot_buffer: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub appointment_per_slot: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_active: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteCalendarResponse {
pub succeded: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetFreeSlotsParams {
pub location_id: String,
pub start_date: String,
pub end_date: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Slot {
pub slots: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FreeSlotsResponse {
#[serde(flatten)]
pub dates: std::collections::HashMap<String, Slot>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetEventsParams {
pub location_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub calendar_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start_time: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_time: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contact_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub skip: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CalendarEvent {
pub id: String,
pub location_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub calendar_id: Option<String>,
pub contact_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
pub start_time: String,
pub end_time: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub appointment_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assigned_user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub notes: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetEventsResponse {
pub events: Vec<CalendarEvent>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GetEventResponse {
pub event: CalendarEvent,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct CreateEventParams {
pub calendar_id: String,
pub location_id: String,
pub contact_id: String,
pub start_time: String,
pub end_time: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub appointment_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assigned_user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub notes: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ignore_date_range: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub to_notify: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct UpdateEventParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub start_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub appointment_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assigned_user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub notes: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteEventResponse {
pub succeded: bool,
}