invoance 0.2.0

Official Rust SDK for the Invoance compliance API
Documentation
//! Audit Logs models.

use serde::{Deserialize, Serialize};

use super::JsonObject;

/// Parameters for [`AuditEventsResource::ingest`](crate::resources::audit::AuditEventsResource::ingest).
#[derive(Debug, Clone, Default)]
pub struct IngestAuditEventParams {
    /// Your own id for the org (external id or the `aorg_` id). Wire key `organization_id`.
    pub organization_id: String,
    pub action: String,
    /// Wire key `actor` (JSON object).
    pub actor: JsonObject,
    /// Wire key `occurred_at`. Defaults to now (RFC3339 UTC) when absent.
    pub occurred_at: Option<String>,
    /// Wire key `targets`. Defaults to `[]`.
    pub targets: Option<Vec<serde_json::Value>>,
    pub context: Option<JsonObject>,
    pub metadata: Option<JsonObject>,
    /// Idempotency header for safe retries. When absent, a content-stable one
    /// is derived automatically.
    pub idempotency_key: Option<String>,
}

/// Parameters for [`AuditEventsResource::list`](crate::resources::audit::AuditEventsResource::list).
#[derive(Debug, Clone, Default)]
pub struct ListAuditEventsParams {
    pub organization_id: Option<String>,
    pub actions: Option<String>,
    pub actor_id: Option<String>,
    pub target_id: Option<String>,
    /// Inclusive RFC3339 bounds on occurred_at.
    pub range_start: Option<String>,
    pub range_end: Option<String>,
    pub limit: Option<u32>,
    pub cursor: Option<String>,
}

#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct AuditEvent {
    pub id: String,
    pub org_id: String,
    pub seq: i64,
    pub occurred_at: String,
    pub ingested_at: String,
    pub action: String,
    pub actor: Option<JsonObject>,
    pub targets: Option<Vec<serde_json::Value>>,
    #[serde(default)]
    pub context: Option<JsonObject>,
    #[serde(default)]
    pub metadata: Option<JsonObject>,
    pub payload_hash: String,
    pub signature: String,
    pub signing_public_key: String,
    /// Any additional server-provided fields.
    #[serde(flatten)]
    pub extra: JsonObject,
}

#[derive(Debug, Clone, Deserialize)]
pub struct ListAuditEventsResponse {
    pub events: Vec<AuditEvent>,
    pub next_cursor: Option<String>,
}

/// Parameters for [`AuditOrgsResource::create`](crate::resources::audit::AuditOrgsResource::create).
#[derive(Debug, Clone, Default)]
pub struct CreateAuditOrgParams {
    /// Your own id for the org. Wire key `organization_id`.
    pub organization_id: String,
    pub name: Option<String>,
}

/// Parameters for [`AuditOrgsResource::update`](crate::resources::audit::AuditOrgsResource::update).
#[derive(Debug, Clone, Default)]
pub struct UpdateAuditOrgParams {
    /// New display name; `None` sends JSON `null`, clearing it. The wire key
    /// `name` is always sent.
    pub name: Option<String>,
}

/// Parameters for [`AuditOrgsResource::list`](crate::resources::audit::AuditOrgsResource::list).
#[derive(Debug, Clone, Default)]
pub struct ListAuditOrgsParams {
    /// Include archived orgs in the listing (excluded by default). Wire key
    /// `include_archived`.
    pub include_archived: Option<bool>,
}

/// Parameters for [`AuditStreamsResource::create`](crate::resources::audit::AuditStreamsResource::create).
#[derive(Debug, Clone, Default)]
pub struct CreateAuditStreamParams {
    pub url: String,
    /// v1 supports `webhook` only (default).
    pub r#type: Option<String>,
}

/// Parameters for [`AuditPortalSessionsResource::create`](crate::resources::audit::AuditPortalSessionsResource::create).
#[derive(Debug, Clone, Default)]
pub struct CreatePortalSessionParams {
    pub organization_id: String,
    /// `audit_logs` or `log_streams`.
    pub intent: String,
    /// Viewer session length in seconds (default 7200; clamped 60..86400).
    pub session_duration_seconds: Option<i64>,
    /// One-time link open window in seconds (default 300; clamped 60..3600).
    pub link_duration_seconds: Option<i64>,
}

/// Parameters for [`AuditExportsResource::create`](crate::resources::audit::AuditExportsResource::create).
#[derive(Debug, Clone, Default)]
pub struct CreateAuditExportParams {
    pub organization_id: String,
    /// `csv` or `ndjson`.
    pub format: String,
    pub filters: Option<JsonObject>,
}