openai-client-base 0.12.0

Auto-generated Rust client for the OpenAI API
/*
 * OpenAI API
 *
 * The OpenAI REST API. Please see https://platform.openai.com/docs/api-reference for more details.
 *
 * The version of the OpenAPI document: 2.3.0
 *
 * Generated by: https://openapi-generator.tech
 */

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

/// AuditLog : A log of a user action or configuration change within this organization.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, bon::Builder)]
pub struct AuditLog {
    /// The ID of this log.
    #[serde(rename = "id")]
    pub id: String,
    #[serde(rename = "type")]
    pub r#type: models::AuditLogEventType,
    /// The Unix timestamp (in seconds) of the event.
    #[serde(rename = "effective_at")]
    pub effective_at: i32,
    #[serde(rename = "project", skip_serializing_if = "Option::is_none")]
    pub project: Option<Box<models::AuditLogProject>>,
    #[serde(rename = "actor")]
    pub actor: Box<models::AuditLogActor>,
    #[serde(rename = "api_key.created", skip_serializing_if = "Option::is_none")]
    pub api_key_created: Option<Box<models::AuditLogApiKeyCreated>>,
    #[serde(rename = "api_key.updated", skip_serializing_if = "Option::is_none")]
    pub api_key_updated: Option<Box<models::AuditLogApiKeyUpdated>>,
    #[serde(rename = "api_key.deleted", skip_serializing_if = "Option::is_none")]
    pub api_key_deleted: Option<Box<models::AuditLogApiKeyDeleted>>,
    #[serde(
        rename = "checkpoint.permission.created",
        skip_serializing_if = "Option::is_none"
    )]
    pub checkpoint_permission_created: Option<Box<models::AuditLogCheckpointPermissionCreated>>,
    #[serde(
        rename = "checkpoint.permission.deleted",
        skip_serializing_if = "Option::is_none"
    )]
    pub checkpoint_permission_deleted: Option<Box<models::AuditLogCheckpointPermissionDeleted>>,
    #[serde(
        rename = "external_key.registered",
        skip_serializing_if = "Option::is_none"
    )]
    pub external_key_registered: Option<Box<models::AuditLogExternalKeyRegistered>>,
    #[serde(
        rename = "external_key.removed",
        skip_serializing_if = "Option::is_none"
    )]
    pub external_key_removed: Option<Box<models::AuditLogExternalKeyRemoved>>,
    #[serde(rename = "group.created", skip_serializing_if = "Option::is_none")]
    pub group_created: Option<Box<models::AuditLogGroupCreated>>,
    #[serde(rename = "group.updated", skip_serializing_if = "Option::is_none")]
    pub group_updated: Option<Box<models::AuditLogGroupUpdated>>,
    #[serde(rename = "group.deleted", skip_serializing_if = "Option::is_none")]
    pub group_deleted: Option<Box<models::AuditLogGroupDeleted>>,
    #[serde(rename = "scim.enabled", skip_serializing_if = "Option::is_none")]
    pub scim_enabled: Option<Box<models::AuditLogScimEnabled>>,
    #[serde(rename = "scim.disabled", skip_serializing_if = "Option::is_none")]
    pub scim_disabled: Option<Box<models::AuditLogScimDisabled>>,
    #[serde(rename = "invite.sent", skip_serializing_if = "Option::is_none")]
    pub invite_sent: Option<Box<models::AuditLogInviteSent>>,
    #[serde(rename = "invite.accepted", skip_serializing_if = "Option::is_none")]
    pub invite_accepted: Option<Box<models::AuditLogInviteAccepted>>,
    #[serde(rename = "invite.deleted", skip_serializing_if = "Option::is_none")]
    pub invite_deleted: Option<Box<models::AuditLogInviteAccepted>>,
    #[serde(
        rename = "ip_allowlist.created",
        skip_serializing_if = "Option::is_none"
    )]
    pub ip_allowlist_created: Option<Box<models::AuditLogIpAllowlistCreated>>,
    #[serde(
        rename = "ip_allowlist.updated",
        skip_serializing_if = "Option::is_none"
    )]
    pub ip_allowlist_updated: Option<Box<models::AuditLogIpAllowlistUpdated>>,
    #[serde(
        rename = "ip_allowlist.deleted",
        skip_serializing_if = "Option::is_none"
    )]
    pub ip_allowlist_deleted: Option<Box<models::AuditLogIpAllowlistDeleted>>,
    #[serde(
        rename = "ip_allowlist.config.activated",
        skip_serializing_if = "Option::is_none"
    )]
    pub ip_allowlist_config_activated: Option<Box<models::AuditLogIpAllowlistConfigActivated>>,
    #[serde(
        rename = "ip_allowlist.config.deactivated",
        skip_serializing_if = "Option::is_none"
    )]
    pub ip_allowlist_config_deactivated: Option<Box<models::AuditLogIpAllowlistConfigDeactivated>>,
    /// This event has no additional fields beyond the standard audit log attributes.
    #[serde(rename = "login.succeeded", skip_serializing_if = "Option::is_none")]
    pub login_succeeded: Option<serde_json::Value>,
    #[serde(rename = "login.failed", skip_serializing_if = "Option::is_none")]
    pub login_failed: Option<Box<models::AuditLogLoginFailed>>,
    /// This event has no additional fields beyond the standard audit log attributes.
    #[serde(rename = "logout.succeeded", skip_serializing_if = "Option::is_none")]
    pub logout_succeeded: Option<serde_json::Value>,
    #[serde(rename = "logout.failed", skip_serializing_if = "Option::is_none")]
    pub logout_failed: Option<Box<models::AuditLogLoginFailed>>,
    #[serde(
        rename = "organization.updated",
        skip_serializing_if = "Option::is_none"
    )]
    pub organization_updated: Option<Box<models::AuditLogOrganizationUpdated>>,
    #[serde(rename = "project.created", skip_serializing_if = "Option::is_none")]
    pub project_created: Option<Box<models::AuditLogProjectCreated>>,
    #[serde(rename = "project.updated", skip_serializing_if = "Option::is_none")]
    pub project_updated: Option<Box<models::AuditLogProjectUpdated>>,
    #[serde(rename = "project.archived", skip_serializing_if = "Option::is_none")]
    pub project_archived: Option<Box<models::AuditLogProjectArchived>>,
    #[serde(rename = "project.deleted", skip_serializing_if = "Option::is_none")]
    pub project_deleted: Option<Box<models::AuditLogProjectArchived>>,
    #[serde(rename = "rate_limit.updated", skip_serializing_if = "Option::is_none")]
    pub rate_limit_updated: Option<Box<models::AuditLogRateLimitUpdated>>,
    #[serde(rename = "rate_limit.deleted", skip_serializing_if = "Option::is_none")]
    pub rate_limit_deleted: Option<Box<models::AuditLogRateLimitDeleted>>,
    #[serde(rename = "role.created", skip_serializing_if = "Option::is_none")]
    pub role_created: Option<Box<models::AuditLogRoleCreated>>,
    #[serde(rename = "role.updated", skip_serializing_if = "Option::is_none")]
    pub role_updated: Option<Box<models::AuditLogRoleUpdated>>,
    #[serde(rename = "role.deleted", skip_serializing_if = "Option::is_none")]
    pub role_deleted: Option<Box<models::AuditLogRoleDeleted>>,
    #[serde(
        rename = "role.assignment.created",
        skip_serializing_if = "Option::is_none"
    )]
    pub role_assignment_created: Option<Box<models::AuditLogRoleAssignmentCreated>>,
    #[serde(
        rename = "role.assignment.deleted",
        skip_serializing_if = "Option::is_none"
    )]
    pub role_assignment_deleted: Option<Box<models::AuditLogRoleAssignmentDeleted>>,
    #[serde(
        rename = "service_account.created",
        skip_serializing_if = "Option::is_none"
    )]
    pub service_account_created: Option<Box<models::AuditLogServiceAccountCreated>>,
    #[serde(
        rename = "service_account.updated",
        skip_serializing_if = "Option::is_none"
    )]
    pub service_account_updated: Option<Box<models::AuditLogServiceAccountUpdated>>,
    #[serde(
        rename = "service_account.deleted",
        skip_serializing_if = "Option::is_none"
    )]
    pub service_account_deleted: Option<Box<models::AuditLogServiceAccountDeleted>>,
    #[serde(rename = "user.added", skip_serializing_if = "Option::is_none")]
    pub user_added: Option<Box<models::AuditLogUserAdded>>,
    #[serde(rename = "user.updated", skip_serializing_if = "Option::is_none")]
    pub user_updated: Option<Box<models::AuditLogUserUpdated>>,
    #[serde(rename = "user.deleted", skip_serializing_if = "Option::is_none")]
    pub user_deleted: Option<Box<models::AuditLogUserDeleted>>,
    #[serde(
        rename = "certificate.created",
        skip_serializing_if = "Option::is_none"
    )]
    pub certificate_created: Option<Box<models::AuditLogCertificateCreated>>,
    #[serde(
        rename = "certificate.updated",
        skip_serializing_if = "Option::is_none"
    )]
    pub certificate_updated: Option<Box<models::AuditLogCertificateCreated>>,
    #[serde(
        rename = "certificate.deleted",
        skip_serializing_if = "Option::is_none"
    )]
    pub certificate_deleted: Option<Box<models::AuditLogCertificateDeleted>>,
    #[serde(
        rename = "certificates.activated",
        skip_serializing_if = "Option::is_none"
    )]
    pub certificates_activated: Option<Box<models::AuditLogCertificatesActivated>>,
    #[serde(
        rename = "certificates.deactivated",
        skip_serializing_if = "Option::is_none"
    )]
    pub certificates_deactivated: Option<Box<models::AuditLogCertificatesActivated>>,
}

impl AuditLog {
    /// A log of a user action or configuration change within this organization.
    pub fn new(
        id: String,
        r#type: models::AuditLogEventType,
        effective_at: i32,
        actor: models::AuditLogActor,
    ) -> AuditLog {
        AuditLog {
            id,
            r#type,
            effective_at,
            project: None,
            actor: Box::new(actor),
            api_key_created: None,
            api_key_updated: None,
            api_key_deleted: None,
            checkpoint_permission_created: None,
            checkpoint_permission_deleted: None,
            external_key_registered: None,
            external_key_removed: None,
            group_created: None,
            group_updated: None,
            group_deleted: None,
            scim_enabled: None,
            scim_disabled: None,
            invite_sent: None,
            invite_accepted: None,
            invite_deleted: None,
            ip_allowlist_created: None,
            ip_allowlist_updated: None,
            ip_allowlist_deleted: None,
            ip_allowlist_config_activated: None,
            ip_allowlist_config_deactivated: None,
            login_succeeded: None,
            login_failed: None,
            logout_succeeded: None,
            logout_failed: None,
            organization_updated: None,
            project_created: None,
            project_updated: None,
            project_archived: None,
            project_deleted: None,
            rate_limit_updated: None,
            rate_limit_deleted: None,
            role_created: None,
            role_updated: None,
            role_deleted: None,
            role_assignment_created: None,
            role_assignment_deleted: None,
            service_account_created: None,
            service_account_updated: None,
            service_account_deleted: None,
            user_added: None,
            user_updated: None,
            user_deleted: None,
            certificate_created: None,
            certificate_updated: None,
            certificate_deleted: None,
            certificates_activated: None,
            certificates_deactivated: None,
        }
    }
}

impl std::fmt::Display for AuditLog {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match serde_json::to_string(self) {
            Ok(s) => write!(f, "{}", s),
            Err(_) => Err(std::fmt::Error),
        }
    }
}