packages feed

servant-swagger 1.1.4 → 1.1.5

raw patch · 3 files changed

+63/−25 lines, 3 filesdep +singleton-booldep ~aesondep ~basedep ~doctestPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: singleton-bool

Dependency ranges changed: aeson, base, doctest, lens, servant, swagger2

API changes (from Hackage documentation)

- Servant.Swagger.Internal: instance forall k (desc :: GHC.Types.Symbol) (api :: k). (GHC.TypeLits.KnownSymbol desc, Servant.Swagger.Internal.HasSwagger api) => Servant.Swagger.Internal.HasSwagger (Servant.API.Description.Description desc Servant.API.Sub.:> api)
- Servant.Swagger.Internal: instance forall k (desc :: GHC.Types.Symbol) (api :: k). (GHC.TypeLits.KnownSymbol desc, Servant.Swagger.Internal.HasSwagger api) => Servant.Swagger.Internal.HasSwagger (Servant.API.Description.Summary desc Servant.API.Sub.:> api)
- Servant.Swagger.Internal: instance forall k (sub :: k). Servant.Swagger.Internal.HasSwagger sub => Servant.Swagger.Internal.HasSwagger (Data.Vault.Lazy.Vault Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sub :: k). Servant.Swagger.Internal.HasSwagger sub => Servant.Swagger.Internal.HasSwagger (Network.HTTP.Types.Version.HttpVersion Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sub :: k). Servant.Swagger.Internal.HasSwagger sub => Servant.Swagger.Internal.HasSwagger (Servant.API.IsSecure.IsSecure Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sub :: k). Servant.Swagger.Internal.HasSwagger sub => Servant.Swagger.Internal.HasSwagger (Servant.API.RemoteHost.RemoteHost Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sym :: GHC.Types.Symbol) (sub :: k). (GHC.TypeLits.KnownSymbol sym, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.QueryParam.QueryFlag sym Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sym :: GHC.Types.Symbol) (sub :: k). (GHC.TypeLits.KnownSymbol sym, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (sym Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sym :: GHC.Types.Symbol) a (sub :: k). (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.Capture.Capture sym a Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sym :: GHC.Types.Symbol) a (sub :: k). (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.Capture.CaptureAll sym a Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sym :: GHC.Types.Symbol) a (sub :: k). (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.Header.Header sym a Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sym :: GHC.Types.Symbol) a (sub :: k). (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.QueryParam.QueryParam sym a Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k (sym :: GHC.Types.Symbol) a (sub :: k). (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.QueryParam.QueryParams sym a Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k a (cs :: [GHC.Types.*]) (sub :: k). (Data.Swagger.Internal.Schema.ToSchema a, Servant.Swagger.Internal.AllAccept cs, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.ReqBody.ReqBody cs a Servant.API.Sub.:> sub)
- Servant.Swagger.Internal: instance forall k1 (cs :: [GHC.Types.*]) (hs :: [*]) (status :: GHC.Types.Nat) (method :: k1). (Servant.Swagger.Internal.AllAccept cs, Servant.Swagger.Internal.AllToResponseHeader hs, GHC.TypeLits.KnownNat status, Servant.Swagger.Internal.SwaggerMethod method) => Servant.Swagger.Internal.HasSwagger (Servant.API.Verbs.Verb method status cs (Servant.API.ResponseHeaders.Headers hs Servant.API.ContentTypes.NoContent))
- Servant.Swagger.Internal: instance forall k1 (cs :: [GHC.Types.*]) (status :: GHC.Types.Nat) (method :: k1). (Servant.Swagger.Internal.AllAccept cs, GHC.TypeLits.KnownNat status, Servant.Swagger.Internal.SwaggerMethod method) => Servant.Swagger.Internal.HasSwagger (Servant.API.Verbs.Verb method status cs Servant.API.ContentTypes.NoContent)
- Servant.Swagger.Internal: instance forall k1 a (cs :: [GHC.Types.*]) (hs :: [*]) (status :: GHC.Types.Nat) (method :: k1). (Data.Swagger.Internal.Schema.ToSchema a, Servant.Swagger.Internal.AllAccept cs, Servant.Swagger.Internal.AllToResponseHeader hs, GHC.TypeLits.KnownNat status, Servant.Swagger.Internal.SwaggerMethod method) => Servant.Swagger.Internal.HasSwagger (Servant.API.Verbs.Verb method status cs (Servant.API.ResponseHeaders.Headers hs a))
- Servant.Swagger.Internal: instance forall k1 a (cs :: [GHC.Types.*]) (status :: GHC.Types.Nat) (method :: k1). (Data.Swagger.Internal.Schema.ToSchema a, Servant.Swagger.Internal.AllAccept cs, GHC.TypeLits.KnownNat status, Servant.Swagger.Internal.SwaggerMethod method) => Servant.Swagger.Internal.HasSwagger (Servant.API.Verbs.Verb method status cs a)
+ Servant.Swagger.Internal: instance (Data.Swagger.Internal.Schema.ToSchema a, Servant.Swagger.Internal.AllAccept cs, Servant.Swagger.Internal.HasSwagger sub, GHC.TypeLits.KnownSymbol (Servant.API.Description.FoldDescription mods)) => Servant.Swagger.Internal.HasSwagger (Servant.API.ReqBody.ReqBody' mods cs a Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol desc, Servant.Swagger.Internal.HasSwagger api) => Servant.Swagger.Internal.HasSwagger (Servant.API.Description.Description desc Servant.API.Sub.:> api)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol desc, Servant.Swagger.Internal.HasSwagger api) => Servant.Swagger.Internal.HasSwagger (Servant.API.Description.Summary desc Servant.API.Sub.:> api)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.Capture.CaptureAll sym a Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.QueryParam.QueryParams sym a Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub, Data.Singletons.Bool.SBoolI (Servant.API.Modifiers.FoldRequired mods), GHC.TypeLits.KnownSymbol (Servant.API.Description.FoldDescription mods)) => Servant.Swagger.Internal.HasSwagger (Servant.API.Header.Header' mods sym a Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub, Data.Singletons.Bool.SBoolI (Servant.API.Modifiers.FoldRequired mods), GHC.TypeLits.KnownSymbol (Servant.API.Description.FoldDescription mods)) => Servant.Swagger.Internal.HasSwagger (Servant.API.QueryParam.QueryParam' mods sym a Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol sym, Data.Swagger.Internal.ParamSchema.ToParamSchema a, Servant.Swagger.Internal.HasSwagger sub, GHC.TypeLits.KnownSymbol (Servant.API.Description.FoldDescription mods)) => Servant.Swagger.Internal.HasSwagger (Servant.API.Capture.Capture' mods sym a Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol sym, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (Servant.API.QueryParam.QueryFlag sym Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance (GHC.TypeLits.KnownSymbol sym, Servant.Swagger.Internal.HasSwagger sub) => Servant.Swagger.Internal.HasSwagger (sym Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance Servant.Swagger.Internal.HasSwagger sub => Servant.Swagger.Internal.HasSwagger (Data.Vault.Lazy.Vault Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance Servant.Swagger.Internal.HasSwagger sub => Servant.Swagger.Internal.HasSwagger (Network.HTTP.Types.Version.HttpVersion Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance Servant.Swagger.Internal.HasSwagger sub => Servant.Swagger.Internal.HasSwagger (Servant.API.IsSecure.IsSecure Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance Servant.Swagger.Internal.HasSwagger sub => Servant.Swagger.Internal.HasSwagger (Servant.API.RemoteHost.RemoteHost Servant.API.Sub.:> sub)
+ Servant.Swagger.Internal: instance forall k1 (cs :: [*]) (hs :: [*]) (status :: GHC.Types.Nat) (method :: k1). (Servant.Swagger.Internal.AllAccept cs, Servant.Swagger.Internal.AllToResponseHeader hs, GHC.TypeNats.KnownNat status, Servant.Swagger.Internal.SwaggerMethod method) => Servant.Swagger.Internal.HasSwagger (Servant.API.Verbs.Verb method status cs (Servant.API.ResponseHeaders.Headers hs Servant.API.ContentTypes.NoContent))
+ Servant.Swagger.Internal: instance forall k1 (cs :: [*]) (status :: GHC.Types.Nat) (method :: k1). (Servant.Swagger.Internal.AllAccept cs, GHC.TypeNats.KnownNat status, Servant.Swagger.Internal.SwaggerMethod method) => Servant.Swagger.Internal.HasSwagger (Servant.API.Verbs.Verb method status cs Servant.API.ContentTypes.NoContent)
+ Servant.Swagger.Internal: instance forall k1 a (cs :: [*]) (hs :: [*]) (status :: GHC.Types.Nat) (method :: k1). (Data.Swagger.Internal.Schema.ToSchema a, Servant.Swagger.Internal.AllAccept cs, Servant.Swagger.Internal.AllToResponseHeader hs, GHC.TypeNats.KnownNat status, Servant.Swagger.Internal.SwaggerMethod method) => Servant.Swagger.Internal.HasSwagger (Servant.API.Verbs.Verb method status cs (Servant.API.ResponseHeaders.Headers hs a))
+ Servant.Swagger.Internal: instance forall k1 a (cs :: [*]) (status :: GHC.Types.Nat) (method :: k1). (Data.Swagger.Internal.Schema.ToSchema a, Servant.Swagger.Internal.AllAccept cs, GHC.TypeNats.KnownNat status, Servant.Swagger.Internal.SwaggerMethod method) => Servant.Swagger.Internal.HasSwagger (Servant.API.Verbs.Verb method status cs a)
- Servant.Swagger: validateEveryToJSON :: forall proxy api. TMap (Every '[Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => proxy api -> Spec
+ Servant.Swagger: validateEveryToJSON :: forall proxy api. TMap (Every [Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => proxy api -> Spec
- Servant.Swagger: validateEveryToJSONWithPatternChecker :: forall proxy api. TMap (Every '[Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => (Pattern -> Text -> Bool) -> proxy api -> Spec
+ Servant.Swagger: validateEveryToJSONWithPatternChecker :: forall proxy api. TMap (Every [Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => (Pattern -> Text -> Bool) -> proxy api -> Spec
- Servant.Swagger.Internal.Test: validateEveryToJSON :: forall proxy api. TMap (Every '[Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => proxy api -> Spec
+ Servant.Swagger.Internal.Test: validateEveryToJSON :: forall proxy api. TMap (Every [Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => proxy api -> Spec
- Servant.Swagger.Internal.Test: validateEveryToJSONWithPatternChecker :: forall proxy api. TMap (Every '[Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => (Pattern -> Text -> Bool) -> proxy api -> Spec
+ Servant.Swagger.Internal.Test: validateEveryToJSONWithPatternChecker :: forall proxy api. TMap (Every [Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => (Pattern -> Text -> Bool) -> proxy api -> Spec
- Servant.Swagger.Test: validateEveryToJSON :: forall proxy api. TMap (Every '[Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => proxy api -> Spec
+ Servant.Swagger.Test: validateEveryToJSON :: forall proxy api. TMap (Every [Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => proxy api -> Spec
- Servant.Swagger.Test: validateEveryToJSONWithPatternChecker :: forall proxy api. TMap (Every '[Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => (Pattern -> Text -> Bool) -> proxy api -> Spec
+ Servant.Swagger.Test: validateEveryToJSONWithPatternChecker :: forall proxy api. TMap (Every [Typeable, Show, Arbitrary, ToJSON, ToSchema]) (BodyTypes JSON api) => (Pattern -> Text -> Bool) -> proxy api -> Spec

Files

CHANGELOG.md view
@@ -1,3 +1,10 @@+1.1.5+-----++* Notes:+    * `servant-0.13` compatible release+    * Drops compatibility with previous `servant` versions.+ 1.1.4 ----- 
servant-swagger.cabal view
@@ -1,22 +1,37 @@ name:                servant-swagger-version:             1.1.4+version:             1.1.5 synopsis:            Generate Swagger specification for your servant API.-description:         Please see README.md+description:+  Swagger™ is a project used to describe and document RESTful APIs.+  Unlike Servant it is language-agnostic and thus is quite popular among developers+  in different languages. It also exists for a longer time and has more tools to work with.+  .+  This package provides means to generate Swagger specification for a Servant API+  and also to partially test whether API conforms with its specification.+  .+  Generated Swagger specification then can be used for many things such as+  .+  * displaying interactive documentation using [Swagger UI](http://swagger.io/swagger-ui/);+  .+  * generating clients and servers in many languages using [Swagger Codegen](http://swagger.io/swagger-codegen/);+  .+  * and [many others](http://swagger.io/open-source-integrations/). homepage:            https://github.com/haskell-servant/servant-swagger bug-reports:         https://github.com/haskell-servant/servant-swagger/issues license:             BSD3 license-file:        LICENSE author:              David Johnson, Nickolay Kudasov maintainer:          nickolay.kudasov@gmail.com-copyright:           (c) 2015-2016, Servant contributors+copyright:           (c) 2015-2018, Servant contributors category:            Web, Servant, Swagger build-type:          Custom-cabal-version:       >=1.18+cabal-version:       1.18 tested-with:   GHC==7.8.4,   GHC==7.10.3,   GHC==8.0.2,-  GHC==8.2.1+  GHC==8.2.2+ extra-source-files:     README.md   , CHANGELOG.md@@ -60,8 +75,9 @@                      , bytestring                >=0.10.4.0 && <0.11                      , http-media                >=0.6.3    && <0.8                      , insert-ordered-containers >=0.1.0.0  && <0.3-                     , lens                      >=4.7.0.1  && <4.16-                     , servant                   >=0.5      && <0.13+                     , lens                      >=4.7.0.1  && <4.17+                     , servant                   >=0.13     && <0.14+                     , singleton-bool            >=0.1.3    && <0.2                      , swagger2                  >=2.1      && <2.3                      , text                      >=1.2.0.6  && <1.3                      , unordered-containers      >=0.2.5.1  && <0.3@@ -89,6 +105,7 @@   type:             exitcode-stdio-1.0   hs-source-dirs:   test   main-is:          Spec.hs+  build-tool-depends: hspec-discover:hspec-discover   build-depends:    base                   , aeson                   , aeson-qq >=0.8.1
src/Servant/Swagger/Internal.hs view
@@ -30,6 +30,9 @@ import GHC.TypeLits import Network.HTTP.Media (MediaType) import Servant.API+import Servant.API.Description (FoldDescription, reflectDescription)+import Servant.API.Modifiers (FoldRequired)+import Data.Singletons.Bool  import Servant.Swagger.Internal.TypeLevel.API @@ -71,10 +74,8 @@ instance HasSwagger Raw where   toSwagger _ = mempty & paths . at "/" ?~ mempty -#if MIN_VERSION_servant(0,11,0) instance HasSwagger EmptyAPI where   toSwagger _ = mempty-#endif  -- | All operations of sub API. -- This is similar to @'operationsOf'@ but ensures that operations@@ -214,7 +215,7 @@     where       piece = symbolVal (Proxy :: Proxy sym) -instance (KnownSymbol sym, ToParamSchema a, HasSwagger sub) => HasSwagger (Capture sym a :> sub) where+instance (KnownSymbol sym, ToParamSchema a, HasSwagger sub, KnownSymbol (FoldDescription mods)) => HasSwagger (Capture' mods sym a :> sub) where   toSwagger _ = toSwagger (Proxy :: Proxy sub)     & addParam param     & prependPath capture@@ -222,21 +223,21 @@     where       pname = symbolVal (Proxy :: Proxy sym)       tname = Text.pack pname+      transDesc ""   = Nothing+      transDesc desc = Just (Text.pack desc)       capture = "{" <> pname <> "}"       param = mempty         & name .~ tname+        & description .~ transDesc (reflectDescription (Proxy :: Proxy mods))         & required ?~ True         & schema .~ ParamOther (mempty             & in_ .~ ParamPath             & paramSchema .~ toParamSchema (Proxy :: Proxy a)) -#if MIN_VERSION_servant(0,8,1) -- | Swagger Spec doesn't have a notion of CaptureAll, this instance is the best effort. instance (KnownSymbol sym, ToParamSchema a, HasSwagger sub) => HasSwagger (CaptureAll sym a :> sub) where   toSwagger _ = toSwagger (Proxy :: Proxy (Capture sym a :> sub))-#endif -#if MIN_VERSION_servant(0,12,0) instance (KnownSymbol desc, HasSwagger api) => HasSwagger (Description desc :> api) where   toSwagger _ = toSwagger (Proxy :: Proxy api)     & allOperations.description %~ (Just (Text.pack (symbolVal (Proxy :: Proxy desc))) <>)@@ -244,19 +245,23 @@ instance (KnownSymbol desc, HasSwagger api) => HasSwagger (Summary desc :> api) where   toSwagger _ = toSwagger (Proxy :: Proxy api)     & allOperations.summary %~ (Just (Text.pack (symbolVal (Proxy :: Proxy desc))) <>)-#endif -instance (KnownSymbol sym, ToParamSchema a, HasSwagger sub) => HasSwagger (QueryParam sym a :> sub) where+instance (KnownSymbol sym, ToParamSchema a, HasSwagger sub, SBoolI (FoldRequired mods), KnownSymbol (FoldDescription mods)) => HasSwagger (QueryParam' mods sym a :> sub) where   toSwagger _ = toSwagger (Proxy :: Proxy sub)     & addParam param     & addDefaultResponse400 tname     where       tname = Text.pack (symbolVal (Proxy :: Proxy sym))+      transDesc ""   = Nothing+      transDesc desc = Just (Text.pack desc)       param = mempty         & name .~ tname-        & schema .~ ParamOther (mempty-            & in_ .~ ParamQuery-            & paramSchema .~ toParamSchema (Proxy :: Proxy a))+        & description .~ transDesc (reflectDescription (Proxy :: Proxy mods))+        & required ?~ reflectBool (Proxy :: Proxy (FoldRequired mods))+        & schema .~ ParamOther sch+      sch = mempty+        & in_ .~ ParamQuery+        & paramSchema .~ toParamSchema (Proxy :: Proxy a)  instance (KnownSymbol sym, ToParamSchema a, HasSwagger sub) => HasSwagger (QueryParams sym a :> sub) where   toSwagger _ = toSwagger (Proxy :: Proxy sub)@@ -266,11 +271,13 @@       tname = Text.pack (symbolVal (Proxy :: Proxy sym))       param = mempty         & name .~ tname-        & schema .~ ParamOther (mempty-            & in_ .~ ParamQuery-            & paramSchema .~ (mempty-                & type_ .~ SwaggerArray-                & items ?~ SwaggerItemsPrimitive (Just CollectionMulti) (toParamSchema (Proxy :: Proxy a))))+        & schema .~ ParamOther sch+      sch = mempty+        & in_ .~ ParamQuery+        & paramSchema .~ pschema+      pschema = mempty+        & type_ .~ SwaggerArray+        & items ?~ SwaggerItemsPrimitive (Just CollectionMulti) (toParamSchema (Proxy :: Proxy a))  instance (KnownSymbol sym, HasSwagger sub) => HasSwagger (QueryFlag sym :> sub) where   toSwagger _ = toSwagger (Proxy :: Proxy sub)@@ -286,19 +293,23 @@             & paramSchema .~ (toParamSchema (Proxy :: Proxy Bool)                 & default_ ?~ toJSON False)) -instance (KnownSymbol sym, ToParamSchema a, HasSwagger sub) => HasSwagger (Header sym a :> sub) where+instance (KnownSymbol sym, ToParamSchema a, HasSwagger sub, SBoolI (FoldRequired mods), KnownSymbol (FoldDescription mods)) => HasSwagger (Header' mods  sym a :> sub) where   toSwagger _ = toSwagger (Proxy :: Proxy sub)     & addParam param     & addDefaultResponse400 tname     where       tname = Text.pack (symbolVal (Proxy :: Proxy sym))+      transDesc ""   = Nothing+      transDesc desc = Just (Text.pack desc)       param = mempty         & name .~ tname+        & description .~ transDesc (reflectDescription (Proxy :: Proxy mods))+        & required ?~ reflectBool (Proxy :: Proxy (FoldRequired mods))         & schema .~ ParamOther (mempty             & in_ .~ ParamHeader             & paramSchema .~ toParamSchema (Proxy :: Proxy a)) -instance (ToSchema a, AllAccept cs, HasSwagger sub) => HasSwagger (ReqBody cs a :> sub) where+instance (ToSchema a, AllAccept cs, HasSwagger sub, KnownSymbol (FoldDescription mods)) => HasSwagger (ReqBody' mods cs a :> sub) where   toSwagger _ = toSwagger (Proxy :: Proxy sub)     & addParam param     & addConsumes (allContentType (Proxy :: Proxy cs))@@ -306,9 +317,12 @@     & definitions %~ (<> defs)     where       tname = "body"+      transDesc ""   = Nothing+      transDesc desc = Just (Text.pack desc)       (defs, ref) = runDeclare (declareSchemaRef (Proxy :: Proxy a)) mempty       param = mempty         & name      .~ tname+        & description .~ transDesc (reflectDescription (Proxy :: Proxy mods))         & required  ?~ True         & schema    .~ ParamBody ref