                                ::debug?
                                ::body]))
 
-(s/def ::response (s/keys :req [::headers]
-                          :opt [::body]))
+(s/def ::response (s/keys :req [::status]
+                          :opt [::headers
+                                ::body]))
 
 (s/def ::driver fn?)
 


(s/def ::encode-type (s/with-gen keyword? #(s/gen #{::transit+json ::edn ::json})))

(s/def ::url string?)
(s/def ::method #{::get ::head ::post ::put ::patch ::delete ::connect ::options})
(s/def ::headers (s/map-of string? string?))
(s/def ::content-type (s/or :pre-defined ::encode-type :raw string?))
(s/def ::accept (s/or :pre-defined ::encode-type :raw string?))
(s/def ::as ::encode-type)
(s/def ::form-params any?)
(s/def ::debug? boolean?)
(s/def ::body any?)

(s/def ::request (s/keys :req [::url]

   (driver (merge request {::url url} config))))

(s/fdef request
        :args (s/cat :req ::request)
        :ret ::response)

(defn request-method [{::keys [method form-params]}]
  (or (some-> method name)
