Class: Asana::Resources::Tag

Inherits:
Resource show all
Defined in:
lib/asana/resources/tag.rb

Overview

A tag is a label that can be attached to any task in Asana. It exists in a single workspace or organization.

Tags have some metadata associated with them, but it is possible that we will simplify them in the future so it is not encouraged to rely too heavily on it. Unlike projects, tags do not provide any ordering on the tasks they are associated with.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Resource

inherited, #initialize, #method_missing, #refresh, #respond_to_missing?, #to_h, #to_s

Methods included from ResponseHelper

#parse

Constructor Details

This class inherits a constructor from Asana::Resources::Resource

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Asana::Resources::Resource

Instance Attribute Details

#colorObject (readonly)



24
25
26
# File 'lib/asana/resources/tag.rb', line 24

def color
  @color
end

#created_atObject (readonly)



18
19
20
# File 'lib/asana/resources/tag.rb', line 18

def created_at
  @created_at
end

#followersObject (readonly)



20
21
22
# File 'lib/asana/resources/tag.rb', line 20

def followers
  @followers
end

#idObject (readonly)



16
17
18
# File 'lib/asana/resources/tag.rb', line 16

def id
  @id
end

#nameObject (readonly)



22
23
24
# File 'lib/asana/resources/tag.rb', line 22

def name
  @name
end

#notesObject (readonly)



26
27
28
# File 'lib/asana/resources/tag.rb', line 26

def notes
  @notes
end

#workspaceObject (readonly)



28
29
30
# File 'lib/asana/resources/tag.rb', line 28

def workspace
  @workspace
end

Class Method Details

.create(client, workspace: required("workspace"), options: {}, **data) ⇒ Object

Creates a new tag in a workspace or organization.

Every tag is required to be created in a specific workspace or organization, and this cannot be changed once set. Note that you can use the ‘workspace` parameter regardless of whether or not it is an organization.

Parameters:

  • Returns

    the full record of the newly created tag.

  • workspace (Id) (defaults to: required("workspace"))

    The workspace or organization to create the tag in.

  • options (Hash) (defaults to: {})

    the request I/O options.

  • data (Hash)

    the attributes to post.



48
49
50
51
# File 'lib/asana/resources/tag.rb', line 48

def create(client, workspace: required("workspace"), options: {}, **data)
  with_params = data.merge(workspace: workspace).reject { |_,v| v.nil? || Array(v).empty? }
  self.new(parse(client.post("/tags", body: with_params, options: options)).first, client: client)
end

.create_in_workspace(client, workspace: required("workspace"), options: {}, **data) ⇒ Object

Creates a new tag in a workspace or organization.

Every tag is required to be created in a specific workspace or organization, and this cannot be changed once set. Note that you can use the ‘workspace` parameter regardless of whether or not it is an organization.

Parameters:

  • Returns

    the full record of the newly created tag.

  • workspace (Id) (defaults to: required("workspace"))

    The workspace or organization to create the tag in.

  • options (Hash) (defaults to: {})

    the request I/O options.

  • data (Hash)

    the attributes to post.



65
66
67
68
# File 'lib/asana/resources/tag.rb', line 65

def create_in_workspace(client, workspace: required("workspace"), options: {}, **data)

  self.new(parse(client.post("/workspaces/#{workspace}/tags", body: data, options: options)).first, client: client)
end

.find_all(client, workspace: nil, team: nil, archived: nil, per_page: 20, options: {}) ⇒ Object

Returns the compact tag records for some filtered set of tags. Use one or more of the parameters provided to filter the tags returned.

Parameters:

  • workspace (Id) (defaults to: nil)

    The workspace or organization to filter tags on.

  • team (Id) (defaults to: nil)

    The team to filter tags on.

  • archived (Boolean) (defaults to: nil)

    Only return tags whose ‘archived` field takes on the value of

  • this

    parameter.

  • per_page (Integer) (defaults to: 20)

    the number of records to fetch per page.

  • options (Hash) (defaults to: {})

    the request I/O options.



89
90
91
92
# File 'lib/asana/resources/tag.rb', line 89

def find_all(client, workspace: nil, team: nil, archived: nil, per_page: 20, options: {})
  params = { workspace: workspace, team: team, archived: archived, limit: per_page }.reject { |_,v| v.nil? || Array(v).empty? }
  Collection.new(parse(client.get("/tags", params: params, options: options)), type: self, client: client)
end

.find_by_id(client, id, options: {}) ⇒ Object

Returns the complete tag record for a single tag.

Parameters:

  • id (Id)

    The tag to get.

  • options (Hash) (defaults to: {})

    the request I/O options.



74
75
76
77
# File 'lib/asana/resources/tag.rb', line 74

def find_by_id(client, id, options: {})

  self.new(parse(client.get("/tags/#{id}", options: options)).first, client: client)
end

.find_by_workspace(client, workspace: required("workspace"), per_page: 20, options: {}) ⇒ Object

Returns the compact tag records for all tags in the workspace.

Parameters:

  • workspace (Id) (defaults to: required("workspace"))

    The workspace or organization to find tags in.

  • per_page (Integer) (defaults to: 20)

    the number of records to fetch per page.

  • options (Hash) (defaults to: {})

    the request I/O options.



99
100
101
102
# File 'lib/asana/resources/tag.rb', line 99

def find_by_workspace(client, workspace: required("workspace"), per_page: 20, options: {})
  params = { limit: per_page }.reject { |_,v| v.nil? || Array(v).empty? }
  Collection.new(parse(client.get("/workspaces/#{workspace}/tags", params: params, options: options)), type: self, client: client)
end

.plural_nameObject

Returns the plural name of the resource.



32
33
34
# File 'lib/asana/resources/tag.rb', line 32

def plural_name
  'tags'
end

Instance Method Details

#deleteObject

A specific, existing tag can be deleted by making a DELETE request on the URL for that tag.

Returns:

  • an empty data record.



125
126
127
128
# File 'lib/asana/resources/tag.rb', line 125

def delete()

  client.delete("/tags/#{id}") && true
end

#get_tasks_with_tag(per_page: 20, options: {}) ⇒ Object

Returns the compact task records for all tasks with the given tag. Tasks can have more than one tag at a time.

Parameters:

  • per_page (Integer) (defaults to: 20)

    the number of records to fetch per page.

  • options (Hash) (defaults to: {})

    the request I/O options.



135
136
137
138
# File 'lib/asana/resources/tag.rb', line 135

def get_tasks_with_tag(per_page: 20, options: {})
  params = { limit: per_page }.reject { |_,v| v.nil? || Array(v).empty? }
  Collection.new(parse(client.get("/tags/#{id}/tasks", params: params, options: options)), type: Task, client: client)
end

#update(options: {}, **data) ⇒ Object

Updates the properties of a tag. Only the fields provided in the ‘data` block will be updated; any unspecified fields will remain unchanged.

When using this method, it is best to specify only those fields you wish to change, or else you may overwrite changes made by another user since you last retrieved the task.

Parameters:

  • Returns

    the complete updated tag record.

  • options (Hash) (defaults to: {})

    the request I/O options.

  • data (Hash)

    the attributes to post.



116
117
118
119
# File 'lib/asana/resources/tag.rb', line 116

def update(options: {}, **data)

  refresh_with(parse(client.put("/tags/#{id}", body: data, options: options)).first)
end