package httpapi import ( "net/http" "strings" "github.com/descrybe/descrybe-v2/apps/api/internal/platformsettings" "github.com/go-chi/chi/v5" ) // POST /api/admin/settings/ai-roles/{role}/test — probe platform AI role credentials. // Mirrors mail/test: 200 with status ok|failed|skipped; never echoes secrets or upstream bodies. func (s *Server) handleAdminTestAIRole(w http.ResponseWriter, r *http.Request) { if s.AI == nil { Error(w, http.StatusServiceUnavailable, "ai provider unavailable") return } role := strings.TrimSpace(chi.URLParam(r, "role")) if role == "" || !platformsettings.ValidAIRole(role) { Error(w, http.StatusBadRequest, "unknown ai role (want processing|vectorization|docs_api|support)") return } result, err := s.AI.TestPlatformRole(r.Context(), role) if err != nil { // Safe message only — never echo provider error bodies (may contain key fragments). JSON(w, http.StatusOK, result) return } JSON(w, http.StatusOK, result) }