class Asana::Resources::Section

A section is a subdivision of a project that groups tasks together. It can either be a header above a list of tasks in a list view or a column in a board view of a project.

Attributes

created_at[R]
gid[R]
name[R]
project[R]
resource_type[R]

Public Class Methods

create_in_project(client, project: required("project"), name: required("name"), options: {}, **data) click to toggle source

Creates a new section in a project.

Returns the full record of the newly created section.

project - [Gid] The project to create the section in name - [String] The text to be displayed as the section name. This cannot be an empty string. options - [Hash] the request I/O options. data - [Hash] the attributes to post.

# File lib/asana/resources/section.rb, line 35
def create_in_project(client, project: required("project"), name: required("name"), options: {}, **data)
  with_params = data.merge(name: name).reject { |_,v| v.nil? || Array(v).empty? }
  self.new(parse(client.post("/projects/#{project}/sections", body: with_params, options: options)).first, client: client)
end
find_by_id(client, id, options: {}) click to toggle source

Returns the complete record for a single section.

id - [Gid] The section to get. options - [Hash] the request I/O options.

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

  self.new(parse(client.get("/sections/#{gid}", options: options)).first, client: client)
end
find_by_project(client, project: required("project"), per_page: 20, options: {}) click to toggle source

Returns the compact records for all sections in the specified project.

project - [Gid] The project to get sections from. per_page - [Integer] the number of records to fetch per page. options - [Hash] the request I/O options.

# File lib/asana/resources/section.rb, line 45
def find_by_project(client, project: required("project"), per_page: 20, options: {})
  params = { limit: per_page }.reject { |_,v| v.nil? || Array(v).empty? }
  Collection.new(parse(client.get("/projects/#{project}/sections", 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/section.rb, line 23
def plural_name
  'sections'
end

Public Instance Methods

add_task(insert_before: nil, insert_after: nil, options: {}, **data) click to toggle source

Add a task to a specific, existing section. This will remove the task from other sections of the project.

The task will be inserted at the top of a section unless an `insert_before` or `insert_after` parameter is declared.

This does not work for separators (tasks with the `resource_subtype` of section).

insert_before - [Gid] Insert the given task immediately before the task specified by this parameter. Cannot be provided together with `insert_after`. insert_after - [Gid] Insert the given task immediately after the task specified by this parameter. Cannot be provided together with `insert_before`. options - [Hash] the request I/O options. data - [Hash] the attributes to post.

# File lib/asana/resources/section.rb, line 101
def add_task(insert_before: nil, insert_after: nil, options: {}, **data)
  with_params = data.merge(insert_before: insert_before, insert_after: insert_after).reject { |_,v| v.nil? || Array(v).empty? }
  Task.new(parse(client.post("/sections/#{gid}/addTask", body: with_params, options: options)).first, client: client)
end
delete() click to toggle source

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

Note that sections must be empty to be deleted.

The last remaining section in a board view cannot be deleted.

Returns an empty data block.

# File lib/asana/resources/section.rb, line 86
def delete()

  client.delete("/sections/#{gid}") && true
end
insert_in_project(project: required("project"), before_section: nil, after_section: nil, options: {}, **data) click to toggle source

Move sections relative to each other in a board view. One of `before_section` or `after_section` is required.

Sections cannot be moved between projects.

At this point in time, moving sections is not supported in list views, only board views.

Returns an empty data block.

project - [Gid] The project in which to reorder the given section before_section - [Gid] Insert the given section immediately before the section specified by this parameter. after_section - [Gid] Insert the given section immediately after the section specified by this parameter. options - [Hash] the request I/O options. data - [Hash] the attributes to post.

# File lib/asana/resources/section.rb, line 120
def insert_in_project(project: required("project"), before_section: nil, after_section: nil, options: {}, **data)
  with_params = data.merge(before_section: before_section, after_section: after_section).reject { |_,v| v.nil? || Array(v).empty? }
  client.post("/projects/#{project}/sections/insert", body: with_params, options: options) && true
end
update(options: {}, **data) click to toggle source

A specific, existing section can be updated by making a PUT request on the URL for that project. Only the fields provided in the `data` block will be updated; any unspecified fields will remain unchanged. (note that at this time, the only field that can be updated is the `name` field.)

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.

Returns the complete updated section record.

options - [Hash] the request I/O options. data - [Hash] the attributes to post.

# File lib/asana/resources/section.rb, line 73
def update(options: {}, **data)

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