Commit 1e72dd10 authored by Mark Fletcher's avatar Mark Fletcher

Support new chat notifications parameters in Services API

+ Add support for the new separate channel and events settings
* Dry up chat notifications in the service properties definitions
parent 2972352a
---
title: Support new chat notifications parameters in Services API
merge_request: 11435
author:
type: added
...@@ -803,11 +803,33 @@ Set Slack service for a project. ...@@ -803,11 +803,33 @@ Set Slack service for a project.
PUT /projects/:id/services/slack PUT /projects/:id/services/slack
``` ```
Parameters: >**Note:** Specific event parameters (e.g. `push_events` flag and `push_channel`) were [introduced in v10.4][11435]
#### Parameters
- `webhook` (**required**) - https://hooks.slack.com/services/... | Parameter | Type | Required | Description |
- `username` (optional) - username | --------- | ---- | -------- | ----------- |
- `channel` (optional) - #channel | `webhook` | string | true | https://hooks.slack.com/services/... |
| `username` | string | false | username |
| `channel` | string | false | Default channel to use if others are not configured |
| `notify_only_broken_pipelines` | boolean | false | Send notifications for broken pipelines |
| `notify_only_default_branch` | boolean | false | Send notifications only for the default branch |
| `push_events` | boolean | false | Enable notifications for push events |
| `issues_events` | boolean | false | Enable notifications for issue events |
| `confidential_issues_events` | boolean | false | Enable notifications for confidential issue events |
| `merge_requests_events` | boolean | false | Enable notifications for merge request events |
| `tag_push_events` | boolean | false | Enable notifications for tag push events |
| `note_events` | boolean | false | Enable notifications for note events |
| `pipeline_events` | boolean | false | Enable notifications for pipeline events |
| `wiki_page_events` | boolean | false | Enable notifications for wiki page events |
| `push_channel` | string | false | The name of the channel to receive push events notifications |
| `issue_channel` | string | false | The name of the channel to receive issues events notifications |
| `confidential_issue_channel` | string | false | The name of the channel to receive confidential issues events notifications |
| `merge_request_channel` | string | false | The name of the channel to receive merge request events notifications |
| `note_channel` | string | false | The name of the channel to receive note events notifications |
| `tag_push_channel` | string | false | The name of the channel to receive tag push events notifications |
| `pipeline_channel` | string | false | The name of the channel to receive pipeline events notifications |
| `wiki_page_channel` | string | false | The name of the channel to receive wiki page events notifications |
### Delete Slack service ### Delete Slack service
...@@ -837,11 +859,33 @@ Set Mattermost service for a project. ...@@ -837,11 +859,33 @@ Set Mattermost service for a project.
PUT /projects/:id/services/mattermost PUT /projects/:id/services/mattermost
``` ```
Parameters: >**Note:** Specific event parameters (e.g. `push_events` flag and `push_channel`) were [introduced in v10.4][11435]
- `webhook` (**required**) - https://mattermost.example/hooks/1298aff... #### Parameters
- `username` (optional) - username
- `channel` (optional) - #channel | Parameter | Type | Required | Description |
| --------- | ---- | -------- | ----------- |
| `webhook` | string | true | The Mattermost webhook. e.g. http://mattermost_host/hooks/... |
| `username` | string | false | username |
| `channel` | string | false | Default channel to use if others are not configured |
| `notify_only_broken_pipelines` | boolean | false | Send notifications for broken pipelines |
| `notify_only_default_branch` | boolean | false | Send notifications only for the default branch |
| `push_events` | boolean | false | Enable notifications for push events |
| `issues_events` | boolean | false | Enable notifications for issue events |
| `confidential_issues_events` | boolean | false | Enable notifications for confidential issue events |
| `merge_requests_events` | boolean | false | Enable notifications for merge request events |
| `tag_push_events` | boolean | false | Enable notifications for tag push events |
| `note_events` | boolean | false | Enable notifications for note events |
| `pipeline_events` | boolean | false | Enable notifications for pipeline events |
| `wiki_page_events` | boolean | false | Enable notifications for wiki page events |
| `push_channel` | string | false | The name of the channel to receive push events notifications |
| `issue_channel` | string | false | The name of the channel to receive issues events notifications |
| `confidential_issue_channel` | string | false | The name of the channel to receive confidential issues events notifications |
| `merge_request_channel` | string | false | The name of the channel to receive merge request events notifications |
| `note_channel` | string | false | The name of the channel to receive note events notifications |
| `tag_push_channel` | string | false | The name of the channel to receive tag push events notifications |
| `pipeline_channel` | string | false | The name of the channel to receive pipeline events notifications |
| `wiki_page_channel` | string | false | The name of the channel to receive wiki page events notifications |
### Delete Mattermost notifications service ### Delete Mattermost notifications service
...@@ -933,3 +977,5 @@ Get MockCI service settings for a project. ...@@ -933,3 +977,5 @@ Get MockCI service settings for a project.
``` ```
GET /projects/:id/services/mock-ci GET /projects/:id/services/mock-ci
``` ```
[11435]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/11435
...@@ -708,8 +708,9 @@ module API ...@@ -708,8 +708,9 @@ module API
class ProjectService < Grape::Entity class ProjectService < Grape::Entity
expose :id, :title, :created_at, :updated_at, :active expose :id, :title, :created_at, :updated_at, :active
expose :push_events, :issues_events, :merge_requests_events expose :push_events, :issues_events, :confidential_issues_events
expose :tag_push_events, :note_events, :pipeline_events expose :merge_requests_events, :tag_push_events, :note_events
expose :pipeline_events, :wiki_page_events
expose :job_events expose :job_events
# Expose serialized properties # Expose serialized properties
expose :properties do |service, options| expose :properties do |service, options|
......
module API module API
class Services < Grape::API class Services < Grape::API
chat_notification_settings = [
{
required: true,
name: :webhook,
type: String,
desc: 'The chat webhook'
},
{
required: false,
name: :username,
type: String,
desc: 'The chat username'
},
{
required: false,
name: :channel,
type: String,
desc: 'The default chat channel'
}
]
chat_notification_flags = [
{
required: false,
name: :notify_only_broken_pipelines,
type: Boolean,
desc: 'Send notifications for broken pipelines'
},
{
required: false,
name: :notify_only_default_branch,
type: Boolean,
desc: 'Send notifications only for the default branch'
}
]
chat_notification_channels = [
{
required: false,
name: :push_channel,
type: String,
desc: 'The name of the channel to receive push_events notifications'
},
{
required: false,
name: :issue_channel,
type: String,
desc: 'The name of the channel to receive issues_events notifications'
},
{
required: false,
name: :confidential_issue_channel,
type: String,
desc: 'The name of the channel to receive confidential_issues_events notifications'
},
{
required: false,
name: :merge_request_channel,
type: String,
desc: 'The name of the channel to receive merge_requests_events notifications'
},
{
required: false,
name: :note_channel,
type: String,
desc: 'The name of the channel to receive note_events notifications'
},
{
required: false,
name: :tag_push_channel,
type: String,
desc: 'The name of the channel to receive tag_push_events notifications'
},
{
required: false,
name: :pipeline_channel,
type: String,
desc: 'The name of the channel to receive pipeline_events notifications'
},
{
required: false,
name: :wiki_page_channel,
type: String,
desc: 'The name of the channel to receive wiki_page_events notifications'
}
]
chat_notification_events = [
{
required: false,
name: :push_events,
type: Boolean,
desc: 'Enable notifications for push_events'
},
{
required: false,
name: :issues_events,
type: Boolean,
desc: 'Enable notifications for issues_events'
},
{
required: false,
name: :confidential_issues_events,
type: Boolean,
desc: 'Enable notifications for confidential_issues_events'
},
{
required: false,
name: :merge_requests_events,
type: Boolean,
desc: 'Enable notifications for merge_requests_events'
},
{
required: false,
name: :note_events,
type: Boolean,
desc: 'Enable notifications for note_events'
},
{
required: false,
name: :tag_push_events,
type: Boolean,
desc: 'Enable notifications for tag_push_events'
},
{
required: false,
name: :pipeline_events,
type: Boolean,
desc: 'Enable notifications for pipeline_events'
},
{
required: false,
name: :wiki_page_events,
type: Boolean,
desc: 'Enable notifications for wiki_page_events'
}
]
services = { services = {
'asana' => [ 'asana' => [
{ {
...@@ -489,25 +627,11 @@ module API ...@@ -489,25 +627,11 @@ module API
} }
], ],
'slack' => [ 'slack' => [
{ chat_notification_settings,
required: true, chat_notification_flags,
name: :webhook, chat_notification_channels,
type: String, chat_notification_events
desc: 'The Slack webhook. e.g. https://hooks.slack.com/services/...' ].flatten,
},
{
required: false,
name: :new_issue_url,
type: String,
desc: 'The user name'
},
{
required: false,
name: :channel,
type: String,
desc: 'The channel name'
}
],
'microsoft-teams' => [ 'microsoft-teams' => [
{ {
required: true, required: true,
...@@ -517,19 +641,11 @@ module API ...@@ -517,19 +641,11 @@ module API
} }
], ],
'mattermost' => [ 'mattermost' => [
{ chat_notification_settings,
required: true, chat_notification_flags,
name: :webhook, chat_notification_channels,
type: String, chat_notification_events
desc: 'The Mattermost webhook. e.g. http://mattermost_host/hooks/...' ].flatten,
},
{
required: false,
name: :username,
type: String,
desc: 'The username to use to post the message'
}
],
'teamcity' => [ 'teamcity' => [
{ {
required: true, required: true,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment