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 #[serde(rename = "type")]
77 pub kind: String,
78 pub session: Option<AuditLogActorSession>,
80 pub api_key: Option<AuditLogActorApiKey>,
82}
83
84#[derive(Debug, Serialize, Deserialize)]
86pub struct AuditLogActorSession {
87 pub user: AuditLogActorUser,
89 pub ip_address: String,
91}
92
93#[derive(Debug, Serialize, Deserialize)]
95pub struct AuditLogActorApiKey {
96 pub id: String,
98 #[serde(rename = "type")]
100 pub kind: AuditLogActorApiKeyType,
101 pub user: Option<AuditLogActorUser>,
103 pub service_account: Option<AuditLogActorServiceAccount>,
105}
106
107#[derive(Debug, Serialize, Deserialize)]
108#[serde(rename_all = "snake_case")]
109pub enum AuditLogActorApiKeyType {
110 User,
111 ServiceAccount,
112}
113
114#[derive(Debug, Serialize, Deserialize)]
116pub struct AuditLogActorUser {
117 pub id: String,
119 pub email: String,
121}
122
123#[derive(Debug, Serialize, Deserialize)]
125pub struct AuditLogActorServiceAccount {
126 pub id: String,
128}
129
130#[derive(Debug, Serialize, Deserialize)]
132pub struct AuditLog {
133 pub id: String,
135 #[serde(rename = "type")]
137 pub kind: AuditLogEventType,
138 pub effective_at: u32,
140 pub project: Option<AuditLogProject>,
142 pub actor: AuditLogActor,
144 #[serde(rename = "api_key.created")]
146 pub api_key_created: Option<AuditLogApiKeyCreated>,
147 #[serde(rename = "api_key.updated")]
149 pub api_key_updated: Option<AuditLogApiKeyUpdated>,
150 #[serde(rename = "api_key.deleted")]
152 pub api_key_deleted: Option<AuditLogApiKeyDeleted>,
153 #[serde(rename = "invite.sent")]
155 pub invite_sent: Option<AuditLogInviteSent>,
156 #[serde(rename = "invite.accepted")]
158 pub invite_accepted: Option<AuditLogInviteAccepted>,
159 #[serde(rename = "invite.deleted")]
161 pub invite_deleted: Option<AuditLogInviteDeleted>,
162 #[serde(rename = "login.failed")]
164 pub login_failed: Option<AuditLogLoginFailed>,
165 #[serde(rename = "logout.failed")]
167 pub logout_failed: Option<AuditLogLogoutFailed>,
168 #[serde(rename = "organization.updated")]
170 pub organization_updated: Option<AuditLogOrganizationUpdated>,
171 #[serde(rename = "project.created")]
173 pub project_created: Option<AuditLogProjectCreated>,
174 #[serde(rename = "project.updated")]
176 pub project_updated: Option<AuditLogProjectUpdated>,
177 #[serde(rename = "project.archived")]
179 pub project_archived: Option<AuditLogProjectArchived>,
180 #[serde(rename = "service_account.created")]
182 pub service_account_created: Option<AuditLogServiceAccountCreated>,
183 #[serde(rename = "service_account.updated")]
185 pub service_account_updated: Option<AuditLogServiceAccountUpdated>,
186 #[serde(rename = "service_account.deleted")]
188 pub service_account_deleted: Option<AuditLogServiceAccountDeleted>,
189 #[serde(rename = "user.added")]
191 pub user_added: Option<AuditLogUserAdded>,
192 #[serde(rename = "user.updated")]
194 pub user_updated: Option<AuditLogUserUpdated>,
195 #[serde(rename = "user.deleted")]
197 pub user_deleted: Option<AuditLogUserDeleted>,
198}
199
200#[derive(Debug, Serialize, Deserialize)]
202pub struct AuditLogApiKeyCreated {
203 pub id: String,
205 pub data: Option<AuditLogApiKeyCreatedData>,
207}
208
209#[derive(Debug, Serialize, Deserialize)]
211pub struct AuditLogApiKeyCreatedData {
212 pub scopes: Option<Vec<String>>,
214}
215
216#[derive(Debug, Serialize, Deserialize)]
218pub struct AuditLogApiKeyUpdated {
219 pub id: String,
221 pub changes_requested: Option<AuditLogApiKeyUpdatedChangesRequested>,
223}
224
225#[derive(Debug, Serialize, Deserialize)]
227pub struct AuditLogApiKeyUpdatedChangesRequested {
228 pub scopes: Option<Vec<String>>,
230}
231
232#[derive(Debug, Serialize, Deserialize)]
234pub struct AuditLogApiKeyDeleted {
235 pub id: String,
237}
238
239#[derive(Debug, Serialize, Deserialize)]
241pub struct AuditLogInviteSent {
242 pub id: String,
244 pub data: Option<AuditLogInviteSentData>,
246}
247
248#[derive(Debug, Serialize, Deserialize)]
250pub struct AuditLogInviteSentData {
251 pub email: String,
253 pub role: String,
255}
256
257#[derive(Debug, Serialize, Deserialize)]
259pub struct AuditLogInviteAccepted {
260 pub id: String,
262}
263
264#[derive(Debug, Serialize, Deserialize)]
266pub struct AuditLogInviteDeleted {
267 pub id: String,
269}
270
271#[derive(Debug, Serialize, Deserialize)]
273pub struct AuditLogLoginFailed {
274 pub error_code: String,
276 pub error_message: String,
278}
279
280#[derive(Debug, Serialize, Deserialize)]
282pub struct AuditLogLogoutFailed {
283 pub error_code: String,
285 pub error_message: String,
287}
288
289#[derive(Debug, Serialize, Deserialize)]
291pub struct AuditLogOrganizationUpdated {
292 pub id: String,
294 pub changes_requested: Option<AuditLogOrganizationUpdatedChangesRequested>,
296}
297
298#[derive(Debug, Serialize, Deserialize)]
300pub struct AuditLogOrganizationUpdatedChangesRequested {
301 pub title: Option<String>,
303 pub description: Option<String>,
305 pub name: Option<String>,
307 pub settings: Option<AuditLogOrganizationUpdatedChangesRequestedSettings>,
309}
310
311#[derive(Debug, Serialize, Deserialize)]
313pub struct AuditLogOrganizationUpdatedChangesRequestedSettings {
314 pub threads_ui_visibility: Option<String>,
316 pub usage_dashboard_visibility: Option<String>,
318}
319
320#[derive(Debug, Serialize, Deserialize)]
322pub struct AuditLogProjectCreated {
323 pub id: String,
325 pub data: Option<AuditLogProjectCreatedData>,
327}
328
329#[derive(Debug, Serialize, Deserialize)]
331pub struct AuditLogProjectCreatedData {
332 pub name: String,
334 pub title: Option<String>,
336}
337
338#[derive(Debug, Serialize, Deserialize)]
340pub struct AuditLogProjectUpdated {
341 pub id: String,
343 pub changes_requested: Option<AuditLogProjectUpdatedChangesRequested>,
345}
346
347#[derive(Debug, Serialize, Deserialize)]
349pub struct AuditLogProjectUpdatedChangesRequested {
350 pub title: Option<String>,
352}
353
354#[derive(Debug, Serialize, Deserialize)]
356pub struct AuditLogProjectArchived {
357 pub id: String,
359}
360
361#[derive(Debug, Serialize, Deserialize)]
363pub struct AuditLogServiceAccountCreated {
364 pub id: String,
366 pub data: Option<AuditLogServiceAccountCreatedData>,
368}
369
370#[derive(Debug, Serialize, Deserialize)]
372pub struct AuditLogServiceAccountCreatedData {
373 pub role: String,
375}
376
377#[derive(Debug, Serialize, Deserialize)]
379pub struct AuditLogServiceAccountUpdated {
380 pub id: String,
382 pub changes_requested: Option<AuditLogServiceAccountUpdatedChangesRequested>,
384}
385
386#[derive(Debug, Serialize, Deserialize)]
388pub struct AuditLogServiceAccountUpdatedChangesRequested {
389 pub role: String,
391}
392
393#[derive(Debug, Serialize, Deserialize)]
395pub struct AuditLogServiceAccountDeleted {
396 pub id: String,
398}
399
400#[derive(Debug, Serialize, Deserialize)]
402pub struct AuditLogUserAdded {
403 pub id: String,
405 pub data: Option<AuditLogUserAddedData>,
407}
408
409#[derive(Debug, Serialize, Deserialize)]
411pub struct AuditLogUserAddedData {
412 pub role: String,
414}
415
416#[derive(Debug, Serialize, Deserialize)]
418pub struct AuditLogUserUpdated {
419 pub id: String,
421 pub changes_requested: Option<AuditLogUserUpdatedChangesRequested>,
423}
424
425#[derive(Debug, Serialize, Deserialize)]
427pub struct AuditLogUserUpdatedChangesRequested {
428 pub role: String,
430}
431
432#[derive(Debug, Serialize, Deserialize)]
434pub struct AuditLogUserDeleted {
435 pub id: String,
437}