late 0.0.1387

API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal. Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema). Request ids: responses carry an X-Request-Id header with the id we log the request under. Quote it when reporting a problem. A valid x-request-id you send is reused as that id.
Documentation
/*
 * Zernio API
 *
 * API reference for Zernio. Authenticate with a Bearer API key. Base URL: https://zernio.com/api  Versioning and deprecation: all endpoints are versioned in the URL path (current version: /v1). Breaking changes only ship in a new path version; existing versions keep working. Deprecated operations are marked 'deprecated: true' in this spec and announced in the changelog (https://zernio.com/changelog) before removal.  Errors: every 4xx/5xx response is application/json with a machine-readable 'code' and a human-readable 'error' message (see the ErrorResponse schema).  Request ids: responses carry an X-Request-Id header with the id we log the request under. Quote it when reporting a problem. A valid x-request-id you send is reused as that id.
 *
 * The version of the OpenAPI document: 1.608.0
 * Contact: support@zernio.com
 * Generated by: https://openapi-generator.tech
 */

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

/// EventAutomationCheck : One event that reached an event automation.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct EventAutomationCheck {
    #[serde(rename = "id")]
    pub id: String,
    #[serde(rename = "automationId")]
    pub automation_id: String,
    #[serde(rename = "checkedAt")]
    pub checked_at: String,
    /// `paused`: the team used its free automation runs with no payment method on file, so the check did not run. `error` says why.
    #[serde(rename = "outcome")]
    pub outcome: Outcome,
    #[serde(rename = "evaluated")]
    pub evaluated: i32,
    #[serde(rename = "event", deserialize_with = "Option::deserialize")]
    pub event: Option<String>,
    #[serde(rename = "eventId", deserialize_with = "Option::deserialize")]
    pub event_id: Option<String>,
    #[serde(rename = "subject")]
    pub subject: Box<models::EventAutomationCheckSubject>,
    /// The event's facts as the trigger read them, keyed by fact name. Recorded only for an automation with no steps (one that only records each event).  Null for an automation with steps, whose filter results show the facts it compared, and on checks recorded before facts were kept. Content facts are null for a team that keeps no content.
    #[serde(rename = "facts", deserialize_with = "Option::deserialize")]
    pub facts: Option<std::collections::HashMap<String, serde_json::Value>>,
    #[serde(rename = "filter")]
    pub filter: Vec<models::AutomationFactResult>,
    #[serde(rename = "actions")]
    pub actions: Vec<models::AutomationRunResult>,
    #[serde(rename = "error", deserialize_with = "Option::deserialize")]
    pub error: Option<String>,
}

impl EventAutomationCheck {
    /// One event that reached an event automation.
    pub fn new(
        id: String,
        automation_id: String,
        checked_at: String,
        outcome: Outcome,
        evaluated: i32,
        event: Option<String>,
        event_id: Option<String>,
        subject: models::EventAutomationCheckSubject,
        facts: Option<std::collections::HashMap<String, serde_json::Value>>,
        filter: Vec<models::AutomationFactResult>,
        actions: Vec<models::AutomationRunResult>,
        error: Option<String>,
    ) -> EventAutomationCheck {
        EventAutomationCheck {
            id,
            automation_id,
            checked_at,
            outcome,
            evaluated,
            event,
            event_id,
            subject: Box::new(subject),
            facts,
            filter,
            actions,
            error,
        }
    }
}
/// `paused`: the team used its free automation runs with no payment method on file, so the check did not run. `error` says why.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Outcome {
    #[serde(rename = "triggered")]
    Triggered,
    #[serde(rename = "no_match")]
    NoMatch,
    #[serde(rename = "cooldown")]
    Cooldown,
    #[serde(rename = "daily_limit")]
    DailyLimit,
    #[serde(rename = "failed")]
    Failed,
    #[serde(rename = "paused")]
    Paused,
}

impl Default for Outcome {
    fn default() -> Outcome {
        Self::Triggered
    }
}