Skip to content
Snippets Groups Projects

Draft: Servant Api Specification

Open Emily Pillmore requested to merge emily/modular-servant-api into master
Files
3
@@ -6,6 +6,7 @@ module Distribution.Skete.Haskell.API.Features.Users
( -- * User API
UsersApi(..)
, usersApi
, usersApiHandlers
-- ** User endpoints
, GetUsersApi
, getUsersApi
@@ -55,6 +56,7 @@ import GHC.Generics
import Servant
import Servant.API.Generic
import Servant.HTML.Blaze
import Servant.Server.Generic
-- -------------------------------------------------------------------------- --
-- Users API definition
@@ -93,6 +95,29 @@ data UsersApi route
usersApi :: Proxy (ToServantApi UsersApi)
usersApi = genericApi (Proxy :: Proxy UsersApi)
-- | Users Api Handlers.
--
-- TODO: Stubbed in Distribution.Skete.Haskell.API.Features.Users.Server
--
usersApiHandlers :: UsersApi AsServer
usersApiHandlers = UsersApi
{ getUsers = error "TODO: handler not yet written"
, postUsers = error "TODO: handler not yet written"
, getUserId = error "TODO: handler not yet written"
, putUserId = error "TODO: handler not yet written"
, deleteUserId = error "TODO: handler not yet written"
, getUserPassword = error "TODO: handler not yet written"
, putUserPassword = error "TODO: handler not yet written"
, getUserEnabled = error "TODO: handler not yet written"
, putUserEnabled = error "TODO: handler not yet written"
, getUserManagement = error "TODO: handler not yet written"
, getUserAccountManagement = error "TODO: handler not yet written"
, getUserAdmins = error "TODO: handler not yet written"
, postUserAdmins = error "TODO: handler not yet written"
, putUserAdmins = error "TODO: handler not yet written"
, deleteUserAdmins = error "TODO: handler not yet written"
}
-- -------------------------------------------------------------------- --
-- GET /users
@@ -170,7 +195,7 @@ putUserIdApi = Proxy
-- -------------------------------------------------------------------- --
-- DELETE /users/:username
-- ^ Equivalent to "DELETE /users/:username": accepts a DELETE request
-- | Equivalent to "DELETE /users/:username": accepts a DELETE request
-- to delete a particular hackage user.
--
type DeleteUserIdApi
@@ -190,7 +215,7 @@ deleteUserIdApi = Proxy
-- -------------------------------------------------------------------- --
-- GET /users/:username/password
-- ^ Equivalent to "GET /users/:username/password": accepts a GET request
-- | Equivalent to "GET /users/:username/password": accepts a GET request
-- to show the password change form as HTML. Note: TODO.
--
type GetUserPasswordApi
@@ -229,7 +254,7 @@ putUserPasswordApi = Proxy
-- -------------------------------------------------------------------- --
-- GET /users/:username/enabled
-- ^ Equivalent to "GET /users/:username/enabled": accepts a GET request
-- | Equivalent to "GET /users/:username/enabled": accepts a GET request
-- to check if a particular Hackage user is enabled as JSON.
--
type GetUserEnabledApi
@@ -248,7 +273,7 @@ getUserEnabledApi = Proxy
-- -------------------------------------------------------------------- --
-- PUT /users/:username/enabled
-- ^ Equivalant to "POST /users/:username/enabled": accepts a POST request
-- | Equivalant to "POST /users/:username/enabled": accepts a POST request
-- to enable a particular Hackage user as JSON.
--
type PutUserEnabledApi
@@ -268,7 +293,7 @@ putUserEnabledApi = Proxy
-- -------------------------------------------------------------------- --
-- GET /users/:username/manage
-- ^ Equivalant to "GET /users/:username/manage": accepts a GET request
-- | Equivalant to "GET /users/:username/manage": accepts a GET request
-- to return the user management page for Hackage user as HTML. Note: TODO
--
type GetUserManagementApi
@@ -287,7 +312,7 @@ getUserManagementApi = Proxy
-- -------------------------------------------------------------------- --
-- GET /users/:username/account-management
-- ^ Equivalent to "GET /users/:username/account-management": accepts a GET
-- | Equivalent to "GET /users/:username/account-management": accepts a GET
-- request for a Hackage user's personal account management page as HTML.
-- Note: TODO
--
@@ -307,7 +332,7 @@ getUserAccountManagementApi = Proxy
-- -------------------------------------------------------------------- --
-- GET /users/admins
-- ^ Equivalent to "GET /users/admins": Accepts a GET request for
-- | Equivalent to "GET /users/admins": Accepts a GET request for
-- the list of Hackage administrators as JSON or HTML.
--
type GetUserAdminsApi
@@ -325,7 +350,7 @@ getUserAdminsApi = Proxy
-- -------------------------------------------------------------------- --
-- POST /users/admins
-- ^ Equivalent to "POST /users/admins": Accepts a POST request to
-- | Equivalent to "POST /users/admins": Accepts a POST request to
-- add a user to the list of Hackage admins as HTML. Note: TODO
--
type PostUserAdminsApi
@@ -345,7 +370,7 @@ postUserAdminsApi = Proxy
-- -------------------------------------------------------------------- --
-- PUT /users/admins
-- ^ Equivalent to "PUT /users/admins/user/:username": Accepts a PUT
-- | Equivalent to "PUT /users/admins/user/:username": Accepts a PUT
-- request to add a user to the list of Hackage admins as HTML.
-- Note: TODO
--
@@ -367,7 +392,7 @@ putUserAdminsApi = Proxy
-- -------------------------------------------------------------------- --
-- DELETE /users/admins
-- ^ Equivalent to "DELETE /users/admins/user/:username": Accepts a DELETE
-- | Equivalent to "DELETE /users/admins/user/:username": Accepts a DELETE
-- request to remove a user to the list of Hackage admins.
-- Note: TODO
--
Loading