backbone-integrations 0.6.0

Integration registry: connectors, integration accounts and an idempotent inbound event lane, with one OAuth flow (HMAC-bound state, PKCE)
Documentation
//! Public events for Integrations module
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! These events are published by this module for other modules to subscribe to.
//! Events are the primary mechanism for cross-module communication.

use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};

use super::types::*;

// ============================================================================
// INTEGRATIONCONNECTOR EVENTS
// ============================================================================

/// Event published when a IntegrationConnector is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorCreatedEvent {
    pub id: IntegrationConnectorId,
    pub data: IntegrationConnectorDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a IntegrationConnector is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorUpdatedEvent {
    pub id: IntegrationConnectorId,
    pub data: IntegrationConnectorDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a IntegrationConnector is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationConnectorDeletedEvent {
    pub id: IntegrationConnectorId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// INTEGRATIONACCOUNT EVENTS
// ============================================================================

/// Event published when a IntegrationAccount is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountCreatedEvent {
    pub id: IntegrationAccountId,
    pub data: IntegrationAccountDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a IntegrationAccount is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountUpdatedEvent {
    pub id: IntegrationAccountId,
    pub data: IntegrationAccountDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a IntegrationAccount is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationAccountDeletedEvent {
    pub id: IntegrationAccountId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// INTEGRATIONEVENT EVENTS
// ============================================================================

/// Event published when a IntegrationEvent is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventCreatedEvent {
    pub id: IntegrationEventId,
    pub data: IntegrationEventDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a IntegrationEvent is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventUpdatedEvent {
    pub id: IntegrationEventId,
    pub data: IntegrationEventDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a IntegrationEvent is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationEventDeletedEvent {
    pub id: IntegrationEventId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// MODULE EVENT ENUM
// ============================================================================

/// All events published by Integrations module
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum IntegrationsEvent {
    IntegrationConnectorCreated(IntegrationConnectorCreatedEvent),
    IntegrationConnectorUpdated(IntegrationConnectorUpdatedEvent),
    IntegrationConnectorDeleted(IntegrationConnectorDeletedEvent),
    IntegrationAccountCreated(IntegrationAccountCreatedEvent),
    IntegrationAccountUpdated(IntegrationAccountUpdatedEvent),
    IntegrationAccountDeleted(IntegrationAccountDeletedEvent),
    IntegrationEventCreated(IntegrationEventCreatedEvent),
    IntegrationEventUpdated(IntegrationEventUpdatedEvent),
    IntegrationEventDeleted(IntegrationEventDeletedEvent),
}

/// Metadata for module events
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct IntegrationsEventMetadata {
    pub module: &'static str,
    pub version: &'static str,
}

impl Default for IntegrationsEventMetadata {
    fn default() -> Self {
        Self {
            module: "integrations",
            version: "1.0",
        }
    }
}

// ============================================================================
// CUSTOM EVENTS
// ============================================================================

// <<< CUSTOM EVENTS START >>>
// Add custom public events here
// <<< CUSTOM EVENTS END >>>