                               :path :path-params
                               :query :query-params
                               :body :body-params
+                              :multipart :multipart-params
                               (throw (ex-info "Not supported key on :parameters" {})))]
                  (assoc acc newkey {:key key
                                     :fn #(st/validate % spec)})))

(def ^:private normalize-params-middleware
  {:name ::normalize-params-middleware
   :wrap (fn [handler]
           (letfn [(transform-request [request]
                     (if-let [data (get request :query-params)]
                       (assoc request :query-params (normalize-attrs data))
                       request))]
             (fn
               ([request] (handler (transform-request request)))
               ([request respond raise]
                (try
                  (try
                    (let [request (transform-request request)]
                      (handler (transform-request request) respond raise))
                    (catch Exception e
                      (raise e))))))))})


(def ^:private parameters-validation-middleware
  (letfn [(prepare [parameters]

                       exception-middleware
                       ;; decoding request body
                       muuntaja/format-request-middleware
                       ;; multipart
                       multipart-params-middleware
                       ;; parameters normalization
                       normalize-params-middleware
                       ;; parameters validation
                       parameters-validation-middleware]}})

(defn handler
  [invar]
