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
-