   (let [[required optional] (->> method
                                  split-required-params
                                  (mapv (comp (partial mapv ->kebab-case-symbol) keys)))]
-    `[~@required {:keys ~optional}])) 
+    `[~@required {:keys ~optional}]))
 
 ;; > ( template->path-vector "b/{fooBar}/o/{bar}" ["fooBar" "bar"])
 ;; => ["/b/" foo-bar "/c/" bar ]

  [method]
  (->> (:parameters method)
       ((juxt filter remove) (fn [[k v]] (:required v)))
       (mapv #(into {} %)))) 

(defn generate-function-name
  "Generates a symbol in the form of 'verb-resource', from a method map."
  [method]
  (let [[_ resource-name method-name] (s/split (:id method) #"\.")]
    (-> (str method-name "-" resource-name)
        ->kebab-case-symbol))) 

(defn generate-docs [method]
  (str (:description method)


(def model-paths
  (->> (fs/find-files "model" #".*\.json")
       (mapv #(.getPath %))))

(defn read-model [path]
  (-> path
      slurp
      (json/decode true)))

(def model-maps (mapv read-model model-paths))

(def storage-model (first (filter #(= (:id %) "storage:v1") model-maps)))

(def storage-object-get (-> storage-model :resources :objects :methods :get))

(def base-url (-> storage-model :baseUrl))

