diff --git a/bin/haskell-http-client-petstore.sh b/bin/haskell-http-client-petstore.sh
index ac21b66a745..f128afe3f60 100755
--- a/bin/haskell-http-client-petstore.sh
+++ b/bin/haskell-http-client-petstore.sh
@@ -28,4 +28,5 @@ fi
 export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
 ags="$@ generate -t modules/swagger-codegen/src/main/resources/haskell-http-client -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l haskell-http-client -o samples/client/petstore/haskell-http-client"
 
+echo "java ${JAVA_OPTS} -jar ${executable} ${ags}"
 java $JAVA_OPTS -jar $executable $ags
diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/HaskellHttpClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/HaskellHttpClientCodegen.java
index 5f57e100c50..a7cc41fd230 100644
--- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/HaskellHttpClientCodegen.java
+++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/HaskellHttpClientCodegen.java
@@ -42,7 +42,6 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
     protected String artifactId = "swagger-haskell-http-client";
     protected String artifactVersion = "1.0.0";
 
-    protected String defaultDateTimeFormat = "%Y-%m-%dT%H:%M:%S%Q%z";
     protected String defaultDateFormat = "%Y-%m-%d";
 
     // CLI
@@ -54,6 +53,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
     public static final String GENERATE_LENSES = "generateLenses";
     public static final String GENERATE_MODEL_CONSTRUCTORS = "generateModelConstructors";
     public static final String MODEL_DERIVING = "modelDeriving";
+    public static final String STRICT_FIELDS = "strictFields";
 
     // protected String MODEL_IMPORTS = "modelImports";
     // protected String MODEL_EXTENSIONS = "modelExtensions";
@@ -182,21 +182,22 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
         importMapping.clear();
         importMapping.put("Map", "qualified Data.Map as Map");
 
-        cliOptions.add(new CliOption(CodegenConstants.MODEL_PACKAGE, CodegenConstants.MODEL_PACKAGE_DESC));
-        cliOptions.add(new CliOption(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC));
+        cliOptions.add(CliOption.newString(CodegenConstants.MODEL_PACKAGE, CodegenConstants.MODEL_PACKAGE_DESC));
+        cliOptions.add(CliOption.newString(CodegenConstants.API_PACKAGE, CodegenConstants.API_PACKAGE_DESC));
 
-        cliOptions.add(new CliOption(ALLOW_FROMJSON_NULLS, "allow JSON Null during model decoding from JSON").defaultValue(Boolean.TRUE.toString()));
-        cliOptions.add(new CliOption(ALLOW_TOJSON_NULLS, "allow emitting JSON Null during model encoding to JSON").defaultValue(Boolean.FALSE.toString()));
-        cliOptions.add(new CliOption(GENERATE_LENSES, "Generate Lens optics for Models").defaultValue(Boolean.TRUE.toString()));
-        cliOptions.add(new CliOption(GENERATE_MODEL_CONSTRUCTORS, "Generate smart constructors (only supply required fields) for models").defaultValue(Boolean.TRUE.toString()));
-        cliOptions.add(new CliOption(GENERATE_FORM_URLENCODED_INSTANCES, "Generate FromForm/ToForm instances for models that are used by operations that produce or consume application/x-www-form-urlencoded").defaultValue(Boolean.TRUE.toString()));
+        cliOptions.add(CliOption.newBoolean(ALLOW_FROMJSON_NULLS, "allow JSON Null during model decoding from JSON").defaultValue(Boolean.TRUE.toString()));
+        cliOptions.add(CliOption.newBoolean(ALLOW_TOJSON_NULLS, "allow emitting JSON Null during model encoding to JSON").defaultValue(Boolean.FALSE.toString()));
+        cliOptions.add(CliOption.newBoolean(GENERATE_LENSES, "Generate Lens optics for Models").defaultValue(Boolean.TRUE.toString()));
+        cliOptions.add(CliOption.newBoolean(GENERATE_MODEL_CONSTRUCTORS, "Generate smart constructors (only supply required fields) for models").defaultValue(Boolean.TRUE.toString()));
+        cliOptions.add(CliOption.newBoolean(GENERATE_FORM_URLENCODED_INSTANCES, "Generate FromForm/ToForm instances for models that are used by operations that produce or consume application/x-www-form-urlencoded").defaultValue(Boolean.TRUE.toString()));
 
-        cliOptions.add(new CliOption(MODEL_DERIVING, "Additional classes to include in the deriving() clause of Models"));
+        cliOptions.add(CliOption.newString(MODEL_DERIVING, "Additional classes to include in the deriving() clause of Models"));
+        cliOptions.add(CliOption.newBoolean(STRICT_FIELDS, "Add strictness annotations to all model fields").defaultValue((Boolean.FALSE.toString())));
 
-        cliOptions.add(new CliOption(DATETIME_FORMAT, "format string used to parse/render a datetime").defaultValue(defaultDateTimeFormat));
-        cliOptions.add(new CliOption(DATE_FORMAT, "format string used to parse/render a date").defaultValue(defaultDateFormat));
+        cliOptions.add(CliOption.newString(DATETIME_FORMAT, "format string used to parse/render a datetime"));
+        cliOptions.add(CliOption.newString(DATE_FORMAT, "format string used to parse/render a date").defaultValue(defaultDateFormat));
 
-        cliOptions.add(new CliOption(CodegenConstants.HIDE_GENERATION_TIMESTAMP, "hides the timestamp when files were generated").defaultValue(Boolean.TRUE.toString()));
+        cliOptions.add(CliOption.newBoolean(CodegenConstants.HIDE_GENERATION_TIMESTAMP, "hides the timestamp when files were generated").defaultValue(Boolean.TRUE.toString()));
 
         // cliOptions.add(new CliOption(MODEL_IMPORTS, "Additional imports in the Models file"));
         // cliOptions.add(new CliOption(MODEL_EXTENSIONS, "Additional extensions in the Models file"));
@@ -241,12 +242,16 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
 
     public void setDateFormat(String value) {
         if (StringUtils.isBlank(value)) {
-            additionalProperties.put(DATE_FORMAT, defaultDateFormat);
+            additionalProperties.remove(DATE_FORMAT);
         } else {
             additionalProperties.put(DATE_FORMAT, value);
         }
     }
 
+    public void setStrictFields(Boolean value) {
+        additionalProperties.put("x-strictFields", value);
+    }
+
     @Override
     public void processOpts() {
         super.processOpts();
@@ -296,13 +301,19 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
         if (additionalProperties.containsKey(DATETIME_FORMAT)) {
             setDateTimeFormat(additionalProperties.get(DATETIME_FORMAT).toString());
         } else {
-            setDateTimeFormat(null);
+            setDateTimeFormat(null); // default should be null
         }
 
         if (additionalProperties.containsKey(DATE_FORMAT)) {
             setDateFormat(additionalProperties.get(DATE_FORMAT).toString());
         } else {
-            setDateFormat(null);
+            setDateFormat(defaultDateFormat);
+        }
+
+        if (additionalProperties.containsKey(STRICT_FIELDS)) {
+            setStrictFields(convertPropertyToBoolean(STRICT_FIELDS));
+        } else {
+            setStrictFields(false);
         }
 
     }
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/API.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/API.mustache
index 7b9745acb06..30c23fc0c37 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/API.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/API.mustache
@@ -11,13 +11,15 @@ Module : {{title}}.API
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE ConstraintKinds #-}
 {-# LANGUAGE InstanceSigs #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-unused-imports #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
 
 module {{title}}.API where
 
 
 import {{title}}.Model as M
 import {{title}}.MimeTypes
+import {{title}}.Lens
 
 import qualified Data.Aeson as A
 import Data.Aeson (Value)
@@ -52,6 +54,8 @@ import qualified Data.Text.Lazy.Encoding as TL
 import qualified GHC.Base as P (Alternative)
 import qualified Control.Arrow as P (left)
 
+import qualified Lens.Micro as L
+
 import Data.Monoid ((<>))
 import Data.Function ((&))
 import Data.Set (Set)
@@ -144,11 +148,26 @@ newtype {{{vendorExtensions.x-paramNameType}}} = {{{vendorExtensions.x-paramName
 -- | Represents a request. The "req" type variable is the request type. The "res" type variable is the response type.
 data {{requestType}} req contentType res = {{requestType}}
   { rMethod  :: NH.Method   -- ^ Method of {{requestType}}
-  , urlPath :: [BCL.ByteString] -- ^ Endpoint of {{requestType}}
-  , params   :: Params -- ^ params of {{requestType}}
+  , rUrlPath :: [BCL.ByteString] -- ^ Endpoint of {{requestType}}
+  , rParams   :: Params -- ^ params of {{requestType}}
   }
   deriving (P.Show)
 
+-- | 'rMethod' Lens
+rMethodL :: Lens_' ({{requestType}} req contentType res) NH.Method
+rMethodL f {{requestType}}{..} = (\rMethod -> {{requestType}} { rMethod, ..} ) <$> f rMethod
+{-# INLINE rMethodL #-}
+
+-- | 'rUrlPath' Lens
+rUrlPathL :: Lens_' ({{requestType}} req contentType res) [BCL.ByteString]
+rUrlPathL f {{requestType}}{..} = (\rUrlPath -> {{requestType}} { rUrlPath, ..} ) <$> f rUrlPath
+{-# INLINE rUrlPathL #-}
+
+-- | 'rParams' Lens
+rParamsL :: Lens_' ({{requestType}} req contentType res) Params
+rParamsL f {{requestType}}{..} = (\rParams -> {{requestType}} { rParams, ..} ) <$> f rParams
+{-# INLINE rParamsL #-}
+
 -- | Request Params
 data Params = Params
   { paramsQuery :: NH.Query
@@ -157,6 +176,21 @@ data Params = Params
   }
   deriving (P.Show)
 
+-- | 'paramsQuery' Lens
+paramsQueryL :: Lens_' Params NH.Query
+paramsQueryL f Params{..} = (\paramsQuery -> Params { paramsQuery, ..} ) <$> f paramsQuery
+{-# INLINE paramsQueryL #-}
+
+-- | 'paramsHeaders' Lens
+paramsHeadersL :: Lens_' Params NH.RequestHeaders
+paramsHeadersL f Params{..} = (\paramsHeaders -> Params { paramsHeaders, ..} ) <$> f paramsHeaders
+{-# INLINE paramsHeadersL #-}
+
+-- | 'paramsBody' Lens
+paramsBodyL :: Lens_' Params ParamBody
+paramsBodyL f Params{..} = (\paramsBody -> Params { paramsBody, ..} ) <$> f paramsBody
+{-# INLINE paramsBodyL #-}
+
 -- | Request Body
 data ParamBody
   = ParamBodyNone
@@ -177,15 +211,18 @@ _mkParams :: Params
 _mkParams = Params [] [] ParamBodyNone
 
 setHeader :: {{requestType}} req contentType res -> [NH.Header] -> {{requestType}} req contentType res
-setHeader req header = 
-    let _params = params (req `removeHeader` P.fmap P.fst header)
-    in req { params = _params { paramsHeaders = header P.++ paramsHeaders _params } }
+setHeader req header =
+  req `removeHeader` P.fmap P.fst header &
+  L.over (rParamsL . paramsHeadersL) (header P.++)
 
 removeHeader :: {{requestType}} req contentType res -> [NH.HeaderName] -> {{requestType}} req contentType res
-removeHeader req header = 
-    let _params = params req
-    in req { params = _params { paramsHeaders = [h | h <- paramsHeaders _params, cifst h `P.notElem` P.fmap CI.mk header] } }
-  where cifst = CI.mk . P.fst
+removeHeader req header =
+  req &
+  L.over
+    (rParamsL . paramsHeadersL)
+    (P.filter (\h -> cifst h `P.notElem` P.fmap CI.mk header))
+  where
+    cifst = CI.mk . P.fst
 
 
 _setContentTypeHeader :: forall req contentType res. MimeType contentType => {{requestType}} req contentType res -> {{requestType}} req contentType res
@@ -202,35 +239,34 @@ _setAcceptHeader req accept =
 
 _setQuery :: {{requestType}} req contentType res -> [NH.QueryItem] -> {{requestType}} req contentType res
 _setQuery req query = 
-    let _params = params req 
-    in req { params = _params { paramsQuery = query P.++ [q | q <- paramsQuery _params, cifst q `P.notElem` P.fmap cifst query] } }
-  where cifst = CI.mk . P.fst
+  req &
+  L.over
+    (rParamsL . paramsQueryL)
+    ((query P.++) . P.filter (\q -> cifst q `P.notElem` P.fmap cifst query))
+  where
+    cifst = CI.mk . P.fst
 
 _addForm :: {{requestType}} req contentType res -> WH.Form -> {{requestType}} req contentType res
 _addForm req newform = 
-    let _params = params req
-        form = case paramsBody _params of
+    let form = case paramsBody (rParams req) of
             ParamBodyFormUrlEncoded _form -> _form
             _ -> mempty
-    in req { params = _params { paramsBody = ParamBodyFormUrlEncoded (newform <> form) } }
+    in req & L.set (rParamsL . paramsBodyL) (ParamBodyFormUrlEncoded (newform <> form))
 
 _addMultiFormPart :: {{requestType}} req contentType res -> NH.Part -> {{requestType}} req contentType res
 _addMultiFormPart req newpart = 
-    let _params = params req
-        parts = case paramsBody _params of
+    let parts = case paramsBody (rParams req) of
             ParamBodyMultipartFormData _parts -> _parts
             _ -> []
-    in req { params = _params { paramsBody = ParamBodyMultipartFormData (newpart : parts) } }
+    in req & L.set (rParamsL . paramsBodyL) (ParamBodyMultipartFormData (newpart : parts))
 
 _setBodyBS :: {{requestType}} req contentType res -> B.ByteString -> {{requestType}} req contentType res
 _setBodyBS req body = 
-    let _params = params req
-    in req { params = _params { paramsBody = ParamBodyB body } }
+    req & L.set (rParamsL . paramsBodyL) (ParamBodyB body)
 
 _setBodyLBS :: {{requestType}} req contentType res -> BL.ByteString -> {{requestType}} req contentType res
 _setBodyLBS req body = 
-    let _params = params req
-    in req { params = _params { paramsBody = ParamBodyBL body } }
+    req & L.set (rParamsL . paramsBodyL) (ParamBodyBL body)
 
 
 -- ** Params Utils
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/Client.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/Client.mustache
index d044001284e..f23f0ebf1dd 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/Client.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/Client.mustache
@@ -225,15 +225,15 @@ _toInitRequest
   -> accept -- ^ "accept" 'MimeType'
   -> IO (InitRequest req contentType res accept) -- ^ initialized request
 _toInitRequest config req0 accept = do
-  parsedReq <- NH.parseRequest $ BCL.unpack $ BCL.append (configHost config) (BCL.concat (urlPath req0))
+  parsedReq <- NH.parseRequest $ BCL.unpack $ BCL.append (configHost config) (BCL.concat (rUrlPath req0))
   let req1 = _setAcceptHeader req0 accept & _setContentTypeHeader
-      reqHeaders = ("User-Agent", WH.toHeader (configUserAgent config)) : paramsHeaders (params req1)
-      reqQuery = NH.renderQuery True (paramsQuery (params req1))
+      reqHeaders = ("User-Agent", WH.toHeader (configUserAgent config)) : paramsHeaders (rParams req1)
+      reqQuery = NH.renderQuery True (paramsQuery (rParams req1))
       pReq = parsedReq { NH.method = (rMethod req1)
                        , NH.requestHeaders = reqHeaders
                        , NH.queryString = reqQuery
                        }
-  outReq <- case paramsBody (params req1) of
+  outReq <- case paramsBody (rParams req1) of
     ParamBodyNone -> pure (pReq { NH.requestBody = mempty })
     ParamBodyB bs -> pure (pReq { NH.requestBody = NH.RequestBodyBS bs })
     ParamBodyBL bl -> pure (pReq { NH.requestBody = NH.RequestBodyLBS bl })
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/Model.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/Model.mustache
index 8bac6084805..17b1b55827f 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/Model.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/Model.mustache
@@ -2,7 +2,6 @@
 Module : {{title}}.Model
 -}
 
-{-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveFoldable #-}
 {-# LANGUAGE DeriveGeneric #-}
@@ -58,7 +57,7 @@ import qualified Prelude as P
 -- {{{.}}}{{/description}}
 {{^vendorExtensions.x-customNewtype}}
 data {{classname}} = {{classname}}
-  { {{#vars}}{{name}} :: {{^required}}Maybe {{/required}}{{datatype}} -- ^ {{#required}}/Required/ {{/required}}{{#readOnly}}/ReadOnly/ {{/readOnly}}"{{baseName}}"{{#description}} - {{description}}{{/description}}{{#hasMore}}
+  { {{#vars}}{{name}} :: {{#x-strictFields}}!({{/x-strictFields}}{{^required}}Maybe {{/required}}{{datatype}}{{#x-strictFields}}){{/x-strictFields}} -- ^ {{#required}}/Required/ {{/required}}{{#readOnly}}/ReadOnly/ {{/readOnly}}"{{baseName}}"{{#description}} - {{description}}{{/description}}{{#hasMore}}
   , {{/hasMore}}{{/vars}}
   } deriving (P.Show,P.Eq,P.Typeable{{#modelDeriving}},{{modelDeriving}}{{/modelDeriving}})
 
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/README.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/README.mustache
index 4a32daa917c..028941e3ae7 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/README.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/README.mustache
@@ -50,17 +50,20 @@ haskell-http-client
     
     - use `setHeader` to add any required headers to requests
 
+* Model Inheritance
+
 * Default Parameter Values
 
 * Enum Parameters
 
+
 This is beta software; other cases may not be supported.
 
-### Codegen "config option" parameters
+### Codegen "additional properties" parameters
 
 These options allow some customization of the code generation process.
 
-**haskell-http-client specific options:**
+**haskell-http-client additional properties:**
 
 | OPTION                          | DESCRIPTION                                                                                                                   | DEFAULT  | ACTUAL                                |
 | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------- |
@@ -72,15 +75,23 @@ These options allow some customization of the code generation process.
 | generateLenses                  | Generate Lens optics for Models                                                                                               | true     | {{{generateLenses}}}                  |
 | generateModelConstructors       | Generate smart constructors (only supply required fields) for models                                                          | true     | {{{generateModelConstructors}}}       |
 | modelDeriving                   | Additional classes to include in the deriving() clause of Models                                                              |          | {{{modelDeriving}}}                   |
+| strictFields                    | Add strictness annotations to all model fields                                                                                | false    | {{{x-strictFields}}}                  |
 
 [1]: https://www.stackage.org/haddock/lts-9.0/iso8601-time-0.1.4/Data-Time-ISO8601.html#v:formatISO8601Millis
 
+An example setting _strictFields_ and _dateTimeFormat_:
+
+```
+java -jar swagger-codegen-cli.jar generate -i petstore.yaml -l haskell-http-client -o output/haskell-http-client -DstrictFields=true -DdateTimeFormat="%Y-%m-%dT%H:%M:%S%Q%z"
+```
+
 View the full list of Codegen "config option" parameters with the command:
 
 ```
-java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar config-help -l haskell-http-client
+java -jar swagger-codegen-cli.jar config-help -l haskell-http-client
 ```
 
+
 ### Example SwaggerPetstore Haddock documentation 
 
 An example of the generated haddock documentation targeting the server http://petstore.swagger.io/ (SwaggerPetstore) can be found [here][2]
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/TopLevel.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/TopLevel.mustache
index 91e97ff9cd9..3cbf6cd3630 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/TopLevel.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/TopLevel.mustache
@@ -7,11 +7,11 @@ module {{title}}
   , module {{title}}.API
   , module {{title}}.Model
   , module {{title}}.MimeTypes
-  , {{#generateLenses}}module {{title}}.Lens{{/generateLenses}}
+  , module {{title}}.Lens
   ) where
 
 import {{title}}.API
 import {{title}}.Client
 import {{title}}.Model
 import {{title}}.MimeTypes
-{{#generateLenses}}import {{title}}.Lens{{/generateLenses}}
+import {{title}}.Lens
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/haskell-http-client.cabal.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/haskell-http-client.cabal.mustache
index 5e5a6223507..0f1f9f28a6a 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/haskell-http-client.cabal.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/haskell-http-client.cabal.mustache
@@ -57,13 +57,14 @@ library
     , monad-logger >=0.3 && <0.4
     , safe-exceptions <0.2
     , case-insensitive
+    , microlens >= 0.4.3 && <0.5
   exposed-modules:
       {{title}}
       {{title}}.API
       {{title}}.Client
       {{title}}.Model
       {{title}}.MimeTypes
-      {{#generateLenses}}{{title}}.Lens{{/generateLenses}}
+      {{title}}.Lens
   other-modules:
       Paths_{{pathsName}}
   default-language: Haskell2010
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/package.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/package.mustache
index c0747d40afd..23b18b7c6ce 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/package.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/package.mustache
@@ -36,16 +36,18 @@ dependencies:
 - transformers >=0.4.0.0
 - mtl >=2.2.1
 - unordered-containers
+ghc-options: -Wall
 library:
   source-dirs: lib
-  ghc-options: -Wall
+  ghc-options:
+  {{#x-strictFields}}- -funbox-strict-fields{{/x-strictFields}}
   exposed-modules:
   - {{title}}
   - {{title}}.API
   - {{title}}.Client
   - {{title}}.Model
   - {{title}}.MimeTypes
-  {{#generateLenses}}- {{title}}.Lens{{/generateLenses}}
+  - {{title}}.Lens
   dependencies:
   - aeson >=1.0 && <2.0
   - bytestring >=0.10.0 && <0.11
@@ -65,6 +67,7 @@ library:
   - monad-logger >=0.3 && <0.4
   - safe-exceptions <0.2
   - case-insensitive
+  - microlens >= 0.4.3 && <0.5
 tests:
   tests:
     main: Test.hs
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/tests/Instances.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/tests/Instances.mustache
index 51de32c1727..5057ecb312a 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/tests/Instances.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/tests/Instances.mustache
@@ -1,3 +1,5 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
 module Instances where
 
 import Data.Text (Text, pack)
diff --git a/modules/swagger-codegen/src/main/resources/haskell-http-client/tests/PropMime.mustache b/modules/swagger-codegen/src/main/resources/haskell-http-client/tests/PropMime.mustache
index 763ceed8935..f672a4d3adf 100644
--- a/modules/swagger-codegen/src/main/resources/haskell-http-client/tests/PropMime.mustache
+++ b/modules/swagger-codegen/src/main/resources/haskell-http-client/tests/PropMime.mustache
@@ -1,6 +1,7 @@
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE ConstraintKinds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 module PropMime where
 
diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/haskellhttpclient/HaskellHttpClientOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/haskellhttpclient/HaskellHttpClientOptionsTest.java
index b63a4bf4888..98d583fbd11 100644
--- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/haskellhttpclient/HaskellHttpClientOptionsTest.java
+++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/haskellhttpclient/HaskellHttpClientOptionsTest.java
@@ -47,6 +47,8 @@ public class HaskellHttpClientOptionsTest extends AbstractOptionsTest {
             times = 1;
             clientCodegen.setDateFormat(HaskellHttpClientOptionsProvider.DATE_FORMAT);
             times = 1;
+            clientCodegen.setStrictFields(Boolean.valueOf(HaskellHttpClientOptionsProvider.STRICT_FIELDS));
+            times = 1;
 
         }};
     }
diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/HaskellHttpClientOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/HaskellHttpClientOptionsProvider.java
index 8e589ac13a4..d124c66ff54 100644
--- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/HaskellHttpClientOptionsProvider.java
+++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/HaskellHttpClientOptionsProvider.java
@@ -19,6 +19,7 @@ public class HaskellHttpClientOptionsProvider implements OptionsProvider {
     public static final String DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S%Q%z";
     public static final String DATE_FORMAT = "%Y-%m-%d";
     public static final String MODEL_DERIVING = "";
+    public static final String STRICT_FIELDS = "false";
     public static final String GENERATE_FORM_URLENCODED_INSTANCES = "true";
     public static final String GENERATE_LENSES = "true";
     public static final String GENERATE_MODEL_CONSTRUCTORS = "true";
@@ -46,6 +47,7 @@ public class HaskellHttpClientOptionsProvider implements OptionsProvider {
                 .put(HaskellHttpClientCodegen.GENERATE_FORM_URLENCODED_INSTANCES, GENERATE_FORM_URLENCODED_INSTANCES)
                 .put(HaskellHttpClientCodegen.GENERATE_LENSES, GENERATE_LENSES)
                 .put(HaskellHttpClientCodegen.GENERATE_MODEL_CONSTRUCTORS, GENERATE_MODEL_CONSTRUCTORS)
+                .put(HaskellHttpClientCodegen.STRICT_FIELDS, STRICT_FIELDS)
 
                 .build();
     }
diff --git a/samples/client/petstore/haskell-http-client/CONTRIBUTING.md b/samples/client/petstore/haskell-http-client/CONTRIBUTING.md
new file mode 100644
index 00000000000..91fbe58305b
--- /dev/null
+++ b/samples/client/petstore/haskell-http-client/CONTRIBUTING.md
@@ -0,0 +1,28 @@
+### Rebuild jar
+
+```
+    (cd ../../../..; mvn package);
+```
+
+### Regenerate Template
+
+1. Run the shell script `haskell-http-client-petstore.sh` to update the Petstore sample
+
+```bash
+    (cd ../../../..; ./bin/haskell-http-client-petstore.sh);
+```
+
+### Typecheck, Build and run Unit tests
+
+2. Check that the following commands complete build without any errors
+
+```bash
+    (stack clean && stack haddock && stack test);
+    (cd ./example-app; stack clean && stack build);
+    (cd ./tests-integration; stack clean && stack build --no-run-tests);
+```
+
+### Integration Tests
+
+3. run the integration tests as described in `./tests-integration/README.md`
+
diff --git a/samples/client/petstore/haskell-http-client/README.md b/samples/client/petstore/haskell-http-client/README.md
index 817c834271d..35ac99a323a 100644
--- a/samples/client/petstore/haskell-http-client/README.md
+++ b/samples/client/petstore/haskell-http-client/README.md
@@ -50,17 +50,20 @@ haskell-http-client
     
     - use `setHeader` to add any required headers to requests
 
+* Model Inheritance
+
 * Default Parameter Values
 
 * Enum Parameters
 
+
 This is beta software; other cases may not be supported.
 
-### Codegen "config option" parameters
+### Codegen "additional properties" parameters
 
 These options allow some customization of the code generation process.
 
-**haskell-http-client specific options:**
+**haskell-http-client additional properties:**
 
 | OPTION                          | DESCRIPTION                                                                                                                   | DEFAULT  | ACTUAL                                |
 | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------- |
@@ -72,15 +75,23 @@ These options allow some customization of the code generation process.
 | generateLenses                  | Generate Lens optics for Models                                                                                               | true     | true                  |
 | generateModelConstructors       | Generate smart constructors (only supply required fields) for models                                                          | true     | true       |
 | modelDeriving                   | Additional classes to include in the deriving() clause of Models                                                              |          |                    |
+| strictFields                    | Add strictness annotations to all model fields                                                                                | false    | false                  |
 
 [1]: https://www.stackage.org/haddock/lts-9.0/iso8601-time-0.1.4/Data-Time-ISO8601.html#v:formatISO8601Millis
 
+An example setting _strictFields_ and _dateTimeFormat_:
+
+```
+java -jar swagger-codegen-cli.jar generate -i petstore.yaml -l haskell-http-client -o output/haskell-http-client -DstrictFields=true -DdateTimeFormat="%Y-%m-%dT%H:%M:%S%Q%z"
+```
+
 View the full list of Codegen "config option" parameters with the command:
 
 ```
-java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar config-help -l haskell-http-client
+java -jar swagger-codegen-cli.jar config-help -l haskell-http-client
 ```
 
+
 ### Example SwaggerPetstore Haddock documentation 
 
 An example of the generated haddock documentation targeting the server http://petstore.swagger.io/ (SwaggerPetstore) can be found [here][2]
diff --git a/samples/client/petstore/haskell-http-client/docs/SwaggerPetstore-API.html b/samples/client/petstore/haskell-http-client/docs/SwaggerPetstore-API.html
index 2dab043222b..c19843f7d57 100644
--- a/samples/client/petstore/haskell-http-client/docs/SwaggerPetstore-API.html
+++ b/samples/client/petstore/haskell-http-client/docs/SwaggerPetstore-API.html
@@ -1,4 +1,4 @@
 
SwaggerPetstore.APISynopsis
- addPet :: (Consumes AddPet contentType, MimeRender contentType Pet) => contentType -> Pet -> SwaggerPetstoreRequest AddPet contentType res
 - data AddPet
 - deletePet :: Integer -> SwaggerPetstoreRequest DeletePet MimeNoContent res
 - data DeletePet
 - findPetsByStatus :: [Text] -> SwaggerPetstoreRequest FindPetsByStatus MimeNoContent [Pet]
 - data FindPetsByStatus
 - findPetsByTags :: [Text] -> SwaggerPetstoreRequest FindPetsByTags MimeNoContent [Pet]
 - data FindPetsByTags
 - getPetById :: Integer -> SwaggerPetstoreRequest GetPetById MimeNoContent Pet
 - data GetPetById
 - updatePet :: (Consumes UpdatePet contentType, MimeRender contentType Pet) => contentType -> Pet -> SwaggerPetstoreRequest UpdatePet contentType res
 - data UpdatePet
 - updatePetWithForm :: Consumes UpdatePetWithForm contentType => contentType -> Integer -> SwaggerPetstoreRequest UpdatePetWithForm contentType res
 - data UpdatePetWithForm
 - uploadFile :: Consumes UploadFile contentType => contentType -> Integer -> SwaggerPetstoreRequest UploadFile contentType ApiResponse
 - data UploadFile
 - deleteOrder :: Text -> SwaggerPetstoreRequest DeleteOrder MimeNoContent res
 - data DeleteOrder
 - getInventory :: SwaggerPetstoreRequest GetInventory MimeNoContent (Map String Int)
 - data GetInventory
 - getOrderById :: Integer -> SwaggerPetstoreRequest GetOrderById MimeNoContent Order
 - data GetOrderById
 - placeOrder :: (Consumes PlaceOrder contentType, MimeRender contentType Order) => contentType -> Order -> SwaggerPetstoreRequest PlaceOrder contentType Order
 - data PlaceOrder
 - createUser :: (Consumes CreateUser contentType, MimeRender contentType User) => contentType -> User -> SwaggerPetstoreRequest CreateUser contentType res
 - data CreateUser
 - createUsersWithArrayInput :: (Consumes CreateUsersWithArrayInput contentType, MimeRender contentType [User]) => contentType -> [User] -> SwaggerPetstoreRequest CreateUsersWithArrayInput contentType res
 - data CreateUsersWithArrayInput
 - createUsersWithListInput :: (Consumes CreateUsersWithListInput contentType, MimeRender contentType [User]) => contentType -> [User] -> SwaggerPetstoreRequest CreateUsersWithListInput contentType res
 - data CreateUsersWithListInput
 - deleteUser :: Text -> SwaggerPetstoreRequest DeleteUser MimeNoContent res
 - data DeleteUser
 - getUserByName :: Text -> SwaggerPetstoreRequest GetUserByName MimeNoContent User
 - data GetUserByName
 - loginUser :: Text -> Text -> SwaggerPetstoreRequest LoginUser MimeNoContent Text
 - data LoginUser
 - logoutUser :: SwaggerPetstoreRequest LogoutUser MimeNoContent res
 - data LogoutUser
 - updateUser :: (Consumes UpdateUser contentType, MimeRender contentType User) => contentType -> Text -> User -> SwaggerPetstoreRequest UpdateUser contentType res
 - data UpdateUser
 - class HasBodyParam req param where
 - class HasOptionalParam req param where
 - newtype ApiUnderscorekey = ApiUnderscorekey {}
 - newtype Name = Name {}
 - newtype Status = Status {}
 - newtype AdditionalMetadata = AdditionalMetadata {}
 - newtype File = File {}
 - data SwaggerPetstoreRequest req contentType res = SwaggerPetstoreRequest {}
 - data Params = Params {}
 - data ParamBody
 - _mkRequest :: Method -> [ByteString] -> SwaggerPetstoreRequest req contentType res
 - _mkParams :: Params
 - setHeader :: SwaggerPetstoreRequest req contentType res -> [Header] -> SwaggerPetstoreRequest req contentType res
 - removeHeader :: SwaggerPetstoreRequest req contentType res -> [HeaderName] -> SwaggerPetstoreRequest req contentType res
 - _setContentTypeHeader :: forall req contentType res. MimeType contentType => SwaggerPetstoreRequest req contentType res -> SwaggerPetstoreRequest req contentType res
 - _setAcceptHeader :: forall req contentType res accept. MimeType accept => SwaggerPetstoreRequest req contentType res -> accept -> SwaggerPetstoreRequest req contentType res
 - _setQuery :: SwaggerPetstoreRequest req contentType res -> [QueryItem] -> SwaggerPetstoreRequest req contentType res
 - _addForm :: SwaggerPetstoreRequest req contentType res -> Form -> SwaggerPetstoreRequest req contentType res
 - _addMultiFormPart :: SwaggerPetstoreRequest req contentType res -> Part -> SwaggerPetstoreRequest req contentType res
 - _setBodyBS :: SwaggerPetstoreRequest req contentType res -> ByteString -> SwaggerPetstoreRequest req contentType res
 - _setBodyLBS :: SwaggerPetstoreRequest req contentType res -> ByteString -> SwaggerPetstoreRequest req contentType res
 - toPath :: ToHttpApiData a => a -> ByteString
 - toHeader :: ToHttpApiData a => (HeaderName, a) -> [Header]
 - toForm :: ToHttpApiData v => (ByteString, v) -> Form
 - toQuery :: ToHttpApiData a => (ByteString, Maybe a) -> [QueryItem]
 - data CollectionFormat
 - toHeaderColl :: ToHttpApiData a => CollectionFormat -> (HeaderName, [a]) -> [Header]
 - toFormColl :: ToHttpApiData v => CollectionFormat -> (ByteString, [v]) -> Form
 - toQueryColl :: ToHttpApiData a => CollectionFormat -> (ByteString, Maybe [a]) -> Query
 - _toColl :: Traversable f => CollectionFormat -> (f a -> [(b, ByteString)]) -> f [a] -> [(b, ByteString)]
 - _toCollA :: (Traversable f, Traversable t, Alternative t) => CollectionFormat -> (f (t a) -> [(b, t ByteString)]) -> f (t [a]) -> [(b, t ByteString)]
 - _toCollA' :: (Monoid c, Traversable f, Traversable t, Alternative t) => CollectionFormat -> (f (t a) -> [(b, t c)]) -> (Char -> c) -> f (t [a]) -> [(b, t c)]
 
Operations
Pet
addPet
addPet Source #
POST /pet
Add a new pet to the store
AuthMethod: petstore_auth
Note: Has Produces instances, but no response schema
deletePet
deletePet Source #
DELETE /pet/{petId}Deletes a pet
AuthMethod: petstore_auth
Note: Has Produces instances, but no response schema
findPetsByStatus
findPetsByStatus Source #
GET /pet/findByStatus
Finds Pets by status
Multiple status values can be provided with comma separated strings
AuthMethod: petstore_auth
findPetsByTags
findPetsByTags Source #
GET /pet/findByTags
Finds Pets by tags
Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
AuthMethod: petstore_auth
getPetById
getPetById Source #
GET /pet/{petId}Find pet by ID
Returns a single pet
AuthMethod: api_key
updatePet
updatePet Source #
PUT /pet
Update an existing pet
AuthMethod: petstore_auth
Note: Has Produces instances, but no response schema
updatePetWithForm
updatePetWithForm Source #
POST /pet/{petId}Updates a pet in the store with form data
AuthMethod: petstore_auth
Note: Has Produces instances, but no response schema
uploadFile
uploadFile Source #
POST /pet/{petId}/uploadImageuploads an image
AuthMethod: petstore_auth
Store
deleteOrder
deleteOrder Source #
DELETE /store/order/{orderId}Delete purchase order by ID
For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
Note: Has Produces instances, but no response schema
getInventory
getOrderById
getOrderById Source #
GET /store/order/{orderId}Find purchase order by ID
For valid response try integer IDs with value 5 or 10. Other values will generated exceptions
placeOrder
User
createUser
createUser Source #
POST /user
Create user
This can only be done by the logged in user.
Note: Has Produces instances, but no response schema
createUsersWithArrayInput
createUsersWithListInput
deleteUser
deleteUser Source #
DELETE /user/{username}Delete user
This can only be done by the logged in user.
Note: Has Produces instances, but no response schema
getUserByName
loginUser
logoutUser
updateUser
updateUser Source #
PUT /user/{username}Updated user
This can only be done by the logged in user.
Note: Has Produces instances, but no response schema
HasBodyParam
HasOptionalParam
Optional Request Parameter Types
SwaggerPetstoreRequest
data SwaggerPetstoreRequest req contentType res Source #
Represents a request. The "req" type variable is the request type. The "res" type variable is the response type.
SwaggerPetstoreRequest Utils
Params Utils
 
\ No newline at end of file
+Synopsis
- addPet :: (Consumes AddPet contentType, MimeRender contentType Pet) => contentType -> Pet -> SwaggerPetstoreRequest AddPet contentType res
 - data AddPet
 - deletePet :: Integer -> SwaggerPetstoreRequest DeletePet MimeNoContent res
 - data DeletePet
 - findPetsByStatus :: [Text] -> SwaggerPetstoreRequest FindPetsByStatus MimeNoContent [Pet]
 - data FindPetsByStatus
 - findPetsByTags :: [Text] -> SwaggerPetstoreRequest FindPetsByTags MimeNoContent [Pet]
 - data FindPetsByTags
 - getPetById :: Integer -> SwaggerPetstoreRequest GetPetById MimeNoContent Pet
 - data GetPetById
 - updatePet :: (Consumes UpdatePet contentType, MimeRender contentType Pet) => contentType -> Pet -> SwaggerPetstoreRequest UpdatePet contentType res
 - data UpdatePet
 - updatePetWithForm :: Consumes UpdatePetWithForm contentType => contentType -> Integer -> SwaggerPetstoreRequest UpdatePetWithForm contentType res
 - data UpdatePetWithForm
 - uploadFile :: Consumes UploadFile contentType => contentType -> Integer -> SwaggerPetstoreRequest UploadFile contentType ApiResponse
 - data UploadFile
 - deleteOrder :: Text -> SwaggerPetstoreRequest DeleteOrder MimeNoContent res
 - data DeleteOrder
 - getInventory :: SwaggerPetstoreRequest GetInventory MimeNoContent (Map String Int)
 - data GetInventory
 - getOrderById :: Integer -> SwaggerPetstoreRequest GetOrderById MimeNoContent Order
 - data GetOrderById
 - placeOrder :: (Consumes PlaceOrder contentType, MimeRender contentType Order) => contentType -> Order -> SwaggerPetstoreRequest PlaceOrder contentType Order
 - data PlaceOrder
 - createUser :: (Consumes CreateUser contentType, MimeRender contentType User) => contentType -> User -> SwaggerPetstoreRequest CreateUser contentType res
 - data CreateUser
 - createUsersWithArrayInput :: (Consumes CreateUsersWithArrayInput contentType, MimeRender contentType [User]) => contentType -> [User] -> SwaggerPetstoreRequest CreateUsersWithArrayInput contentType res
 - data CreateUsersWithArrayInput
 - createUsersWithListInput :: (Consumes CreateUsersWithListInput contentType, MimeRender contentType [User]) => contentType -> [User] -> SwaggerPetstoreRequest CreateUsersWithListInput contentType res
 - data CreateUsersWithListInput
 - deleteUser :: Text -> SwaggerPetstoreRequest DeleteUser MimeNoContent res
 - data DeleteUser
 - getUserByName :: Text -> SwaggerPetstoreRequest GetUserByName MimeNoContent User
 - data GetUserByName
 - loginUser :: Text -> Text -> SwaggerPetstoreRequest LoginUser MimeNoContent Text
 - data LoginUser
 - logoutUser :: SwaggerPetstoreRequest LogoutUser MimeNoContent res
 - data LogoutUser
 - updateUser :: (Consumes UpdateUser contentType, MimeRender contentType User) => contentType -> Text -> User -> SwaggerPetstoreRequest UpdateUser contentType res
 - data UpdateUser
 - class HasBodyParam req param where
 - class HasOptionalParam req param where
 - newtype ApiUnderscorekey = ApiUnderscorekey {}
 - newtype Name = Name {}
 - newtype Status = Status {}
 - newtype AdditionalMetadata = AdditionalMetadata {}
 - newtype File = File {}
 - data SwaggerPetstoreRequest req contentType res = SwaggerPetstoreRequest {}
 - rMethodL :: Lens_' (SwaggerPetstoreRequest req contentType res) Method
 - rUrlPathL :: Lens_' (SwaggerPetstoreRequest req contentType res) [ByteString]
 - rParamsL :: Lens_' (SwaggerPetstoreRequest req contentType res) Params
 - data Params = Params {}
 - paramsQueryL :: Lens_' Params Query
 - paramsHeadersL :: Lens_' Params RequestHeaders
 - paramsBodyL :: Lens_' Params ParamBody
 - data ParamBody
 - _mkRequest :: Method -> [ByteString] -> SwaggerPetstoreRequest req contentType res
 - _mkParams :: Params
 - setHeader :: SwaggerPetstoreRequest req contentType res -> [Header] -> SwaggerPetstoreRequest req contentType res
 - removeHeader :: SwaggerPetstoreRequest req contentType res -> [HeaderName] -> SwaggerPetstoreRequest req contentType res
 - _setContentTypeHeader :: forall req contentType res. MimeType contentType => SwaggerPetstoreRequest req contentType res -> SwaggerPetstoreRequest req contentType res
 - _setAcceptHeader :: forall req contentType res accept. MimeType accept => SwaggerPetstoreRequest req contentType res -> accept -> SwaggerPetstoreRequest req contentType res
 - _setQuery :: SwaggerPetstoreRequest req contentType res -> [QueryItem] -> SwaggerPetstoreRequest req contentType res
 - _addForm :: SwaggerPetstoreRequest req contentType res -> Form -> SwaggerPetstoreRequest req contentType res
 - _addMultiFormPart :: SwaggerPetstoreRequest req contentType res -> Part -> SwaggerPetstoreRequest req contentType res
 - _setBodyBS :: SwaggerPetstoreRequest req contentType res -> ByteString -> SwaggerPetstoreRequest req contentType res
 - _setBodyLBS :: SwaggerPetstoreRequest req contentType res -> ByteString -> SwaggerPetstoreRequest req contentType res
 - toPath :: ToHttpApiData a => a -> ByteString
 - toHeader :: ToHttpApiData a => (HeaderName, a) -> [Header]
 - toForm :: ToHttpApiData v => (ByteString, v) -> Form
 - toQuery :: ToHttpApiData a => (ByteString, Maybe a) -> [QueryItem]
 - data CollectionFormat
 - toHeaderColl :: ToHttpApiData a => CollectionFormat -> (HeaderName, [a]) -> [Header]
 - toFormColl :: ToHttpApiData v => CollectionFormat -> (ByteString, [v]) -> Form
 - toQueryColl :: ToHttpApiData a => CollectionFormat -> (ByteString, Maybe [a]) -> Query
 - _toColl :: Traversable f => CollectionFormat -> (f a -> [(b, ByteString)]) -> f [a] -> [(b, ByteString)]
 - _toCollA :: (Traversable f, Traversable t, Alternative t) => CollectionFormat -> (f (t a) -> [(b, t ByteString)]) -> f (t [a]) -> [(b, t ByteString)]
 - _toCollA' :: (Monoid c, Traversable f, Traversable t, Alternative t) => CollectionFormat -> (f (t a) -> [(b, t c)]) -> (Char -> c) -> f (t [a]) -> [(b, t c)]
 
Operations
Pet
addPet
addPet Source #
POST /pet
Add a new pet to the store
AuthMethod: petstore_auth
Note: Has Produces instances, but no response schema
deletePet
deletePet Source #
DELETE /pet/{petId}Deletes a pet
AuthMethod: petstore_auth
Note: Has Produces instances, but no response schema
findPetsByStatus
findPetsByStatus Source #
GET /pet/findByStatus
Finds Pets by status
Multiple status values can be provided with comma separated strings
AuthMethod: petstore_auth
findPetsByTags
findPetsByTags Source #
GET /pet/findByTags
Finds Pets by tags
Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
AuthMethod: petstore_auth
getPetById
getPetById Source #
GET /pet/{petId}Find pet by ID
Returns a single pet
AuthMethod: api_key
updatePet
updatePet Source #
PUT /pet
Update an existing pet
AuthMethod: petstore_auth
Note: Has Produces instances, but no response schema
updatePetWithForm
updatePetWithForm Source #
POST /pet/{petId}Updates a pet in the store with form data
AuthMethod: petstore_auth
Note: Has Produces instances, but no response schema
uploadFile
uploadFile Source #
POST /pet/{petId}/uploadImageuploads an image
AuthMethod: petstore_auth
Store
deleteOrder
deleteOrder Source #
DELETE /store/order/{orderId}Delete purchase order by ID
For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
Note: Has Produces instances, but no response schema
getInventory
getOrderById
getOrderById Source #
GET /store/order/{orderId}Find purchase order by ID
For valid response try integer IDs with value 5 or 10. Other values will generated exceptions
placeOrder
User
createUser
createUser Source #
POST /user
Create user
This can only be done by the logged in user.
Note: Has Produces instances, but no response schema
createUsersWithArrayInput
createUsersWithListInput
deleteUser
deleteUser Source #
DELETE /user/{username}Delete user
This can only be done by the logged in user.
Note: Has Produces instances, but no response schema
getUserByName
loginUser
logoutUser
updateUser
updateUser Source #
PUT /user/{username}Updated user
This can only be done by the logged in user.
Note: Has Produces instances, but no response schema
HasBodyParam
HasOptionalParam
Optional Request Parameter Types
SwaggerPetstoreRequest
data SwaggerPetstoreRequest req contentType res Source #
Represents a request. The "req" type variable is the request type. The "res" type variable is the response type.
SwaggerPetstoreRequest Utils
Params Utils