hercules-ci-api-0.7.0.0: src/Hercules/API/Accounts.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-missing-signatures #-}
module Hercules.API.Accounts where
import Hercules.API.Accounts.Account (Account)
import Hercules.API.Accounts.AccountInstallationStatus (AccountInstallationStatus)
import Hercules.API.Accounts.AccountSettings (AccountSettings)
import Hercules.API.Accounts.AccountSettingsPatch (AccountSettingsPatch)
import Hercules.API.Accounts.CLIAuthorizationRequest (CLIAuthorizationRequest)
import Hercules.API.Accounts.CLIAuthorizationRequestCreate (CLIAuthorizationRequestCreate)
import Hercules.API.Accounts.CLIAuthorizationRequestCreateResponse (CLIAuthorizationRequestCreateResponse)
import Hercules.API.Accounts.CLIAuthorizationRequestStatus (CLIAuthorizationRequestStatus)
import Hercules.API.Accounts.CLITokensResponse (CLITokensResponse)
import Hercules.API.Prelude hiding (id)
import Hercules.API.SourceHostingSite.SourceHostingSite
( SourceHostingSite,
)
import Servant.API
import Servant.API.Generic
import Servant.Auth ()
data AccountResourceGroup auth f = AccountResourceGroup
{ get ::
f :- Summary ("Get the account.")
:> auth
:> Get '[JSON] Account,
getSettings ::
f :- Summary ("Get the account settings.")
:> "settings"
:> auth
:> Get '[JSON] AccountSettings,
patchSettings ::
f :- Summary ("Update the account settings.")
:> "settings"
:> ReqBody '[JSON] AccountSettingsPatch
:> auth
:> Patch '[JSON] AccountSettings,
postDisableAllProjects ::
f :- Summary ("Disable all projects in the account.")
:> "disable-all-projects"
:> auth
:> Post '[JSON] Int
}
deriving (Generic)
accountById' id client = client `enterApiE` \api -> accountById api id
accountByAuth' client = client `enterApiE` accountByAuth
data AccountsAPI auth f = AccountsAPI
{ accountByAuth ::
f
:- Substitute ("accounts" :> "me" :> Placeholder) (ToServantApi (AccountResourceGroup auth)),
accountById ::
f
:- Substitute
("accounts" :> Capture "accountId" (Id Account) :> Placeholder)
(ToServantApi (AccountResourceGroup auth)),
accountByName ::
f
:- Substitute
( "site"
:> Capture "site" (Name SourceHostingSite)
:> "account"
:> Capture "account" (Name Account)
:> Placeholder
)
(ToServantApi (AccountResourceGroup auth)),
findAccounts ::
f :- Summary "Accounts that the authenticated user owns, admins or collaborates with."
:> "accounts"
:> QueryParam "site" (Name SourceHostingSite)
:> QueryParam "name" (Name Account)
:> auth
:> Get '[JSON] [Account],
postCLIAuthorizationRequest ::
f :- Summary "Create a request to authorize the CLI."
:> "auth"
:> "cli"
:> "authorization"
:> "request"
:> ReqBody '[JSON] CLIAuthorizationRequestCreate
:> Post '[JSON] CLIAuthorizationRequestCreateResponse,
getCLIAuthorizationRequestStatus ::
f :- Summary "Check the request status"
:> "auth"
:> "cli"
:> "authorization"
:> "request"
:> "status"
:> Capture "temporaryToken" Text
:> Get '[JSON] CLIAuthorizationRequestStatus,
getCLIAuthorizationRequest ::
f :- Summary "Retrieve the request"
:> "auth"
:> "cli"
:> "authorization"
:> "request"
:> Capture "browserToken" Text
:> auth
:> Get '[JSON] CLIAuthorizationRequest,
confirmCLIAuthorizationRequest ::
f :- Summary "Retrieve the request"
:> "auth"
:> "cli"
:> "authorization"
:> "request"
:> Capture "browserToken" Text
:> "confirm"
:> auth
:> Post '[JSON] NoContent,
getCLITokens ::
f :- Summary "List the CLI tokens associated with the current account."
:> "auth"
:> "cli"
:> "tokens"
:> auth
:> Get '[JSON] CLITokensResponse,
revokeCLIToken ::
f :- Summary "Permanently disallow the use of a CLI token."
:> "auth"
:> "cli"
:> "tokens"
:> Capture "cliTokenId" (Id "CLIToken")
:> "revoke"
:> auth
:> Post '[JSON] NoContent,
installationStatus ::
f :- Summary "Retrieve installation status after redirect from external source site settings."
:> "sites"
:> Capture "siteId" (Id SourceHostingSite)
:> "installation"
:> Capture "installationId" Int
:> "status"
:> auth
:> Get '[JSON] AccountInstallationStatus
}
deriving (Generic)