-- 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