-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | The CircleCI REST API for Haskell -- -- The CircleCI REST API implementation in Haskell. For more info please -- see official API reference. -- -- Built with Servant. -- -- Please note that implementation is incomplete yet. @package circlehs @version 0.0.3 -- | Common types for work with CircleCI API. module Network.CircleCI.Common.Types -- | CircleCI account API token. List of account API tokens can be found at -- https://circleci.com/account/api. newtype AccountAPIToken AccountAPIToken :: Token -> AccountAPIToken -- | API token as text, for Servant. type Token = Text -- | GitHub user name. type UserName = Text -- | GitHub project name. type ProjectName = Text -- | GitHub branch name. type BranchName = Text -- | Number of project's build on CircleCI. newtype BuildNumber BuildNumber :: Int -> BuildNumber -- | User email address. type Email = Text -- | Monad for response from CircleCI. type CircleCIResponse a = ReaderT AccountAPIToken IO (Either ServantError a) -- | GitHub project identifier, composed from user name and project name. data ProjectPoint ProjectPoint :: UserName -> ProjectName -> ProjectPoint -- | GitHub user name. [userName] :: ProjectPoint -> UserName -- | GitHub project name. [projectName] :: ProjectPoint -> ProjectName -- | Message about some problem. type ErrorMessage = Text instance GHC.Show.Show Network.CircleCI.Common.Types.BuildNumber instance GHC.Classes.Eq Network.CircleCI.Common.Types.BuildNumber -- | Run CircleCIResponse monad. module Network.CircleCI.Common.Run -- | All API calls require account API token, so move it into -- ReaderT monad instead of passing it as an explicit argument. runCircleCI :: ReaderT t IO a -> t -> IO a -- | API call for work with project build's cache. module Network.CircleCI.Cache -- | Clears build cache. Based on -- https://circleci.com/docs/api/#clear-cache. -- -- Usage example: -- --
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (clearCache $ ProjectPoint "denisshevchenko" "circlehs")
-- (AccountAPIToken "e64c674195bbc0dbe3f9676c6ba2whatever")
-- >>= \case
-- Left problem -> print problem
-- Right isCleared -> print isCleared
--
clearCache :: ProjectPoint -> CircleCIResponse CacheCleared
-- | Cache clearing status.
data CacheCleared
CacheSuccessfullyCleared :: CacheCleared
UnableToClearCache :: ErrorMessage -> CacheCleared
instance GHC.Show.Show Network.CircleCI.Cache.CacheCleared
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.Cache.CacheCleared
-- | API calls for work with Environment Variables used in project build.
--
-- For more info please see "Environment variables" section in your
-- CircleCI project's Settings.
module Network.CircleCI.Environment
-- | Shows list of environment variables for the single project. Based on
-- https://circleci.com/docs/api/#list-environment-variables.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (getEnvVars $ ProjectPoint "denisshevchenko" "circlehs")
-- (AccountAPIToken "e64c674195b87d76e988e9fbcba2whatever")
-- >>= \case
-- Left problem -> print problem
-- Right envVars -> print envVars
--
getEnvVars :: ProjectPoint -> CircleCIResponse [EnvVar]
-- | Shows single environment variable. Based on
-- https://circleci.com/docs/api/#get-environment-variable.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (getEnvVar project "GCC") token
-- >>= \case
-- Left problem -> print problem
-- Right envVar -> print envVar
-- where
-- project = ProjectPoint "denisshevchenko" "circlehs"
-- token = AccountAPIToken "e64c674195b87d76e988e9fbcba2whatever"
--
getEnvVar :: ProjectPoint -> EnvVarName -> CircleCIResponse EnvVar
-- | Adds environment variable. Based on
-- https://circleci.com/docs/api/#add-environment-variable.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (addEnvVar project envVar) token
-- >>= \case
-- Left problem -> print problem
-- Right newEnvVar -> print newEnvVar
-- where
-- project = ProjectPoint "denisshevchenko" "circlehs"
-- envVar = EnvVar "GCC" "/usr/local/bin/gcc-4.8"
-- token = AccountAPIToken "e64c674195b87d76e988e9fbcba2whatever"
--
addEnvVar :: ProjectPoint -> EnvVar -> CircleCIResponse EnvVar
-- | Deletes single environment variable. Based on
-- https://circleci.com/docs/api/#delete-environment-variable.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (deleteEnvVar project "GCC") token
-- >>= \case
-- Left problem -> print problem
-- Right isDeleted -> print isDeleted
-- where
-- project = ProjectPoint "denisshevchenko" "circlehs"
-- token = AccountAPIToken "e64c674195b87d76e988e9fbcba2whatever"
--
deleteEnvVar :: ProjectPoint -> EnvVarName -> CircleCIResponse EnvVarDeleted
-- | Environment variable, name/value.
data EnvVar
EnvVar :: Text -> Text -> EnvVar
[name] :: EnvVar -> Text
[value] :: EnvVar -> Text
-- | Environment variable deleting status.
data EnvVarDeleted
EnvVarSuccessfullyDeleted :: EnvVarDeleted
UnableToDeleteEnvVar :: ErrorMessage -> EnvVarDeleted
-- | Name of environment variable.
type EnvVarName = Text
instance GHC.Show.Show Network.CircleCI.Environment.EnvVarDeleted
instance GHC.Show.Show Network.CircleCI.Environment.EnvVar
instance GHC.Classes.Eq Network.CircleCI.Environment.EnvVar
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.Environment.EnvVar
instance Data.Aeson.Types.Class.ToJSON Network.CircleCI.Environment.EnvVar
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.Environment.EnvVarDeleted
-- | API calls for work with Checkout Keys. CircleCI uses Checkout Keys to
-- check out your GitHub project, submodules, and private dependencies.
--
-- For more info please see "Checkout SSH keys" section in your CircleCI
-- project's Settings.
module Network.CircleCI.CheckoutKey
-- | Shows list of checkout keys. Based on
-- https://circleci.com/docs/api/#list-checkout-keys.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (getCheckoutKeys $ ProjectPoint "denisshevchenko" "circlehs")
-- (AccountAPIToken "e64c674195bbc0d0be3ef9679b6c6ba2whatever")
-- >>= \case
-- Left problem -> print problem
-- Right keys -> print keys
--
getCheckoutKeys :: ProjectPoint -> CircleCIResponse [CheckoutKeyInfo]
-- | Shows single checkout key. Based on
-- https://circleci.com/docs/api/#get-checkout-key.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (getCheckoutKey project fingerprint) apiToken
-- >>= \case
-- Left problem -> print problem
-- Right key -> print key
-- where
-- project = ProjectPoint "denisshevchenko" "circlehs"
-- fingerprint = Fingerprint "79:23:05:6a:6d:4c:3c:5c:0e:64:79:49:f0:e9:8d:a0"
-- apiToken = AccountAPIToken "e64c674195bbc0d0be3ef9679b6c6ba2whatever"
--
getCheckoutKey :: ProjectPoint -> Fingerprint -> CircleCIResponse CheckoutKeyInfo
-- | Creates checkout key. Based on
-- https://circleci.com/docs/api/#new-checkout-key.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (createCheckoutKey $ ProjectPoint "denisshevchenko" "circlehs")
-- (AccountAPIToken "e64c674195bbc0d0be3ef9679b6c6ba2whatever")
-- >>= \case
-- Left problem -> print problem
-- Right newKey -> print newKey
--
createCheckoutKey :: ProjectPoint -> CircleCIResponse CheckoutKeyInfo
-- | Deletes single checkout key. Based on
-- https://circleci.com/docs/api/#delete-checkout-key.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI (deleteCheckoutKey project fingerprint) apiToken
-- >>= \case
-- Left problem -> print problem
-- Right isDeleted -> print isDeleted
-- where
-- project = ProjectPoint "denisshevchenko" "circlehs"
-- fingerprint = Fingerprint "79:23:05:6a:6d:4c:3c:5c:0e:64:79:49:f0:e9:8d:a0"
-- apiToken = AccountAPIToken "e64c674195bbc0d0be3ef9679b6c6ba2whatever"
--
deleteCheckoutKey :: ProjectPoint -> Fingerprint -> CircleCIResponse CheckoutKeyDeleted
-- | Checkout key fingerprint. For example,
-- "79:23:05:6a:6d:4c:3c:5c:0e:64:79:49:f0:e9:8d:a0".
newtype Fingerprint
Fingerprint :: Text -> Fingerprint
-- | Info about checkout key.
data CheckoutKeyInfo
CheckoutKeyInfo :: Text -> CheckoutKeyType -> Fingerprint -> Bool -> UTCTime -> CheckoutKeyInfo
-- | Public SSH key.
[publicKey] :: CheckoutKeyInfo -> Text
-- | Key type.
[keyType] :: CheckoutKeyInfo -> CheckoutKeyType
-- | Key fingerprint.
[fingerprint] :: CheckoutKeyInfo -> Fingerprint
-- | Preferred key or not.
[preferred] :: CheckoutKeyInfo -> Bool
-- | Date when this key was issued.
[issueDate] :: CheckoutKeyInfo -> UTCTime
-- | Type of checkout key.
data CheckoutKeyType
-- | Repo-specific SSH key.
GitHubDeployKey :: CheckoutKeyType
-- | User-specific SSH key.
GitHubUserKey :: CheckoutKeyType
-- | Checkout key deleting status.
data CheckoutKeyDeleted
KeySuccessfullyDeleted :: CheckoutKeyDeleted
UnableToDeleteKey :: ErrorMessage -> CheckoutKeyDeleted
instance GHC.Show.Show Network.CircleCI.CheckoutKey.CheckoutKeyDeleted
instance GHC.Show.Show Network.CircleCI.CheckoutKey.CheckoutKeyInfo
instance GHC.Classes.Eq Network.CircleCI.CheckoutKey.CheckoutKeyInfo
instance GHC.Show.Show Network.CircleCI.CheckoutKey.CheckoutKeyType
instance GHC.Classes.Eq Network.CircleCI.CheckoutKey.CheckoutKeyType
instance GHC.Show.Show Network.CircleCI.CheckoutKey.Fingerprint
instance GHC.Classes.Eq Network.CircleCI.CheckoutKey.Fingerprint
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.CheckoutKey.CheckoutKeyInfo
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.CheckoutKey.CheckoutKeyDeleted
-- | API calls for work with info about projects.
module Network.CircleCI.Project
-- | Show info about all projects user is following. Based on
-- https://circleci.com/docs/api/#projects.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI getProjectsInfo
-- (AccountAPIToken "e64c674195bbc0d0be3efa2whatever")
-- >>= \case
-- Left problem -> print problem
-- Right info -> print info
--
getProjectsInfo :: CircleCIResponse [ProjectInfo]
-- | Info about single project.
data ProjectInfo
ProjectInfo :: Text -> Text -> Text -> [BranchBuildInfo] -> Text -> Bool -> Bool -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> ProjectInfo
-- | Programming language using in project.
[language] :: ProjectInfo -> Text
[repositoryName] :: ProjectInfo -> Text
-- | Repository URL.
[repositoryUrl] :: ProjectInfo -> Text
-- | Info about recent builds in branches.
[branches] :: ProjectInfo -> [BranchBuildInfo]
-- | Name of default branch.
[defaultBranch] :: ProjectInfo -> Text
-- | If True - project is open.
[isOpenSource] :: ProjectInfo -> Bool
-- | If True - project is followed by some user.
[followed] :: ProjectInfo -> Bool
-- | GitHub user name. Slack
[gitHubUserName] :: ProjectInfo -> Text
-- | Slack channel name.
[slackChannel] :: ProjectInfo -> Maybe Text
-- | Slack webhook URL.
[slackWebhookUrl] :: ProjectInfo -> Maybe Text
-- | Slack notify preferences.
[slackNotifyPreferenses] :: ProjectInfo -> Maybe Text
-- | Slack subdomain.
[slackSubdomain] :: ProjectInfo -> Maybe Text
-- | Slack API token. HipChat
[slackAPIToken] :: ProjectInfo -> Maybe Text
-- | HipChat notify preferences.
[hipchatNotifyPreferenses] :: ProjectInfo -> Maybe Text
-- | HipChat notify.
[hipchatNotify] :: ProjectInfo -> Maybe Text
-- | HipChat API token.
[hipchatAPIToken] :: ProjectInfo -> Maybe Text
-- | HipChat room name. IRC
[hipchatRoom] :: ProjectInfo -> Maybe Text
-- | IRC server.
[ircServer] :: ProjectInfo -> Maybe Text
-- | IRC keyword.
[ircKeyword] :: ProjectInfo -> Maybe Text
-- | IRC channel name.
[ircChannel] :: ProjectInfo -> Maybe Text
-- | IRC user name.
[ircUsername] :: ProjectInfo -> Maybe Text
-- | IRC password.
[ircPassword] :: ProjectInfo -> Maybe Text
-- | IRC notify preferences.
[ircNotifyPreferenses] :: ProjectInfo -> Maybe Text
-- | Build info for a single branch.
data BranchBuildInfo
BranchBuildInfo :: Text -> Maybe BuildInfo -> Maybe BuildInfo -> [Text] -> Maybe [BuildInfo] -> Maybe [BuildInfo] -> BranchBuildInfo
[branchName] :: BranchBuildInfo -> Text
[lastSuccessBuild] :: BranchBuildInfo -> Maybe BuildInfo
[lastFailedBuild] :: BranchBuildInfo -> Maybe BuildInfo
[pusherLogins] :: BranchBuildInfo -> [Text]
[recentBuilds] :: BranchBuildInfo -> Maybe [BuildInfo]
[runningBuilds] :: BranchBuildInfo -> Maybe [BuildInfo]
-- | Info about single build.
data BuildInfo
BuildInfo :: BuildStatus -> Int -> Text -> UTCTime -> UTCTime -> BuildInfo
[status] :: BuildInfo -> BuildStatus
[number] :: BuildInfo -> Int
[commit] :: BuildInfo -> Text
[pushDate] :: BuildInfo -> UTCTime
[addingDate] :: BuildInfo -> UTCTime
-- | Build status.
data BuildStatus
BuildRunning :: BuildStatus
BuildSuccess :: BuildStatus
BuildFailed :: BuildStatus
BuildCanceled :: BuildStatus
NoTests :: BuildStatus
instance GHC.Show.Show Network.CircleCI.Project.RawBranchBuildInfo
instance GHC.Classes.Eq Network.CircleCI.Project.RawBranchBuildInfo
instance GHC.Show.Show Network.CircleCI.Project.ProjectInfo
instance GHC.Show.Show Network.CircleCI.Project.BranchBuildInfo
instance GHC.Classes.Eq Network.CircleCI.Project.BranchBuildInfo
instance GHC.Show.Show Network.CircleCI.Project.BuildInfo
instance GHC.Classes.Eq Network.CircleCI.Project.BuildInfo
instance GHC.Show.Show Network.CircleCI.Project.BuildStatus
instance GHC.Classes.Eq Network.CircleCI.Project.BuildStatus
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.Project.ProjectInfo
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.Project.RawBranchBuildInfo
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.Project.BuildInfo
-- | API calls for work with User info.
module Network.CircleCI.User
-- | Show info about user. Based on
-- https://circleci.com/docs/api/#user.
--
-- Usage example:
--
--
-- {-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE LambdaCase #-}
--
-- import Network.CircleCI
--
-- main :: IO ()
-- main = runCircleCI getUserInfo
-- (AccountAPIToken "e64c674195bbc0d0be3efa2whatever")
-- >>= \case
-- Left problem -> print problem
-- Right info -> print info
--
getUserInfo :: CircleCIResponse UserInfo
-- | Info about user.
data UserInfo
UserInfo :: Bool -> Text -> [Text] -> Text -> EmailNotification -> Text -> Integer -> Text -> [GitHubOAuth] -> UTCTime -> UTCTime -> Plan -> Int -> Int -> [ProjectShortInfo] -> AnalyticsId -> Text -> Maybe Text -> UserInfo
-- | Does user in the CircleCI Beta Program?
[inBetaProgram] :: UserInfo -> Bool
-- | User's full name.
[fullName] :: UserInfo -> Text
-- | All email addresses in user's account.
[allEmails] :: UserInfo -> [Text]
-- | Default email for notifications.
[defaultEmail] :: UserInfo -> Text
-- | User email notifications.
[basicEmailPreference] :: UserInfo -> EmailNotification
-- | GitHub avatar URL.
[gitHubAvatarUrl] :: UserInfo -> Text
-- | GitHub ID.
[gitHubId] :: UserInfo -> Integer
-- | User's GitHub login.
[gitHubLogin] :: UserInfo -> Text
-- | GitHub OAuth scopes.
[gitHubOAuthScopes] :: UserInfo -> [GitHubOAuth]
-- | Date when CircleCI-account was created.
[accountCreatedAt] :: UserInfo -> UTCTime
-- | Trial period end date.
[trialEndDate] :: UserInfo -> UTCTime
-- | User's plan pricing.
[plan] :: UserInfo -> Plan
-- | Parallelism for tests.
[parallelism] :: UserInfo -> Int
-- | Number of user's build containers.
[containtersNumber] :: UserInfo -> Int
-- | User's projects, short info.
[projects] :: UserInfo -> [ProjectShortInfo]
-- | Analytics ID.
[analyticsId] :: UserInfo -> AnalyticsId
-- | Pusher ID.
[pusherId] :: UserInfo -> Text
-- | Heroku API key.
[herokuAPIKey] :: UserInfo -> Maybe Text
-- | Short info about the project.
data ProjectShortInfo
ProjectShortInfo :: Text -> Bool -> EmailNotification -> ProjectShortInfo
-- | Project's GitHUb URL.
[gitHubURL] :: ProjectShortInfo -> Text
-- | Does this project on CircleCI Dashboard?
[onDashboard] :: ProjectShortInfo -> Bool
-- | Email notifications for this project.
[emailNotification] :: ProjectShortInfo -> EmailNotification
-- | Email notification preference.
data EmailNotification
DefaultNotification :: EmailNotification
AllBuildsNotification :: EmailNotification
BranchesIHavePushedTo :: EmailNotification
WithoutNotification :: EmailNotification
-- | CircleCI plan. For more info please see
-- https://circleci.com/pricing/.
data Plan
-- | Hobbyist is a free plan for Linux.
Hobbyist :: Plan
-- | Commercial plan.
Plan :: Text -> Plan
-- | GitHub OAuth mode.
data GitHubOAuth
UserEmailOAuth :: GitHubOAuth
RepoOAuth :: GitHubOAuth
-- | User's analytics id. For example,
-- "6fc20e13-008e-4dc9-b158-ababd33a099d".
type AnalyticsId = Text
instance GHC.Show.Show Network.CircleCI.User.UserInfo
instance GHC.Show.Show Network.CircleCI.User.GitHubOAuth
instance GHC.Show.Show Network.CircleCI.User.ProjectShortInfo
instance GHC.Show.Show Network.CircleCI.User.RawProject
instance GHC.Show.Show Network.CircleCI.User.EmailNotification
instance GHC.Show.Show Network.CircleCI.User.Plan
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.User.UserInfo
instance Data.Aeson.Types.Class.FromJSON Network.CircleCI.User.RawProject
-- | Top module for re-exporting everything.
module Network.CircleCI
-- | Base URL for all API calls. For API v1 it's
-- https://circleci.com/api/v1/.
apiBaseUrl :: BaseUrl
-- | Connection manager with TLS support.
httpsManager :: MonadIO m => m Manager