Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
apiology opened this issue Jul 9, 2022 · 0 comments

Comments

@apiology
Copy link

apiology commented Jul 9, 2022

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant