   :allowed-methods #{:get :post}
   :available-media-types #{"application/edn" "text/html"}
   :authorized? (authorized? querier :datasets)
-  :post! (fn [{{body :body {:keys [entity-id]} :route-params} :request}]
-           (let [{:keys [members name]} (-> body read-edn-body ->shallow-kebab-map)
+  :post! (fn [{{{:keys [entity-id]} :route-params :as request} :request}]
+           (let [{:keys [members name]} (decode-body request)
                  members-str            (string/join \, members)
                  ds                     {:entity_id entity-id
                                          :name name

               {::items items}))))

  :malformed?
  (fn [{{body :body
        {entity-id :entity-id} :route-params
        method :request-method} :request}]
    (case method
      :post (let [body (-> body read-json-body ->shallow-kebab-map)]
              ;; We need to assert a few things
              (if
                  (or

    [:pre (with-out-str
            (pprint item))]]))

;; TODO move to webutil - how to handle call to ->shallow-kebab-map?
(defmulti decode-body :content-type :default "application/json")

(defmethod decode-body "application/json" [{body :body}] (some-> body read-json-body ->shallow-kebab-map))
