Update namespace.markdownPaths.autocompleteSourcesPath in GraphQL

With the namespace.markdownPaths.autocompleteSourcesPath field in GraphQL, we need to do the following to get the autocomplete paths for all attributes:

{
  namespace(fullPath: "gitlab-org") {
    markdownPaths {
      labels: autocompleteSourcesPath(autocompleteType: LABELS, iid: "1")
      members: autocompleteSourcesPath(autocompleteType: MEMBERS, iid: "1")
      commands: autocompleteSourcesPath(autocompleteType: COMMANDS, iid: "1")
      issues: autocompleteSourcesPath(autocompleteType: ISSUES, iid: "1")
      mergeRequests: autocompleteSourcesPath(autocompleteType: MERGE_REQUESTS, iid: "1")
      milestones: autocompleteSourcesPath(autocompleteType: MILESTONES, iid: "1")
      wikis: autocompleteSourcesPath(autocompleteType: WIKIS, iid: "1")
      contacts: autocompleteSourcesPath(autocompleteType: CONTACTS, iid: "1")
      snippets: autocompleteSourcesPath(autocompleteType: SNIPPETS, iid: "1")
    }
  }
}

However, in the frontend we don't ask for each attribute individually but instead we create an object that contains all attributes:

{
  "labels": "/flightjs/Flight/-/autocomplete_sources/labels?type=WorkItem&work_item_type_id=1",
  "members": "/flightjs/Flight/-/autocomplete_sources/members?type=WorkItem&work_item_type_id=1",
  "commands": "/flightjs/Flight/-/autocomplete_sources/commands?type=WorkItem&work_item_type_id=1",
  "issues": "/flightjs/Flight/-/autocomplete_sources/issues?type=WorkItem&work_item_type_id=1",
  "mergeRequests": "/flightjs/Flight/-/autocomplete_sources/merge_requests?type=WorkItem&work_item_type_id=1",
  "epics": "/flightjs/Flight/-/autocomplete_sources/epics?type=WorkItem&work_item_type_id=1",
  "milestones": "/flightjs/Flight/-/autocomplete_sources/milestones?type=WorkItem&work_item_type_id=1",
  "iterations": "/flightjs/Flight/-/autocomplete_sources/iterations?type=WorkItem&work_item_type_id=1",
  "vulnerabilities": "/flightjs/Flight/-/autocomplete_sources/vulnerabilities?type=WorkItem&work_item_type_id=1",
  "wikis": "/flightjs/Flight/-/autocomplete_sources/wikis?type=WorkItem&work_item_type_id=1",
  "contacts": "/flightjs/Flight/-/autocomplete_sources/contacts?type=WorkItem&work_item_type_id=1",
  "snippets": "/flightjs/Flight/-/autocomplete_sources/snippets?type=WorkItem&work_item_type_id=1"
}

We should update the autocompleteSourcesPath field so it returns an object with all available fields. This means we will no longer need the autocompleteType argument.

namespace.markdownPaths.autocompleteSourcesPath also currently does not return epics, iterations, or vulnerabilities. The returned object should include these if available.

Acceptance criteria

  • namespace.markdownPaths.autocompleteSourcesPath returns an object like the following:
    {
      "labels": "/flightjs/Flight/-/autocomplete_sources/labels?type=WorkItem&work_item_type_id=1",
      "members": "/flightjs/Flight/-/autocomplete_sources/members?type=WorkItem&work_item_type_id=1",
      "commands": "/flightjs/Flight/-/autocomplete_sources/commands?type=WorkItem&work_item_type_id=1",
      "issues": "/flightjs/Flight/-/autocomplete_sources/issues?type=WorkItem&work_item_type_id=1",
      "mergeRequests": "/flightjs/Flight/-/autocomplete_sources/merge_requests?type=WorkItem&work_item_type_id=1",
      "epics": "/flightjs/Flight/-/autocomplete_sources/epics?type=WorkItem&work_item_type_id=1",
      "milestones": "/flightjs/Flight/-/autocomplete_sources/milestones?type=WorkItem&work_item_type_id=1",
      "iterations": "/flightjs/Flight/-/autocomplete_sources/iterations?type=WorkItem&work_item_type_id=1",
      "vulnerabilities": "/flightjs/Flight/-/autocomplete_sources/vulnerabilities?type=WorkItem&work_item_type_id=1",
      "wikis": "/flightjs/Flight/-/autocomplete_sources/wikis?type=WorkItem&work_item_type_id=1",
      "contacts": "/flightjs/Flight/-/autocomplete_sources/contacts?type=WorkItem&work_item_type_id=1",
      "snippets": "/flightjs/Flight/-/autocomplete_sources/snippets?type=WorkItem&work_item_type_id=1"
    }
  • The returned object excludes attributes that are not applicable. For example, contacts, snippets, and wikis don't exist at the group level I believe so should not be returned for group namespaces, and epics and iterations (and vulnerabilities?) are EE features so should only be returned if those licensed features are available.
  • Also, the workItemTypeId parameter does not seem to work. Passing an workItemTypeId argument should work. (e.g. autocompleteSourcesPath(autocompleteType:LABELS, iid:"1", workItemTypeId:"gid://gitlab/WorkItems::Type/1"))
Edited by Coung Ngo