public async Task <Suggestion[]> GetSuggestions(string dictionary, AudienceType audience, string language, string query,
                                                        [FromQuery] bool contains = false, [FromQuery] int size = 20, [FromQuery] int from = 0)
        {
            if (String.IsNullOrWhiteSpace(dictionary) || String.IsNullOrWhiteSpace(language) || !Enum.IsDefined(typeof(AudienceType), audience))
            {
                throw new APIErrorException(400, "You must supply a valid dictionary, audience and language.");
            }

            if (language.ToLower() != "en" && language.ToLower() != "es")
            {
                throw new APIErrorException(404, "Unsupported Language. Valid values are 'en' and 'es'.");
            }

            if (size <= 0)
            {
                size = 20;
            }

            if (from < 0)
            {
                from = 0;
            }


            return(await _autosuggestQueryService.GetSuggestions(dictionary, audience, language, query, contains, size, from));
        }
        public async Task <Suggestion[]> GetSuggestions(string dictionary, AudienceType audience, string language, string searchText,
                                                        [FromQuery] MatchType matchType = MatchType.Begins, [FromQuery] int size = 20)
        {
            if (String.IsNullOrWhiteSpace(dictionary) || String.IsNullOrWhiteSpace(language) || !Enum.IsDefined(typeof(AudienceType), audience))
            {
                throw new APIErrorException(400, "You must supply a valid dictionary, audience and language.");
            }

            if (!Enum.IsDefined(typeof(MatchType), matchType))
            {
                throw new APIErrorException(400, "The 'matchType' parameter must be either 'Begins' or 'Contains'.");
            }

            if (language.ToLower() != "en" && language.ToLower() != "es")
            {
                throw new APIErrorException(400, "Unsupported Language. Valid values are 'en' and 'es'.");
            }

            if (size <= 0)
            {
                size = 20;
            }

            // searchText uses a catch-all route, make sure it's been decoded.
            searchText = WebUtility.UrlDecode(searchText);

            return(await _autosuggestQueryService.GetSuggestions(dictionary, audience, language, searchText, matchType, size));
        }