Skip to content

Commit 4021cb2

Browse files
waleedlatif1claude
andcommitted
feat(audit): enrich all recordAudit calls with structured metadata
- Move resource type filter options to ee/audit-logs/constants.ts (derived from AuditResourceType, no separate list to maintain) - Remove export from internal cursor helpers in query.ts - Add 5 new AuditAction entries: BYOK_KEY_UPDATED, ENVIRONMENT_DELETED, INVITATION_RESENT, WORKSPACE_UPDATED, ORG_INVITATION_RESENT - Enrich ~80 recordAudit calls across the codebase with structured metadata (knowledge bases, connectors, documents, workspaces, members, invitations, workflows, deployments, templates, MCP servers, credential sets, organizations, permission groups, files, tables, notifications, copilot operations) - Sync audit mock with all new entries Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 6c2495b commit 4021cb2

File tree

82 files changed

+605
-83
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+605
-83
lines changed

apps/sim/app/api/billing/credits/route.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,12 @@ export async function POST(request: NextRequest) {
6464
actorEmail: session.user.email,
6565
action: AuditAction.CREDIT_PURCHASED,
6666
resourceType: AuditResourceType.BILLING,
67+
resourceId: validation.data.requestId,
6768
description: `Purchased $${validation.data.amount} in credits`,
68-
metadata: { amount: validation.data.amount, requestId: validation.data.requestId },
69+
metadata: {
70+
amountDollars: validation.data.amount,
71+
requestId: validation.data.requestId,
72+
},
6973
request,
7074
})
7175

apps/sim/app/api/chat/manage/[id]/route.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,12 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise<
233233
resourceId: chatId,
234234
resourceName: title || existingChatRecord.title,
235235
description: `Updated chat deployment "${title || existingChatRecord.title}"`,
236+
metadata: {
237+
identifier: updatedIdentifier,
238+
authType: updateData.authType || existingChatRecord.authType,
239+
workflowId: workflowId || existingChatRecord.workflowId,
240+
chatUrl,
241+
},
236242
request,
237243
})
238244

apps/sim/app/api/credential-sets/[id]/invite/[invitationId]/route.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,12 @@ export async function POST(
159159
resourceId: id,
160160
resourceName: result.set.name,
161161
description: `Resent credential set invitation to ${invitation.email}`,
162-
metadata: { invitationId, targetEmail: invitation.email },
162+
metadata: {
163+
invitationId,
164+
targetEmail: invitation.email,
165+
providerId: result.set.providerId,
166+
credentialSetName: result.set.name,
167+
},
163168
request: req,
164169
})
165170

apps/sim/app/api/credential-sets/[id]/invite/route.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,12 @@ export async function POST(req: NextRequest, { params }: { params: Promise<{ id:
187187
actorEmail: session.user.email ?? undefined,
188188
resourceName: result.set.name,
189189
description: `Created invitation for credential set "${result.set.name}"${email ? ` to ${email}` : ''}`,
190-
metadata: { targetEmail: email || undefined },
190+
metadata: {
191+
invitationId: invitation.id,
192+
targetEmail: email || undefined,
193+
providerId: result.set.providerId,
194+
credentialSetName: result.set.name,
195+
},
191196
request: req,
192197
})
193198

apps/sim/app/api/credential-sets/[id]/members/route.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,13 @@ export async function DELETE(req: NextRequest, { params }: { params: Promise<{ i
197197
actorEmail: session.user.email ?? undefined,
198198
resourceName: result.set.name,
199199
description: `Removed member from credential set "${result.set.name}"`,
200-
metadata: { targetEmail: memberToRemove.email ?? undefined },
200+
metadata: {
201+
memberId,
202+
memberUserId: memberToRemove.userId,
203+
targetEmail: memberToRemove.email ?? undefined,
204+
providerId: result.set.providerId,
205+
credentialSetName: result.set.name,
206+
},
201207
request: req,
202208
})
203209

apps/sim/app/api/credential-sets/[id]/route.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,13 @@ export async function PUT(req: NextRequest, { params }: { params: Promise<{ id:
142142
actorEmail: session.user.email ?? undefined,
143143
resourceName: updated?.name ?? result.set.name,
144144
description: `Updated credential set "${updated?.name ?? result.set.name}"`,
145+
metadata: {
146+
organizationId: result.set.organizationId,
147+
providerId: result.set.providerId,
148+
updatedFields: Object.keys(updates).filter(
149+
(k) => updates[k as keyof typeof updates] !== undefined
150+
),
151+
},
145152
request: req,
146153
})
147154

@@ -199,6 +206,7 @@ export async function DELETE(req: NextRequest, { params }: { params: Promise<{ i
199206
actorEmail: session.user.email ?? undefined,
200207
resourceName: result.set.name,
201208
description: `Deleted credential set "${result.set.name}"`,
209+
metadata: { organizationId: result.set.organizationId, providerId: result.set.providerId },
202210
request: req,
203211
})
204212

apps/sim/app/api/credential-sets/invite/[token]/route.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,12 @@ export async function POST(req: NextRequest, { params }: { params: Promise<{ tok
192192
resourceId: invitation.credentialSetId,
193193
resourceName: invitation.credentialSetName,
194194
description: `Accepted credential set invitation`,
195-
metadata: { invitationId: invitation.id },
195+
metadata: {
196+
invitationId: invitation.id,
197+
credentialSetId: invitation.credentialSetId,
198+
providerId: invitation.providerId,
199+
credentialSetName: invitation.credentialSetName,
200+
},
196201
request: req,
197202
})
198203

apps/sim/app/api/credential-sets/memberships/route.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ export async function DELETE(req: NextRequest) {
116116
resourceType: AuditResourceType.CREDENTIAL_SET,
117117
resourceId: credentialSetId,
118118
description: `Left credential set`,
119+
metadata: { credentialSetId },
119120
request: req,
120121
})
121122

apps/sim/app/api/credential-sets/route.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ export async function POST(req: Request) {
179179
actorEmail: session.user.email ?? undefined,
180180
resourceName: name,
181181
description: `Created credential set "${name}"`,
182+
metadata: { organizationId, providerId, credentialSetName: name },
182183
request: req,
183184
})
184185

apps/sim/app/api/environment/route.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,13 @@ export async function POST(req: NextRequest) {
6767
actorEmail: session.user.email,
6868
action: AuditAction.ENVIRONMENT_UPDATED,
6969
resourceType: AuditResourceType.ENVIRONMENT,
70-
description: 'Updated global environment variables',
71-
metadata: { variableCount: Object.keys(variables).length },
70+
resourceId: session.user.id,
71+
description: `Updated ${Object.keys(variables).length} personal environment variable(s)`,
72+
metadata: {
73+
variableCount: Object.keys(variables).length,
74+
updatedKeys: Object.keys(variables),
75+
scope: 'personal',
76+
},
7277
request: req,
7378
})
7479

0 commit comments

Comments
 (0)