From 00bd1a4151f4e73616969e25d1786c87d1ec0d5e Mon Sep 17 00:00:00 2001 From: kundeng Date: Mon, 20 Apr 2026 01:24:39 -0400 Subject: [PATCH] fix: add Azure validation and make Organization required - Add Azure case to /api/providers/validate that sends a test chat completion with api-key header and organization - Pass Azure-specific data (endpoint, deployment, apiVersion, org) from Add modal to validate endpoint - Make Organization field required (needed for billing) Co-Authored-By: Claude Opus 4.6 --- .../providers/[id]/AddApiKeyModal.js | 14 ++++++--- src/app/api/providers/validate/route.js | 29 +++++++++++++++++++ src/shared/components/EditConnectionModal.js | 4 +-- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js b/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js index 6904f49d..8db9cce7 100644 --- a/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js +++ b/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js @@ -25,13 +25,19 @@ export default function AddApiKeyModal({ isOpen, provider, providerName, isCompa const [validationResult, setValidationResult] = useState(null); const [saving, setSaving] = useState(false); + const validatePayload = () => { + const payload = { provider, apiKey: formData.apiKey }; + if (isAzure) payload.providerSpecificData = azureData; + return payload; + }; + const handleValidate = async () => { setValidating(true); try { const res = await fetch("/api/providers/validate", { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ provider, apiKey: formData.apiKey }), + body: JSON.stringify(validatePayload()), }); const data = await res.json(); setValidationResult(data.valid ? "success" : "failed"); @@ -54,7 +60,7 @@ export default function AddApiKeyModal({ isOpen, provider, providerName, isCompa const res = await fetch("/api/providers/validate", { method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ provider, apiKey: formData.apiKey }), + body: JSON.stringify(validatePayload()), }); const data = await res.json(); isValid = !!data.valid; @@ -144,7 +150,7 @@ export default function AddApiKeyModal({ isOpen, provider, providerName, isCompa placeholder="2024-10-01-preview" /> setAzureData({ ...azureData, organization: e.target.value })} placeholder="Organization ID" @@ -182,7 +188,7 @@ export default function AddApiKeyModal({ isOpen, provider, providerName, isCompa

-