-- | -- Smith API definitions. -- -- Should be used as a qualified import from top-level module: -- -- > import qualified Smith.Client as Smith -- -- Example: -- > Smith.runRequest configuration Smith.userinfo -- {-# LANGUAGE OverloadedStrings #-} module Smith.Client.Api ( userinfo , issue , keys ) where import qualified Network.HTTP.Types as HTTP import Smith.Client.Data.Certificate import Smith.Client.Data.CertificateAuthority import Smith.Client.Data.CertificateRequest import Smith.Client.Data.Environment import Smith.Client.Data.User import qualified Smith.Client.Response as Response import Smith.Client.Request (Request (..)) import qualified Smith.Client.Request as Request import qualified Smith.Client.Serial.Decode as Decode import qualified Smith.Client.Serial.Encode as Encode -- | -- Obtain the identity information of the currently authenticated user or service. -- userinfo :: Request UserInfo userinfo = Request HTTP.GET "userinfo" (Response.json 200 Decode.userinfo) Request.none -- | -- Issue a certificate for the specified request details. -- issue :: CertificateRequest -> Request Certificate issue request = Request HTTP.POST "issue" (Response.json 200 Decode.certificate) (Request.json $ Encode.certificateRequest request) -- | -- Obtain all CA public keys for the specified environment. -- keys :: Environment -> Request [AuthorityPublicKey] keys environment = Request HTTP.GET (mconcat ["environment/public-keys/", getEnvironment environment]) (Response.json 200 Decode.authorityPublicKeys) Request.none