-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A Haskell library for the GitLab web API -- -- This Haskell library queries and updates the database of a GitLab -- instance using the GitLab web API: -- https://docs.gitlab.com/ee/api/ -- -- Unsurprisingly, GitLab hosts this Haskell library: -- https://gitlab.com/robstewart57/gitlab-haskell @package gitlab-haskell @version 0.1.2 module GitLab.Types -- | type synonym for all GitLab actions. type GitLab m a = ReaderT GitLabState m a -- | state used by GitLab actions, used internally. data GitLabState GitLabState :: GitLabServerConfig -> Manager -> GitLabState [serverCfg] :: GitLabState -> GitLabServerConfig [httpManager] :: GitLabState -> Manager -- | configuration data specific to a GitLab server. data GitLabServerConfig GitLabServerConfig :: Text -> Text -> Int -> Int -> GitLabServerConfig [url] :: GitLabServerConfig -> Text -- | personal access token, see -- https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html [token] :: GitLabServerConfig -> Text -- | milliseconds [timeout] :: GitLabServerConfig -> Int -- | how many times to retry a HTTP request before giving up and returning -- an error. [retries] :: GitLabServerConfig -> Int -- | default settings, the url and token values will need to -- be overwritten. defaultGitLabServer :: GitLabServerConfig -- | member of a project. data Member Member :: Int -> Text -> Text -> Text -> Maybe Text -> Maybe Text -> Int -> Maybe Text -> Member [member_id] :: Member -> Int [member_name] :: Member -> Text [member_username] :: Member -> Text [member_state] :: Member -> Text [member_avatar_uri] :: Member -> Maybe Text [member_web_url] :: Member -> Maybe Text [access_level] :: Member -> Int [expires_at] :: Member -> Maybe Text -- | namespaces. data Namespace Namespace :: Int -> Text -> Text -> Text -> Text -> Maybe Text -> Namespace [namespace_id] :: Namespace -> Int [namespace_name] :: Namespace -> Text [namespace_path] :: Namespace -> Text [kind] :: Namespace -> Text [full_path] :: Namespace -> Text [parent_id] :: Namespace -> Maybe Text -- | links. data Links Links :: Text -> Text -> Text -> Text -> Text -> Text -> Text -> Links [self] :: Links -> Text [issues] :: Links -> Text [merge_requests] :: Links -> Text [repo_branches] :: Links -> Text [link_labels] :: Links -> Text [link_events] :: Links -> Text [members] :: Links -> Text -- | owners. data Owner Ownwer :: Int -> Text -> Text -> Text -> Maybe Text -> Text -> Owner [owner_id] :: Owner -> Int [owner_name] :: Owner -> Text [owner_username] :: Owner -> Text [state] :: Owner -> Text [owner_avatar_url] :: Owner -> Maybe Text [owner_web_url] :: Owner -> Text -- | permissions. data Permissions Permissions :: Maybe Object -> Maybe Object -> Permissions [project_access] :: Permissions -> Maybe Object [group_access] :: Permissions -> Maybe Object -- | projects. data Project Project :: Int -> Maybe Text -> Text -> Text -> Text -> Text -> Text -> Maybe Text -> [Text] -> Text -> Text -> Text -> Maybe Text -> Maybe Text -> Int -> Int -> Text -> Namespace -> Maybe Links -> Maybe Bool -> Maybe Text -> Maybe Owner -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Int -> Maybe Project -> Maybe String -> Maybe Int -> Maybe Bool -> Maybe Text -> Maybe [Object] -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Maybe Text -> Maybe Permissions -> Maybe ProjectStats -> Project [project_id] :: Project -> Int [description] :: Project -> Maybe Text [project_name] :: Project -> Text [name_with_namespace] :: Project -> Text [project_path] :: Project -> Text [path_with_namespace] :: Project -> Text [project_created_at] :: Project -> Text [default_branch] :: Project -> Maybe Text [tag_list] :: Project -> [Text] [ssh_url_to_repo] :: Project -> Text [http_url_to_repo] :: Project -> Text [project_web_url] :: Project -> Text [readme_url] :: Project -> Maybe Text [project_avatar_url] :: Project -> Maybe Text [star_count] :: Project -> Int [forks_count] :: Project -> Int [last_activity_at] :: Project -> Text [namespace] :: Project -> Namespace [_links] :: Project -> Maybe Links [archived] :: Project -> Maybe Bool [visibility] :: Project -> Maybe Text [owner] :: Project -> Maybe Owner [resolve_outdated_diff_discussions] :: Project -> Maybe Bool [container_registry_enabled] :: Project -> Maybe Bool [issues_enabled] :: Project -> Maybe Bool [merge_requests_enabled] :: Project -> Maybe Bool [wiki_enabled] :: Project -> Maybe Bool [jobs_enabled] :: Project -> Maybe Bool [snippets_enabled] :: Project -> Maybe Bool [shared_runners_enabled] :: Project -> Maybe Bool [lfs_enabled] :: Project -> Maybe Bool [creator_id] :: Project -> Maybe Int [forked_from_project] :: Project -> Maybe Project [import_status] :: Project -> Maybe String [open_issues_count] :: Project -> Maybe Int [public_jobs] :: Project -> Maybe Bool [ci_config_path] :: Project -> Maybe Text [shared_with_groups] :: Project -> Maybe [Object] [only_allow_merge_if_pipeline_succeeds] :: Project -> Maybe Bool [request_access_enabled] :: Project -> Maybe Bool [only_allow_merge_if_all_discussions_are_resolved] :: Project -> Maybe Bool [printing_merge_request_link_enabled] :: Project -> Maybe Bool [merge_method] :: Project -> Maybe Text [permissions] :: Project -> Maybe Permissions [project_stats] :: Project -> Maybe ProjectStats data ProjectStats ProjectStats :: Int -> Int -> Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> ProjectStats [commit_count] :: ProjectStats -> Int [storage_size] :: ProjectStats -> Int [repository_size] :: ProjectStats -> Int [wiki_size] :: ProjectStats -> Maybe Int [lfs_objects_size] :: ProjectStats -> Maybe Int [job_artifacts_size] :: ProjectStats -> Maybe Int [packages_size] :: ProjectStats -> Maybe Int -- | registered users. data User User :: Int -> Text -> Text -> Text -> Maybe Text -> Maybe Text -> User [user_id] :: User -> Int [user_username] :: User -> Text [user_name] :: User -> Text [user_state] :: User -> Text [user_avatar_uri] :: User -> Maybe Text [user_web_url] :: User -> Maybe Text -- | project milestones. data Milestone Milestone :: Int -> Text -> Text -> Maybe Text -> Int -> Maybe Text -> Text -> Int -> Text -> Milestone [milestone_project_id] :: Milestone -> Int [milestone_description] :: Milestone -> Text [milestone_state] :: Milestone -> Text [due_date] :: Milestone -> Maybe Text [milestone_iid] :: Milestone -> Int [milestone_created_at] :: Milestone -> Maybe Text [milestone_title] :: Milestone -> Text [milestone_id] :: Milestone -> Int [milestone_updated_at] :: Milestone -> Text -- | time stats. data TimeStats TimeStats :: Int -> Int -> Maybe Int -> Maybe Int -> TimeStats [time_estimate] :: TimeStats -> Int [total_time_spent] :: TimeStats -> Int [humane_time_estimate] :: TimeStats -> Maybe Int [human_total_time_spent] :: TimeStats -> Maybe Int -- | project issues. data Issue Issue :: Text -> Text -> User -> Maybe Milestone -> Int -> Maybe [User] -> Maybe User -> Text -> Maybe Text -> Maybe User -> Int -> Text -> Text -> Int -> [Text] -> Int -> Int -> Int -> Maybe Text -> Text -> Bool -> Maybe Text -> Maybe Bool -> TimeStats -> Issue [issue_state] :: Issue -> Text [issue_description] :: Issue -> Text [issue_author] :: Issue -> User [milestone] :: Issue -> Maybe Milestone [issue_project_id] :: Issue -> Int [assignees] :: Issue -> Maybe [User] [assignee] :: Issue -> Maybe User [updated_at] :: Issue -> Text [closed_at] :: Issue -> Maybe Text [closed_by] :: Issue -> Maybe User [issue_id] :: Issue -> Int [issue_title] :: Issue -> Text [issue_created_at] :: Issue -> Text [iid] :: Issue -> Int [issue_labels] :: Issue -> [Text] [upvotes] :: Issue -> Int [downvotes] :: Issue -> Int [user_notes_count] :: Issue -> Int [issue_due_date] :: Issue -> Maybe Text [issue_web_url] :: Issue -> Text [confidential] :: Issue -> Bool [weight] :: Issue -> Maybe Text [discussion_locked] :: Issue -> Maybe Bool [time_stats] :: Issue -> TimeStats -- | project pipelines data Pipeline Pipeline :: Int -> Text -> Text -> Text -> Maybe Text -> Pipeline [pipeline_id] :: Pipeline -> Int [sha] :: Pipeline -> Text [pipeline_ref] :: Pipeline -> Text [pipeline_status] :: Pipeline -> Text [pipeline_web_url] :: Pipeline -> Maybe Text -- | code commits. data Commit Commit :: Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Maybe [Text] -> Maybe Pipeline -> Maybe CommitStats -> Maybe Text -> Commit [commit_id] :: Commit -> Text [short_id] :: Commit -> Text [title] :: Commit -> Text [author_name] :: Commit -> Text [author_email] :: Commit -> Text [authored_date] :: Commit -> Text [committer_name] :: Commit -> Text [committer_email] :: Commit -> Text [committed_date] :: Commit -> Text [commit_created_at] :: Commit -> Text [message] :: Commit -> Text [parent_ids] :: Commit -> Maybe [Text] [last_pipeline] :: Commit -> Maybe Pipeline [commit_stats] :: Commit -> Maybe CommitStats [commit_status] :: Commit -> Maybe Text -- | commit stats. data CommitStats Stats :: Int -> Int -> Int -> CommitStats [additions] :: CommitStats -> Int [deletions] :: CommitStats -> Int [total] :: CommitStats -> Int data Diff Diff :: Text -> Text -> Text -> Maybe Text -> Maybe Text -> Bool -> Bool -> Bool -> Diff [diff] :: Diff -> Text [new_path] :: Diff -> Text [old_path] :: Diff -> Text [a_mode] :: Diff -> Maybe Text [b_mode] :: Diff -> Maybe Text [new_file] :: Diff -> Bool [renamed_file] :: Diff -> Bool [deleted_file] :: Diff -> Bool -- | repositories. data Repository Repository :: Text -> Text -> Text -> Text -> Text -> Repository [repository_id] :: Repository -> Text [repository_name] :: Repository -> Text [repository_type] :: Repository -> Text [repository_path] :: Repository -> Text [mode] :: Repository -> Text -- | jobs. data Job Job :: Commit -> Maybe Text -> Text -> Text -> Text -> Double -> Maybe Text -> Int -> Text -> Pipeline -> Text -> [Artifact] -> Text -> Text -> Bool -> Text -> User -> Job [commit] :: Job -> Commit [coverage] :: Job -> Maybe Text [created_at] :: Job -> Text [started_at] :: Job -> Text [finished_at] :: Job -> Text [duration] :: Job -> Double [artifacts_expire_at] :: Job -> Maybe Text [id] :: Job -> Int [name] :: Job -> Text [pipeline] :: Job -> Pipeline [job_ref] :: Job -> Text [artifacts] :: Job -> [Artifact] [stage] :: Job -> Text [status] :: Job -> Text [tag] :: Job -> Bool [job_web_url] :: Job -> Text [user] :: Job -> User -- | artifacts. data Artifact Artifact :: Text -> Int -> Text -> Maybe Text -> Artifact [file_type] :: Artifact -> Text [size] :: Artifact -> Int [filename] :: Artifact -> Text [file_format] :: Artifact -> Maybe Text -- | groups. data Group Group :: Int -> Text -> Text -> Text -> Text -> Bool -> Maybe Text -> Text -> Bool -> Text -> Text -> Maybe Int -> Maybe Int -> Group [group_id] :: Group -> Int [group_name] :: Group -> Text [group_path] :: Group -> Text [group_description] :: Group -> Text [group_visibility] :: Group -> Text [group_lfs_enabled] :: Group -> Bool [group_avatar_url] :: Group -> Maybe Text [group_web_url] :: Group -> Text [group_request_access_enabled] :: Group -> Bool [group_full_name] :: Group -> Text [group_full_path] :: Group -> Text [group_file_template_project_id] :: Group -> Maybe Int [group_parent_id] :: Group -> Maybe Int -- | response to sharing a project with a group. data GroupShare GroupShare :: Int -> Int -> Int -> Int -> Maybe Text -> GroupShare [share_id] :: GroupShare -> Int [share_project_id] :: GroupShare -> Int [share_group_id] :: GroupShare -> Int [share_group_access] :: GroupShare -> Int [share_expires_at] :: GroupShare -> Maybe Text -- | code branches. data Branch Branch :: Text -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Commit -> Branch [branch_name] :: Branch -> Text [merged] :: Branch -> Bool [protected] :: Branch -> Bool [branch_default] :: Branch -> Bool [developers_can_push] :: Branch -> Bool [developers_can_merge] :: Branch -> Bool [can_push] :: Branch -> Bool [branch_commit] :: Branch -> Commit -- | files in a repository. data RepositoryFile RepositoryFile :: Text -> Text -> Int -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> RepositoryFile [repository_file_file_name] :: RepositoryFile -> Text [repository_file_file_path] :: RepositoryFile -> Text [repository_file_size] :: RepositoryFile -> Int [encoding] :: RepositoryFile -> Text [content] :: RepositoryFile -> Text [content_sha256] :: RepositoryFile -> Text [ref] :: RepositoryFile -> Text [blob_id] :: RepositoryFile -> Text [repository_file_commit_id] :: RepositoryFile -> Text [last_commit_id] :: RepositoryFile -> Text -- | project merge requests. data MergeRequest MergeRequest :: Int -> Int -> Int -> Text -> Text -> Text -> Maybe User -> Maybe Text -> Maybe User -> Maybe Text -> Text -> Text -> Text -> Text -> Int -> Int -> User -> Maybe User -> Int -> Int -> [Text] -> Bool -> Maybe Milestone -> Bool -> Text -> Text -> Maybe Text -> Int -> Maybe Bool -> Maybe Bool -> Maybe Bool -> Text -> TimeStats -> Bool -> Maybe Bool -> MergeRequest [merge_request_id] :: MergeRequest -> Int [merge_request_iid] :: MergeRequest -> Int [merge_request_project_id] :: MergeRequest -> Int [merge_request_title] :: MergeRequest -> Text [merge_request_description] :: MergeRequest -> Text [merge_request_state] :: MergeRequest -> Text [merge_request_merged_by] :: MergeRequest -> Maybe User [merge_request_merged_at] :: MergeRequest -> Maybe Text [merge_request_closed_by] :: MergeRequest -> Maybe User [merge_request_closed_at] :: MergeRequest -> Maybe Text [merge_request_created_at] :: MergeRequest -> Text [merge_request_updated_at] :: MergeRequest -> Text [merge_request_target_branch] :: MergeRequest -> Text [merge_request_source_branch] :: MergeRequest -> Text [merge_request_upvotes] :: MergeRequest -> Int [merge_request_downvotes] :: MergeRequest -> Int [merge_request_author] :: MergeRequest -> User [merge_request_assignee] :: MergeRequest -> Maybe User [merge_request_source_project_id] :: MergeRequest -> Int [merge_request_target_project_id] :: MergeRequest -> Int [merge_request_labels] :: MergeRequest -> [Text] [merge_request_work_in_progress] :: MergeRequest -> Bool [merge_request_milestone] :: MergeRequest -> Maybe Milestone [merge_request_merge_when_pipeline_succeeds] :: MergeRequest -> Bool [merge_request_merge_status] :: MergeRequest -> Text [merge_request_sha] :: MergeRequest -> Text [merge_request_merge_commit_sha] :: MergeRequest -> Maybe Text [merge_request_user_notes_count] :: MergeRequest -> Int [merge_request_discussion_locked] :: MergeRequest -> Maybe Bool [merge_request_should_remove_source_branch] :: MergeRequest -> Maybe Bool [merge_request_force_remove_source_branch] :: MergeRequest -> Maybe Bool [merge_request_web_url] :: MergeRequest -> Text [merge_request_time_stats] :: MergeRequest -> TimeStats [merge_request_squash] :: MergeRequest -> Bool [merge_request_approvals_before_merge] :: MergeRequest -> Maybe Bool instance GHC.Show.Show GitLab.Types.MergeRequest instance GHC.Generics.Generic GitLab.Types.MergeRequest instance GHC.Show.Show GitLab.Types.RepositoryFile instance GHC.Generics.Generic GitLab.Types.RepositoryFile instance GHC.Show.Show GitLab.Types.Branch instance GHC.Generics.Generic GitLab.Types.Branch instance GHC.Show.Show GitLab.Types.GroupShare instance GHC.Generics.Generic GitLab.Types.GroupShare instance GHC.Show.Show GitLab.Types.Group instance GHC.Generics.Generic GitLab.Types.Group instance GHC.Show.Show GitLab.Types.Job instance GHC.Generics.Generic GitLab.Types.Job instance GHC.Show.Show GitLab.Types.Artifact instance GHC.Generics.Generic GitLab.Types.Artifact instance GHC.Show.Show GitLab.Types.Repository instance GHC.Generics.Generic GitLab.Types.Repository instance GHC.Show.Show GitLab.Types.Diff instance GHC.Generics.Generic GitLab.Types.Diff instance GHC.Show.Show GitLab.Types.Commit instance GHC.Generics.Generic GitLab.Types.Commit instance GHC.Show.Show GitLab.Types.CommitStats instance GHC.Generics.Generic GitLab.Types.CommitStats instance GHC.Show.Show GitLab.Types.Pipeline instance GHC.Generics.Generic GitLab.Types.Pipeline instance GHC.Classes.Eq GitLab.Types.Issue instance GHC.Show.Show GitLab.Types.Issue instance GHC.Generics.Generic GitLab.Types.Issue instance GHC.Classes.Eq GitLab.Types.TimeStats instance GHC.Show.Show GitLab.Types.TimeStats instance GHC.Generics.Generic GitLab.Types.TimeStats instance GHC.Classes.Eq GitLab.Types.Milestone instance GHC.Show.Show GitLab.Types.Milestone instance GHC.Generics.Generic GitLab.Types.Milestone instance GHC.Classes.Eq GitLab.Types.User instance GHC.Show.Show GitLab.Types.User instance GHC.Generics.Generic GitLab.Types.User instance GHC.Classes.Eq GitLab.Types.Project instance GHC.Show.Show GitLab.Types.Project instance GHC.Generics.Generic GitLab.Types.Project instance GHC.Classes.Eq GitLab.Types.ProjectStats instance GHC.Show.Show GitLab.Types.ProjectStats instance GHC.Generics.Generic GitLab.Types.ProjectStats instance GHC.Classes.Eq GitLab.Types.Permissions instance GHC.Show.Show GitLab.Types.Permissions instance GHC.Generics.Generic GitLab.Types.Permissions instance GHC.Classes.Eq GitLab.Types.Owner instance GHC.Show.Show GitLab.Types.Owner instance GHC.Generics.Generic GitLab.Types.Owner instance GHC.Classes.Eq GitLab.Types.Links instance GHC.Show.Show GitLab.Types.Links instance GHC.Generics.Generic GitLab.Types.Links instance GHC.Classes.Eq GitLab.Types.Namespace instance GHC.Show.Show GitLab.Types.Namespace instance GHC.Generics.Generic GitLab.Types.Namespace instance GHC.Show.Show GitLab.Types.Member instance GHC.Generics.Generic GitLab.Types.Member instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.MergeRequest instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.RepositoryFile instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Branch instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.GroupShare instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Group instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Job instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Artifact instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Repository instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Diff instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Commit instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.CommitStats instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Pipeline instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Issue instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.TimeStats instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Milestone instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.User instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Project instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.ProjectStats instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Permissions instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Owner instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Links instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Namespace instance Data.Aeson.Types.FromJSON.FromJSON GitLab.Types.Member -- | internal module to support modules in GitLab.API module GitLab.WebRequests.GitLabWebCalls gitlab :: (MonadIO m, FromJSON a) => Text -> GitLab m [a] gitlabWithAttrs :: (MonadIO m, FromJSON a) => Text -> Text -> GitLab m [a] gitlabOne :: (MonadIO m, FromJSON a) => Text -> GitLab m (Maybe a) gitlabWithAttrsOne :: (MonadIO m, FromJSON a) => Text -> Text -> GitLab m (Maybe a) gitlabPost :: (MonadIO m, FromJSON b) => Text -> Text -> GitLab m (Either Status b) module GitLab.API.Users -- | all registered users. allUsers :: MonadIO m => GitLab m [User] -- | searches for a user given a username. Returns Just User if -- the user is found, otherwise Nothing. searchUser :: MonadIO m => Text -> GitLab m (Maybe User) -- | searches for users given a list of usernames, returns them in -- alphabetical order of their usernames. orderedUsers :: MonadIO m => [Text] -> GitLab m [User] module GitLab.API.RepositoryFiles -- | Get a list of repository files and directories in a project. repositoryFiles :: MonadIO m => Project -> Text -> Text -> GitLab m (Maybe RepositoryFile) -- | Get a list of repository files and directories in a project given the -- project's ID. repositoryFiles' :: MonadIO m => Int -> Text -> Text -> GitLab m (Maybe RepositoryFile) module GitLab.API.Repositories -- | returns a list of repository files and directories in a project. repositories :: MonadIO m => Project -> GitLab m [Repository] -- | returns a list of repository files and directories in a project given -- its project ID. repositories' :: MonadIO m => Int -> GitLab m [Repository] module GitLab.API.Pipelines -- | returns the pipelines for a project. pipelines :: MonadIO m => Project -> GitLab m [Pipeline] -- | returns the pipelines for a project given its project ID. pipelines' :: MonadIO m => Int -> GitLab m [Pipeline] module GitLab.API.MergeRequests -- | returns the merge requests for a project. mergeRequests :: MonadIO m => Project -> GitLab m [MergeRequest] -- | returns the merge requests for a project given its project ID. mergeRequests' :: MonadIO m => Int -> GitLab m [MergeRequest] module GitLab.API.Members -- | the access levels for project members. See -- https://docs.gitlab.com/ee/user/permissions.html#project-members-permissions data AccessLevel Guest :: AccessLevel Reporter :: AccessLevel Developer :: AccessLevel Maintainer :: AccessLevel Owner :: AccessLevel -- | the members of a project. membersOfProject :: MonadIO m => Project -> GitLab m [Member] -- | the members of a project given its ID. membersOfProject' :: MonadIO m => Int -> GitLab m [Member] -- | adds a user to a project with the given access level. Returns 'Right -- Member' for each successful action, otherwise it returns 'Left -- Status'. addMemberToProject :: MonadIO m => Project -> AccessLevel -> User -> GitLab m (Either Status Member) -- | adds a user to a project with the given access level, given the -- project's ID and the user's ID. Returns Right Member for each -- successful action, otherwise it returns Left Status. addMemberToProject' :: MonadIO m => Int -> AccessLevel -> Int -> GitLab m (Either Status Member) -- | adds a list of users to a project with the given access level. Returns -- 'Right Member' for each successful action, otherwise it returns 'Left -- Status'. addMembersToProject :: MonadIO m => Project -> AccessLevel -> [User] -> GitLab m [Either Status Member] -- | adds a list of users to a project with the given access level, given -- the project's ID and the user IDs. Returns Right Member for -- each successful action, otherwise it returns Left Status. addMembersToProject' :: MonadIO m => Int -> AccessLevel -> [Int] -> GitLab m [Either Status Member] instance GHC.Show.Show GitLab.API.Members.AccessLevel module GitLab.API.Jobs -- | returns all jobs ran on a project. jobs :: MonadIO m => Project -> GitLab m [Job] -- | returns all jobs ran on a project given its project ID. jobs' :: MonadIO m => Int -> GitLab m [Job] module GitLab.API.Issues -- | returns all issues against a project. projectOpenedIssues :: (MonadIO m, MonadUnliftIO m) => Project -> GitLab m [Issue] -- | returns all issues against a project given its project ID. projectOpenedIssues' :: (MonadIO m, MonadUnliftIO m) => Int -> GitLab m [Issue] -- | gets all issues create by a user. userIssues :: MonadIO m => User -> GitLab m [Issue] module GitLab.API.Groups -- | gets groups with the given group name. -- --
-- projectsWithName "group1" --groupsWithName :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m [Group] -- | adds all registered users to a group. addAllUsersToGroup :: MonadIO m => Text -> AccessLevel -> GitLab m [Either Status Member] -- | adds a user to a group. addUserToGroup :: MonadIO m => Text -> AccessLevel -> User -> GitLab m (Either Status Member) -- | adds a list of users to a group. addUsersToGroup :: MonadIO m => Text -> AccessLevel -> [Text] -> GitLab m [Either Status Member] -- | adds a user with a given user ID to a group. addUserToGroup' :: MonadIO m => Text -> AccessLevel -> Int -> GitLab m (Either Status Member) module GitLab.API.Commits -- | returns all commits for a project. projectCommits :: MonadIO m => Project -> GitLab m [Commit] -- | returns all commits for a project given its project ID. projectCommits' :: MonadIO m => Int -> GitLab m [Commit] -- | returns a commit for the given project and commit hash, if such a -- commit exists. commitDetails :: MonadIO m => Project -> Text -> GitLab m (Maybe Commit) -- | returns a commit for the given project ID and commit hash, if such a -- commit exists. commitDetails' :: MonadIO m => Int -> Text -> GitLab m (Maybe Commit) module GitLab.API.Projects -- | gets all projects. allProjects :: MonadIO m => GitLab m [Project] -- | gets all forks of a project. Supports use of namespaces. -- --
-- projectForks "project1" -- projectForks "group1/project1" --projectForks :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m [Project] -- | searches for a Project with the given project ID, returns -- Nothing if a project with the given ID is not found. searchProjectId :: MonadIO m => Int -> GitLab m (Maybe Project) -- | gets all projects with the given project name. -- --
-- projectsWithName "project1" --projectsWithName :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m [Project] -- | gets a project with the given name for the given username. E.g. -- --
-- projectsNamespaceName "user1" "project1" ---- -- looks for "user1/project1" projectsWithNameAndUser :: (MonadUnliftIO m, MonadIO m) => Text -> Text -> GitLab m (Maybe Project) -- | returns True if a project has multiple committers, according to -- the email addresses of the commits. multipleCommitters :: (MonadUnliftIO m, MonadIO m) => Project -> GitLab m Bool -- | gets the email addresses in the author information in all commit for a -- project. commitsEmailAddresses :: (MonadUnliftIO m, MonadIO m) => Project -> GitLab m [Text] -- | gets the email addresses in the author information in all commit for a -- project defined by the project's ID. commitsEmailAddresses' :: (MonadUnliftIO m, MonadIO m) => Int -> GitLab m [Text] -- | gets all projects for a user's username. -- --
-- userProjects "harry" --userProjects' :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m (Maybe [Project]) userProjects :: (MonadUnliftIO m, MonadIO m) => User -> GitLab m (Maybe [Project]) -- | gets the Project against which the given Issue was -- created. projectOfIssue :: MonadIO m => Issue -> GitLab m Project -- | finds all issues created by a user. -- --
-- issuesCreatedByUser "user1" ---- -- returns a (user,projects) tuple, where user is the User -- found for the given searched username, and a list of Projects -- that the user has created issues for. issuesCreatedByUser :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m (Maybe (User, [Project])) -- | searches for all projects with the given name, and returns a list of -- triples of: 1) the found project, 2) the list of issues for the found -- projects, and 3) a list of users who've created issues. issuesOnForks :: (MonadUnliftIO m, MonadIO m) => Text -> GitLab m [(Project, [Issue], [User])] -- | returns a (namespace,members) tuple for the given Project, -- where namespace is the namespace of the project e.g. "user1/project1", -- and members is a list of (username,name) tuples about all members of -- the project. projectMemebersCount :: MonadIO m => Project -> GitLab m (Text, [(Text, Text)]) -- | returns True is the last commit for a project passes all -- continuous integration tests. projectCISuccess :: MonadIO m => Project -> GitLab m Bool -- | searches for a username, and returns a user ID for that user, or -- Nothing if a user cannot be found. namespacePathToUserId :: MonadIO m => Text -> GitLab m (Maybe Int) -- | gets all diffs in a project for a given commit SHA. projectDiffs :: MonadIO m => Project -> Text -> GitLab m [Diff] -- | gets all diffs in a project for a given project ID, for a given commit -- SHA. projectDiffs' :: MonadIO m => Int -> Text -> GitLab m [Diff] -- | share a project with a group. shareProjectWithGroup :: MonadIO m => Int -> Int -> AccessLevel -> GitLab m (Either Status GroupShare) module GitLab.API.Branches -- | Get a list of repository branches from a project, sorted by name -- alphabetically. branches :: MonadIO m => Project -> GitLab m [Branch] -- | Get a list of repository branches from a project given its project ID, -- sorted by name alphabetically. branches' :: MonadIO m => Int -> GitLab m [Branch] module GitLab -- | runs a GitLab action. -- -- Internally, this creates a single Manager, whichs keeps track -- of open connections for keep-alive and which is shared between -- multiple threads and requests. -- -- An example of its use is: -- --
-- projectsWithIssuesEnabled :: IO [Project]
-- projectsWithIssuesEnabled =
-- runGitLab myConfig $ filter (issueEnabled . issues_enabled) <$> allProjects
-- where
-- myConfig = defaultGitLabServer
-- { url = "https://gitlab.example.com"
-- , token = "my_access_token" }
-- issueEnabled Nothing = False
-- issueEnabled (Just b) = b
--
runGitLab :: (MonadUnliftIO m, MonadIO m) => GitLabServerConfig -> GitLab m a -> m a