@@ -579,25 +579,6 @@ data SwaggerSecuritySchemeType
579579 | SwaggerSecuritySchemeOAuth2 SwaggerOAuth2Params
580580 deriving (Eq, Show)
581581
582−data SwaggerSecuritySchemeTypeName
583− = SwaggerSecuritySchemeTypeBasic
584− | SwaggerSecuritySchemeTypeApiKey
585− | SwaggerSecuritySchemeTypeOAuth2
586− deriving (Eq, Read, Show, Generic)
587−
588−swaggerSecuritySchemeTypeNameToText :: SwaggerSecuritySchemeTypeName -> Text
589−swaggerSecuritySchemeTypeNameToText SwaggerSecuritySchemeTypeBasic = "basic"
590−swaggerSecuritySchemeTypeNameToText SwaggerSecuritySchemeTypeApiKey = "apiKey"
591−swaggerSecuritySchemeTypeNameToText SwaggerSecuritySchemeTypeOAuth2 = "oauth2"
592−
593−swaggerSecuritySchemeTypeNameFromText :: Alternative f => Text -> f SwaggerSecuritySchemeTypeName
594−swaggerSecuritySchemeTypeNameFromText "basic" = pure SwaggerSecuritySchemeTypeBasic
595−swaggerSecuritySchemeTypeNameFromText "apiKey" = pure SwaggerSecuritySchemeTypeApiKey
596−swaggerSecuritySchemeTypeNameFromText "oauth2" = pure SwaggerSecuritySchemeTypeOAuth2
597−swaggerSecuritySchemeTypeNameFromText _ = empty
598−
599−instance Hashable SwaggerSecuritySchemeTypeName
600−
601582data SwaggerSecurityScheme = SwaggerSecurityScheme
602583 { -- | The type of the security scheme.
603584 swaggerSecuritySchemeType :: SwaggerSecuritySchemeType
@@ -610,8 +591,8 @@ data SwaggerSecurityScheme = SwaggerSecurityScheme
610591-- The object can have multiple security schemes declared in it which are all required
611592-- (that is, there is a logical AND between the schemes).
612593newtype SwaggerSecurityRequirement = SwaggerSecurityRequirement
613− { getSwaggerSecurityRequirement :: HashMap SwaggerSecuritySchemeTypeName Text
614− } deriving (Eq, Read, Show, Monoid)
594+ { getSwaggerSecurityRequirement :: HashMap Text [Text]
595+ } deriving (Eq, Read, Show, Monoid, ToJSON, FromJSON)
615596
616597-- | Allows adding meta data to a single tag that is used by @SwaggerOperation@.
617598-- It is not mandatory to have a @SwaggerTag@ per tag used there.
@@ -654,7 +635,6 @@ deriveJSON (jsonPrefix "SwaggerSchema") ''SwaggerSchemaType
654635deriveJSON (jsonPrefix "SwaggerItems") ''SwaggerItemsType
655636deriveJSON (jsonPrefix "SwaggerItemsCollection") ''SwaggerItemsCollectionFormat
656637deriveJSON (jsonPrefix "SwaggerCollection") ''SwaggerCollectionFormat
657−deriveJSON (jsonPrefix "SwaggerSecuritySchemeType") ''SwaggerSecuritySchemeTypeName
658638deriveJSON (jsonPrefix "SwaggerApiKey") ''SwaggerApiKeyLocation
659639deriveJSON (jsonPrefix "swaggerApiKey") ''SwaggerApiKeyParams
660640deriveJSON' ''SwaggerResponse
@@ -688,13 +668,13 @@ instance ToJSON SwaggerOAuth2Params where
688668
689669instance ToJSON SwaggerSecuritySchemeType where
690670 toJSON SwaggerSecuritySchemeBasic
691− = object [ "type" .= SwaggerSecuritySchemeTypeBasic ]
671+ = object [ "type" .= ("basic" :: Text) ]
692672 toJSON (SwaggerSecuritySchemeApiKey params)
693673 = toJSON params
694− <+> object [ "type" .= SwaggerSecuritySchemeTypeApiKey ]
674+ <+> object [ "type" .= ("apiKey" :: Text) ]
695675 toJSON (SwaggerSecuritySchemeOAuth2 params)
696676 = toJSON params
697− <+> object [ "type" .= SwaggerSecuritySchemeTypeOAuth2 ]
677+ <+> object [ "type" .= ("oauth2" :: Text) ]
698678
699679instance ToJSON Swagger where
700680 toJSON = addVersion . genericToJSON (jsonPrefix "swagger")
@@ -748,9 +728,6 @@ instance ToJSON SwaggerResponses where
748728instance ToJSON SwaggerExample where
749729 toJSON = toJSON . Map.mapKeys show . getSwaggerExample
750730
751−instance ToJSON SwaggerSecurityRequirement where
752− toJSON (SwaggerSecurityRequirement m) = toJSON (hashMapMapKeys swaggerSecuritySchemeTypeNameToText m)
753−
754731-- =======================================================================
755732-- Manual FromJSON instances
756733-- =======================================================================
@@ -773,11 +750,12 @@ instance FromJSON SwaggerOAuth2Params where
773750
774751instance FromJSON SwaggerSecuritySchemeType where
775752 parseJSON json@(Object o) = do
776− t <- o .: "type"
753+ (t :: Text) <- o .: "type"
777754 case t of
778− SwaggerSecuritySchemeTypeBasic -> pure SwaggerSecuritySchemeBasic
779− SwaggerSecuritySchemeTypeApiKey -> SwaggerSecuritySchemeApiKey <$> parseJSON json
780− SwaggerSecuritySchemeTypeOAuth2 -> SwaggerSecuritySchemeOAuth2 <$> parseJSON json
755+ "basic" -> pure SwaggerSecuritySchemeBasic
756+ "apiKey" -> SwaggerSecuritySchemeApiKey <$> parseJSON json
757+ "oauth2" -> SwaggerSecuritySchemeOAuth2 <$> parseJSON json
758+ _ -> empty
781759 parseJSON _ = empty
782760
783761instance FromJSON Swagger where
@@ -845,8 +823,3 @@ instance FromJSON SwaggerExample where
845823 m <- parseJSON json
846824 pure $ SwaggerExample (Map.mapKeys fromString m)
847825
848−instance FromJSON SwaggerSecurityRequirement where
849− parseJSON json = do
850− m <- parseJSON json
851− SwaggerSecurityRequirement <$> hashMapTraverseKeys swaggerSecuritySchemeTypeNameFromText m
852−