/*
 * Zernio API
 *
 * API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api
 *
 * The version of the OpenAPI document: 1.0.1
 * Contact: support@zernio.com
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// WebhookPayloadMessageDeleted : Webhook payload for message.deleted events. Fires when the sender deletes (unsends) a message. Supported platforms: Instagram (incoming unsend) and WhatsApp (when the business deletes an outgoing message via the Cloud API).  The message.text and message.attachments fields retain the content that existed before the delete. The Zernio dashboard UI does not show this content, but authorized API consumers may access it for moderation, compliance, or archival use cases.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct WebhookPayloadMessageDeleted {
    #[serde(rename = "id")]
    pub id: String,
    #[serde(rename = "event")]
    pub event: Event,
    #[serde(rename = "message")]
    pub message: Box<models::InboxWebhookMessage>,
    #[serde(rename = "deletedAt")]
    pub deleted_at: String,
    #[serde(rename = "conversation")]
    pub conversation: Box<models::InboxWebhookConversation>,
    #[serde(rename = "account")]
    pub account: Box<models::InboxWebhookAccount>,
    #[serde(rename = "timestamp")]
    pub timestamp: String,
}

impl WebhookPayloadMessageDeleted {
    /// Webhook payload for message.deleted events. Fires when the sender deletes (unsends) a message. Supported platforms: Instagram (incoming unsend) and WhatsApp (when the business deletes an outgoing message via the Cloud API).  The message.text and message.attachments fields retain the content that existed before the delete. The Zernio dashboard UI does not show this content, but authorized API consumers may access it for moderation, compliance, or archival use cases.
    pub fn new(
        id: String,
        event: Event,
        message: models::InboxWebhookMessage,
        deleted_at: String,
        conversation: models::InboxWebhookConversation,
        account: models::InboxWebhookAccount,
        timestamp: String,
    ) -> WebhookPayloadMessageDeleted {
        WebhookPayloadMessageDeleted {
            id,
            event,
            message: Box::new(message),
            deleted_at,
            conversation: Box::new(conversation),
            account: Box::new(account),
            timestamp,
        }
    }
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Event {
    #[serde(rename = "message.deleted")]
    MessageDeleted,
}

impl Default for Event {
    fn default() -> Event {
        Self::MessageDeleted
    }
}
