1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# frozen_string_literal: true
module API
class Labels < ::API::Base
include PaginationParams
helpers ::API::Helpers::LabelHelpers
before { authenticate! }
feature_category :issue_tracking
LABEL_ENDPOINT_REQUIREMENTS = API::NAMESPACE_OR_PROJECT_REQUIREMENTS.merge(
name: API::NO_SLASH_URL_PART_REGEX,
label_id: API::NO_SLASH_URL_PART_REGEX)
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects, requirements: LABEL_ENDPOINT_REQUIREMENTS do
desc 'Get all labels of the project' do
success Entities::ProjectLabel
end
params do
optional :with_counts, type: Boolean, default: false,
desc: 'Include issue and merge request counts'
optional :include_ancestor_groups, type: Boolean, default: true,
desc: 'Include ancestor groups'
optional :search, type: String,
desc: 'Keyword to filter labels by. This feature was added in GitLab 13.6'
use :pagination
end
get ':id/labels' do
get_labels(user_project, Entities::ProjectLabel, declared_params)
end
desc 'Get a single label' do
detail 'This feature was added in GitLab 12.4.'
success Entities::ProjectLabel
end
params do
optional :include_ancestor_groups, type: Boolean, default: true,
desc: 'Include ancestor groups'
end
get ':id/labels/:name' do
get_label(user_project, Entities::ProjectLabel, declared_params)
end
desc 'Create a new label' do
success Entities::ProjectLabel
end
params do
use :label_create_params
optional :priority, type: Integer, desc: 'The priority of the label', allow_blank: true
end
post ':id/labels' do
create_label(user_project, Entities::ProjectLabel)
end
desc 'Update an existing label. At least one optional parameter is required.' do
detail 'This feature was deprecated in GitLab 12.4.'
success Entities::ProjectLabel
end
params do
optional :label_id, type: Integer, desc: 'The ID of the label to be updated'
optional :name, type: String, desc: 'The name of the label to be updated'
use :project_label_update_params
exactly_one_of :label_id, :name
end
put ':id/labels' do
update_label(user_project, Entities::ProjectLabel)
end
desc 'Delete an existing label' do
detail 'This feature was deprecated in GitLab 12.4.'
success Entities::ProjectLabel
end
params do
optional :label_id, type: Integer, desc: 'The ID of the label to be deleted'
optional :name, type: String, desc: 'The name of the label to be deleted'
exactly_one_of :label_id, :name
end
delete ':id/labels' do
delete_label(user_project)
end
desc 'Promote a label to a group label' do
detail 'This feature was added in GitLab 12.3 and deprecated in GitLab 12.4.'
success Entities::GroupLabel
end
params do
requires :name, type: String, desc: 'The name of the label to be promoted'
end
put ':id/labels/promote' do
promote_label(user_project)
end
desc 'Update an existing label. At least one optional parameter is required.' do
detail 'This feature was added in GitLab 12.4.'
success Entities::ProjectLabel
end
params do
requires :name, type: String, desc: 'The name or id of the label to be updated'
use :project_label_update_params
end
put ':id/labels/:name' do
update_label(user_project, Entities::ProjectLabel)
end
desc 'Delete an existing label' do
detail 'This feature was added in GitLab 12.4.'
success Entities::ProjectLabel
end
params do
requires :name, type: String, desc: 'The name or id of the label to be deleted'
end
delete ':id/labels/:name' do
delete_label(user_project)
end
desc 'Promote a label to a group label' do
detail 'This feature was added in GitLab 12.4.'
success Entities::GroupLabel
end
params do
requires :name, type: String, desc: 'The name or id of the label to be promoted'
end
put ':id/labels/:name/promote' do
promote_label(user_project)
end
end
end
end
|