1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
5pub enum AuditLogEventType {
6 #[serde(rename = "api_key.created")]
7 ApiKeyCreated,
8 #[serde(rename = "api_key.updated")]
9 ApiKeyUpdated,
10 #[serde(rename = "api_key.deleted")]
11 ApiKeyDeleted,
12 #[serde(rename = "invite.sent")]
13 InviteSent,
14 #[serde(rename = "invite.accepted")]
15 InviteAccepted,
16 #[serde(rename = "invite.deleted")]
17 InviteDeleted,
18 #[serde(rename = "login.succeeded")]
19 LoginSucceeded,
20 #[serde(rename = "login.failed")]
21 LoginFailed,
22 #[serde(rename = "logout.succeeded")]
23 LogoutSucceeded,
24 #[serde(rename = "logout.failed")]
25 LogoutFailed,
26 #[serde(rename = "organization.updated")]
27 OrganizationUpdated,
28 #[serde(rename = "project.created")]
29 ProjectCreated,
30 #[serde(rename = "project.updated")]
31 ProjectUpdated,
32 #[serde(rename = "project.archived")]
33 ProjectArchived,
34 #[serde(rename = "service_account.created")]
35 ServiceAccountCreated,
36 #[serde(rename = "service_account.updated")]
37 ServiceAccountUpdated,
38 #[serde(rename = "service_account.deleted")]
39 ServiceAccountDeleted,
40 #[serde(rename = "user.added")]
41 UserAdded,
42 #[serde(rename = "user.updated")]
43 UserUpdated,
44 #[serde(rename = "user.deleted")]
45 UserDeleted,
46}
47
48#[derive(Debug, Serialize, Deserialize)]
50pub struct ListAuditLogsResponse {
51 pub object: String,
53 pub data: Vec<AuditLog>,
55 pub first_id: String,
57 pub last_id: String,
59 pub has_more: bool,
61}
62
63#[derive(Debug, Serialize, Deserialize)]
65pub struct AuditLogProject {
66 pub id: String,
68 pub name: String,
70}
71
72#[derive(Debug, Serialize, Deserialize)]
74pub struct AuditLogActor {
75 pub r#type: String,
77 pub session: Option<AuditLogActorSession>,
79 pub api_key: Option<AuditLogActorApiKey>,
81}
82
83#[derive(Debug, Serialize, Deserialize)]
85pub struct AuditLogActorSession {
86 pub user: AuditLogActorUser,
88 pub ip_address: String,
90}
91
92#[derive(Debug, Serialize, Deserialize)]
94pub struct AuditLogActorApiKey {
95 pub id: String,
97 pub r#type: AuditLogActorApiKeyType,
99 pub user: Option<AuditLogActorUser>,
101 pub service_account: Option<AuditLogActorServiceAccount>,
103}
104
105#[derive(Debug, Serialize, Deserialize)]
106#[serde(rename_all = "snake_case")]
107pub enum AuditLogActorApiKeyType {
108 User,
109 ServiceAccount,
110}
111
112#[derive(Debug, Serialize, Deserialize)]
114pub struct AuditLogActorUser {
115 pub id: String,
117 pub email: String,
119}
120
121#[derive(Debug, Serialize, Deserialize)]
123pub struct AuditLogActorServiceAccount {
124 pub id: String,
126}
127
128#[derive(Debug, Serialize, Deserialize)]
130pub struct AuditLog {
131 pub id: String,
133 pub r#type: AuditLogEventType,
135 pub effective_at: u32,
137 pub project: Option<AuditLogProject>,
139 pub actor: AuditLogActor,
141 #[serde(rename = "api_key.created")]
143 pub api_key_created: Option<AuditLogApiKeyCreated>,
144 #[serde(rename = "api_key.updated")]
146 pub api_key_updated: Option<AuditLogApiKeyUpdated>,
147 #[serde(rename = "api_key.deleted")]
149 pub api_key_deleted: Option<AuditLogApiKeyDeleted>,
150 #[serde(rename = "invite.sent")]
152 pub invite_sent: Option<AuditLogInviteSent>,
153 #[serde(rename = "invite.accepted")]
155 pub invite_accepted: Option<AuditLogInviteAccepted>,
156 #[serde(rename = "invite.deleted")]
158 pub invite_deleted: Option<AuditLogInviteDeleted>,
159 #[serde(rename = "login.failed")]
161 pub login_failed: Option<AuditLogLoginFailed>,
162 #[serde(rename = "logout.failed")]
164 pub logout_failed: Option<AuditLogLogoutFailed>,
165 #[serde(rename = "organization.updated")]
167 pub organization_updated: Option<AuditLogOrganizationUpdated>,
168 #[serde(rename = "project.created")]
170 pub project_created: Option<AuditLogProjectCreated>,
171 #[serde(rename = "project.updated")]
173 pub project_updated: Option<AuditLogProjectUpdated>,
174 #[serde(rename = "project.archived")]
176 pub project_archived: Option<AuditLogProjectArchived>,
177 #[serde(rename = "service_account.created")]
179 pub service_account_created: Option<AuditLogServiceAccountCreated>,
180 #[serde(rename = "service_account.updated")]
182 pub service_account_updated: Option<AuditLogServiceAccountUpdated>,
183 #[serde(rename = "service_account.deleted")]
185 pub service_account_deleted: Option<AuditLogServiceAccountDeleted>,
186 #[serde(rename = "user.added")]
188 pub user_added: Option<AuditLogUserAdded>,
189 #[serde(rename = "user.updated")]
191 pub user_updated: Option<AuditLogUserUpdated>,
192 #[serde(rename = "user.deleted")]
194 pub user_deleted: Option<AuditLogUserDeleted>,
195}
196
197#[derive(Debug, Serialize, Deserialize)]
199pub struct AuditLogApiKeyCreated {
200 pub id: String,
202 pub data: Option<AuditLogApiKeyCreatedData>,
204}
205
206#[derive(Debug, Serialize, Deserialize)]
208pub struct AuditLogApiKeyCreatedData {
209 pub scopes: Option<Vec<String>>,
211}
212
213#[derive(Debug, Serialize, Deserialize)]
215pub struct AuditLogApiKeyUpdated {
216 pub id: String,
218 pub changes_requested: Option<AuditLogApiKeyUpdatedChangesRequested>,
220}
221
222#[derive(Debug, Serialize, Deserialize)]
224pub struct AuditLogApiKeyUpdatedChangesRequested {
225 pub scopes: Option<Vec<String>>,
227}
228
229#[derive(Debug, Serialize, Deserialize)]
231pub struct AuditLogApiKeyDeleted {
232 pub id: String,
234}
235
236#[derive(Debug, Serialize, Deserialize)]
238pub struct AuditLogInviteSent {
239 pub id: String,
241 pub data: Option<AuditLogInviteSentData>,
243}
244
245#[derive(Debug, Serialize, Deserialize)]
247pub struct AuditLogInviteSentData {
248 pub email: String,
250 pub role: String,
252}
253
254#[derive(Debug, Serialize, Deserialize)]
256pub struct AuditLogInviteAccepted {
257 pub id: String,
259}
260
261#[derive(Debug, Serialize, Deserialize)]
263pub struct AuditLogInviteDeleted {
264 pub id: String,
266}
267
268#[derive(Debug, Serialize, Deserialize)]
270pub struct AuditLogLoginFailed {
271 pub error_code: String,
273 pub error_message: String,
275}
276
277#[derive(Debug, Serialize, Deserialize)]
279pub struct AuditLogLogoutFailed {
280 pub error_code: String,
282 pub error_message: String,
284}
285
286#[derive(Debug, Serialize, Deserialize)]
288pub struct AuditLogOrganizationUpdated {
289 pub id: String,
291 pub changes_requested: Option<AuditLogOrganizationUpdatedChangesRequested>,
293}
294
295#[derive(Debug, Serialize, Deserialize)]
297pub struct AuditLogOrganizationUpdatedChangesRequested {
298 pub title: Option<String>,
300 pub description: Option<String>,
302 pub name: Option<String>,
304 pub settings: Option<AuditLogOrganizationUpdatedChangesRequestedSettings>,
306}
307
308#[derive(Debug, Serialize, Deserialize)]
310pub struct AuditLogOrganizationUpdatedChangesRequestedSettings {
311 pub threads_ui_visibility: Option<String>,
313 pub usage_dashboard_visibility: Option<String>,
315}
316
317#[derive(Debug, Serialize, Deserialize)]
319pub struct AuditLogProjectCreated {
320 pub id: String,
322 pub data: Option<AuditLogProjectCreatedData>,
324}
325
326#[derive(Debug, Serialize, Deserialize)]
328pub struct AuditLogProjectCreatedData {
329 pub name: String,
331 pub title: Option<String>,
333}
334
335#[derive(Debug, Serialize, Deserialize)]
337pub struct AuditLogProjectUpdated {
338 pub id: String,
340 pub changes_requested: Option<AuditLogProjectUpdatedChangesRequested>,
342}
343
344#[derive(Debug, Serialize, Deserialize)]
346pub struct AuditLogProjectUpdatedChangesRequested {
347 pub title: Option<String>,
349}
350
351#[derive(Debug, Serialize, Deserialize)]
353pub struct AuditLogProjectArchived {
354 pub id: String,
356}
357
358#[derive(Debug, Serialize, Deserialize)]
360pub struct AuditLogServiceAccountCreated {
361 pub id: String,
363 pub data: Option<AuditLogServiceAccountCreatedData>,
365}
366
367#[derive(Debug, Serialize, Deserialize)]
369pub struct AuditLogServiceAccountCreatedData {
370 pub role: String,
372}
373
374#[derive(Debug, Serialize, Deserialize)]
376pub struct AuditLogServiceAccountUpdated {
377 pub id: String,
379 pub changes_requested: Option<AuditLogServiceAccountUpdatedChangesRequested>,
381}
382
383#[derive(Debug, Serialize, Deserialize)]
385pub struct AuditLogServiceAccountUpdatedChangesRequested {
386 pub role: String,
388}
389
390#[derive(Debug, Serialize, Deserialize)]
392pub struct AuditLogServiceAccountDeleted {
393 pub id: String,
395}
396
397#[derive(Debug, Serialize, Deserialize)]
399pub struct AuditLogUserAdded {
400 pub id: String,
402 pub data: Option<AuditLogUserAddedData>,
404}
405
406#[derive(Debug, Serialize, Deserialize)]
408pub struct AuditLogUserAddedData {
409 pub role: String,
411}
412
413#[derive(Debug, Serialize, Deserialize)]
415pub struct AuditLogUserUpdated {
416 pub id: String,
418 pub changes_requested: Option<AuditLogUserUpdatedChangesRequested>,
420}
421
422#[derive(Debug, Serialize, Deserialize)]
424pub struct AuditLogUserUpdatedChangesRequested {
425 pub role: String,
427}
428
429#[derive(Debug, Serialize, Deserialize)]
431pub struct AuditLogUserDeleted {
432 pub id: String,
434}