@@ -89,7 +89,7 @@ data Swagger = Swagger
89 , swaggerTags :: [SwaggerTag]
89 , swaggerTags :: [SwaggerTag]
91 -- | Additional external documentation.
91 -- | Additional external documentation.
92− , swaggerExternalDocs :: SwaggerExternalDocs
92+ , swaggerExternalDocs :: Maybe SwaggerExternalDocs
93 } deriving (Eq, Show, Generic)
93 } deriving (Eq, Show, Generic)
95-- | The object provides metadata about the API.
95-- | The object provides metadata about the API.
@@ -748,7 +748,6 @@ instance SwaggerMonoid SwaggerParameterSchema where
749deriveJSON (jsonPrefix "SwaggerParameter") ''SwaggerParameterLocation
749deriveJSON (jsonPrefix "SwaggerParameter") ''SwaggerParameterLocation
750deriveJSON (jsonPrefix "SwaggerParam") ''SwaggerParameterType
750deriveJSON (jsonPrefix "SwaggerParam") ''SwaggerParameterType
751−deriveJSON' ''SwaggerPathItem
752deriveJSON' ''SwaggerInfo
751deriveJSON' ''SwaggerInfo
753deriveJSON' ''SwaggerContact
752deriveJSON' ''SwaggerContact
754deriveJSON' ''SwaggerLicense
753deriveJSON' ''SwaggerLicense
@@ -766,6 +765,7 @@ deriveJSON' ''SwaggerXml
767deriveToJSON' ''SwaggerOperation
766deriveToJSON' ''SwaggerOperation
768deriveToJSON' ''SwaggerResponse
767deriveToJSON' ''SwaggerResponse
768+deriveToJSON' ''SwaggerPathItem
770-- =======================================================================
770-- =======================================================================
771-- Manual ToJSON instances
771-- Manual ToJSON instances
@@ -883,7 +883,16 @@ instance FromJSON Swagger where
883 parseJSON json@(Object o) = do
883 parseJSON json@(Object o) = do
884 (version :: Text) <- o .: "swagger"
884 (version :: Text) <- o .: "swagger"
885 when (version /= "2.0") empty
885 when (version /= "2.0") empty
886− genericParseJSON (jsonPrefix "swagger") json
886+ (genericParseJSON (jsonPrefix "swagger")
887+ `withDefaults` [ "consumes" .= (mempty :: SwaggerMimeList)
888+ , "produces" .= (mempty :: SwaggerMimeList)
889+ , "security" .= ([] :: [SwaggerSecurityRequirement])
890+ , "tags" .= ([] :: [SwaggerTag])
891+ , "definitions" .= (mempty :: HashMap Text SwaggerSchema)
892+ , "parameters" .= (mempty :: HashMap Text SwaggerParameter)
893+ , "responses" .= (mempty :: HashMap Text SwaggerResponse)
894+ , "securityDefinitions" .= (mempty :: HashMap Text SwaggerSecurityScheme)
887 parseJSON _ = empty
896 parseJSON _ = empty
889instance FromJSON SwaggerSecurityScheme where
898instance FromJSON SwaggerSecurityScheme where
@@ -954,5 +963,10 @@ instance FromJSON SwaggerResponse where
955instance FromJSON SwaggerOperation where
964instance FromJSON SwaggerOperation where
956 parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")
965 parseJSON = genericParseJSON (jsonPrefix "swaggerOperation")
957− `withDefaults` [ "deprecated" .= False ]
966+ `withDefaults` [ "deprecated" .= False
967+ , "security" .= ([] :: [SwaggerSecurityRequirement]) ]
969+instance FromJSON SwaggerPathItem where
970+ parseJSON = genericParseJSON (jsonPrefix "swaggerPathItem")
971+ `withDefaults` [ "parameters" .= ([] :: [SwaggerParameter]) ]