| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Servant.Swagger.Internal
- class HasSwagger api where
- subOperations :: (IsSubAPI sub api, HasSwagger sub) => Proxy sub -> Proxy api -> Traversal' Swagger Operation
- mkEndpoint :: forall a cs hs proxy _verb. (ToSchema a, AllAccept cs, AllToResponseHeader hs) => FilePath -> Lens' PathItem (Maybe Operation) -> HttpStatusCode -> proxy (_verb cs (Headers hs a)) -> Swagger
- noContentEndpoint :: forall cs proxy verb. AllAccept cs => FilePath -> Lens' PathItem (Maybe Operation) -> proxy (verb cs ()) -> Swagger
- mkEndpointWithSchemaRef :: forall cs hs proxy verb a. (AllAccept cs, AllToResponseHeader hs) => Maybe (Referenced Schema) -> FilePath -> Lens' PathItem (Maybe Operation) -> HttpStatusCode -> proxy (verb cs (Headers hs a)) -> Swagger
- addParam :: Param -> Swagger -> Swagger
- addConsumes :: [MediaType] -> Swagger -> Swagger
- markdownCode :: Text -> Text
- addDefaultResponse404 :: ParamName -> Swagger -> Swagger
- addDefaultResponse400 :: ParamName -> Swagger -> Swagger
- class AllAccept cs where
- allContentType :: Proxy cs -> [MediaType]
- class ToResponseHeader h where
- toResponseHeader :: Proxy h -> (HeaderName, Header)
- class AllToResponseHeader hs where
- toAllResponseHeaders :: Proxy hs -> HashMap HeaderName Header
Documentation
class HasSwagger api where Source
Generate a Swagger specification for a servant API.
To generate Swagger specification, your data types need
and/or ToParamSchema instances.ToSchema
is used for ToParamSchema, Capture and QueryParam.
Header is used for ToSchema and response data types.ReqBody
You can easily derive those instances via Generic.
For more information, refer to swagger2 documentation.
Example:
newtype Username = Username String deriving (Generic, ToText)
instance ToParamSchema Username
data User = User
{ username :: Username
, fullname :: String
} deriving (Generic)
instance ToJSON User
instance ToSchema User
type MyAPI = QueryParam "username" Username :> Get '[JSON] User
mySwagger :: Swagger
mySwagger = toSwagger (Proxy :: Proxy MyAPI)
Instances
Arguments
| :: (IsSubAPI sub api, HasSwagger sub) | |
| => Proxy sub | Part of a servant API. |
| -> Proxy api | The whole servant API. |
| -> Traversal' Swagger Operation |
All operations of sub API.
This is similar to but ensures that operations
indeed belong to the API at compile time.operationsOf
mkEndpoint :: forall a cs hs proxy _verb. (ToSchema a, AllAccept cs, AllToResponseHeader hs) => FilePath -> Lens' PathItem (Maybe Operation) -> HttpStatusCode -> proxy (_verb cs (Headers hs a)) -> Swagger Source
noContentEndpoint :: forall cs proxy verb. AllAccept cs => FilePath -> Lens' PathItem (Maybe Operation) -> proxy (verb cs ()) -> Swagger Source
mkEndpointWithSchemaRef :: forall cs hs proxy verb a. (AllAccept cs, AllToResponseHeader hs) => Maybe (Referenced Schema) -> FilePath -> Lens' PathItem (Maybe Operation) -> HttpStatusCode -> proxy (verb cs (Headers hs a)) -> Swagger Source
addConsumes :: [MediaType] -> Swagger -> Swagger Source
Add accepted content types to every operation in the spec.
markdownCode :: Text -> Text Source
Format given text as inline code in Markdown.
addDefaultResponse404 :: ParamName -> Swagger -> Swagger Source
addDefaultResponse400 :: ParamName -> Swagger -> Swagger Source
class ToResponseHeader h where Source
Methods
toResponseHeader :: Proxy h -> (HeaderName, Header) Source
Instances
| (KnownSymbol sym, ToParamSchema a) => ToResponseHeader * (Header sym a) Source |
class AllToResponseHeader hs where Source
Methods
toAllResponseHeaders :: Proxy hs -> HashMap HeaderName Header Source
Instances
| AllToResponseHeader [*] hs => AllToResponseHeader * (HList hs) Source | |
| AllToResponseHeader [k] ([] k) Source | |
| (ToResponseHeader k h, AllToResponseHeader [k] hs) => AllToResponseHeader [k] ((:) k h hs) Source |