# frozen_string_literal: true class Gitlab::Client # Defines methods related to group labels. # # @note Requires GitLab 11.8+ # @see https://docs.gitlab.com/ee/api/group_labels.html module GroupLabels # Gets a list of group's labels. # # @example # Gitlab.group_labels('globex') # # @param [Integer, String] group The ID or name of a group. # @return [Array] def group_labels(group, options = {}) get("/groups/#{url_encode group}/labels", query: options) end # Creates a new group label. # # @example # Gitlab.create_group_label('globex', 'Backlog', '#DD10AA') # # @param [Integer, String] group The ID or name of a group. # @param [String] name The name of a label. # @param [String] color The color of a label. # @param [Hash] options A customizable set of options. # @option options [String] :description The description of the label. # @return [Gitlab::ObjectifiedHash] Information about created label. def create_group_label(group, name, color, options = {}) post("/groups/#{url_encode group}/labels", body: options.merge(name: name, color: color)) end # Updates a group label. # # @example # Gitlab.edit_group_label('globex', 'Backlog', { new_name: 'Priority' }) # Gitlab.edit_group_label('globex', 'Backlog', { new_name: 'Priority', color: '#DD10AA' }) # # @param [Integer, String] group The ID or name of a group. # @param [String] name The name of a label. # @param [Hash] options A customizable set of options. # @option options [String] :new_name The new name of a label. # @option options [String] :color The color of a label. # @option options [String] :description The description of the label. # @return [Gitlab::ObjectifiedHash] Information about updated label. def edit_group_label(group, name, options = {}) put("/groups/#{url_encode group}/labels", body: options.merge(name: name)) end # Deletes a group label. # # @example # Gitlab.delete_group_label('globex', 'Backlog') # # @param [Integer, String] group The ID or name of a group. # @param [String] name The name of a label. # @return [Gitlab::ObjectifiedHash] Information about deleted label. def delete_group_label(group, name) delete("/groups/#{url_encode group}/labels", body: { name: name }) end # Subscribes the user to a group label to receive notifications # # @example # Gitlab.subscribe_to_group_label('globex', 'Backlog') # # @param [Integer, String] group The ID or name of a group. # @param [String] name The name of a label. # @return [Gitlab::ObjectifiedHash] Information about the label subscribed to. def subscribe_to_group_label(group, name) post("/groups/#{url_encode group}/labels/#{url_encode name}/subscribe") end # Unsubscribes the user from a group label to not receive notifications from it # # @example # Gitlab.unsubscribe_from_group_label('globex', 'Backlog') # # @param [Integer, String] group The ID or name of a group. # @param [String] name The name of a label. # @return [Gitlab::ObjectifiedHash] Information about the label unsubscribed from. def unsubscribe_from_group_label(group, name) post("/groups/#{url_encode group}/labels/#{url_encode name}/unsubscribe") end end end