diff --git a/src/metabase/api/dataset.clj b/src/metabase/api/dataset.clj
index 37726e5d7b196985597dd44785a3556678fa3e9f..b79e9aafe87d39070b9d00aff6d7f3e96fa04809 100644
--- a/src/metabase/api/dataset.clj
+++ b/src/metabase/api/dataset.clj
@@ -26,6 +26,7 @@
    [metabase.shared.models.visualization-settings :as mb.viz]
    [metabase.util :as u]
    [metabase.util.i18n :refer [trs tru]]
+   [metabase.util.malli.schema :as ms]
    [metabase.util.schema :as su]
    [schema.core :as s]
    [toucan.db :as db]))
@@ -176,22 +177,18 @@
       (qp.pivot/run-pivot-query (assoc query :async? true) info context))))
 
 
-(def ^:private Parameter
-  (su/open-schema
-   {:values_source_type (s/enum nil "static-list" "card")}))
-
-(def ^:private FieldIds (s/maybe [s/Int]))
-
 (defn- parameter-field-values
   [field-ids query]
-  (reduce (fn [resp id]
-            (let [{values :values more? :has_more_values} (api.field/field-id->values id query)]
-              (-> resp
-                  (update :values concat values)
-                  (update :has_more_values #(or % more?)))))
-          {:has_more_values false
-           :values []}
-          field-ids))
+  (-> (reduce (fn [resp id]
+                (let [{values :values more? :has_more_values} (api.field/field-id->values id query)]
+                  (-> resp
+                      (update :values concat values)
+                      (update :has_more_values #(or % more?)))))
+              {:has_more_values false
+               :values          []}
+              field-ids)
+      ;; deduplicate the values returned from multiple fields
+      (update :values set)))
 
 (defn parameter-values
   "Fetch parameter values. Parameter should be a full parameter, field-ids is an optional vector of field ids, only
@@ -209,22 +206,20 @@
                     {:status-code 400
                      :parameter parameter}))))
 
-#_{:clj-kondo/ignore [:deprecated-var]}
-(api/defendpoint-schema POST "/parameter/values"
+(api/defendpoint POST "/parameter/values"
   "Return parameter values for cards or dashboards that are being edited."
   [:as {{:keys [parameter field_ids]} :body}]
-  {parameter Parameter
-   field_ids  FieldIds}
+  {parameter ms/Parameter
+   field_ids [:maybe [:sequential ms/IntGreaterThanZero]]}
   (let [nil-query nil]
     (parameter-values parameter field_ids nil-query)))
 
-#_{:clj-kondo/ignore [:deprecated-var]}
-(api/defendpoint-schema POST "/parameter/search/:query"
+(api/defendpoint POST "/parameter/search/:query"
   "Return parameter values for cards or dashboards that are being edited. Expects a query string at `?query=foo`."
   [query :as {{:keys [parameter field_ids]} :body}]
-  {parameter Parameter
-   field_ids FieldIds
-   query     s/Str}
+  {parameter ms/Parameter
+   field_ids [:maybe [:sequential ms/IntGreaterThanZero]]
+   query     :string}
   (parameter-values parameter field_ids query))
 
 (api/define-routes)
diff --git a/test/metabase/api/dataset_test.clj b/test/metabase/api/dataset_test.clj
index 79fc5efac8ea234a492b7dcb1d1129ff85eb5325..71b652120761f2871f167ca91c2b244576d995a1 100644
--- a/test/metabase/api/dataset_test.clj
+++ b/test/metabase/api/dataset_test.clj
@@ -461,6 +461,7 @@
                                                               (mt/id :people :source)]})
                            :values set)]
             (is (set/subset? #{["Doohickey"] ["Facebook"]} values))))
+
         (testing "search"
           (let [values (-> (mt/user-http-request :rasta :post 200
                                                  "dataset/parameter/search/g"
@@ -470,4 +471,13 @@
                            :values set)]
             ;; results matched on g, does not include Doohickey (which is in above results)
             (is (set/subset? #{["Widget"] ["Google"]} values))
-            (is (not (contains? values ["Doohickey"])))))))))
+            (is (not (contains? values ["Doohickey"])))))
+
+        (testing "deduplicates the values returned from multiple fields"
+          (let [values (-> (mt/user-http-request :rasta :post 200
+                                                 "dataset/parameter/values"
+                                                 {:parameter parameter
+                                                  :field_ids [(mt/id :people :source)
+                                                              (mt/id :people :source)]})
+                           :values)]
+            (is (= [["Twitter"] ["Organic"] ["Affiliate"] ["Google"] ["Facebook"]] values))))))))