@@ -681,11 +681,13 @@ data Schema = Schema
681681 , _schemaProperties :: InsOrdHashMap Text (Referenced Schema)
682682 , _schemaAdditionalProperties :: Maybe AdditionalProperties
683683
684− , _schemaDiscriminator :: Maybe Text -- FIXME Discriminator object
684+ , _schemaDiscriminator :: Maybe Discriminator
685685 , _schemaReadOnly :: Maybe Bool
686+ , _schemaWriteOnly :: Maybe Bool
686687 , _schemaXml :: Maybe Xml
687688 , _schemaExternalDocs :: Maybe ExternalDocs
688689 , _schemaExample :: Maybe Value
690+ , _schemaDeprecated :: Maybe Bool
689691
690692 , _schemaMaxProperties :: Maybe Integer
691693 , _schemaMinProperties :: Maybe Integer
@@ -693,6 +695,14 @@ data Schema = Schema
693695 , _schemaParamSchema :: ParamSchema 'SwaggerKindSchema
694696 } deriving (Eq, Show, Generic, Data, Typeable)
695697
698+data Discriminator = Discriminator
699+ { -- | The name of the property in the payload that will hold the discriminator value.
700+ _discriminatorPropertyName :: Text
701+
702+ -- | An object to hold mappings between payload values and schema names or references.
703+ , _discriminatorMapping :: InsOrdHashMap Text Text
704+ } deriving (Eq, Show, Generic, Data, Typeable)
705+
696706-- | A @'Schema'@ with an optional name.
697707-- This name can be used in references.
698708data NamedSchema = NamedSchema
@@ -790,7 +800,7 @@ data Response = Response
790800 , _responseContent :: InsOrdHashMap Text MediaTypeObject
791801
792802 -- | Maps a header name to its definition.
793− , _responseHeaders :: InsOrdHashMap HeaderName Header -- FIXME Referenced
803+ , _responseHeaders :: InsOrdHashMap HeaderName (Referenced Header)
794804
795805 -- TODO links
796806 } deriving (Eq, Show, Generic, Data, Typeable)
@@ -1152,6 +1162,9 @@ instance ToJSON ExternalDocs where
11521162instance ToJSON Xml where
11531163 toJSON = genericToJSON (jsonPrefix "Xml")
11541164
1165+instance ToJSON Discriminator where
1166+ toJSON = genericToJSON (jsonPrefix "Discriminator")
1167+
11551168-- =======================================================================
11561169-- Simple Generic-based FromJSON instances
11571170-- =======================================================================
@@ -1189,6 +1202,9 @@ instance FromJSON Tag where
11891202instance FromJSON ExternalDocs where
11901203 parseJSON = genericParseJSON (jsonPrefix "ExternalDocs")
11911204
1205+instance FromJSON Discriminator where
1206+ parseJSON = genericParseJSON (jsonPrefix "Discriminator")
1207+
11921208-- =======================================================================
11931209-- Manual ToJSON instances
11941210-- =======================================================================