Skip to content

Projects and MRs Approvers API

Mario de la Ossa requested to merge 183-approvers-api into master

TODO

  • Approvals::UpdateMergeRequestApproversService (enhance MergeRequests::UpdateService instead)
  • Authorization for all ProjectApprovals endpoints
  • Authorization for new MergeRequestApprovals endpoints
  • Write specs for failure cases for ProjectApprovals
  • Specs for MergeRequestApprovals
  • Documentation

What does this MR do?

Adds API endpoints to control Project and MergeRequests approvers and related configuration. Also moved the two endpoints to approve/unapprove an MR to the MergeRequestApprovals class

New endpoints

Projects
  • GET /api/v4/projects/:id/approvals - retrieves approval-related config for a project (approvals_before_merge, reset_approvals_on_push, disable_overriding_approvers_per_merge_request) as well as the currently-set explicit approvers and approver groups.
  • POST /api/v4/projects/:id/approvals - sets approval-related config, but not approvers/approver groups
  • PUT /api/v4/projects/:id/approvals - sets approvers and approver groups. Accepts arrays of IDs. Any approver or group not in the list will be deleted from the explicit approvers/approver_groups
Merge Requests

These endpoints will only allow editing if disable_overriding_approvers_per_merge_request is false for the Project

  • GET /api/v4/projects/:id/merge_requests/:merge_request_iid/approvals - retrieves approvals_required for an MR as well as approvers, who has approved, and whether the current user has approved
  • POST /api/v4/projects/:id/merge_requests/:merge_request_iid/approvals - sets approvals_required. Must be higher than the project-level approvals_before_merge setting
  • PUT /api/v4/projects/:id/merge_requests/:merge_request_iid/approvals - sets approvers and approver groups. Accepts arrays of IDs. Any approver or group not in the list will be deleted from the explicit approvers/approver_groups

Closes #183 (closed)

Edited by Coung Ngo

Merge request reports