diff options
Diffstat (limited to 'lib/api/invitations.rb')
-rw-r--r-- | lib/api/invitations.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/api/invitations.rb b/lib/api/invitations.rb index be8147908e9..2ab1f97afe6 100644 --- a/lib/api/invitations.rb +++ b/lib/api/invitations.rb @@ -48,6 +48,24 @@ module API present_member_invitations invitations end + + desc 'Removes an invitation from a group or project.' + params do + requires :email, type: String, desc: 'The email address of the invitation' + end + delete ":id/invitations/:email", requirements: { email: /[^\/]+/ } do + source = find_source(source_type, params[:id]) + invite_email = params[:email] + authorize_admin_source!(source_type, source) + + invite = retrieve_member_invitations(source, invite_email).first + not_found! unless invite + + destroy_conditionally!(invite) do + ::Members::DestroyService.new(current_user, params).execute(invite) + unprocessable_entity! unless invite.destroyed? + end + end end end end |