module Gitlab::Client::Issues

Defines methods related to issues. @see docs.gitlab.com/ce/api/issues.html

Public Instance Methods

add_time_spent_on_issue(project, id, duration) click to toggle source

Adds spent time for an issue

@example

Gitlab.estimate_time_of_issue(3, 42, '3h30m')

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @param [String] duration The time spent in human format. e.g: 3h30m

# File lib/gitlab/client/issues.rb, line 183
def add_time_spent_on_issue(project, id, duration)
  post("/projects/#{url_encode project}/issues/#{id}/add_spent_time", body: { duration: duration })
end
close_issue(project, id) click to toggle source

Closes an issue.

@example

Gitlab.close_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @return [Gitlab::ObjectifiedHash] Information about closed issue.

# File lib/gitlab/client/issues.rb, line 86
def close_issue(project, id)
  put("/projects/#{url_encode project}/issues/#{id}", body: { state_event: 'close' })
end
create_issue(project, title, options = {}) click to toggle source

Creates a new issue.

@example

Gitlab.create_issue(5, 'New issue')
Gitlab.create_issue(5, 'New issue', { description: 'This is a new issue', assignee_id: 42 })

@param [Integer, String] project The ID or name of a project. @param [String] title The title of an issue. @param [Hash] options A customizable set of options. @option options [String] :description The description of an issue. @option options [Integer] :assignee_id The ID of a user to assign issue. @option options [Integer] :milestone_id The ID of a milestone to assign issue. @option options [String] :labels Comma-separated label names for an issue. @return [Gitlab::ObjectifiedHash] Information about created issue.

# File lib/gitlab/client/issues.rb, line 54
def create_issue(project, title, options = {})
  body = { title: title }.merge(options)
  post("/projects/#{url_encode project}/issues", body: body)
end
delete_issue(project, id) click to toggle source

Deletes an issue. Only for admins and project owners

@example

Gitlab.delete_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @return [Gitlab::ObjectifiedHash] Information about deleted issue.

# File lib/gitlab/client/issues.rb, line 135
def delete_issue(project, id)
  delete("/projects/#{url_encode project}/issues/#{id}")
end
edit_issue(project, id, options = {}) click to toggle source

Updates an issue.

@example

Gitlab.edit_issue(6, 1, { title: 'Updated title' })

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @param [Hash] options A customizable set of options. @option options [String] :title The title of an issue. @option options [String] :description The description of an issue. @option options [Integer] :assignee_id The ID of a user to assign issue. @option options [Integer] :milestone_id The ID of a milestone to assign issue. @option options [String] :labels Comma-separated label names for an issue. @option options [String] :state_event The state event of an issue ('close' or 'reopen'). @return [Gitlab::ObjectifiedHash] Information about updated issue.

# File lib/gitlab/client/issues.rb, line 74
def edit_issue(project, id, options = {})
  put("/projects/#{url_encode project}/issues/#{id}", body: options)
end
estimate_time_of_issue(project, id, duration) click to toggle source

Sets an estimated time of work for an issue.

@example

Gitlab.estimate_time_of_issue(3, 42, '3h30m')

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @param [String] duration The duration in human format. e.g: 3h30m

# File lib/gitlab/client/issues.rb, line 160
def estimate_time_of_issue(project, id, duration)
  post("/projects/#{url_encode project}/issues/#{id}/time_estimate", body: { duration: url_encode(duration) })
end
issue(project, id) click to toggle source

Gets a single issue.

@example

Gitlab.issue(5, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @return [Gitlab::ObjectifiedHash]

# File lib/gitlab/client/issues.rb, line 36
def issue(project, id)
  get("/projects/#{url_encode project}/issues/#{id}")
end
issues(project = nil, options = {}) click to toggle source

Gets a list of user's issues. Will return a list of project's issues if project ID passed.

@example

Gitlab.issues
Gitlab.issues(5)
Gitlab.issues({ per_page: 40 })

@param [Integer, String] project The ID or name of a project. @param [Hash] options A customizable set of options. @option options [Integer] :page The page number. @option options [Integer] :per_page The number of results per page. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/issues.rb, line 20
def issues(project = nil, options = {})
  if project.to_s.empty? && project.to_i.zero?
    get('/issues', query: options)
  else
    get("/projects/#{url_encode project}/issues", query: options)
  end
end
merge_requests_closing_issue_on_merge(project, id) click to toggle source

List merge requests that will close issue on merge

@example

Gitlab.merge_requests_closing_issue_on_merge(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue.

# File lib/gitlab/client/issues.rb, line 227
def merge_requests_closing_issue_on_merge(project, id)
  get("/projects/#{url_encode project}/issues/#{id}/closed_by")
end
move_issue(project, id, options = {}) click to toggle source

Move an issue.

@example

Gitlab.move_issue(3, 42, { to_project_id: '4' })

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @option options [String] :to_project_id The ID of the new project. @return [Gitlab::ObjectifiedHash] Information about moved issue.

# File lib/gitlab/client/issues.rb, line 148
def move_issue(project, id, options = {})
  post("/projects/#{url_encode project}/issues/#{id}/move", body: options)
end
participants_on_issue(project, id) click to toggle source

Get participants on issue

@example

@gitlab.participants_on_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue.

# File lib/gitlab/client/issues.rb, line 216
def participants_on_issue(project, id)
  get("/projects/#{url_encode project}/issues/#{id}/participants")
end
reopen_issue(project, id) click to toggle source

Reopens an issue.

@example

Gitlab.reopen_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @return [Gitlab::ObjectifiedHash] Information about reopened issue.

# File lib/gitlab/client/issues.rb, line 98
def reopen_issue(project, id)
  put("/projects/#{url_encode project}/issues/#{id}", body: { state_event: 'reopen' })
end
reset_time_estimate_of_issue(project, id) click to toggle source

Resets the estimated time for an issue to 0 seconds.

@example

Gitlab.reset_time_estimate_of_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue.

# File lib/gitlab/client/issues.rb, line 171
def reset_time_estimate_of_issue(project, id)
  post("/projects/#{url_encode project}/issues/#{id}/reset_time_estimate")
end
reset_time_spent_on_issue(project, id) click to toggle source

Resets the total spent time for this issue to 0 seconds.

@example

Gitlab.reset_time_spent_on_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue.

# File lib/gitlab/client/issues.rb, line 194
def reset_time_spent_on_issue(project, id)
  post("/projects/#{url_encode project}/issues/#{id}/reset_spent_time")
end
subscribe_to_issue(project, id) click to toggle source

Subscribe to an issue.

@example

Gitlab.subscribe_to_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @return [Gitlab::ObjectifiedHash] Information about subscribed issue.

# File lib/gitlab/client/issues.rb, line 110
def subscribe_to_issue(project, id)
  post("/projects/#{url_encode project}/issues/#{id}/subscribe")
end
time_stats_for_issue(project, id) click to toggle source

Get time tracking stats for an issue

@example

@gitlab.time_stats_for_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue.

# File lib/gitlab/client/issues.rb, line 205
def time_stats_for_issue(project, id)
  get("/projects/#{url_encode project}/issues/#{id}/time_stats")
end
unsubscribe_from_issue(project, id) click to toggle source

Unsubscribe from an issue.

@example

Gitlab.unsubscribe_from_issue(3, 42)

@param [Integer, String] project The ID or name of a project. @param [Integer] id The ID of an issue. @return [Gitlab::ObjectifiedHash] Information about unsubscribed issue.

# File lib/gitlab/client/issues.rb, line 122
def unsubscribe_from_issue(project, id)
  post("/projects/#{url_encode project}/issues/#{id}/unsubscribe")
end