Source:
<code>public void define(WebService.NewController context) { NewAction action = context.createAction(ACTION_SUGGESTIONS) .setDescription( "Internal WS for the top-right search engine. The result will contain component search results, grouped by their qualifiers.<p>" + "Each result contains:" + "<ul>" + "<li>the organization key</li>" + "<li>the component key</li>" + "<li>the component's name (unescaped)</li>" + "<li>optionally a display name, which puts emphasis to matching characters (this text contains html tags and parts of the html-escaped name)</li>" + "</ul>") .setSince("4.2") .setInternal(true) .setHandler(this) .setResponseExample(Resources.getResource(this.getClass(), "components-example-suggestions.json")); action.createParam(URL_PARAM_QUERY) .setRequired(true) .setDescription("Search query with a minimum of two characters. Can contain several search tokens, separated by spaces." + "Search tokens with only one character will be ignored.") .setExampleValue("sonar"); action.createParam(URL_PARAM_MORE) .setDescription("Category, for which to display " + EXTENDED_LIMIT + " instead of " + DEFAULT_LIMIT + " results") .setPossibleValues(stream(SuggestionCategory.values()).map(SuggestionCategory::getName).toArray(String[]::new)) .setSince("6.4"); action.createParam(URL_PARAM_RECENTLY_BROWSED) .setDescription("Comma separated list of component keys, that have recently been browsed by the user.") .setSince("6.4") .setExampleValue("org.sonarsource:sonarqube,some.other:project") <START> .setInternal(true) <END> .setRequired(false); }</code><technical_language>flagged "internal" WS is internal</technical_language>

Target:
public void define(WebService.NewController context) { NewAction action = context.createAction(ACTION_SUGGESTIONS) .setDescription( "Internal WS for the top-right search engine. The result will contain component search results, grouped by their qualifiers.<p>" + "Each result contains:" + "<ul>" + "<li>the organization key</li>" + "<li>the component key</li>" + "<li>the component's name (unescaped)</li>" + "<li>optionally a display name, which puts emphasis to matching characters (this text contains html tags and parts of the html-escaped name)</li>" + "</ul>") .setSince("4.2") .setInternal(true) .setHandler(this) .setResponseExample(Resources.getResource(this.getClass(), "components-example-suggestions.json")); action.createParam(PARAM_QUERY) .setRequired(true) .setDescription("Search query with a minimum of two characters. Can contain several search tokens, separated by spaces. " + "Search tokens with only one character will be ignored.") .setExampleValue("sonar"); action.createParam(PARAM_MORE) .setDescription("Category, for which to display " + EXTENDED_LIMIT + " instead of " + ComponentIndexQuery.DEFAULT_LIMIT + " results") .setPossibleValues(stream(SuggestionCategory.values()).map(SuggestionCategory::getName).toArray(String[]::new)) .setSince("6.4"); action.createParam(PARAM_RECENTLY_BROWSED) .setDescription("Comma separated list of component keys, that have recently been browsed by the user. Only the first " + MAXIMUM_RECENTLY_BROWSED + " items will be used. Order is not taken into account.") .setSince("6.4") .setExampleValue("org.sonarsource:sonarqube,some.other:project") .setRequired(false); }