@@ -681,11 +681,13 @@ data Schema = Schema
681 , _schemaProperties :: InsOrdHashMap Text (Referenced Schema)
681 , _schemaProperties :: InsOrdHashMap Text (Referenced Schema)
682 , _schemaAdditionalProperties :: Maybe AdditionalProperties
682 , _schemaAdditionalProperties :: Maybe AdditionalProperties
684− , _schemaDiscriminator :: Maybe Text -- FIXME Discriminator object
684+ , _schemaDiscriminator :: Maybe Discriminator
685 , _schemaReadOnly :: Maybe Bool
685 , _schemaReadOnly :: Maybe Bool
686+ , _schemaWriteOnly :: Maybe Bool
686 , _schemaXml :: Maybe Xml
687 , _schemaXml :: Maybe Xml
687 , _schemaExternalDocs :: Maybe ExternalDocs
688 , _schemaExternalDocs :: Maybe ExternalDocs
688 , _schemaExample :: Maybe Value
689 , _schemaExample :: Maybe Value
690+ , _schemaDeprecated :: Maybe Bool
690 , _schemaMaxProperties :: Maybe Integer
692 , _schemaMaxProperties :: Maybe Integer
691 , _schemaMinProperties :: Maybe Integer
693 , _schemaMinProperties :: Maybe Integer
@@ -693,6 +695,14 @@ data Schema = Schema
693 , _schemaParamSchema :: ParamSchema 'SwaggerKindSchema
695 , _schemaParamSchema :: ParamSchema 'SwaggerKindSchema
694 } deriving (Eq, Show, Generic, Data, Typeable)
696 } deriving (Eq, Show, Generic, Data, Typeable)
698+data Discriminator = Discriminator
699+ { -- | The name of the property in the payload that will hold the discriminator value.
700+ _discriminatorPropertyName :: Text
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)
696-- | A @'Schema'@ with an optional name.
706-- | A @'Schema'@ with an optional name.
697-- This name can be used in references.
707-- This name can be used in references.
698data NamedSchema = NamedSchema
708data NamedSchema = NamedSchema
@@ -790,7 +800,7 @@ data Response = Response
790 , _responseContent :: InsOrdHashMap Text MediaTypeObject
800 , _responseContent :: InsOrdHashMap Text MediaTypeObject
792 -- | Maps a header name to its definition.
802 -- | Maps a header name to its definition.
793− , _responseHeaders :: InsOrdHashMap HeaderName Header -- FIXME Referenced
803+ , _responseHeaders :: InsOrdHashMap HeaderName (Referenced Header)
795 -- TODO links
805 -- TODO links
796 } deriving (Eq, Show, Generic, Data, Typeable)
806 } deriving (Eq, Show, Generic, Data, Typeable)
@@ -1152,6 +1162,9 @@ instance ToJSON ExternalDocs where
1152instance ToJSON Xml where
1162instance ToJSON Xml where
1153 toJSON = genericToJSON (jsonPrefix "Xml")
1163 toJSON = genericToJSON (jsonPrefix "Xml")
1165+instance ToJSON Discriminator where
1166+ toJSON = genericToJSON (jsonPrefix "Discriminator")
1155-- =======================================================================
1168-- =======================================================================
1156-- Simple Generic-based FromJSON instances
1169-- Simple Generic-based FromJSON instances
1157-- =======================================================================
1170-- =======================================================================
@@ -1189,6 +1202,9 @@ instance FromJSON Tag where
1189instance FromJSON ExternalDocs where
1202instance FromJSON ExternalDocs where
1190 parseJSON = genericParseJSON (jsonPrefix "ExternalDocs")
1203 parseJSON = genericParseJSON (jsonPrefix "ExternalDocs")
1205+instance FromJSON Discriminator where
1206+ parseJSON = genericParseJSON (jsonPrefix "Discriminator")
1192-- =======================================================================
1208-- =======================================================================
1193-- Manual ToJSON instances
1209-- Manual ToJSON instances
1194-- =======================================================================
1210-- =======================================================================