@@ -165,9 +165,7 @@ class ProjectMergeRequest(
165165
166166@cli .register_custom_action ("ProjectMergeRequest" )
167167@exc .on_http_error (exc .GitlabMROnBuildSuccessError )
168- def cancel_merge_when_pipeline_succeeds (
169- self ,** kwargs :Any
170- )-> "ProjectMergeRequest" :
168+ def cancel_merge_when_pipeline_succeeds (self ,** kwargs :Any )-> Dict [str ,str ]:
171169"""Cancel merge when the pipeline succeeds.
172170
173171 Args:
@@ -179,17 +177,20 @@ def cancel_merge_when_pipeline_succeeds(
179177 request
180178
181179 Returns:
182- ProjectMergeRequest
180+ dict of the parsed json returned by the server
183181 """
184182
185183path = (
186184f"{ self .manager .path } /{ self .encoded_id } /cancel_merge_when_pipeline_succeeds"
187185 )
188- server_data = self .manager .gitlab .http_put (path ,** kwargs )
186+ server_data = self .manager .gitlab .http_post (path ,** kwargs )
187+ # 2022-10-30: The docs at
188+ # https://docs.gitlab.com/ee/api/merge_requests.html#cancel-merge-when-pipeline-succeeds
189+ # are incorrect in that the return value is actually just:
190+ # {'status': 'success'} for a successful cancel.
189191if TYPE_CHECKING :
190192assert isinstance (server_data ,dict )
191- self ._update_attrs (server_data )
192- return ProjectMergeRequest (self .manager ,server_data )
193+ return server_data
193194
194195@cli .register_custom_action ("ProjectMergeRequest" )
195196@exc .on_http_error (exc .GitlabListError )