use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub enum AuditLogEventType {
#[serde(rename = "api_key.created")]
ApiKeyCreated,
#[serde(rename = "api_key.updated")]
ApiKeyUpdated,
#[serde(rename = "api_key.deleted")]
ApiKeyDeleted,
#[serde(rename = "invite.sent")]
InviteSent,
#[serde(rename = "invite.accepted")]
InviteAccepted,
#[serde(rename = "invite.deleted")]
InviteDeleted,
#[serde(rename = "login.succeeded")]
LoginSucceeded,
#[serde(rename = "login.failed")]
LoginFailed,
#[serde(rename = "logout.succeeded")]
LogoutSucceeded,
#[serde(rename = "logout.failed")]
LogoutFailed,
#[serde(rename = "organization.updated")]
OrganizationUpdated,
#[serde(rename = "project.created")]
ProjectCreated,
#[serde(rename = "project.updated")]
ProjectUpdated,
#[serde(rename = "project.archived")]
ProjectArchived,
#[serde(rename = "service_account.created")]
ServiceAccountCreated,
#[serde(rename = "service_account.updated")]
ServiceAccountUpdated,
#[serde(rename = "service_account.deleted")]
ServiceAccountDeleted,
#[serde(rename = "user.added")]
UserAdded,
#[serde(rename = "user.updated")]
UserUpdated,
#[serde(rename = "user.deleted")]
UserDeleted,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ListAuditLogsResponse {
pub object: String,
pub data: Vec<AuditLog>,
pub first_id: String,
pub last_id: String,
pub has_more: bool,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogProject {
pub id: String,
pub name: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogActor {
pub r#type: String,
pub session: Option<AuditLogActorSession>,
pub api_key: Option<AuditLogActorApiKey>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogActorSession {
pub user: AuditLogActorUser,
pub ip_address: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogActorApiKey {
pub id: String,
pub r#type: AuditLogActorApiKeyType,
pub user: Option<AuditLogActorUser>,
pub service_account: Option<AuditLogActorServiceAccount>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AuditLogActorApiKeyType {
User,
ServiceAccount,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogActorUser {
pub id: String,
pub email: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogActorServiceAccount {
pub id: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLog {
pub id: String,
pub r#type: AuditLogEventType,
pub effective_at: u32,
pub project: Option<AuditLogProject>,
pub actor: AuditLogActor,
#[serde(rename = "api_key.created")]
pub api_key_created: Option<AuditLogApiKeyCreated>,
#[serde(rename = "api_key.updated")]
pub api_key_updated: Option<AuditLogApiKeyUpdated>,
#[serde(rename = "api_key.deleted")]
pub api_key_deleted: Option<AuditLogApiKeyDeleted>,
#[serde(rename = "invite.sent")]
pub invite_sent: Option<AuditLogInviteSent>,
#[serde(rename = "invite.accepted")]
pub invite_accepted: Option<AuditLogInviteAccepted>,
#[serde(rename = "invite.deleted")]
pub invite_deleted: Option<AuditLogInviteDeleted>,
#[serde(rename = "login.failed")]
pub login_failed: Option<AuditLogLoginFailed>,
#[serde(rename = "logout.failed")]
pub logout_failed: Option<AuditLogLogoutFailed>,
#[serde(rename = "organization.updated")]
pub organization_updated: Option<AuditLogOrganizationUpdated>,
#[serde(rename = "project.created")]
pub project_created: Option<AuditLogProjectCreated>,
#[serde(rename = "project.updated")]
pub project_updated: Option<AuditLogProjectUpdated>,
#[serde(rename = "project.archived")]
pub project_archived: Option<AuditLogProjectArchived>,
#[serde(rename = "service_account.created")]
pub service_account_created: Option<AuditLogServiceAccountCreated>,
#[serde(rename = "service_account.updated")]
pub service_account_updated: Option<AuditLogServiceAccountUpdated>,
#[serde(rename = "service_account.deleted")]
pub service_account_deleted: Option<AuditLogServiceAccountDeleted>,
#[serde(rename = "user.added")]
pub user_added: Option<AuditLogUserAdded>,
#[serde(rename = "user.updated")]
pub user_updated: Option<AuditLogUserUpdated>,
#[serde(rename = "user.deleted")]
pub user_deleted: Option<AuditLogUserDeleted>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogApiKeyCreated {
pub id: String,
pub data: Option<AuditLogApiKeyCreatedData>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogApiKeyCreatedData {
pub scopes: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogApiKeyUpdated {
pub id: String,
pub changes_requested: Option<AuditLogApiKeyUpdatedChangesRequested>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogApiKeyUpdatedChangesRequested {
pub scopes: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogApiKeyDeleted {
pub id: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogInviteSent {
pub id: String,
pub data: Option<AuditLogInviteSentData>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogInviteSentData {
pub email: String,
pub role: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogInviteAccepted {
pub id: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogInviteDeleted {
pub id: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogLoginFailed {
pub error_code: String,
pub error_message: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogLogoutFailed {
pub error_code: String,
pub error_message: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogOrganizationUpdated {
pub id: String,
pub changes_requested: Option<AuditLogOrganizationUpdatedChangesRequested>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogOrganizationUpdatedChangesRequested {
pub title: Option<String>,
pub description: Option<String>,
pub name: Option<String>,
pub settings: Option<AuditLogOrganizationUpdatedChangesRequestedSettings>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogOrganizationUpdatedChangesRequestedSettings {
pub threads_ui_visibility: Option<String>,
pub usage_dashboard_visibility: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogProjectCreated {
pub id: String,
pub data: Option<AuditLogProjectCreatedData>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogProjectCreatedData {
pub name: String,
pub title: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogProjectUpdated {
pub id: String,
pub changes_requested: Option<AuditLogProjectUpdatedChangesRequested>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogProjectUpdatedChangesRequested {
pub title: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogProjectArchived {
pub id: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogServiceAccountCreated {
pub id: String,
pub data: Option<AuditLogServiceAccountCreatedData>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogServiceAccountCreatedData {
pub role: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogServiceAccountUpdated {
pub id: String,
pub changes_requested: Option<AuditLogServiceAccountUpdatedChangesRequested>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogServiceAccountUpdatedChangesRequested {
pub role: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogServiceAccountDeleted {
pub id: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogUserAdded {
pub id: String,
pub data: Option<AuditLogUserAddedData>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogUserAddedData {
pub role: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogUserUpdated {
pub id: String,
pub changes_requested: Option<AuditLogUserUpdatedChangesRequested>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogUserUpdatedChangesRequested {
pub role: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AuditLogUserDeleted {
pub id: String,
}