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
HasSwagger * Raw Source | |
AllAccept [*] cs => HasSwagger * (Put cs ()) Source | |
(ToSchema a, AllAccept [*] cs, AllToResponseHeader [*] hs) => HasSwagger * (Put cs (Headers hs a)) Source | |
(ToSchema a, AllAccept [*] cs) => HasSwagger * (Put cs a) Source | |
AllAccept [*] cs => HasSwagger * (Post cs ()) Source | |
(ToSchema a, AllAccept [*] cs, AllToResponseHeader [*] hs) => HasSwagger * (Post cs (Headers hs a)) Source | |
(ToSchema a, AllAccept [*] cs) => HasSwagger * (Post cs a) Source | |
AllAccept [*] cs => HasSwagger * (Patch cs ()) Source | |
(ToSchema a, AllAccept [*] cs, AllToResponseHeader [*] hs) => HasSwagger * (Patch cs (Headers hs a)) Source | |
(ToSchema a, AllAccept [*] cs) => HasSwagger * (Patch cs a) Source | |
AllAccept [*] cs => HasSwagger * (Get cs ()) Source | |
(ToSchema a, AllAccept [*] cs, AllToResponseHeader [*] hs) => HasSwagger * (Get cs (Headers hs a)) Source | |
(ToSchema a, AllAccept [*] cs) => HasSwagger * (Get cs a) Source | |
AllAccept [*] cs => HasSwagger * (Delete cs ()) Source | |
(ToSchema a, AllAccept [*] cs, AllToResponseHeader [*] hs) => HasSwagger * (Delete cs (Headers hs a)) Source | |
(ToSchema a, AllAccept [*] cs) => HasSwagger * (Delete cs a) Source | |
(HasSwagger * a, HasSwagger * b) => HasSwagger * ((:<|>) a b) Source | |
(ToSchema a, AllAccept [*] cs, HasSwagger k sub) => HasSwagger * ((:>) * k (ReqBody * cs a) sub) Source | |
(KnownSymbol sym, ToParamSchema a, HasSwagger k sub) => HasSwagger * ((:>) * k (Header sym a) sub) Source | |
(KnownSymbol sym, HasSwagger k sub) => HasSwagger * ((:>) * k (QueryFlag sym) sub) Source | |
(KnownSymbol sym, ToParamSchema a, HasSwagger k sub) => HasSwagger * ((:>) * k (QueryParams * sym a) sub) Source | |
(KnownSymbol sym, ToParamSchema a, HasSwagger k sub) => HasSwagger * ((:>) * k (QueryParam * sym a) sub) Source | |
(KnownSymbol sym, ToParamSchema a, HasSwagger k sub) => HasSwagger * ((:>) * k (Capture * sym a) sub) Source | |
(KnownSymbol sym, HasSwagger k sub) => HasSwagger * ((:>) Symbol k sym sub) Source |
subOperations :: (IsSubAPI sub api, HasSwagger sub) => Proxy sub -> Proxy api -> Traversal' Swagger Operation Source
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 AllAccept cs where Source
Methods
allContentType :: Proxy cs -> [MediaType] 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 |