diff --git a/examples/services.go b/examples/services.go
index 029398bfb..16e88f114 100644
--- a/examples/services.go
+++ b/examples/services.go
@@ -39,16 +39,11 @@ func dataDogExample() {
 		ArchiveTraceEvents: gitlab.Bool(true),
 	}
 
-	_, err = git.Services.SetDataDogService(1, opts)
+	svc, _, err := git.Services.SetDataDogService(1, opts)
 	if err != nil {
 		log.Fatal(err)
 	}
 
-	// Query the integration
-	svc, _, err := git.Services.GetDataDogService(1)
-	if err != nil {
-		log.Fatal(err)
-	}
 	fmt.Printf(
 		"api_url: %s, datadog_env: %s, datadog_service: %s, datadog_site: %s, datadog_tags: %s",
 		svc.Properties.APIURL, svc.Properties.DataDogEnv, svc.Properties.DataDogService,
diff --git a/services.go b/services.go
index 56eeca86e..c8ae0c870 100644
--- a/services.go
+++ b/services.go
@@ -36,27 +36,31 @@ type ServicesService struct {
 //
 // GitLab API docs: https://docs.gitlab.com/ee/api/integrations.html
 type Service struct {
-	ID                       int        `json:"id"`
-	Title                    string     `json:"title"`
-	Slug                     string     `json:"slug"`
-	CreatedAt                *time.Time `json:"created_at"`
-	UpdatedAt                *time.Time `json:"updated_at"`
-	Active                   bool       `json:"active"`
-	PushEvents               bool       `json:"push_events"`
-	IssuesEvents             bool       `json:"issues_events"`
-	AlertEvents              bool       `json:"alert_events"`
-	ConfidentialIssuesEvents bool       `json:"confidential_issues_events"`
-	CommitEvents             bool       `json:"commit_events"`
-	MergeRequestsEvents      bool       `json:"merge_requests_events"`
-	CommentOnEventEnabled    bool       `json:"comment_on_event_enabled"`
-	TagPushEvents            bool       `json:"tag_push_events"`
-	NoteEvents               bool       `json:"note_events"`
-	ConfidentialNoteEvents   bool       `json:"confidential_note_events"`
-	PipelineEvents           bool       `json:"pipeline_events"`
-	JobEvents                bool       `json:"job_events"`
-	WikiPageEvents           bool       `json:"wiki_page_events"`
-	VulnerabilityEvents      bool       `json:"vulnerability_events"`
-	DeploymentEvents         bool       `json:"deployment_events"`
+	ID                             int        `json:"id"`
+	Title                          string     `json:"title"`
+	Slug                           string     `json:"slug"`
+	CreatedAt                      *time.Time `json:"created_at"`
+	UpdatedAt                      *time.Time `json:"updated_at"`
+	Active                         bool       `json:"active"`
+	AlertEvents                    bool       `json:"alert_events"`
+	CommitEvents                   bool       `json:"commit_events"`
+	ConfidentialIssuesEvents       bool       `json:"confidential_issues_events"`
+	ConfidentialNoteEvents         bool       `json:"confidential_note_events"`
+	DeploymentEvents               bool       `json:"deployment_events"`
+	GroupConfidentialMentionEvents bool       `json:"group_confidential_mention_events"`
+	GroupMentionEvents             bool       `json:"group_mention_events"`
+	IncidentEvents                 bool       `json:"incident_events"`
+	IssuesEvents                   bool       `json:"issues_events"`
+	JobEvents                      bool       `json:"job_events"`
+	MergeRequestsEvents            bool       `json:"merge_requests_events"`
+	NoteEvents                     bool       `json:"note_events"`
+	PipelineEvents                 bool       `json:"pipeline_events"`
+	PushEvents                     bool       `json:"push_events"`
+	TagPushEvents                  bool       `json:"tag_push_events"`
+	VulnerabilityEvents            bool       `json:"vulnerability_events"`
+	WikiPageEvents                 bool       `json:"wiki_page_events"`
+	CommentOnEventEnabled          bool       `json:"comment_on_event_enabled"`
+	Inherited                      bool       `json:"inherited"`
 }
 
 // ListServices gets a list of all active services.
@@ -142,19 +146,25 @@ type SetCustomIssueTrackerServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-a-custom-issue-tracker
-func (s *ServicesService) SetCustomIssueTrackerService(pid interface{}, opt *SetCustomIssueTrackerServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetCustomIssueTrackerService(pid interface{}, opt *SetCustomIssueTrackerServiceOptions, options ...RequestOptionFunc) (*CustomIssueTrackerService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/custom-issue-tracker", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(CustomIssueTrackerService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteCustomIssueTrackerService deletes Custom Issue Tracker service settings for a project.
@@ -242,19 +252,25 @@ type SetDataDogServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-datadog
-func (s *ServicesService) SetDataDogService(pid interface{}, opt *SetDataDogServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetDataDogService(pid interface{}, opt *SetDataDogServiceOptions, options ...RequestOptionFunc) (*DataDogService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/datadog", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(DataDogService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteDataDogService deletes the DataDog service settings for a project.
@@ -358,19 +374,25 @@ type SetDiscordServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-discord-notifications
-func (s *ServicesService) SetDiscordService(pid interface{}, opt *SetDiscordServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetDiscordService(pid interface{}, opt *SetDiscordServiceOptions, options ...RequestOptionFunc) (*DiscordService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/discord", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(DiscordService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, resp, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteDiscordService deletes Discord service settings for a project.
@@ -453,19 +475,25 @@ type SetDroneCIServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-drone
-func (s *ServicesService) SetDroneCIService(pid interface{}, opt *SetDroneCIServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetDroneCIService(pid interface{}, opt *SetDroneCIServiceOptions, options ...RequestOptionFunc) (*DroneCIService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/drone-ci", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(DroneCIService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteDroneCIService deletes Drone CI service settings for a project.
@@ -552,19 +580,25 @@ type SetEmailsOnPushServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-emails-on-push
-func (s *ServicesService) SetEmailsOnPushService(pid interface{}, opt *SetEmailsOnPushServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetEmailsOnPushService(pid interface{}, opt *SetEmailsOnPushServiceOptions, options ...RequestOptionFunc) (*EmailsOnPushService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/integrations/emails-on-push", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(EmailsOnPushService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteEmailsOnPushService deletes Emails on Push service settings for a project.
@@ -641,19 +675,25 @@ type SetExternalWikiServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-an-external-wiki
-func (s *ServicesService) SetExternalWikiService(pid interface{}, opt *SetExternalWikiServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetExternalWikiService(pid interface{}, opt *SetExternalWikiServiceOptions, options ...RequestOptionFunc) (*ExternalWikiService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/external-wiki", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(ExternalWikiService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteExternalWikiService deletes External Wiki service for project.
@@ -733,19 +773,25 @@ type SetGithubServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-github
-func (s *ServicesService) SetGithubService(pid interface{}, opt *SetGithubServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetGithubService(pid interface{}, opt *SetGithubServiceOptions, options ...RequestOptionFunc) (*GithubService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/github", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(GithubService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteGithubService deletes Github service for a project
@@ -830,19 +876,25 @@ type SetHarborServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-harbor
-func (s *ServicesService) SetHarborService(pid interface{}, opt *SetHarborServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetHarborService(pid interface{}, opt *SetHarborServiceOptions, options ...RequestOptionFunc) (*HarborService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/integrations/harbor", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(HarborService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteHarborService deletes Harbor service for a project.
@@ -878,22 +930,24 @@ type SlackApplication struct {
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#gitlab-for-slack-app
 type SlackApplicationProperties struct {
-	Channel                   string `json:"channel"`
-	NotifyOnlyBrokenPipelines bool   `json:"notify_only_broken_pipelines"`
-	BranchesToBeNotified      string `json:"branches_to_be_notified"`
-	AlertEvents               bool   `json:"alert_events"`
-	IssuesEvents              bool   `json:"issues_events"`
-	ConfidentialIssuesEvents  bool   `json:"confidential_issues_events"`
-	MergeRequestsEvents       bool   `json:"merge_requests_events"`
-	NoteEvents                bool   `json:"note_events"`
-	ConfidentialNoteEvents    bool   `json:"confidential_note_events"`
-	DeploymentEvents          bool   `json:"deployment_events"`
-	IncidentsEvents           bool   `json:"incidents_events"`
-	PipelineEvents            bool   `json:"pipeline_events"`
-	PushEvents                bool   `json:"push_events"`
-	TagPushEvents             bool   `json:"tag_push_events"`
-	VulnerabilityEvents       bool   `json:"vulnerability_events"`
-	WikiPageEvents            bool   `json:"wiki_page_events"`
+	Channel                    string `json:"channel"`
+	NotifyOnlyBrokenPipelines  bool   `json:"notify_only_broken_pipelines"`
+	BranchesToBeNotified       string `json:"branches_to_be_notified"`
+	LabelsToBeNotified         string `json:"labels_to_be_notified"`
+	LabelsToBeNotifiedBehavior string `json:"labels_to_be_notified_behavior"`
+	PushChannel                string `json:"push_channel"`
+	IssueChannel               string `json:"issue_channel"`
+	ConfidentialIssueChannel   string `json:"confidential_issue_channel"`
+	MergeRequestChannel        string `json:"merge_request_channel"`
+	NoteChannel                string `json:"note_channel"`
+	ConfidentialNoteChannel    string `json:"confidential_note_channel"`
+	TagPushChannel             string `json:"tag_push_channel"`
+	PipelineChannel            string `json:"pipeline_channel"`
+	WikiPageChannel            string `json:"wiki_page_channel"`
+	DeploymentChannel          string `json:"deployment_channel"`
+	IncidentChannel            string `json:"incident_channel"`
+	VulnerabilityChannel       string `json:"vulnerability_channel"`
+	AlertChannel               string `json:"alert_channel"`
 
 	// Deprecated: This parameter has been replaced with BranchesToBeNotified.
 	NotifyOnlyDefaultBranch bool `json:"notify_only_default_branch"`
@@ -931,22 +985,38 @@ func (s *ServicesService) GetSlackApplication(pid interface{}, options ...Reques
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-gitlab-for-slack-app
 type SetSlackApplicationOptions struct {
-	Channel                   *string `url:"channel,omitempty" json:"channel,omitempty"`
-	NotifyOnlyBrokenPipelines *bool   `url:"notify_only_broken_pipelines,omitempty" json:"notify_only_broken_pipelines,omitempty"`
-	BranchesToBeNotified      *string `url:"branches_to_be_notified,omitempty" json:"branches_to_be_notified,omitempty"`
-	AlertEvents               *bool   `url:"alert_events,omitempty" json:"alert_events,omitempty"`
-	IssuesEvents              *bool   `url:"issues_events,omitempty" json:"issues_events,omitempty"`
-	ConfidentialIssuesEvents  *bool   `url:"confidential_issues_events,omitempty" json:"confidential_issues_events,omitempty"`
-	MergeRequestsEvents       *bool   `url:"merge_requests_events,omitempty" json:"merge_requests_events,omitempty"`
-	NoteEvents                *bool   `url:"note_events,omitempty" json:"note_events,omitempty"`
-	ConfidentialNoteEvents    *bool   `url:"confidential_note_events,omitempty" json:"confidential_note_events,omitempty"`
-	DeploymentEvents          *bool   `url:"deployment_events,omitempty" json:"deployment_events,omitempty"`
-	IncidentsEvents           *bool   `url:"incidents_events,omitempty" json:"incidents_events,omitempty"`
-	PipelineEvents            *bool   `url:"pipeline_events,omitempty" json:"pipeline_events,omitempty"`
-	PushEvents                *bool   `url:"push_events,omitempty" json:"push_events,omitempty"`
-	TagPushEvents             *bool   `url:"tag_push_events,omitempty" json:"tag_push_events,omitempty"`
-	VulnerabilityEvents       *bool   `url:"vulnerability_events,omitempty" json:"vulnerability_events,omitempty"`
-	WikiPageEvents            *bool   `url:"wiki_page_events,omitempty" json:"wiki_page_events,omitempty"`
+	Channel                    *string `url:"channel,omitempty" json:"channel,omitempty"`
+	NotifyOnlyBrokenPipelines  *bool   `url:"notify_only_broken_pipelines,omitempty" json:"notify_only_broken_pipelines,omitempty"`
+	BranchesToBeNotified       *string `url:"branches_to_be_notified,omitempty" json:"branches_to_be_notified,omitempty"`
+	AlertEvents                *bool   `url:"alert_events,omitempty" json:"alert_events,omitempty"`
+	IssuesEvents               *bool   `url:"issues_events,omitempty" json:"issues_events,omitempty"`
+	ConfidentialIssuesEvents   *bool   `url:"confidential_issues_events,omitempty" json:"confidential_issues_events,omitempty"`
+	MergeRequestsEvents        *bool   `url:"merge_requests_events,omitempty" json:"merge_requests_events,omitempty"`
+	NoteEvents                 *bool   `url:"note_events,omitempty" json:"note_events,omitempty"`
+	ConfidentialNoteEvents     *bool   `url:"confidential_note_events,omitempty" json:"confidential_note_events,omitempty"`
+	DeploymentEvents           *bool   `url:"deployment_events,omitempty" json:"deployment_events,omitempty"`
+	IncidentsEvents            *bool   `url:"incidents_events,omitempty" json:"incidents_events,omitempty"`
+	PipelineEvents             *bool   `url:"pipeline_events,omitempty" json:"pipeline_events,omitempty"`
+	PushEvents                 *bool   `url:"push_events,omitempty" json:"push_events,omitempty"`
+	TagPushEvents              *bool   `url:"tag_push_events,omitempty" json:"tag_push_events,omitempty"`
+	VulnerabilityEvents        *bool   `url:"vulnerability_events,omitempty" json:"vulnerability_events,omitempty"`
+	WikiPageEvents             *bool   `url:"wiki_page_events,omitempty" json:"wiki_page_events,omitempty"`
+	LabelsToBeNotified         *string `url:"labels_to_be_notified,omitempty" json:"labels_to_be_notified,omitempty"`
+	LabelsToBeNotifiedBehavior *string `url:"labels_to_be_notified_behavior,omitempty" json:"labels_to_be_notified_behavior,omitempty"`
+	PushChannel                *string `url:"push_channel,omitempty" json:"push_channel,omitempty"`
+	IssueChannel               *string `url:"issue_channel,omitempty" json:"issue_channel,omitempty"`
+	ConfidentialIssueChannel   *string `url:"confidential_issue_channel,omitempty" json:"confidential_issue_channel,omitempty"`
+	MergeRequestChannel        *string `url:"merge_request_channel,omitempty" json:"merge_request_channel,omitempty"`
+	NoteChannel                *string `url:"note_channel,omitempty" json:"note_channel,omitempty"`
+	ConfidentialNoteChannel    *string `url:"confidential_note_channel,omitempty" json:"confidential_note_channel,omitempty"`
+	TagPushChannel             *string `url:"tag_push_channel,omitempty" json:"tag_push_channel,omitempty"`
+	PipelineChannel            *string `url:"pipeline_channel,omitempty" json:"pipeline_channel,omitempty"`
+	WikiPageChannel            *string `url:"wiki_page_channel,omitempty" json:"wiki_page_channel,omitempty"`
+	DeploymentChannel          *string `url:"deployment_channel,omitempty" json:"deployment_channel,omitempty"`
+	IncidentChannel            *string `url:"incident_channel,omitempty" json:"incident_channel,omitempty"`
+	VulnerabilityChannel       *string `url:"vulnerability_channel,omitempty" json:"vulnerability_channel,omitempty"`
+	AlertChannel               *string `url:"alert_channel,omitempty" json:"alert_channel,omitempty"`
+	UseInheritedSettings       *bool   `url:"use_inherited_settings,omitempty" json:"use_inherited_settings,omitempty"`
 
 	// Deprecated: This parameter has been replaced with BranchesToBeNotified.
 	NotifyOnlyDefaultBranch *bool `url:"notify_only_default_branch,omitempty" json:"notify_only_default_branch,omitempty"`
@@ -956,19 +1026,25 @@ type SetSlackApplicationOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-gitlab-for-slack-app
-func (s *ServicesService) SetSlackApplication(pid interface{}, opt *SetSlackApplicationOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetSlackApplication(pid interface{}, opt *SetSlackApplicationOptions, options ...RequestOptionFunc) (*SlackApplication, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/integrations/gitlab-slack-application", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(SlackApplication)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DisableSlackApplication disable the GitLab for Slack app integration for a project.
@@ -1151,19 +1227,25 @@ type SetJenkinsCIServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-jenkins
-func (s *ServicesService) SetJenkinsCIService(pid interface{}, opt *SetJenkinsCIServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetJenkinsCIService(pid interface{}, opt *SetJenkinsCIServiceOptions, options ...RequestOptionFunc) (*JenkinsCIService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/jenkins", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(JenkinsCIService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteJenkinsCIService deletes Jenkins CI service for project.
@@ -1306,19 +1388,25 @@ type SetJiraServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#edit-jira-service
-func (s *ServicesService) SetJiraService(pid interface{}, opt *SetJiraServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetJiraService(pid interface{}, opt *SetJiraServiceOptions, options ...RequestOptionFunc) (*JiraService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/integrations/jira", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(JiraService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteJiraService deletes Jira service for project.
@@ -1427,6 +1515,50 @@ type SetMattermostServiceOptions struct {
 	WikiPageChannel           *string `url:"wiki_page_channel,omitempty" json:"wiki_page_channel,omitempty"`
 }
 
+// SetMattermostService sets Mattermost service for a project.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/integrations.html#createedit-mattermost-notifications-service
+func (s *ServicesService) SetMattermostService(pid interface{}, opt *SetMattermostServiceOptions, options ...RequestOptionFunc) (*MattermostService, *Response, error) {
+	project, err := parseID(pid)
+	if err != nil {
+		return nil, nil, err
+	}
+	u := fmt.Sprintf("projects/%s/services/mattermost", PathEscape(project))
+
+	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	svc := new(MattermostService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
+}
+
+// DeleteMattermostService deletes Mattermost service for project.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ee/api/integrations.html#delete-mattermost-notifications-service
+func (s *ServicesService) DeleteMattermostService(pid interface{}, options ...RequestOptionFunc) (*Response, error) {
+	project, err := parseID(pid)
+	if err != nil {
+		return nil, err
+	}
+	u := fmt.Sprintf("projects/%s/services/mattermost", PathEscape(project))
+
+	req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
+	if err != nil {
+		return nil, err
+	}
+
+	return s.client.Do(req, nil)
+}
+
 // MattermostSlashCommandsService represents Mattermost slash commands settings.
 //
 // GitLab API docs:
@@ -1484,19 +1616,25 @@ type SetMattermostSlashCommandsServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#createedit-mattermost-slash-command-integration
-func (s *ServicesService) SetMattermostSlashCommandsService(pid interface{}, opt *SetMattermostSlashCommandsServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetMattermostSlashCommandsService(pid interface{}, opt *SetMattermostSlashCommandsServiceOptions, options ...RequestOptionFunc) (*MattermostSlashCommandsService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/mattermost-slash-commands", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(MattermostSlashCommandsService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteMattermostSlashCommandsService deletes Mattermost slash commands service for project.
@@ -1518,44 +1656,6 @@ func (s *ServicesService) DeleteMattermostSlashCommandsService(pid interface{},
 	return s.client.Do(req, nil)
 }
 
-// SetMattermostService sets Mattermost service for a project.
-//
-// GitLab API docs:
-// https://docs.gitlab.com/ee/api/integrations.html#createedit-mattermost-notifications-service
-func (s *ServicesService) SetMattermostService(pid interface{}, opt *SetMattermostServiceOptions, options ...RequestOptionFunc) (*Response, error) {
-	project, err := parseID(pid)
-	if err != nil {
-		return nil, err
-	}
-	u := fmt.Sprintf("projects/%s/services/mattermost", PathEscape(project))
-
-	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(req, nil)
-}
-
-// DeleteMattermostService deletes Mattermost service for project.
-//
-// GitLab API docs:
-// https://docs.gitlab.com/ee/api/integrations.html#delete-mattermost-notifications-service
-func (s *ServicesService) DeleteMattermostService(pid interface{}, options ...RequestOptionFunc) (*Response, error) {
-	project, err := parseID(pid)
-	if err != nil {
-		return nil, err
-	}
-	u := fmt.Sprintf("projects/%s/services/mattermost", PathEscape(project))
-
-	req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
-	if err != nil {
-		return nil, err
-	}
-
-	return s.client.Do(req, nil)
-}
-
 // MicrosoftTeamsService represents Microsoft Teams service settings.
 //
 // GitLab API docs:
@@ -1632,18 +1732,25 @@ type SetMicrosoftTeamsServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#create-edit-microsoft-teams-service
-func (s *ServicesService) SetMicrosoftTeamsService(pid interface{}, opt *SetMicrosoftTeamsServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetMicrosoftTeamsService(pid interface{}, opt *SetMicrosoftTeamsServiceOptions, options ...RequestOptionFunc) (*MicrosoftTeamsService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/microsoft-teams", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
-	return s.client.Do(req, nil)
+
+	svc := new(MicrosoftTeamsService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteMicrosoftTeamsService deletes Microsoft Teams service for project.
@@ -1728,19 +1835,25 @@ type SetPipelinesEmailServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#pipeline-emails
-func (s *ServicesService) SetPipelinesEmailService(pid interface{}, opt *SetPipelinesEmailServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetPipelinesEmailService(pid interface{}, opt *SetPipelinesEmailServiceOptions, options ...RequestOptionFunc) (*PipelinesEmailService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/pipelines-email", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(PipelinesEmailService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeletePipelinesEmailService deletes Pipelines Email service settings for a project.
@@ -1821,19 +1934,25 @@ type SetPrometheusServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#createedit-prometheus-service
-func (s *ServicesService) SetPrometheusService(pid interface{}, opt *SetPrometheusServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetPrometheusService(pid interface{}, opt *SetPrometheusServiceOptions, options ...RequestOptionFunc) (*PrometheusService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/prometheus", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(PrometheusService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeletePrometheusService deletes Prometheus service settings for a project.
@@ -1916,19 +2035,25 @@ type SetRedmineServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-redmine
-func (s *ServicesService) SetRedmineService(pid interface{}, opt *SetRedmineServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetRedmineService(pid interface{}, opt *SetRedmineServiceOptions, options ...RequestOptionFunc) (*RedmineService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/integrations/redmine", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(RedmineService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteRedmineService deletes Redmine service for project.
@@ -2049,19 +2174,25 @@ type SetSlackServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#edit-slack-service
-func (s *ServicesService) SetSlackService(pid interface{}, opt *SetSlackServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetSlackService(pid interface{}, opt *SetSlackServiceOptions, options ...RequestOptionFunc) (*SlackService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/slack", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(SlackService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteSlackService deletes Slack service for project.
@@ -2138,19 +2269,25 @@ type SetSlackSlashCommandsServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/13.12/ee/api/integrations.html#createedit-slack-slash-command-service
-func (s *ServicesService) SetSlackSlashCommandsService(pid interface{}, opt *SetSlackSlashCommandsServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetSlackSlashCommandsService(pid interface{}, opt *SetSlackSlashCommandsServiceOptions, options ...RequestOptionFunc) (*SlackSlashCommandsService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/slack-slash-commands", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(SlackSlashCommandsService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteSlackSlashCommandsService deletes Slack slash commands service for project.
@@ -2241,19 +2378,25 @@ type SetTelegramServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#set-up-telegram
-func (s *ServicesService) SetTelegramService(pid interface{}, opt *SetTelegramServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetTelegramService(pid interface{}, opt *SetTelegramServiceOptions, options ...RequestOptionFunc) (*TelegramService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/telegram", PathEscape(project))
 
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	svc := new(TelegramService)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteTelegramService deletes Telegram service for project.
@@ -2336,19 +2479,25 @@ type SetYouTrackServiceOptions struct {
 //
 // GitLab API docs:
 // https://docs.gitlab.com/ee/api/integrations.html#createedit-youtrack-service
-func (s *ServicesService) SetYouTrackService(pid interface{}, opt *SetYouTrackServiceOptions, options ...RequestOptionFunc) (*Response, error) {
+func (s *ServicesService) SetYouTrackService(pid interface{}, opt *SetYouTrackServiceOptions, options ...RequestOptionFunc) (*YouTrackService, *Response, error) {
 	project, err := parseID(pid)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 	u := fmt.Sprintf("projects/%s/services/youtrack", PathEscape(project))
 
+	svc := new(YouTrackService)
 	req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
 	if err != nil {
-		return nil, err
+		return nil, nil, err
 	}
 
-	return s.client.Do(req, nil)
+	resp, err := s.client.Do(req, svc)
+	if err != nil {
+		return nil, nil, err
+	}
+
+	return svc, resp, nil
 }
 
 // DeleteYouTrackService deletes YouTrack service settings for a project.
diff --git a/services_test.go b/services_test.go
index 53596eaca..543c28d64 100644
--- a/services_test.go
+++ b/services_test.go
@@ -85,6 +85,7 @@ func TestSetCustomIssueTrackerService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/custom-issue-tracker", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetCustomIssueTrackerServiceOptions{
@@ -93,7 +94,7 @@ func TestSetCustomIssueTrackerService(t *testing.T) {
 		ProjectURL:  Ptr("3"),
 	}
 
-	_, err := client.Services.SetCustomIssueTrackerService(1, opt)
+	_, _, err := client.Services.SetCustomIssueTrackerService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetCustomIssueTrackerService returns an error: %v", err)
 	}
@@ -156,6 +157,7 @@ func TestSetDataDogService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/datadog", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetDataDogServiceOptions{
@@ -168,7 +170,7 @@ func TestSetDataDogService(t *testing.T) {
 		ArchiveTraceEvents: Bool(false),
 	}
 
-	_, err := client.Services.SetDataDogService(1, opt)
+	_, _, err := client.Services.SetDataDogService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetDataDogService returns an error: %v", err)
 	}
@@ -210,13 +212,14 @@ func TestSetDiscordService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/discord", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetDiscordServiceOptions{
 		WebHook: Ptr("webhook_uri"),
 	}
 
-	_, err := client.Services.SetDiscordService(1, opt)
+	_, _, err := client.Services.SetDiscordService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetDiscordService returns an error: %v", err)
 	}
@@ -258,11 +261,12 @@ func TestSetDroneCIService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/drone-ci", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetDroneCIServiceOptions{Ptr("token"), Ptr("drone-url"), Ptr(true), nil, nil, nil}
 
-	_, err := client.Services.SetDroneCIService(1, opt)
+	_, _, err := client.Services.SetDroneCIService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetDroneCIService returns an error: %v", err)
 	}
@@ -304,11 +308,12 @@ func TestSetEmailsOnPushService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/integrations/emails-on-push", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetEmailsOnPushServiceOptions{Ptr("t"), Ptr(true), Ptr(true), Ptr(true), Ptr(true), Ptr("t")}
 
-	_, err := client.Services.SetEmailsOnPushService(1, opt)
+	_, _, err := client.Services.SetEmailsOnPushService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetEmailsOnPushService returns an error: %v", err)
 	}
@@ -350,6 +355,7 @@ func TestSetHarborService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/integrations/harbor", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetHarborServiceOptions{
@@ -360,7 +366,7 @@ func TestSetHarborService(t *testing.T) {
 		UseInheritedSettings: Ptr(false),
 	}
 
-	_, err := client.Services.SetHarborService(1, opt)
+	_, _, err := client.Services.SetHarborService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetHarborService returns an error: %v", err)
 	}
@@ -402,11 +408,12 @@ func TestSetSlackApplication(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/integrations/gitlab-slack-application", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetSlackApplicationOptions{Channel: Ptr("#channel1"), NoteEvents: Ptr(true), AlertEvents: Ptr(true)}
 
-	_, err := client.Services.SetSlackApplication(1, opt)
+	_, _, err := client.Services.SetSlackApplication(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetSlackApplication returns an error: %v", err)
 	}
@@ -501,6 +508,7 @@ func TestSetJiraService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/integrations/jira", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetJiraServiceOptions{
@@ -521,7 +529,7 @@ func TestSetJiraService(t *testing.T) {
 		UseInheritedSettings:         Ptr(true),
 	}
 
-	_, err := client.Services.SetJiraService(1, opt)
+	_, _, err := client.Services.SetJiraService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetJiraService returns an error: %v", err)
 	}
@@ -532,6 +540,7 @@ func TestSetJiraServiceProjecKeys(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/integrations/jira", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetJiraServiceOptions{
@@ -552,7 +561,7 @@ func TestSetJiraServiceProjecKeys(t *testing.T) {
 		UseInheritedSettings:         Ptr(true),
 	}
 
-	_, err := client.Services.SetJiraService(1, opt)
+	_, _, err := client.Services.SetJiraService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetJiraService returns an error: %v", err)
 	}
@@ -563,6 +572,7 @@ func TestSetJiraServiceAuthTypeBasicAuth(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/integrations/jira", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetJiraServiceOptions{
@@ -572,7 +582,7 @@ func TestSetJiraServiceAuthTypeBasicAuth(t *testing.T) {
 		JiraAuthType: Ptr(0),
 	}
 
-	_, err := client.Services.SetJiraService(1, opt)
+	_, _, err := client.Services.SetJiraService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetJiraService returns an error: %v", err)
 	}
@@ -583,6 +593,7 @@ func TestSetJiraServiceAuthTypeTokenAuth(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/integrations/jira", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetJiraServiceOptions{
@@ -591,7 +602,7 @@ func TestSetJiraServiceAuthTypeTokenAuth(t *testing.T) {
 		JiraAuthType: Ptr(1),
 	}
 
-	_, err := client.Services.SetJiraService(1, opt)
+	_, _, err := client.Services.SetJiraService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetJiraService returns an error: %v", err)
 	}
@@ -633,6 +644,7 @@ func TestSetMattermostService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/mattermost", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetMattermostServiceOptions{
@@ -641,7 +653,7 @@ func TestSetMattermostService(t *testing.T) {
 		Channel:  Ptr("#development"),
 	}
 
-	_, err := client.Services.SetMattermostService(1, opt)
+	_, _, err := client.Services.SetMattermostService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetMasttermostService returns an error: %v", err)
 	}
@@ -683,6 +695,7 @@ func TestSetMattermostSlashCommandsService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/mattermost-slash-commands", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetMattermostSlashCommandsServiceOptions{
@@ -690,7 +703,7 @@ func TestSetMattermostSlashCommandsService(t *testing.T) {
 		Username: Ptr("username"),
 	}
 
-	_, err := client.Services.SetMattermostSlashCommandsService(1, opt)
+	_, _, err := client.Services.SetMattermostSlashCommandsService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetMattermostSlashCommandsService returns an error: %v", err)
 	}
@@ -732,6 +745,7 @@ func TestSetPipelinesEmailService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/pipelines-email", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetPipelinesEmailServiceOptions{
@@ -743,7 +757,7 @@ func TestSetPipelinesEmailService(t *testing.T) {
 		PipelineEvents:            nil,
 	}
 
-	_, err := client.Services.SetPipelinesEmailService(1, opt)
+	_, _, err := client.Services.SetPipelinesEmailService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetPipelinesEmailService returns an error: %v", err)
 	}
@@ -785,11 +799,12 @@ func TestSetPrometheusService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/prometheus", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetPrometheusServiceOptions{Ptr("t"), Ptr("u"), Ptr("a")}
 
-	_, err := client.Services.SetPrometheusService(1, opt)
+	_, _, err := client.Services.SetPrometheusService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetDroneCIService returns an error: %v", err)
 	}
@@ -831,11 +846,12 @@ func TestSetRedmineService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/integrations/redmine", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetRedmineServiceOptions{Ptr("t"), Ptr("u"), Ptr("a"), Ptr(false)}
 
-	_, err := client.Services.SetRedmineService(1, opt)
+	_, _, err := client.Services.SetRedmineService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetRedmineService returns an error: %v", err)
 	}
@@ -877,6 +893,7 @@ func TestSetSlackService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/slack", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetSlackServiceOptions{
@@ -885,7 +902,7 @@ func TestSetSlackService(t *testing.T) {
 		Channel:  Ptr("#development"),
 	}
 
-	_, err := client.Services.SetSlackService(1, opt)
+	_, _, err := client.Services.SetSlackService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetSlackService returns an error: %v", err)
 	}
@@ -927,13 +944,14 @@ func TestSetSlackSlashCommandsService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/slack-slash-commands", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetSlackSlashCommandsServiceOptions{
 		Token: Ptr("token"),
 	}
 
-	_, err := client.Services.SetSlackSlashCommandsService(1, opt)
+	_, _, err := client.Services.SetSlackSlashCommandsService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetSlackSlashCommandsService returns an error: %v", err)
 	}
@@ -1036,6 +1054,7 @@ func TestSetTelegramService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/telegram", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetTelegramServiceOptions{
@@ -1054,7 +1073,7 @@ func TestSetTelegramService(t *testing.T) {
 		WikiPageEvents:            Ptr(true),
 	}
 
-	_, err := client.Services.SetTelegramService(1, opt)
+	_, _, err := client.Services.SetTelegramService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetTelegramService returns an error: %v", err)
 	}
@@ -1096,6 +1115,7 @@ func TestSetYouTrackService(t *testing.T) {
 
 	mux.HandleFunc("/api/v4/projects/1/services/youtrack", func(w http.ResponseWriter, r *http.Request) {
 		testMethod(t, r, http.MethodPut)
+		fmt.Fprint(w, `{"id":1, "properties": {}}`)
 	})
 
 	opt := &SetYouTrackServiceOptions{
@@ -1105,7 +1125,7 @@ func TestSetYouTrackService(t *testing.T) {
 		PushEvents:  Ptr(true),
 	}
 
-	_, err := client.Services.SetYouTrackService(1, opt)
+	_, _, err := client.Services.SetYouTrackService(1, opt)
 	if err != nil {
 		t.Fatalf("Services.SetYouTrackService returns an error: %v", err)
 	}