Skip to content

tRPC API Reference

All client-server interactions in Wunderkint AI CRM are powered by tRPC with end-to-end TypeScript type safety.


Procedures in apps/web/lib/trpc/init.ts enforce access control before business logic executes:

// 1. Authenticated User
export const protectedProcedure = t.procedure.use(isAuthed);
// 2. Module Access Matrix Guard
export function moduleGuard(moduleName: CRMModule, action: 'read' | 'create' | 'edit' | 'delete') {
return protectedProcedure.use(async ({ ctx, next }) => {
// Evaluates permissions against user_roles and role_permissions in ctx.systemDb
const accessLevel = await checkModulePermission(ctx.user.id, moduleName, action, ctx.systemDb);
if (accessLevel === 'none') {
throw new TRPCError({ code: 'FORBIDDEN', message: 'Insufficient module permissions' });
}
return next({ ctx: { ...ctx, accessLevel } });
});
}

Router Purpose Key Procedures
leads Lead CRUD & pipeline transitions leads.list, leads.getById, leads.create, leads.updateStage
deals Deal forecasting & stage history deals.list, deals.getMetrics, deals.update
vendors Vendor directory & strike management vendors.list, vendors.logStrike, vendors.getHealthScore
tasks Task execution & blueprint templates tasks.listByDeal, tasks.createSubtask, tasks.complete
finance Invoices, commission & time entries finance.getInvoices, finance.calculateCommissions, finance.logTime
admin Role & workspace setting management admin.getRoles, admin.updatePermissions, admin.getAuditLogs