Skip to content

Custom field parameters not available in tasks.search_tasks_for_workspace() #140

@apiology

Description

@apiology

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:

  • # 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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions