-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Servant swagger ui
--   
--   Provide embedded swagger UI for servant and swagger (i.e.
--   servant-swagger)
@package servant-swagger-ui
@version 0.3.0.3.13.2


-- | Provides <tt>SwaggerUI</tt> and corresponding
--   <a>swaggerSchemaUIServer</a> to embed <a>swagger ui</a> into the
--   application.
--   
--   All of the UI files are embedded into the binary.
--   
--   <i>An example:</i>
--   
--   <pre>
--   -- | Actual API.
--   type BasicAPI = Get '[PlainText, JSON] Text
--       :&lt;|&gt; "cat" :&gt; Capture ":name" CatName :&gt; Get '[JSON] Cat
--   
--   -- | API type with bells and whistles, i.e. schema file and swagger-ui.
--   type API = <a>SwaggerSchemaUI</a> "swagger-ui" "swagger.json"
--       :&lt;|&gt; BasicAPI
--   
--   -- | Servant server for an API
--   server :: Server API
--   server = <a>swaggerSchemaUIServer</a> swaggerDoc
--       :&lt;|&gt; (pure "Hello World" :&lt;|&gt; catEndpoint)
--     where
--       catEndpoint name = pure $ Cat name False
--   </pre>
module Servant.Swagger.UI

-- | Swagger schema + ui api.
--   
--   <tt>SwaggerSchemaUI "swagger-ui" "swagger.json"</tt> will result into
--   following hierarchy:
--   
--   <pre>
--   /swagger.json
--   /swagger-ui
--   /swagger-ui/index.html
--   /swagger-ui/...
--   </pre>
type SwaggerSchemaUI (dir :: Symbol) (schema :: Symbol) = SwaggerSchemaUI' dir schema :> Get JSON : ([] :: [*]) Swagger

-- | Use <a>SwaggerSchemaUI'</a> when you need even more control over where
--   <tt>swagger.json</tt> is served (e.g. subdirectory).
type SwaggerSchemaUI' (dir :: Symbol) api = api :<|> dir :> Get HTML : ([] :: [*]) SwaggerUiHtml dir api :<|> "index.html" :> Get HTML : ([] :: [*]) SwaggerUiHtml dir api :<|> Raw

-- | Serve Swagger UI on <tt>/dir</tt> using <tt>api</tt> as a Swagger spec
--   source.
--   
--   <pre>
--   swaggerSchemaUIServer :: Swagger -&gt; Server (SwaggerSchemaUI schema dir)
--   </pre>
swaggerSchemaUIServer :: (Server api ~ Handler Swagger) => Swagger -> Server (SwaggerSchemaUI' dir api)
swaggerUiIndexTemplate :: Text
swaggerUiFiles :: [(FilePath, ByteString)]
