         items)))
 
   :post!
-  (fn [{{body :body} :request}]
-    {:programme-id (upsert! commander :programme (-> body read-json-body ->shallow-kebab-map))})
+  (fn [{request :request}]
+    {:programme-id (upsert! commander :programme (decode-body request))})
 
   :handle-created
   (fn [{id :programme-id {routes :modular.bidi/routes} :request}]

        coll)))

  :post!
  (fn [{{body :body} :request}]
    {:project-id (upsert! commander :project (-> body read-json-body ->shallow-kebab-map))})

  :handle-created
  (fn [{id :project-id {routes :modular.bidi/routes} :request}]

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

(defmulti decode-body :content-type :default "application/json")

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

;; Resources

(defresource programmes [{:keys [commander querier]} handlers]
