@@ -1,8 +1,11 @@
1+{-# LANGUAGE DeriveGeneric #-}
12module Data.Swagger.Internal where
23
34import qualified Data.Aeson as JSON
45import Data.HashMap.Strict (HashMap)
56import Data.Text (Text)
7+import Data.Hashable (Hashable)
8+import GHC.Generics (Generic)
69import Network (HostName, PortNumber)
710import Network.HTTP.Media (MediaType)
811import Network.URL (URL)
@@ -574,6 +577,14 @@ data SwaggerSecuritySchemeType
574577 | SwaggerSecuritySchemeOAuth2 SwaggerOAuth2Params
575578 deriving (Show)
576579
580+data SwaggerSecuritySchemeTypeName
581+ = SwaggerSecuritySchemeTypeBasic
582+ | SwaggerSecuritySchemeTypeApiKey
583+ | SwaggerSecuritySchemeTypeOAuth2
584+ deriving (Show, Generic)
585+
586+instance Hashable SwaggerSecuritySchemeTypeName
587+
577588data SwaggerSecurityScheme = SwaggerSecurityScheme
578589 { -- | The type of the security scheme.
579590 swaggerSecuritySchemeType :: SwaggerSecuritySchemeType
@@ -582,8 +593,10 @@ data SwaggerSecurityScheme = SwaggerSecurityScheme
582593 , swaggerSecuritySchemeDescription :: Maybe Text
583594 } deriving (Show)
584595
585−data SwaggerSecurityRequirement = SwaggerSecurityRequirement
586− deriving (Show)
596+-- | Lists the required security schemes to execute this operation.
597+-- The object can have multiple security schemes declared in it which are all required
598+-- (that is, there is a logical AND between the schemes).
599+type SwaggerSecurityRequirement = HashMap SwaggerSecuritySchemeTypeName Text
587600
588601-- | Allows adding meta data to a single tag that is used by @SwaggerOperation@.
589602-- It is not mandatory to have a @SwaggerTag@ per tag used there.