// Path: app/src/main/java/com/gatebuzz/oxfordapi/model/Wordlist.java
// public class Wordlist   {
//   @SerializedName("metadata")
//   private Map<String, Object> metadata = null;
// 
//   @SerializedName("results")
//   private List<WordlistResults> results = new ArrayList<WordlistResults>();
// 
//   public Wordlist metadata(Map<String, Object> metadata) {
//     this.metadata = metadata;
//     return this;
//   }
// 
//    /**
//    * Additional Information provided by OUP
//    * @return metadata
//   **/
//   public Map<String, Object> getMetadata() {
//     return metadata;
//   }
// 
//   public void setMetadata(Map<String, Object> metadata) {
//     this.metadata = metadata;
//   }
// 
//   public Wordlist results(List<WordlistResults> results) {
//     this.results = results;
//     return this;
//   }
// 
//   public Wordlist addResultsItem(WordlistResults resultsItem) {
//     this.results.add(resultsItem);
//     return this;
//   }
// 
//    /**
//    * A list of found words
//    * @return results
//   **/
//   public List<WordlistResults> getResults() {
//     return results;
//   }
// 
//   public void setResults(List<WordlistResults> results) {
//     this.results = results;
//   }
// 
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) {
//       return true;
//     }
//     if (o == null || getClass() != o.getClass()) {
//       return false;
//     }
//     Wordlist wordlist = (Wordlist) o;
//     return Objects.equals(this.metadata, wordlist.metadata) &&
//         Objects.equals(this.results, wordlist.results);
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hash(metadata, results);
//   }
// 
//   @Override
//   public String toString() {
//     StringBuilder sb = new StringBuilder();
//     sb.append("class Wordlist {\n");
//     
//     sb.append("    metadata: ").append(toIndentedString(metadata)).append("\n");
//     sb.append("    results: ").append(toIndentedString(results)).append("\n");
//     sb.append("}");
//     return sb.toString();
//   }
// 
//   /**
//    * Convert the given object to string with each line indented by 4 spaces
//    * (except the first line).
//    */
//   private String toIndentedString(Object o) {
//     if (o == null) {
//       return "null";
//     }
//     return o.toString().replace("\n", "\n    ");
//   }
// }


import com.gatebuzz.oxfordapi.model.Wordlist;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Path;
import retrofit2.http.Query;
package com.gatebuzz.oxfordapi.api;



@SuppressWarnings("unused")
public interface WordlistApi {
  /**
   * Retrieve list of words for category with advanced options.
   * Advanced options for retrieving [wordlist](/glossary?tag&#x3D;#wordlist&amp;expand) - exclude filter, filter by word length or match by substring (prefix).     &lt;div id&#x3D;\&quot;wordlist_advanced\&quot;&gt;&lt;/div&gt; 
   * @param sourceLang IANA language code (required)
   * @param filtersAdvanced Semicolon separated list of wordlist parameters, presented as value pairs: LexicalCategory, domains, regions, registers. Parameters can take comma separated list of values. E.g., lexicalCategory&#x3D;noun,adjective;domains&#x3D;sport. Number of values limited to 5. (required)
   * @param appId App ID Authentication Parameter (required)
   * @param appKey App Key Authentication Parameter (required)
   * @param exclude Semicolon separated list of parameters-value pairs (same as filters). Excludes headwords that have any senses in specified exclusion attributes (lexical categories, domains, etc.) from results. (optional)
   * @param excludeSenses Semicolon separated list of parameters-value pairs (same as filters). Excludes those senses of a particular headword that match specified exclusion attributes (lexical categories, domains, etc.) from results but includes the headword if it has other permitted senses. (optional)
   * @param excludePrimeSenses Semicolon separated list of parameters-value pairs (same as filters). Excludes a headword only if the primary sense matches the specified exclusion attributes (registers, domains only). (optional)
   * @param wordLength Parameter to speficy the minimum (&gt;), exact or maximum (&lt;) length of the words required. E.g., &gt;5 - more than 5 chars; &lt;4 - less than 4 chars; &gt;5&lt;10 - from 5 to 10 chars; 3 - exactly 3 chars. (optional, default to >5,<10)
   * @param prefix Filter words that start with prefix parameter (optional, default to goal)
   * @param exact If exact&#x3D;true wordlist returns a list of entries that exactly matches the search string. Otherwise wordlist lists entries that start with prefix string. (optional, default to false)
   * @param limit Limit the number of results per response. Default and maximum limit is 5000. (optional)
   * @param offset Offset the start number of the result. (optional)
   * @return Call&lt;Wordlist&gt;
   */
  
  @GET("wordlist/{source_lang}/{filters_advanced}")
// Path: app/src/main/java/com/gatebuzz/oxfordapi/model/Wordlist.java
// public class Wordlist   {
//   @SerializedName("metadata")
//   private Map<String, Object> metadata = null;
// 
//   @SerializedName("results")
//   private List<WordlistResults> results = new ArrayList<WordlistResults>();
// 
//   public Wordlist metadata(Map<String, Object> metadata) {
//     this.metadata = metadata;
//     return this;
//   }
// 
//    /**
//    * Additional Information provided by OUP
//    * @return metadata
//   **/
//   public Map<String, Object> getMetadata() {
//     return metadata;
//   }
// 
//   public void setMetadata(Map<String, Object> metadata) {
//     this.metadata = metadata;
//   }
// 
//   public Wordlist results(List<WordlistResults> results) {
//     this.results = results;
//     return this;
//   }
// 
//   public Wordlist addResultsItem(WordlistResults resultsItem) {
//     this.results.add(resultsItem);
//     return this;
//   }
// 
//    /**
//    * A list of found words
//    * @return results
//   **/
//   public List<WordlistResults> getResults() {
//     return results;
//   }
// 
//   public void setResults(List<WordlistResults> results) {
//     this.results = results;
//   }
// 
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) {
//       return true;
//     }
//     if (o == null || getClass() != o.getClass()) {
//       return false;
//     }
//     Wordlist wordlist = (Wordlist) o;
//     return Objects.equals(this.metadata, wordlist.metadata) &&
//         Objects.equals(this.results, wordlist.results);
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hash(metadata, results);
//   }
// 
//   @Override
//   public String toString() {
//     StringBuilder sb = new StringBuilder();
//     sb.append("class Wordlist {\n");
//     
//     sb.append("    metadata: ").append(toIndentedString(metadata)).append("\n");
//     sb.append("    results: ").append(toIndentedString(results)).append("\n");
//     sb.append("}");
//     return sb.toString();
//   }
// 
//   /**
//    * Convert the given object to string with each line indented by 4 spaces
//    * (except the first line).
//    */
//   private String toIndentedString(Object o) {
//     if (o == null) {
//       return "null";
//     }
//     return o.toString().replace("\n", "\n    ");
//   }
// }


// Path: app/src/main/java/com/gatebuzz/oxfordapi/api/WordlistApi.java
import com.gatebuzz.oxfordapi.model.Wordlist;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Path;
import retrofit2.http.Query;

package com.gatebuzz.oxfordapi.api;



@SuppressWarnings("unused")
public interface WordlistApi {
  /**
   * Retrieve list of words for category with advanced options.
   * Advanced options for retrieving [wordlist](/glossary?tag&#x3D;#wordlist&amp;expand) - exclude filter, filter by word length or match by substring (prefix).     &lt;div id&#x3D;\&quot;wordlist_advanced\&quot;&gt;&lt;/div&gt; 
   * @param sourceLang IANA language code (required)
   * @param filtersAdvanced Semicolon separated list of wordlist parameters, presented as value pairs: LexicalCategory, domains, regions, registers. Parameters can take comma separated list of values. E.g., lexicalCategory&#x3D;noun,adjective;domains&#x3D;sport. Number of values limited to 5. (required)
   * @param appId App ID Authentication Parameter (required)
   * @param appKey App Key Authentication Parameter (required)
   * @param exclude Semicolon separated list of parameters-value pairs (same as filters). Excludes headwords that have any senses in specified exclusion attributes (lexical categories, domains, etc.) from results. (optional)
   * @param excludeSenses Semicolon separated list of parameters-value pairs (same as filters). Excludes those senses of a particular headword that match specified exclusion attributes (lexical categories, domains, etc.) from results but includes the headword if it has other permitted senses. (optional)
   * @param excludePrimeSenses Semicolon separated list of parameters-value pairs (same as filters). Excludes a headword only if the primary sense matches the specified exclusion attributes (registers, domains only). (optional)
   * @param wordLength Parameter to speficy the minimum (&gt;), exact or maximum (&lt;) length of the words required. E.g., &gt;5 - more than 5 chars; &lt;4 - less than 4 chars; &gt;5&lt;10 - from 5 to 10 chars; 3 - exactly 3 chars. (optional, default to >5,<10)
   * @param prefix Filter words that start with prefix parameter (optional, default to goal)
   * @param exact If exact&#x3D;true wordlist returns a list of entries that exactly matches the search string. Otherwise wordlist lists entries that start with prefix string. (optional, default to false)
   * @param limit Limit the number of results per response. Default and maximum limit is 5000. (optional)
   * @param offset Offset the start number of the result. (optional)
   * @return Call&lt;Wordlist&gt;
   */
  
  @GET("wordlist/{source_lang}/{filters_advanced}")
  Observable<Wordlist> wordlistSourceLangFiltersAdvancedGet(