hts/internal/schema/src/auditlog.ts

67 lines
1.6 KiB
TypeScript

import { z } from "zod";
export const unkeyAuditLogEvents = z.enum([
"workspace.create",
"workspace.update",
"workspace.delete",
"workspace.opt_in",
"api.create",
"api.update",
"api.delete",
"key.create",
"key.update",
"key.delete",
"vercelIntegration.create",
"vercelIntegration.update",
"vercelIntegration.delete",
"vercelBinding.create",
"vercelBinding.update",
"vercelBinding.delete",
"role.create",
"role.update",
"role.delete",
"permission.create",
"permission.update",
"permission.delete",
"authorization.connect_role_and_permission",
"authorization.disconnect_role_and_permissions",
"authorization.connect_role_and_key",
"authorization.disconnect_role_and_key",
"authorization.connect_permission_and_key",
"authorization.disconnect_permission_and_key",
]);
export const auditLogSchemaV1 = z.object({
/**
* The workspace owning this audit log
*/
workspaceId: z.string(),
/**
* Buckets are used as namespaces for different logs belonging to a single workspace
*/
bucket: z.string(),
auditLogId: z.string(),
event: z.string(),
description: z.string().optional(),
time: z.number(),
actor: z.object({
type: z.string(),
id: z.string(),
name: z.string().optional(),
meta: z.record(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(),
}),
resources: z.array(
z.object({
type: z.string(),
id: z.string(),
name: z.string().optional(),
meta: z.record(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(),
}),
),
context: z.object({
location: z.string(),
userAgent: z.string().optional(),
}),
});