-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Description
GET /workspaces/{workspace_gid}/tasks/search
allows you to search based on custom field attributes - see the 'Custom field parameters' section here: https://developers.asana.com/docs/search-tasks-in-a-workspace
Unfortunately, the generated ruby-asana SDK does not support these parameters, forcing people to hand-craft their API requests:
ruby-asana/lib/asana/resources/gen/tasks_base.rb
Lines 329 to 392 in ae66d87
# Search tasks in a workspace # # workspace_gid - [str] (required) Globally unique identifier for the workspace or organization. # text - [str] Performs full-text search on both task name and description # resource_subtype - [str] Filters results by the task's resource_subtype # assignee_any - [str] Comma-separated list of user identifiers # assignee_not - [str] Comma-separated list of user identifiers # portfolios_any - [str] Comma-separated list of portfolio IDs # projects_any - [str] Comma-separated list of project IDs # projects_not - [str] Comma-separated list of project IDs # projects_all - [str] Comma-separated list of project IDs # sections_any - [str] Comma-separated list of section or column IDs # sections_not - [str] Comma-separated list of section or column IDs # sections_all - [str] Comma-separated list of section or column IDs # tags_any - [str] Comma-separated list of tag IDs # tags_not - [str] Comma-separated list of tag IDs # tags_all - [str] Comma-separated list of tag IDs # teams_any - [str] Comma-separated list of team IDs # followers_not - [str] Comma-separated list of user identifiers # created_by_any - [str] Comma-separated list of user identifiers # created_by_not - [str] Comma-separated list of user identifiers # assigned_by_any - [str] Comma-separated list of user identifiers # assigned_by_not - [str] Comma-separated list of user identifiers # liked_by_not - [str] Comma-separated list of user identifiers # commented_on_by_not - [str] Comma-separated list of user identifiers # due_on_before - [date] ISO 8601 date string # due_on_after - [date] ISO 8601 date string # due_on - [date] ISO 8601 date string or `null` # due_at_before - [datetime] ISO 8601 datetime string # due_at_after - [datetime] ISO 8601 datetime string # start_on_before - [date] ISO 8601 date string # start_on_after - [date] ISO 8601 date string # start_on - [date] ISO 8601 date string or `null` # created_on_before - [date] ISO 8601 date string # created_on_after - [date] ISO 8601 date string # created_on - [date] ISO 8601 date string or `null` # created_at_before - [datetime] ISO 8601 datetime string # created_at_after - [datetime] ISO 8601 datetime string # completed_on_before - [date] ISO 8601 date string # completed_on_after - [date] ISO 8601 date string # completed_on - [date] ISO 8601 date string or `null` # completed_at_before - [datetime] ISO 8601 datetime string # completed_at_after - [datetime] ISO 8601 datetime string # modified_on_before - [date] ISO 8601 date string # modified_on_after - [date] ISO 8601 date string # modified_on - [date] ISO 8601 date string or `null` # modified_at_before - [datetime] ISO 8601 datetime string # modified_at_after - [datetime] ISO 8601 datetime string # is_blocking - [bool] Filter to incomplete tasks with dependents # is_blocked - [bool] Filter to tasks with incomplete dependencies # has_attachment - [bool] Filter to tasks with attachments # completed - [bool] Filter to completed tasks # is_subtask - [bool] Filter to subtasks # sort_by - [str] One of `due_date`, `created_at`, `completed_at`, `likes`, or `modified_at`, defaults to `modified_at` # sort_ascending - [bool] Default `false` # options - [Hash] the request I/O options # > opt_fields - [list[str]] Defines fields to return. Some requests return *compact* representations of objects in order to conserve resources and complete the request more efficiently. Other times requests return more information than you may need. This option allows you to list the exact set of fields that the API should be sure to return for the objects. The field names should be provided as paths, described below. The id of included objects will always be returned, regardless of the field options. # > opt_pretty - [bool] Provides “pretty” output. Provides the response in a “pretty” format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging. def search_tasks_for_workspace(client, workspace_gid: required("workspace_gid"), text: nil, resource_subtype: nil, assignee_any: nil, assignee_not: nil, portfolios_any: nil, projects_any: nil, projects_not: nil, projects_all: nil, sections_any: nil, sections_not: nil, sections_all: nil, tags_any: nil, tags_not: nil, tags_all: nil, teams_any: nil, followers_not: nil, created_by_any: nil, created_by_not: nil, assigned_by_any: nil, assigned_by_not: nil, liked_by_not: nil, commented_on_by_not: nil, due_on_before: nil, due_on_after: nil, due_on: nil, due_at_before: nil, due_at_after: nil, start_on_before: nil, start_on_after: nil, start_on: nil, created_on_before: nil, created_on_after: nil, created_on: nil, created_at_before: nil, created_at_after: nil, completed_on_before: nil, completed_on_after: nil, completed_on: nil, completed_at_before: nil, completed_at_after: nil, modified_on_before: nil, modified_on_after: nil, modified_on: nil, modified_at_before: nil, modified_at_after: nil, is_blocking: nil, is_blocked: nil, has_attachment: nil, completed: nil, is_subtask: nil, sort_by: nil, sort_ascending: nil, options: {}) path = "/workspaces/{workspace_gid}/tasks/search" path["{workspace_gid}"] = workspace_gid params = { text: text, resource_subtype: resource_subtype, "assignee.any": assignee_any, "assignee.not": assignee_not, "portfolios.any": portfolios_any, "projects.any": projects_any, "projects.not": projects_not, "projects.all": projects_all, "sections.any": sections_any, "sections.not": sections_not, "sections.all": sections_all, "tags.any": tags_any, "tags.not": tags_not, "tags.all": tags_all, "teams.any": teams_any, "followers.not": followers_not, "created_by.any": created_by_any, "created_by.not": created_by_not, "assigned_by.any": assigned_by_any, "assigned_by.not": assigned_by_not, "liked_by.not": liked_by_not, "commented_on_by.not": commented_on_by_not, due_on_before: due_on_before, due_on_after: due_on_after, due_on: due_on, due_at_before: due_at_before, due_at_after: due_at_after, start_on_before: start_on_before, start_on_after: start_on_after, start_on: start_on, created_on_before: created_on_before, created_on_after: created_on_after, created_on: created_on, created_at_before: created_at_before, created_at_after: created_at_after, completed_on_before: completed_on_before, completed_on_after: completed_on_after, completed_on: completed_on, completed_at_before: completed_at_before, completed_at_after: completed_at_after, modified_on_before: modified_on_before, modified_on_after: modified_on_after, modified_on: modified_on, modified_at_before: modified_at_before, modified_at_after: modified_at_after, is_blocking: is_blocking, is_blocked: is_blocked, has_attachment: has_attachment, completed: completed, is_subtask: is_subtask, sort_by: sort_by, sort_ascending: sort_ascending }.reject { |_,v| v.nil? || Array(v).empty? } Collection.new(parse(client.get(path, params: params, options: options)), type: Task, client: client) end
Metadata
Metadata
Assignees
Labels
No labels