En uygun
Alıcının kullanılabilir bir yapılandırmaya, snippet'e, yüke, kapsam planına veya alıcı iskelesine ihtiyacı olduğunda uygulama hazırlığı.
Ücretsiz araç
unlimitedcodex olayları için imza doğrulamasıyla Node veya Python web kancası işleyicileri oluşturun.
Araç stratejisi
unlimitedcodex olayları için imza doğrulamasıyla Node veya Python web kancası işleyicileri oluşturun. Araç, ödeme işleminden önce kullanışlıdır çünkü alıcıların özel sırları paylaşmadan belirli bir OpenAI uyumlu API erişim kararı almasına yardımcı olur.
Alıcının kullanılabilir bir yapılandırmaya, snippet'e, yüke, kapsam planına veya alıcı iskelesine ihtiyacı olduğunda uygulama hazırlığı.
Alıcının teslim edilen temel URL, API anahtarına ve model kimliklerine uyarlayabileceği kopyalanabilir bir başlangıç yapısı.
Oluşturulan yapıyı uygulayın, ilgili belgelerle doğrulayın ve ardından ücretli bir paket aracılığıyla kurulumun teslim edilmesini isteyin.
Araç atıf paketi
OpenAI uyumlu parçacıklar, kapsamlar, istek yükleri, web kancası işleyicileri veya ortam dosyaları oluşturun. Özel araç: unlimitedcodex olayları içiçinde imza yapğrulamasıyla Node veya Python webhook işleyicileri oluşturun.
Yalnızca gizli olmayan planlama girdilerini kullanın. Ham API anahtarlarını, taşıyıcı jetonlarını, tam kimlik yapğrulama başlıklarını, özel günlükleri, müşteri verilerini veya faturalandırma ekran görüntülerini yapıştırmayın. Oluşturulan snippet'ler BASE_URL, API_KEY, model kimlikleri, webhook gizli dizileri ve ortam değişkenleri içiçinde yer tutucuları kullanmalıdır.
// unlimitedcodex webhook receiver — Node.js / Next.js App Router
// Signature verification notes:
// - Header: x-ucx-signature (format: t=<unix>,v1=<hex>)
// - Signed payload: `${timestamp}.${rawBody}`
// - Secret env var: UCX_WEBHOOK_SECRET (whsec_ucx_*)
// - Reject timestamps outside a 300s tolerance window.
import { createHmac, timingSafeEqual } from "crypto";
const SIGNATURE_TOLERANCE_SECONDS = 300;
function verifyWebhookSignature(rawBody: string, signatureHeader: string, secret: string) {
const parts = Object.fromEntries(
signatureHeader.split(",").map((part) => {
const [key, value] = part.split("=");
return [key, value];
})
);
const timestamp = Number(parts.t);
const signature = parts.v1;
if (!Number.isInteger(timestamp) || !signature) {
return false;
}
if (Math.abs(Math.floor(Date.now() / 1000) - timestamp) > SIGNATURE_TOLERANCE_SECONDS) {
return false;
}
const signedPayload = `${timestamp}.${rawBody}`;
const expected = createHmac("sha256", secret).update(signedPayload).digest("hex");
const left = Buffer.from(expected, "hex");
const right = Buffer.from(signature, "hex");
return left.length === right.length && timingSafeEqual(left, right);
}
async function recordWebhookEvent(eventId: string, eventType: string) {
// Persist event.id before side effects so retries stay idempotent.
// Return false when this delivery was already processed.
return true;
}
export async function POST(request: Request) {
const rawBody = await request.text();
const signature = request.headers.get("x-ucx-signature") ?? "";
const secret = process.env.UCX_WEBHOOK_SECRET;
if (!secret || !verifyWebhookSignature(rawBody, signature, secret)) {
return new Response("Invalid signature", { status: 400 });
}
const event = JSON.parse(rawBody) as {
id: string;
type: string;
created: string;
data: Record<string, unknown>;
};
const isNew = await recordWebhookEvent(event.id, event.type);
if (!isNew) {
return Response.json({ received: true, duplicate: true });
}
switch (event.type) {
case "usage.threshold_reached": {
// Pause expensive jobs, notify account owners, or refresh quota dashboards.
await handleUsageThreshold(event.data);
break;
}
case "subscription.updated": {
// Refresh local entitlements, package slug, and billing period metadata.
await syncSubscriptionState(event.data);
break;
}
case "api_key.revoked": {
// Invalidate cached credentials and alert the owning team.
await revokeCachedApiKey(event.data);
break;
}
default:
// Ignore unselected event types safely.
break;
}
return Response.json({ received: true });
}İlgili araçlar
Geçiş Oluşturucu
OpenAI SDK parçacıklarını unlimitedcodex tabanına URL, anahtarlara ve kapsamlara oluşturun veya dönüştürün.
Aracı açKapsam Yapılandırıcı
İş yüklerini seçin ve en az ayrıcalıklı kapsamların,.env.example'ın ve rotasyon kontrol listesinin çıktısını alın.
Aracı açOluşturucu İste
Sohbet tamamlamayı JSON görsel olarak oluşturun ve cURL, JavaScript veya Python parçacıklarını dışa aktarın.
Aracı açSınırsız Haftalık veya Sınırsız Aylık seçeneğini seçin, Stripe ödeme işlemini tamamlayın ve 10 dakika ile 5 saat arasında manuel kurulum alın. API anahtarının tamamı e-postayla gelir ve kontrol paneli teslimat ayrıntılarını güvenli bir şekilde gösterir.