diff --git a/changelogs/unreleased/56694-mark-group-level-labels-in-label-api-as-such.yml b/changelogs/unreleased/56694-mark-group-level-labels-in-label-api-as-such.yml new file mode 100644 index 0000000000000000000000000000000000000000..ae2d9e18e0bac6988bef219c36ae443293d3f15a --- /dev/null +++ b/changelogs/unreleased/56694-mark-group-level-labels-in-label-api-as-such.yml @@ -0,0 +1,5 @@ +--- +title: 'API: Indicate if label is a project label' +merge_request: 25219 +author: Robert Schilling +type: added diff --git a/doc/api/labels.md b/doc/api/labels.md index 5b5b04bc1d7e53e236d29a8e5a929b184b937955..eec55bff29452f7bf0377dd726c9aa12442ba9ea 100644 --- a/doc/api/labels.md +++ b/doc/api/labels.md @@ -30,7 +30,8 @@ Example response: "closed_issues_count": 0, "open_merge_requests_count": 1, "subscribed": false, - "priority": 10 + "priority": 10, + "is_project_label": true }, { "id" : 4, @@ -42,7 +43,8 @@ Example response: "closed_issues_count": 5, "open_merge_requests_count": 0, "subscribed": false, - "priority": null + "priority": null, + "is_project_label": true }, { "id" : 7, @@ -54,7 +56,8 @@ Example response: "closed_issues_count": 3, "open_merge_requests_count": 1, "subscribed": false, - "priority": null + "priority": null, + "is_project_label": true }, { "id" : 8, @@ -66,7 +69,8 @@ Example response: "closed_issues_count": 0, "open_merge_requests_count": 2, "subscribed": false, - "priority": null + "priority": null, + "is_project_label": false }, { "id" : 9, @@ -78,7 +82,8 @@ Example response: "closed_issues_count": 0, "open_merge_requests_count": 1, "subscribed": true, - "priority": null + "priority": null, + "is_project_label": true } ] ``` @@ -116,7 +121,8 @@ Example response: "closed_issues_count": 0, "open_merge_requests_count": 0, "subscribed": false, - "priority": null + "priority": null, + "is_project_label": true } ``` @@ -173,7 +179,8 @@ Example response: "closed_issues_count": 0, "open_merge_requests_count": 2, "subscribed": false, - "priority": null + "priority": null, + "is_project_label": true } ``` @@ -209,7 +216,8 @@ Example response: "closed_issues_count": 0, "open_merge_requests_count": 1, "subscribed": true, - "priority": null + "priority": null, + "is_project_label": true } ``` diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 173e86dfd3b47f73f6389da4b8f815a5ed182396..f3ff7e10eb748949672ff6d8078ee14172cd7a02 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -1032,6 +1032,9 @@ class ProjectLabel < Label expose :priority do |label, options| label.priority(options[:parent]) end + expose :is_project_label do |label, options| + label.is_a?(::ProjectLabel) + end end class List < Grape::Entity diff --git a/spec/requests/api/labels_spec.rb b/spec/requests/api/labels_spec.rb index 606fa9185d805f6170e03d1e28b87ae0d2273347..518181e4d93c741f7610e2e16d3ac4d1fe845dfa 100644 --- a/spec/requests/api/labels_spec.rb +++ b/spec/requests/api/labels_spec.rb @@ -22,7 +22,7 @@ expected_keys = %w( id name color text_color description open_issues_count closed_issues_count open_merge_requests_count - subscribed priority + subscribed priority is_project_label ) get api("/projects/#{project.id}/labels", user) @@ -47,6 +47,7 @@ expect(label1_response['description']).to be_nil expect(label1_response['priority']).to be_nil expect(label1_response['subscribed']).to be_falsey + expect(label1_response['is_project_label']).to be_truthy expect(group_label_response['open_issues_count']).to eq(1) expect(group_label_response['closed_issues_count']).to eq(0) @@ -57,6 +58,7 @@ expect(group_label_response['description']).to be_nil expect(group_label_response['priority']).to be_nil expect(group_label_response['subscribed']).to be_falsey + expect(group_label_response['is_project_label']).to be_falsey expect(priority_label_response['open_issues_count']).to eq(0) expect(priority_label_response['closed_issues_count']).to eq(0) @@ -67,6 +69,7 @@ expect(priority_label_response['description']).to be_nil expect(priority_label_response['priority']).to eq(3) expect(priority_label_response['subscribed']).to be_falsey + expect(priority_label_response['is_project_label']).to be_truthy end end