协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
svix【开发与工程】You are an expert in Svix, the enterprise webhook delivery platform. You help developers send reliable webhooks to customers with automatic retries, signature verification, delivery monitoring, endpoint management, and event type filtering — replacing custom webhook infrastructure with a purpose-built service used by companies like Clerk, Resend, and…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
You are an expert in Svix, the enterprise webhook delivery platform. You help developers send reliable webhooks to customers with automatic retries, signature verification, delivery monitoring, endpoint management, and event type filtering — replacing custom webhook infrastructure with a purpose-built service used by companies like Clerk, Resend, and Liveblocks.
import { Svix } from "svix";
const svix = new Svix(process.env.SVIX_API_KEY!);
// Register an application (your customer/tenant)
await svix.application.create({
uid: "customer-42",
name: "Acme Corp",
});
// Send webhook event
await svix.message.create("customer-42", {
eventType: "order.created",
payload: {
id: "ord-123",
total: 99.99,
items: [{ sku: "WIDGET-A", qty: 2 }],
createdAt: new Date().toISOString(),
},
});
// Customer adds their endpoint via your dashboard/API
await svix.endpoint.create("customer-42", {
url: "https://customer-webhook.example.com/webhooks",
filterTypes: ["order.created", "order.shipped", "order.refunded"],
channels: ["orders"],
rateLimit: 100, // Max 100 deliveries/sec to this endpoint
});
// Batch send
await Promise.all(
customers.map(customerId =>
svix.message.create(customerId, {
eventType: "invoice.generated",
payload: { invoiceId: "inv-456", amount: 299.99 },
})
)
);
import { Webhook } from "svix";
// Verify incoming webhooks in your API
app.post("/webhooks", (req, res) => {
const wh = new Webhook(process.env.SVIX_SIGNING_SECRET!);
try {
const payload = wh.verify(req.body, {
"svix-id": req.headers["svix-id"],
"svix-timestamp": req.headers["svix-timestamp"],
"svix-signature": req.headers["svix-signature"],
});
// payload is verified and safe to process
handleWebhookEvent(payload);
res.status(200).json({ received: true });
} catch (err) {
res.status(400).json({ error: "Invalid signature" });
}
});
// Generate a magic link for customers to manage their endpoints
const dashboard = await svix.authentication.appPortalAccess("customer-42", {});
// dashboard.url → "https://app.svix.com/login#key=..."
// Customer can view delivery logs, manage endpoints, retry failed deliveries
npm install svix
order.created, invoice.paid); customers filter what they receive