Class MergeRequestApi

java.lang.Object
org.gitlab4j.api.AbstractApi
org.gitlab4j.api.MergeRequestApi
All Implemented Interfaces:
Constants

public class MergeRequestApi extends AbstractApi
This class implements the client side API for the GitLab merge request calls.
See Also:
  • Constructor Details

    • MergeRequestApi

      public MergeRequestApi(GitLabApi gitLabApi)
  • Method Details

    • getMergeRequests

      public List<MergeRequest> getMergeRequests(MergeRequestFilter filter) throws GitLabApiException
      Get all merge requests matching the filter.
      GitLab Endpoint: GET /merge_requests
      Parameters:
      filter - a MergeRequestFilter instance with the filter settings
      Returns:
      all merge requests for the specified project matching the filter
      Throws:
      GitLabApiException - if any exception occursput
    • getMergeRequests

      public List<MergeRequest> getMergeRequests(MergeRequestFilter filter, int page, int perPage) throws GitLabApiException
      Get all merge requests matching the filter.
      GitLab Endpoint: GET /merge_requests
      Parameters:
      filter - a MergeRequestFilter instance with the filter settings
      page - the page to get
      perPage - the number of MergeRequest instances per page
      Returns:
      all merge requests for the specified project matching the filter
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequests

      public Pager<MergeRequest> getMergeRequests(MergeRequestFilter filter, int itemsPerPage) throws GitLabApiException
      Get all merge requests matching the filter.
      GitLab Endpoint: GET /merge_requests
      Parameters:
      filter - a MergeRequestFilter instance with the filter settings
      itemsPerPage - the number of MergeRequest instances that will be fetched per page
      Returns:
      all merge requests for the specified project/group matching the filter
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestsStream

      public Stream<MergeRequest> getMergeRequestsStream(MergeRequestFilter filter) throws GitLabApiException
      Get all merge requests matching the filter as a Stream.
      GitLab Endpoint: GET /merge_requests
      Parameters:
      filter - a MergeRequestFilter instance with the filter settings
      Returns:
      a Stream containing all the merge requests for the specified project matching the filter
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequests

      public List<MergeRequest> getMergeRequests(Object projectIdOrPath) throws GitLabApiException
      Get all merge requests for the specified project.
      GitLab Endpoint: GET /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      Returns:
      all merge requests for the specified project
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequests

      public List<MergeRequest> getMergeRequests(Object projectIdOrPath, int page, int perPage) throws GitLabApiException
      Get all merge requests for the specified project.
      GitLab Endpoint: GET /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      page - the page to get
      perPage - the number of MergeRequest instances per page
      Returns:
      all merge requests for the specified project
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequests

      public Pager<MergeRequest> getMergeRequests(Object projectIdOrPath, int itemsPerPage) throws GitLabApiException
      Get all merge requests for the specified project.
      GitLab Endpoint: GET /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      itemsPerPage - the number of MergeRequest instances that will be fetched per page
      Returns:
      all merge requests for the specified project
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestsStream

      public Stream<MergeRequest> getMergeRequestsStream(Object projectIdOrPath) throws GitLabApiException
      Get all merge requests for the specified project as a Stream
      GitLab Endpoint: GET /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      Returns:
      a Stream with all merge requests for the specified project
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequests

      public List<MergeRequest> getMergeRequests(Object projectIdOrPath, Constants.MergeRequestState state) throws GitLabApiException
      Get all merge requests with a specific state for the specified project.
      GitLab Endpoint: GET /projects/:id/merge_requests?state=:state
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      state - the state parameter can be used to get only merge requests with a given state (opened, closed, or merged) or all of them (all).
      Returns:
      all merge requests for the specified project
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequests

      public List<MergeRequest> getMergeRequests(Object projectIdOrPath, Constants.MergeRequestState state, int page, int perPage) throws GitLabApiException
      Get all merge requests for the specified project.
      GitLab Endpoint: GET /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      state - the state parameter can be used to get only merge requests with a given state (opened, closed, or merged) or all of them (all).
      page - the page to get
      perPage - the number of MergeRequest instances per page
      Returns:
      all merge requests for the specified project
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequests

      public Pager<MergeRequest> getMergeRequests(Object projectIdOrPath, Constants.MergeRequestState state, int itemsPerPage) throws GitLabApiException
      Get all merge requests for the specified project.
      GitLab Endpoint: GET /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      state - the state parameter can be used to get only merge requests with a given state (opened, closed, or merged) or all of them (all).
      itemsPerPage - the number of MergeRequest instances that will be fetched per page
      Returns:
      all merge requests for the specified project
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestsStream

      public Stream<MergeRequest> getMergeRequestsStream(Object projectIdOrPath, Constants.MergeRequestState state) throws GitLabApiException
      Get all merge requests with a specific state for the specified project as a Stream.
      GitLab Endpoint: GET /projects/:id/merge_requests?state=:state
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      state - the state parameter can be used to get only merge requests with a given state (opened, closed, or merged) or all of them (all).
      Returns:
      a Stream with all the merge requests for the specified project
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequest

      public MergeRequest getMergeRequest(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get information about a single merge request.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_id
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      the specified MergeRequest instance
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequest

      public MergeRequest getMergeRequest(Object projectIdOrPath, Long mergeRequestIid, Boolean renderHtml, Boolean includeDivergedCommitCount, Boolean includeRebaseInProgress) throws GitLabApiException
      Get information about a single merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      renderHtml - if true response includes rendered HTML for title and description, can be null
      includeDivergedCommitCount - if true response includes the commits behind the target branch, can be null
      includeRebaseInProgress - if true response includes whether a rebase operation is in progress, can be null
      Returns:
      a MergeRequest instance as specified by the parameters
      Throws:
      GitLabApiException - if any exception occurs
    • getOptionalMergeRequest

      public Optional<MergeRequest> getOptionalMergeRequest(Object projectIdOrPath, Long mergeRequestIid)
      Get information about a single merge request as an Optional instance.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_id
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      the specified MergeRequest as an Optional instance instance
    • getOptionalMergeRequest

      public Optional<MergeRequest> getOptionalMergeRequest(Object projectIdOrPath, Long mergeRequestIid, Boolean renderHtml, Boolean includeDivergedCommitCount, Boolean includeRebaseInProgress)
      Get information about a single merge request as an Optional instance.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_id
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      renderHtml - if true response includes rendered HTML for title and description, can be null
      includeDivergedCommitCount - if true response includes the commits behind the target branch, can be null
      includeRebaseInProgress - if true response includes whether a rebase operation is in progress, can be null
      Returns:
      the specified MergeRequest as an Optional instance instance
    • getCommits

      public List<Commit> getCommits(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get a list of merge request commits.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/commits
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a list containing the commits for the specified merge request
      Throws:
      GitLabApiException - GitLabApiException if any exception occurs during execution
    • getCommits

      public List<Commit> getCommits(Object projectIdOrPath, Long mergeRequestIid, int page, int perPage) throws GitLabApiException
      Get a list of merge request commits.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/commits
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      page - the page to get
      perPage - the number of commits per page
      Returns:
      a list containing the commits for the specified merge request
      Throws:
      GitLabApiException - GitLabApiException if any exception occurs during execution
    • getCommits

      public Pager<Commit> getCommits(Object projectIdOrPath, Long mergeRequestIid, int itemsPerPage) throws GitLabApiException
      Get a Pager of merge request commits.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/commits
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      itemsPerPage - the number of Commit instances that will be fetched per page
      Returns:
      a Pager containing the commits for the specified merge request
      Throws:
      GitLabApiException - GitLabApiException if any exception occurs during execution
    • getCommitsStream

      public Stream<Commit> getCommitsStream(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get a Stream of merge request commits.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/commits
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a Stream containing the commits for the specified merge request
      Throws:
      GitLabApiException - GitLabApiException if any exception occurs during execution
    • getMergeRequestDiffs

      public List<MergeRequestDiff> getMergeRequestDiffs(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get a list of merge request diff versions.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/versions
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a List of merge request diff versions for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestDiffs

      public Pager<MergeRequestDiff> getMergeRequestDiffs(Object projectIdOrPath, Long mergeRequestIid, int itemsPerPage) throws GitLabApiException
      Get a Pager of merge request diff versions.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/versions
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      itemsPerPage - the number of MergeRequest instances that will be fetched per page
      Returns:
      a Pager of merge request diff versions for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestDiffsStream

      public Stream<MergeRequestDiff> getMergeRequestDiffsStream(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get a Stream of merge request diff versions.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/versions
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a Stream of merge request diff versions for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestDiff

      public MergeRequestDiff getMergeRequestDiff(Object projectIdOrPath, Long mergeRequestIid, Long versionId) throws GitLabApiException
      Get a single merge request diff version.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/versions/:version_id
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      versionId - the ID of the merge request diff version
      Returns:
      a MergeRequestDiff instance for the specified MR diff version
      Throws:
      GitLabApiException - if any exception occurs
    • getOptionalMergeRequestDiff

      public Optional<MergeRequestDiff> getOptionalMergeRequestDiff(Object projectIdOrPath, Long mergeRequestIid, Long versionId)
      Get a single merge request diff version as an Optional instance.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/versions/:version_id
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      versionId - the ID of the merge request diff version
      Returns:
      the specified MergeRequestDiff as an Optional instance instance
    • createMergeRequest

      public MergeRequest createMergeRequest(Object projectIdOrPath, MergeRequestParams params) throws GitLabApiException
      Creates a merge request.
      GitLab Endpoint: POST /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      params - a MergeRequestParams instance holding the info to create the merge request
      Returns:
      the created MergeRequest instance
      Throws:
      GitLabApiException - if any exception occurs
      Since:
      GitLab Starter 8.17, GitLab CE 11.0.
    • createMergeRequest

      public MergeRequest createMergeRequest(Object projectIdOrPath, String sourceBranch, String targetBranch, String title, String description, Long assigneeId, Long targetProjectId, String[] labels, Long milestoneId, Boolean removeSourceBranch, Boolean squash) throws GitLabApiException
      Creates a merge request.
      GitLab Endpoint: POST /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      sourceBranch - the source branch, required
      targetBranch - the target branch, required
      title - the title for the merge request, required
      description - the description of the merge request
      assigneeId - the Assignee user ID, optional
      targetProjectId - the ID of a target project, optional
      labels - labels for MR, optional
      milestoneId - the ID of a milestone, optional
      removeSourceBranch - Flag indicating if a merge request should remove the source branch when merging, optional
      squash - Squash commits into a single commit when merging, optional
      Returns:
      the created MergeRequest instance
      Throws:
      GitLabApiException - if any exception occurs
      Since:
      GitLab Starter 8.17, GitLab CE 11.0.
    • createMergeRequest

      public MergeRequest createMergeRequest(Object projectIdOrPath, String sourceBranch, String targetBranch, String title, String description, Long assigneeId, Long targetProjectId, String[] labels, Long milestoneId, Boolean removeSourceBranch) throws GitLabApiException
      Creates a merge request.
      GitLab Endpoint: POST /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      sourceBranch - the source branch, required
      targetBranch - the target branch, required
      title - the title for the merge request, required
      description - the description of the merge request
      assigneeId - the Assignee user ID, optional
      targetProjectId - the ID of a target project, optional
      labels - labels for MR, optional
      milestoneId - the ID of a milestone, optional
      removeSourceBranch - Flag indicating if a merge request should remove the source branch when merging, optional
      Returns:
      the created MergeRequest instance
      Throws:
      GitLabApiException - if any exception occurs
    • createMergeRequest

      public MergeRequest createMergeRequest(Object projectIdOrPath, String sourceBranch, String targetBranch, String title, String description, Long assigneeId) throws GitLabApiException
      Creates a merge request and optionally assigns a reviewer to it.
      GitLab Endpoint: POST /projects/:id/merge_requests
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      sourceBranch - the source branch, required
      targetBranch - the target branch, required
      title - the title for the merge request, required
      description - the description of the merge request
      assigneeId - the Assignee user ID, optional
      Returns:
      the created MergeRequest instance
      Throws:
      GitLabApiException - if any exception occurs
    • updateMergeRequest

      public MergeRequest updateMergeRequest(Object projectIdOrPath, Long mergeRequestIid, MergeRequestParams params) throws GitLabApiException
      Updates an existing merge request. You can change branches, title, or even close the merge request.
      GitLab Endpoint: PUT /projects/:id/merge_requests/:merge_request_iid
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request to update
      params - a MergeRequestParams instance holding the info to update the merge request
      Returns:
      the updated merge request
      Throws:
      GitLabApiException - if any exception occurs
    • updateMergeRequest

      public MergeRequest updateMergeRequest(Object projectIdOrPath, Long mergeRequestIid, String targetBranch, String title, Long assigneeId, String description, Constants.StateEvent stateEvent, String labels, Long milestoneId, Boolean removeSourceBranch, Boolean squash, Boolean discussionLocked, Boolean allowCollaboration) throws GitLabApiException
      Updates an existing merge request. You can change branches, title, or even close the MR.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: PUT /projects/:id/merge_requests/:merge_request_iid
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request to update
      targetBranch - the target branch, optional
      title - the title for the merge request
      assigneeId - the Assignee user ID, optional
      description - the description of the merge request, optional
      stateEvent - new state for the merge request, optional
      labels - comma separated list of labels, optional
      milestoneId - the ID of a milestone, optional
      removeSourceBranch - Flag indicating if a merge request should remove the source branch when merging, optional
      squash - Squash commits into a single commit when merging, optional
      discussionLocked - Flag indicating if the merge request's discussion is locked, optional
      allowCollaboration - Allow commits from members who can merge to the target branch, optional
      Returns:
      the updated merge request
      Throws:
      GitLabApiException - if any exception occurs
    • deleteMergeRequest

      public void deleteMergeRequest(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Only for admins and project owners. Soft deletes the specified merge.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: DELETE /projects/:id/merge_requests/:merge_request_iid
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Throws:
      GitLabApiException - if any exception occurs
    • acceptMergeRequest

      public MergeRequest acceptMergeRequest(Object projectIdOrPath, Long mergeRequestIid, AcceptMergeRequestParams params) throws GitLabApiException
      Merge changes to the merge request. If the MR has any conflicts and can not be merged, you'll get a 405 and the error message 'Branch cannot be merged'. If merge request is already merged or closed, you'll get a 406 and the error message 'Method Not Allowed'. If the sha parameter is passed and does not match the HEAD of the source, you'll get a 409 and the error message 'SHA does not match HEAD of source branch'. If you don't have permissions to accept this merge request, you'll get a 401.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: PUT /projects/:id/merge_requests/:merge_request_iid/merge
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      params - the MergeRequest instance holding the parameters for accepting the merge request
      Returns:
      the merged merge request
      Throws:
      GitLabApiException - if any exception occurs
    • acceptMergeRequest

      public MergeRequest acceptMergeRequest(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Merge changes to the merge request. If the MR has any conflicts and can not be merged, you'll get a 405 and the error message 'Branch cannot be merged'. If merge request is already merged or closed, you'll get a 406 and the error message 'Method Not Allowed'. If the sha parameter is passed and does not match the HEAD of the source, you'll get a 409 and the error message 'SHA does not match HEAD of source branch'. If you don't have permissions to accept this merge request, you'll get a 401.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: PUT /projects/:id/merge_requests/:merge_request_iid/merge
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      the merged merge request
      Throws:
      GitLabApiException - if any exception occurs
    • acceptMergeRequest

      public MergeRequest acceptMergeRequest(Object projectIdOrPath, Long mergeRequestIid, String mergeCommitMessage, Boolean shouldRemoveSourceBranch, Boolean mergeWhenPipelineSucceeds) throws GitLabApiException
      Merge changes to the merge request. If the MR has any conflicts and can not be merged, you'll get a 405 and the error message 'Branch cannot be merged'. If merge request is already merged or closed, you'll get a 406 and the error message 'Method Not Allowed'. If the sha parameter is passed and does not match the HEAD of the source, you'll get a 409 and the error message 'SHA does not match HEAD of source branch'. If you don't have permissions to accept this merge request, you'll get a 401.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request. Additionally, mergeWhenPipelineSucceeds sets the merge_when_build_succeeds flag for GitLab API V3.

      GitLab Endpoint: PUT /projects/:id/merge_requests/:merge_request_iid/merge
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      mergeCommitMessage - custom merge commit message, optional
      shouldRemoveSourceBranch - if true removes the source branch, optional
      mergeWhenPipelineSucceeds - if true the MR is merged when the pipeline, optional
      Returns:
      the merged merge request
      Throws:
      GitLabApiException - if any exception occurs
    • acceptMergeRequest

      public MergeRequest acceptMergeRequest(Object projectIdOrPath, Long mergeRequestIid, String mergeCommitMessage, Boolean shouldRemoveSourceBranch, Boolean mergeWhenPipelineSucceeds, String sha) throws GitLabApiException
      Merge changes to the merge request. If the MR has any conflicts and can not be merged, you'll get a 405 and the error message 'Branch cannot be merged'. If merge request is already merged or closed, you'll get a 406 and the error message 'Method Not Allowed'. If the sha parameter is passed and does not match the HEAD of the source, you'll get a 409 and the error message 'SHA does not match HEAD of source branch'. If you don't have permissions to accept this merge request, you'll get a 401.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request. Additionally, mergeWhenPipelineSucceeds sets the merge_when_build_succeeds flag for GitLab API V3.

      GitLab Endpoint: PUT /projects/:id/merge_requests/:merge_request_iid/merge
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      mergeCommitMessage - custom merge commit message, optional
      shouldRemoveSourceBranch - if true removes the source branch, optional
      mergeWhenPipelineSucceeds - if true the MR is merged when the pipeline, optional
      sha - if present, then this SHA must match the HEAD of the source branch, otherwise the merge will fail, optional
      Returns:
      the merged merge request
      Throws:
      GitLabApiException - if any exception occurs
    • cancelMergeRequest

      public MergeRequest cancelMergeRequest(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Cancel merge when pipeline succeeds. If you don't have permissions to accept this merge request, you'll get a 401. If the merge request is already merged or closed, you get 405 and error message 'Method Not Allowed'. In case the merge request is not set to be merged when the pipeline succeeds, you'll also get a 406 error.

      NOTE: GitLab API V4 uses IID (internal ID), V3 uses ID to identify the merge request.

      GitLab Endpoint: POST /projects/:id/merge_requests/:merge_request_iid/cancel_merge_when_pipeline_succeeds
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      the updated merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestApprovals

      public MergeRequest getMergeRequestApprovals(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get the merge request with approval information. Note: This API endpoint is only available on 8.9 Starter and above.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/approvals
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a MergeRequest instance with approval information included
      Throws:
      GitLabApiException - if any exception occurs
    • getApprovals

      public MergeRequest getApprovals(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get the merge request with approval information. Note: This API endpoint is only available on 8.9 Starter and above.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/approvals
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a MergeRequest instance with approval information included
      Throws:
      GitLabApiException - if any exception occurs
    • getApprovalState

      public ApprovalState getApprovalState(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get the approval state of a merge request. Note: This API endpoint is only available on 12.3 Starter and above.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/approval_state
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a ApprovalState instance with approval state
      Throws:
      GitLabApiException - if any exception occurs
    • getApprovalRules

      public List<ApprovalRule> getApprovalRules(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get a list of the merge request level approval rules. Note: This API endpoint is only available on 12.3 Starter and above.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/approval_rules
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a List of ApprovalRule instances for the specified merge request.
      Throws:
      GitLabApiException - if any exception occurs
    • getApprovalRules

      public Pager<ApprovalRule> getApprovalRules(Object projectIdOrPath, Long mergeRequestIid, int itemsPerPage) throws GitLabApiException
      Get a Pager of the merge request level approval rules. Note: This API endpoint is only available on 12.3 Starter and above.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/approval_rules
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      itemsPerPage - the number of ApprovalRule instances that will be fetched per page
      Returns:
      a Pager of ApprovalRule instances for the specified merge request.
      Throws:
      GitLabApiException - if any exception occurs
    • getApprovalRulesStream

      public Stream<ApprovalRule> getApprovalRulesStream(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get a Stream of the merge request level approval rules. Note: This API endpoint is only available on 12.3 Starter and above.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/approval_rules
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a Stream of ApprovalRule instances for the specified merge request.
      Throws:
      GitLabApiException - if any exception occurs
    • createApprovalRule

      public ApprovalRule createApprovalRule(Object projectIdOrPath, Long mergeRequestIid, Long projectRuleId, ApprovalRuleParams params) throws GitLabApiException
      Create a merge request level approval rule. Note: This API endpoint is only available on 12.3 Starter and above.
      GitLab Endpoint: POST /projects/:id/merge_requests/:merge_request_iid/approval_rules
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      projectRuleId - the ID of a project-level approval rule
      params - the ApprovalRuleParams instance holding the parameters for the approval rule
      Returns:
      a ApprovalRule instance with approval configuration
      Throws:
      GitLabApiException - if any exception occurs
    • updateApprovalRule

      public ApprovalRule updateApprovalRule(Object projectIdOrPath, Long mergeRequestIid, Long approvalRuleId, ApprovalRuleParams params) throws GitLabApiException
      Update the specified the merge request level approval rule. Note: This API endpoint is only available on 12.3 Starter and above.
      GitLab Endpoint: PUT /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      approvalRuleId - the ID of the approval rule
      params - the ApprovalRuleParams instance holding the parameters for the approval rule update
      Returns:
      a ApprovalRule instance with approval configuration
      Throws:
      GitLabApiException - if any exception occurs
    • deleteApprovalRule

      public void deleteApprovalRule(Object projectIdOrPath, Long mergeRequestIid, Long approvalRuleId) throws GitLabApiException
      Delete the specified the merge request level approval rule. Note: This API endpoint is only available on 12.3 Starter and above.
      GitLab Endpoint: DELETE /projects/:id/merge_requests/:merge_request_iid/approval_rules/:approval_rule_id
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      approvalRuleId - the ID of the approval rule
      Throws:
      GitLabApiException - if any exception occurs
    • approveMergeRequest

      public MergeRequest approveMergeRequest(Object projectIdOrPath, Long mergeRequestIid, String sha) throws GitLabApiException
      Approve a merge request. Note: This API endpoint is only available on 8.9 EE and above.
      GitLab Endpoint: POST /projects/:id/merge_requests/:merge_request_iid/approve
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      sha - the HEAD of the merge request, optional
      Returns:
      a MergeRequest instance with approval information included
      Throws:
      GitLabApiException - if any exception occurs
    • unapproveMergeRequest

      public MergeRequest unapproveMergeRequest(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Unapprove a merge request. Note: This API endpoint is only available on 8.9 EE and above.
      GitLab Endpoint: POST /projects/:id/merge_requests/:merge_request_iid/unapprove
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a MergeRequest instance with approval information included
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestChanges

      public MergeRequest getMergeRequestChanges(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get merge request with changes information.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/changes
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the IID of the merge request to get
      Returns:
      a merge request including its changes
      Throws:
      GitLabApiException - if any exception occurs
    • getParticipants

      public List<Participant> getParticipants(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get list of participants of merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/participants
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the IID of the merge request to get
      Returns:
      a List containing all participants for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getParticipants

      public List<Participant> getParticipants(Object projectIdOrPath, Long mergeRequestIid, int page, int perPage) throws GitLabApiException
      Get list of participants of merge request and in the specified page range.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/participants
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the IID of the merge request to get
      page - the page to get
      perPage - the number of projects per page
      Returns:
      a List containing all participants for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getParticipants

      public Pager<Participant> getParticipants(Object projectIdOrPath, Long mergeRequestIid, int itemsPerPage) throws GitLabApiException
      Get a Pager of the participants of merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/participants
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the IID of the merge request to get
      itemsPerPage - the number of Participant instances that will be fetched per page
      Returns:
      a Pager containing all participants for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getParticipantsStream

      public Stream<Participant> getParticipantsStream(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get Stream of participants of merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/participants
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the IID of the merge request to get
      Returns:
      a Stream containing all participants for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getClosesIssues

      public List<Issue> getClosesIssues(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get list containing all the issues that would be closed by merging the provided merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/closes_issues
      Parameters:
      projectIdOrPath - id, path of the project, or a Project instance holding the project ID or path
      mergeRequestIid - the IID of the merge request to get the closes issues for
      Returns:
      a List containing all the issues that would be closed by merging the provided merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getClosesIssues

      public List<Issue> getClosesIssues(Object projectIdOrPath, Long mergeRequestIid, int page, int perPage) throws GitLabApiException
      Get list containing all the issues that would be closed by merging the provided merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/closes_issues
      Parameters:
      projectIdOrPath - id, path of the project, or a Project instance holding the project ID or path
      mergeRequestIid - the IID of the merge request to get the closes issues for
      page - the page to get
      perPage - the number of issues per page
      Returns:
      a List containing all the issues that would be closed by merging the provided merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getClosesIssues

      public Pager<Issue> getClosesIssues(Object projectIdOrPath, Long mergeRequestIid, int itemsPerPage) throws GitLabApiException
      Get a Pager containing all the issues that would be closed by merging the provided merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/closes_issues
      Parameters:
      projectIdOrPath - id, path of the project, or a Project instance holding the project ID or path
      mergeRequestIid - the IID of the merge request to get the closes issues for
      itemsPerPage - the number of Issue instances that will be fetched per page
      Returns:
      a Pager containing all the issues that would be closed by merging the provided merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getClosesIssuesStream

      public Stream<Issue> getClosesIssuesStream(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get Stream containing all the issues that would be closed by merging the provided merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/closes_issues
      Parameters:
      projectIdOrPath - id, path of the project, or a Project instance holding the project ID or path
      mergeRequestIid - the IID of the merge request to get the closes issues for
      Returns:
      a Stream containing all the issues that would be closed by merging the provided merge request
      Throws:
      GitLabApiException - if any exception occurs
    • getApprovalStatus

      public List<Issue> getApprovalStatus(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get list containing all the issues that would be closed by merging the provided merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/closes_issues
      Parameters:
      projectIdOrPath - id, path of the project, or a Project instance holding the project ID or path
      mergeRequestIid - the IID of the merge request to get the closes issues for
      Returns:
      a List containing all the issues that would be closed by merging the provided merge request
      Throws:
      GitLabApiException - if any exception occurs
    • rebaseMergeRequest

      public MergeRequest rebaseMergeRequest(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Automatically rebase the source_branch of the merge request against its target_branch. This is an asynchronous request. The API will return a 202 Accepted response if the request is enqueued successfully
      GitLab Endpoint: PUT /projects/:id/merge_requests/:merge_request_iid/rebase
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request to rebase
      Returns:
      the merge request info containing the status of a merge request rebase
      Throws:
      GitLabApiException - if any exception occurs
    • getRebaseStatus

      public MergeRequest getRebaseStatus(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get the merge request info containing the status of a merge request rebase.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request being rebased
      Returns:
      the merge request info containing the status of a merge request rebase
      Throws:
      GitLabApiException - if any exception occurs
    • getMergeRequestPipelines

      public List<Pipeline> getMergeRequestPipelines(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get a list of pipelines for a merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/pipelines
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a list containing the pipelines for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs during execution
    • getMergeRequestPipelines

      public Pager<Pipeline> getMergeRequestPipelines(Object projectIdOrPath, Long mergeRequestIid, int itemsPerPage) throws GitLabApiException
      Get a Pager of pipelines for a merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/pipelines
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      itemsPerPage - the number of Pipeline instances that will be fetched per page
      Returns:
      a Pager containing the pipelines for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs during execution
    • getMergeRequestPipelinesStream

      public Stream<Pipeline> getMergeRequestPipelinesStream(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException
      Get a Stream of pipelines for a merge request.
      GitLab Endpoint: GET /projects/:id/merge_requests/:merge_request_iid/pipelines
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a Stream containing the pipelines for the specified merge request
      Throws:
      GitLabApiException - if any exception occurs during execution
    • createMergeRequestPipeline

      public Pipeline createMergeRequestPipeline(Object projectIdOrPath, Long mergeRequestIid) throws GitLabApiException

      Create a new pipeline for a merge request. A pipeline created via this endpoint will not run a regular branch/tag pipeline, it requires .gitlab-ci.yml to be configured with only: [merge_requests] to create jobs.

      The new pipeline can be: A detached merge request pipeline. A pipeline for merged results if the project setting is enabled.
      GitLab Endpoint: POST /projects/:id/merge_requests/:merge_request_iid/pipelines
      Parameters:
      projectIdOrPath - the project in the form of an Long(ID), String(path), or Project instance
      mergeRequestIid - the internal ID of the merge request
      Returns:
      a Pipeline instance with the newly created pipeline info
      Throws:
      GitLabApiException - if any exception occurs during execution