@@ -247,7 +247,7 @@ data SwaggerOperation = SwaggerOperation
247 -- This definition overrides any declared top-level security.
247 -- This definition overrides any declared top-level security.
248 -- To remove a top-level security declaration, @Just []@ can be used.
248 -- To remove a top-level security declaration, @Just []@ can be used.
249 , swaggerOperationSecurity :: [SwaggerSecurityRequirement]
249 , swaggerOperationSecurity :: [SwaggerSecurityRequirement]
250− } deriving (Eq, Show)
250+ } deriving (Eq, Show, Generic)
252newtype SwaggerMimeList = SwaggerMimeList { getSwaggerMimeList :: [MediaType] }
252newtype SwaggerMimeList = SwaggerMimeList { getSwaggerMimeList :: [MediaType] }
253 deriving (Eq, Show)
253 deriving (Eq, Show)
@@ -510,7 +510,7 @@ data SwaggerResponse = SwaggerResponse
511 -- | An example of the response message.
511 -- | An example of the response message.
512 , swaggerResponseExamples :: Maybe SwaggerExample
512 , swaggerResponseExamples :: Maybe SwaggerExample
513− } deriving (Eq, Show)
513+ } deriving (Eq, Show, Generic)
515type HeaderName = Text
515type HeaderName = Text
@@ -624,7 +624,6 @@ newtype URL = URL { getUrl :: Text } deriving (Eq, Show, ToJSON, FromJSON)
624-- TH derived ToJSON and FromJSON instances
624-- TH derived ToJSON and FromJSON instances
625-- =======================================================================
625-- =======================================================================
627−deriveJSON' ''SwaggerOperation
628deriveJSON (jsonPrefix "SwaggerParameter") ''SwaggerParameterLocation
627deriveJSON (jsonPrefix "SwaggerParameter") ''SwaggerParameterLocation
629deriveJSON (jsonPrefix "SwaggerParam") ''SwaggerParameterType
628deriveJSON (jsonPrefix "SwaggerParam") ''SwaggerParameterType
630deriveJSON' ''SwaggerPathItem
629deriveJSON' ''SwaggerPathItem
@@ -637,13 +636,15 @@ deriveJSON (jsonPrefix "SwaggerItemsCollection") ''SwaggerItemsCollectionFormat
637deriveJSON (jsonPrefix "SwaggerCollection") ''SwaggerCollectionFormat
636deriveJSON (jsonPrefix "SwaggerCollection") ''SwaggerCollectionFormat
638deriveJSON (jsonPrefix "SwaggerApiKey") ''SwaggerApiKeyLocation
637deriveJSON (jsonPrefix "SwaggerApiKey") ''SwaggerApiKeyLocation
639deriveJSON (jsonPrefix "swaggerApiKey") ''SwaggerApiKeyParams
638deriveJSON (jsonPrefix "swaggerApiKey") ''SwaggerApiKeyParams
640−deriveJSON' ''SwaggerResponse
641−deriveJSON' ''SwaggerSchemaCommon
639+deriveJSON (jsonPrefix "swaggerSchema") ''SwaggerSchemaCommon
642deriveJSONDefault ''SwaggerScheme
640deriveJSONDefault ''SwaggerScheme
643deriveJSON' ''SwaggerTag
641deriveJSON' ''SwaggerTag
644deriveJSON' ''SwaggerExternalDocs
642deriveJSON' ''SwaggerExternalDocs
645deriveJSON' ''SwaggerXml
643deriveJSON' ''SwaggerXml
645+deriveToJSON' ''SwaggerOperation
646+deriveToJSON' ''SwaggerResponse
647-- =======================================================================
648-- =======================================================================
648-- Manual ToJSON instances
649-- Manual ToJSON instances
649-- =======================================================================
650-- =======================================================================
@@ -721,9 +722,7 @@ instance ToJSON SwaggerSchemaItems where
721 toJSON (SwaggerSchemaItemsArray xs) = toJSON xs
722 toJSON (SwaggerSchemaItemsArray xs) = toJSON xs
723instance ToJSON SwaggerResponses where
724instance ToJSON SwaggerResponses where
724− toJSON (SwaggerResponses def rs) = object
725+ toJSON (SwaggerResponses def rs) = toJSON (hashMapMapKeys show rs) <+> object [ "default" .= def ]
726− , "responses" .= hashMapMapKeys show rs ]
728instance ToJSON SwaggerExample where
727instance ToJSON SwaggerExample where
729 toJSON = toJSON . Map.mapKeys show . getSwaggerExample
728 toJSON = toJSON . Map.mapKeys show . getSwaggerExample
@@ -795,6 +794,7 @@ instance FromJSON SwaggerMimeList where
796instance FromJSON SwaggerParameter where
795instance FromJSON SwaggerParameter where
797 parseJSON = genericParseJSONWithSub "schema" (jsonPrefix "swaggerParameter")
796 parseJSON = genericParseJSONWithSub "schema" (jsonPrefix "swaggerParameter")
797+ `withDefaults` [ "required" .= False ]
799instance FromJSON SwaggerParameterSchema where
799instance FromJSON SwaggerParameterSchema where
800 parseJSON json@(Object o) = do
800 parseJSON json@(Object o) = do
@@ -806,6 +806,7 @@ instance FromJSON SwaggerParameterSchema where
807instance FromJSON SwaggerParameterOtherSchema where
807instance FromJSON SwaggerParameterOtherSchema where
808 parseJSON = genericParseJSONWithSub "common" (jsonPrefix "swaggerParameterOtherSchema")
808 parseJSON = genericParseJSONWithSub "common" (jsonPrefix "swaggerParameterOtherSchema")
809+ `withDefaults` [ "allowEmptyValue" .= False ]
810instance FromJSON SwaggerSchemaItems where
811instance FromJSON SwaggerSchemaItems where
811 parseJSON json@(Object _) = SwaggerSchemaItemsObject <$> parseJSON json
812 parseJSON json@(Object _) = SwaggerSchemaItemsObject <$> parseJSON json
@@ -814,7 +815,7 @@ instance FromJSON SwaggerSchemaItems where
815instance FromJSON SwaggerResponses where
816instance FromJSON SwaggerResponses where
816 parseJSON (Object o) = SwaggerResponses
817 parseJSON (Object o) = SwaggerResponses
817− <$> o .: "default"
818+ <$> o .:? "default"
818 <*> (parseJSON (Object (HashMap.delete "default" o)) >>= hashMapReadKeys)
819 <*> (parseJSON (Object (HashMap.delete "default" o)) >>= hashMapReadKeys)
819 parseJSON _ = empty
820 parseJSON _ = empty
@@ -823,3 +824,10 @@ instance FromJSON SwaggerExample where
823 m <- parseJSON json
824 m <- parseJSON json
824 pure $ SwaggerExample (Map.mapKeys fromString m)
825 pure $ SwaggerExample (Map.mapKeys fromString m)
827+instance FromJSON SwaggerResponse where
828+ parseJSON = genericParseJSON (jsonPrefix "swaggerResponse")
829+ `withDefaults` [ "headers" .= (mempty :: HashMap HeaderName SwaggerHeader) ]
831+instance FromJSON SwaggerOperation where
832+ parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")
833+ `withDefaults` [ "deprecated" .= False ]