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 = "certificate.created")]
CertificateCreated,
#[serde(rename = "certificate.updated")]
CertificateUpdated,
#[serde(rename = "certificate.deleted")]
CertificateDeleted,
#[serde(rename = "certificates.activated")]
CertificatesActivated,
#[serde(rename = "certificates.deactivated")]
CertificatesDeactivated,
#[serde(rename = "checkpoint.permission.created")]
CheckpointPermissionCreated,
#[serde(rename = "checkpoint.permission.deleted")]
CheckpointPermissionDeleted,
#[serde(rename = "external_key.registered")]
ExternalKeyRegistered,
#[serde(rename = "external_key.removed")]
ExternalKeyRemoved,
#[serde(rename = "group.created")]
GroupCreated,
#[serde(rename = "group.updated")]
GroupUpdated,
#[serde(rename = "group.deleted")]
GroupDeleted,
#[serde(rename = "invite.sent")]
InviteSent,
#[serde(rename = "invite.accepted")]
InviteAccepted,
#[serde(rename = "invite.deleted")]
InviteDeleted,
#[serde(rename = "ip_allowlist.created")]
IpAllowlistCreated,
#[serde(rename = "ip_allowlist.updated")]
IpAllowlistUpdated,
#[serde(rename = "ip_allowlist.deleted")]
IpAllowlistDeleted,
#[serde(rename = "ip_allowlist.config.activated")]
IpAllowlistConfigActivated,
#[serde(rename = "ip_allowlist.config.deactivated")]
IpAllowlistConfigDeactivated,
#[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 = "project.deleted")]
ProjectDeleted,
#[serde(rename = "rate_limit.updated")]
RateLimitUpdated,
#[serde(rename = "rate_limit.deleted")]
RateLimitDeleted,
#[serde(rename = "resource.deleted")]
ResourceDeleted,
#[serde(rename = "tunnel.created")]
TunnelCreated,
#[serde(rename = "tunnel.updated")]
TunnelUpdated,
#[serde(rename = "tunnel.deleted")]
TunnelDeleted,
#[serde(rename = "role.created")]
RoleCreated,
#[serde(rename = "role.updated")]
RoleUpdated,
#[serde(rename = "role.deleted")]
RoleDeleted,
#[serde(rename = "role.assignment.created")]
RoleAssignmentCreated,
#[serde(rename = "role.assignment.deleted")]
RoleAssignmentDeleted,
#[serde(rename = "scim.enabled")]
ScimEnabled,
#[serde(rename = "scim.disabled")]
ScimDisabled,
#[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: Option<String>,
pub last_id: Option<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 kind: 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 kind: 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 kind: AuditLogEventType,
pub effective_at: u64,
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,
}