     .catch (error) ->
       send msg, "An error has occured: #{error}"
 
+  handleUnassignRequest = (msg, includeAttachment=yes) ->
+    msg.finish?()
+    [ __, ticket ] = msg.match
+    fetch "#{jiraUrl}/rest/api/2/issue/#{ticket}",
+      method: "PUT"
+      body: JSON.stringify
+        fields:
+          assignee:
+            name: null
+    .then () ->
+      fetch "#{jiraUrl}/rest/api/2/issue/#{ticket}"
+    .then (json) ->
+      send msg,
+        text: "Unassigned <@#{msg.message.user.id}> from <#{jiraUrl}/browse/#{ticket}|#{ticket}>"
+        attachments: [ buildJiraAttachment json, no ] if includeAttachment
+
   handleAssignRequest = (msg, includeAttachment=yes) ->
     msg.finish?()
     [ __, ticket, person ] = msg.match

        return

    params =
      channel: msg.item.channel
      latest: msg.item.ts
      oldest: msg.item.ts
      inclusive: 1
      count: 1
      token: process.env.HUBOT_SLACK_TOKEN

    else
      send msg, "Cannot find slack user `#{person}`"

  handleWatchRequest = (msg, includeAttachment=yes, remove=no) ->
    msg.finish?()
    [ __, ticket, person ] = msg.match
    person = if person is "me" or not person then msg.message.user.name else person
