Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
1.2 kB ยท 41 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142import { getRawWorkOS } from "./client";
export type SsoWebhookEvent = | { type: "domain.verified"; organizationId: string; domain: string } | { type: "domain.deleted"; organizationId: string; domain: string } | { type: "ignored" };
/** * Verify a WorkOS webhook signature and narrow it to the two domain events we * act on. Returns `ignored` for everything else so callers can 200 and stop * WorkOS retrying. Throws when the signature does not verify. */export async function verifyWorkOSWebhook(args: { payload: string; sigHeader: string; secret: string;}): Promise<SsoWebhookEvent> { const event = await getRawWorkOS().webhooks.constructEvent({ payload: JSON.parse(args.payload), sigHeader: args.sigHeader, secret: args.secret, });
if (event.event === "organization_domain.verified") { return { type: "domain.verified", organizationId: event.data.organizationId, domain: event.data.domain, }; }
if (event.event === "organization_domain.deleted") { return { type: "domain.deleted", organizationId: event.data.organizationId, domain: event.data.domain, }; }
return { type: "ignored" };}