# frozen_string_literal: true class Gitlab::Client # Defines methods related to group issue boards. # @see https://docs.gitlab.com/ee/api/group_boards.html module GroupBoards # Lists Issue Boards in the given group. # # @example # Gitlab.group_boards(5) # # @param [Integer, String] group The ID or name of a group. # @return [Array] List of issue boards of the group def group_boards(group) get("/groups/#{url_encode group}/boards") end # Gets a single group issue board. # # @example # Gitlab.group_board(5, 1) # # @param [Integer, String] group The ID or name of a group. # @param [Integer] id The ID of the issue board. # @return [Gitlab::ObjectifiedHash] Returns information about a group issue board def group_board(group, id) get("/groups/#{url_encode group}/boards/#{id}") end # Creates a new group issue board. # # @example # Gitlab.create_group_board(5, 'Documentcloud') # # @param [Integer, String] group The ID or name of a group. # @param [String] name The name of the new board. # @return [Gitlab::ObjectifiedHash] Information about created group issue board. def create_group_board(group, name) body = { name: name } post("/groups/#{url_encode group}/boards", body: body) end # Updates a group issue board. # # @example # Gitlab.edit_group_board(5, 1, { name: 'DocumentCloud2' }) # Gitlab.edit_group_board(5, 1, { name: 'DocumentCloud2', assignee_id: 3 }) # # @param [Integer, String] group The ID or name of a group. # @param [Integer] id The ID of the issue board. # @param [Hash] options A customizable set of options. # @option options [String] :name(optional) The new name of the board. # @option options [Integer] :assignee_id(optional) The assignee the board should be scoped to. # @option options [Integer] :milestone_id(optional) The milestone the board should be scoped to. # @option options [String] :labels(optional) Comma-separated list of label names which the board should be scoped to. # @option options [Integer] :weight(optional) The weight range from 0 to 9, to which the board should be scoped to. # @return [Gitlab::ObjectifiedHash] Information about updated group issue board. def edit_group_board(group, id, options = {}) put("/groups/#{url_encode group}/boards/#{id}", body: options) end # Deletes a group issue board. # # @example # Gitlab.delete_group_board(5, 1) # # @param [Integer, String] group The ID or name of a group. # @param [Integer] id The ID of the issue board. # @return [void] This API call returns an empty response body. def delete_group_board(group, id) delete("/groups/#{url_encode group}/boards/#{id}") end # Get a list of the boards lists. Does not include open and closed lists # # @example # Gitlab.group_board_lists(5, 1) # # @param [Integer, String] group The ID or name of a group. # @param [Integer] board_id The ID of the group issue board. # @return [Array] List of boards lists of the group def group_board_lists(group, board_id) get("/groups/#{url_encode group}/boards/#{board_id}/lists") end # Get a single group issue board list. # # @example # Gitlab.group_board_list(5, 1, 1) # # @param [Integer, String] group The ID or name of a group. # @param [Integer] board_id The ID of the group issue board. # @param [Integer] list_id The ID of a boards list. # @return [Gitlab::ObjectifiedHash] Returns information about a single group issue board list def group_board_list(group, board_id, id) get("/groups/#{url_encode group}/boards/#{board_id}/lists/#{id}") end # Creates a new group issue board list. # # @example # Gitlab.create_group_board_list(5, 1) # # @param [Integer, String] group The ID or name of a group. # @param [Integer] board_id The ID of the group issue board. # @param [Integer] label_id The ID of a label. # @return [Gitlab::ObjectifiedHash] Information about created group issue board list. def create_group_board_list(group, board_id, label_id) body = { label_id: label_id } post("/groups/#{url_encode group}/boards/#{board_id}/lists", body: body) end # Updates an existing group issue board list. This call is used to change list position. # # @example # Gitlab.edit_group_board_list(5, 1, 1, { position: 1 }) # # @param [Integer, String] group The ID or name of a group. # @param [Integer] board_id The ID of the group issue board. # @param [Integer] list_id The ID of a boards list. # @param [Hash] options A customizable set of options. # @option options [String] :position(required) The position of the list. # @return [Gitlab::ObjectifiedHash] Information about updated group issue board list. def edit_group_board_list(group, board_id, id, options = {}) put("/groups/#{url_encode group}/boards/#{board_id}/lists/#{id}", body: options) end # Deletes a group issue board list. # # @example # Gitlab.delete_group_board_list(5, 1, 1) # # @param [Integer, String] group The ID or name of a group. # @param [Integer] board_id The ID of the group issue board. # @param [Integer] list_id The ID of a boards list. # @return [void] This API call returns an empty response body. def delete_group_board_list(group, board_id, id) delete("/groups/#{url_encode group}/boards/#{board_id}/lists/#{id}") end end end