Filtering Terms based on termbaseFieldValues

I'm using Rws.LanguageCloud.Sdk and call ListTermbaseTermsAsync to get the list of Terms. How can I filter Terms based on termbaseFieldValues? Can I use search and searchType to implement this?

Parents
  • Hello  

    It seems like you're using the wrong endpoint for what you're trying to accomplish.

    You should use ListTermbaseEntriesAsync, adding the required "fields" query parameter (documented here), depending on what level the termbaseFieldValues are at.

    So, for example:

    Let's say you have a term level field, named "TermLevelField"

    Edit Termbase Wizard screen showing the Fields and structure section with options to add fields at Entry, Language, and Term levels. TermLevelField is listed under Term level.

    And you wish to get terms that have a "TermLevelField" value of "TermLevelValue". Then, to get the terms, the code would be something similar to:

    public async Task<List<string>> GetTermsFilteredByFieldValues()
    {
        var credentials = new ServiceCredentials("cleintId", "clientSecret", "tenant");
        var clientProvider = new LanguageCloudClientProvider("region");
    
        var termbase = clientProvider.GetTermbaseClient(credentials);
        var listTermbaseEntriesResponse = await termbase.ListTermbaseEntriesAsync("termbaseId", fields: "termbaseFieldValues, languages.terms.termbaseFieldValues");
    
        var terms = new List<string>();
        foreach (var termbaseEntry in listTermbaseEntriesResponse.Items)
        {
            foreach (var language in termbaseEntry.Languages.Where(lang => lang.Language.LanguageCode == "de"))
            {
                foreach (var term in language.Terms)
                {
                    if (term.TermbaseFieldValues.First(fiedlValue => fiedlValue.Name == "TermLevelField").Value ==
                        "TermLevelValue")
                        terms.Add(term.Text);
                }
            }
        }
    
        return terms;
    }



    Generated Image Alt-Text
    [edited by: RWS Community AI at 1:35 PM (GMT 1) on 12 Aug 2025]
Reply
  • Hello  

    It seems like you're using the wrong endpoint for what you're trying to accomplish.

    You should use ListTermbaseEntriesAsync, adding the required "fields" query parameter (documented here), depending on what level the termbaseFieldValues are at.

    So, for example:

    Let's say you have a term level field, named "TermLevelField"

    Edit Termbase Wizard screen showing the Fields and structure section with options to add fields at Entry, Language, and Term levels. TermLevelField is listed under Term level.

    And you wish to get terms that have a "TermLevelField" value of "TermLevelValue". Then, to get the terms, the code would be something similar to:

    public async Task<List<string>> GetTermsFilteredByFieldValues()
    {
        var credentials = new ServiceCredentials("cleintId", "clientSecret", "tenant");
        var clientProvider = new LanguageCloudClientProvider("region");
    
        var termbase = clientProvider.GetTermbaseClient(credentials);
        var listTermbaseEntriesResponse = await termbase.ListTermbaseEntriesAsync("termbaseId", fields: "termbaseFieldValues, languages.terms.termbaseFieldValues");
    
        var terms = new List<string>();
        foreach (var termbaseEntry in listTermbaseEntriesResponse.Items)
        {
            foreach (var language in termbaseEntry.Languages.Where(lang => lang.Language.LanguageCode == "de"))
            {
                foreach (var term in language.Terms)
                {
                    if (term.TermbaseFieldValues.First(fiedlValue => fiedlValue.Name == "TermLevelField").Value ==
                        "TermLevelValue")
                        terms.Add(term.Text);
                }
            }
        }
    
        return terms;
    }



    Generated Image Alt-Text
    [edited by: RWS Community AI at 1:35 PM (GMT 1) on 12 Aug 2025]
Children
No Data