@@ -39,19 +39,17 @@ where
3939import Control.Lens
4040import qualified Data.Aeson.Types as A
4141import Data.OpenApi
42+import Data.OpenApi.Internal.ParamSchema
4243import Data.OpenApi.Internal.Schema
4344import Data.Proxy
45+import Data.Text (Text)
46+import qualified Data.Text as T
4447import Data.Typeable
4548import Deriving.Aeson
4649import GHC.Generics
4750import GHC.TypeLits
4851
49−
50−#ifdef SERVANT_DESCRIPTION
51−
52−import Servant.API
53−import Data.Text (Text)
54−import qualified Data.Text as T
52+data Description (desc :: Symbol) = Description
5553
5654instance (AesonOptions xs) => AesonOptions (Description f ': xs) where
5755 aesonOptions = aesonOptions @xs
@@ -62,8 +60,6 @@ instance KnownSymbol t => OpenApiOptionModifier (Description t) where
6260toTextLine :: forall s. KnownSymbol s => Text
6361toTextLine = "\n\n" <> T.pack (symbolVal (Proxy @s))
6462
65−#endif
66−
6763-- $setup
6864-- >>> import qualified Data.Yaml
6965-- >>> import qualified Data.ByteString.Char8
@@ -78,6 +74,13 @@ instance
7874 openApiSchemaModifier @xs
7975 <$> genericDeclareNamedSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
8076
77+instance
78+ (OpenApiOptionModifier xs, GToParamSchema (Rep x), Generic x) =>
79+ ToParamSchema (CustomJSON (xs :: k) x)
80+ where
81+ toParamSchema Proxy =
82+ genericToParamSchema (openApiOptionsModifier @xs defaultSchemaOptions) (Proxy @x)
83+
8184class OpenApiOptionModifier x where
8285 openApiOptionsModifier :: SchemaOptions -> SchemaOptions
8386 openApiOptionsModifier = id
@@ -99,8 +102,10 @@ instance OpenApiOptionModifier UnwrapUnaryRecords where
99102
100103instance OpenApiOptionModifier OmitNothingFields
101104
105+#if MIN_VERSION_deriving_aeson(0,2,4)
102106instance OpenApiOptionModifier RejectUnknownFields where
103107 openApiSchemaModifier = schema . additionalProperties .~ Just (AdditionalPropertiesAllowed False)
108+#endif
104109
105110instance StringModifier f => OpenApiOptionModifier (FieldLabelModifier f) where
106111 openApiOptionsModifier o = o {fieldLabelModifier = getStringModifier @f}