class Asana::Resources::Story

A story represents an activity associated with an object in the Asana system. Stories are generated by the system whenever users take actions such as creating or assigning tasks, or moving tasks between projects. Comments are also a form of user-generated story.

Attributes

created_at[R]
created_by[R]
gid[R]
hearted[R]
hearts[R]
html_text[R]
is_edited[R]
is_pinned[R]
liked[R]
likes[R]
num_likes[R]
resource_subtype[R]
resource_type[R]
source[R]
target[R]
text[R]
type[R]

Public Class Methods

create_on_task(client, task: required("task"), text: required("text"), options: {}, **data) click to toggle source

Adds a comment to a task. The comment will be authored by the currently authenticated user, and timestamped when the server receives the request.

Returns the full record for the new story added to the task.

task - [Id] Globally unique identifier for the task.

text - [String] The plain text of the comment to add. options - [Hash] the request I/O options. data - [Hash] the attributes to post.

# File lib/asana/resources/story.rb, line 82
def create_on_task(client, task: required("task"), text: required("text"), options: {}, **data)
  with_params = data.merge(text: text).reject { |_,v| v.nil? || Array(v).empty? }
  self.new(parse(client.post("/tasks/#{task}/stories", body: with_params, options: options)).first, client: client)
end
find_by_id(client, id, options: {}) click to toggle source

Returns the full record for a single story.

id - [Gid] Globally unique identifier for the story.

options - [Hash] the request I/O options.

# File lib/asana/resources/story.rb, line 66
def find_by_id(client, id, options: {})

  self.new(parse(client.get("/stories/#{id}", options: options)).first, client: client)
end
find_by_task(client, task: required("task"), per_page: 20, options: {}) click to toggle source

Returns the compact records for all stories on the task.

task - [Gid] Globally unique identifier for the task.

per_page - [Integer] the number of records to fetch per page. options - [Hash] the request I/O options.

# File lib/asana/resources/story.rb, line 56
def find_by_task(client, task: required("task"), per_page: 20, options: {})
  params = { limit: per_page }.reject { |_,v| v.nil? || Array(v).empty? }
  Collection.new(parse(client.get("/tasks/#{task}/stories", params: params, options: options)), type: self, client: client)
end
plural_name() click to toggle source

Returns the plural name of the resource.

# File lib/asana/resources/story.rb, line 46
def plural_name
  'stories'
end

Public Instance Methods

delete() click to toggle source

Deletes a story. A user can only delete stories they have created. Returns an empty data record.

# File lib/asana/resources/story.rb, line 104
def delete()

  client.delete("/stories/#{gid}") && true
end
update(text: nil, html_text: nil, is_pinned: nil, options: {}, **data) click to toggle source

Updates the story and returns the full record for the updated story. Only comment stories can have their text updated, and only comment stories and attachment stories can be pinned. Only one of `text` and `html_text` can be specified.

text - [String] The plain text with which to update the comment.

html_text - [String] The rich text with which to update the comment. is_pinned - [Boolean] Whether the story should be pinned on the resource. options - [Hash] the request I/O options. data - [Hash] the attributes to post.

# File lib/asana/resources/story.rb, line 98
def update(text: nil, html_text: nil, is_pinned: nil, options: {}, **data)
  with_params = data.merge(text: text, html_text: html_text, is_pinned: is_pinned).reject { |_,v| v.nil? || Array(v).empty? }
  refresh_with(parse(client.put("/stories/#{gid}", body: with_params, options: options)).first)
end