001
002package com.commercetools.ml.models.similar_products;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.validation.Valid;
009
010import com.fasterxml.jackson.annotation.*;
011import com.fasterxml.jackson.databind.annotation.*;
012
013import io.vrap.rmf.base.client.utils.Generated;
014
015/**
016 * SimilarProductSearchRequest
017 *
018 * <hr>
019 * Example to create an instance using the builder pattern
020 * <div class=code-example>
021 * <pre><code class='java'>
022 *     SimilarProductSearchRequest similarProductSearchRequest = SimilarProductSearchRequest.builder()
023 *             .build()
024 * </code></pre>
025 * </div>
026 */
027@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
028@JsonDeserialize(as = SimilarProductSearchRequestImpl.class)
029public interface SimilarProductSearchRequest {
030
031    /**
032     *  <p>Number of results requested.</p>
033     */
034
035    @JsonProperty("limit")
036    public Long getLimit();
037
038    /**
039     *  <p>Number of elements skipped.</p>
040     */
041
042    @JsonProperty("offset")
043    public Long getOffset();
044
045    /**
046     *  <p>language tag used to prioritize language for text comparisons.</p>
047     */
048
049    @JsonProperty("language")
050    public String getLanguage();
051
052    /**
053     *  <p>The three-digit currency code to compare prices in. When a product has multiple prices, all prices for the product are converted to the currency provided by the currency attribute and the median price is calculated for comparison. Currencies are converted using the ECB currency exchange rates at the time the request is made. Of the currency codes, only currencies with currency exchange rates provided by the ECB are supported.</p>
054     */
055
056    @JsonProperty("currencyCode")
057    public String getCurrencyCode();
058
059    /**
060     *  <p><code>similarityMeasures</code> defines the attributes taken into account to measure product similarity.</p>
061     */
062    @Valid
063    @JsonProperty("similarityMeasures")
064    public SimilarityMeasures getSimilarityMeasures();
065
066    /**
067     *  <p>Array of length 2 of ProductSetSelector</p>
068     */
069    @Valid
070    @JsonProperty("productSetSelectors")
071    public List<ProductSetSelector> getProductSetSelectors();
072
073    /**
074     *
075     */
076
077    @JsonProperty("confidenceMin")
078    public Double getConfidenceMin();
079
080    /**
081     *
082     */
083
084    @JsonProperty("confidenceMax")
085    public Double getConfidenceMax();
086
087    public void setLimit(final Long limit);
088
089    public void setOffset(final Long offset);
090
091    public void setLanguage(final String language);
092
093    public void setCurrencyCode(final String currencyCode);
094
095    public void setSimilarityMeasures(final SimilarityMeasures similarityMeasures);
096
097    @JsonIgnore
098    public void setProductSetSelectors(final ProductSetSelector... productSetSelectors);
099
100    public void setProductSetSelectors(final List<ProductSetSelector> productSetSelectors);
101
102    public void setConfidenceMin(final Double confidenceMin);
103
104    public void setConfidenceMax(final Double confidenceMax);
105
106    public static SimilarProductSearchRequest of() {
107        return new SimilarProductSearchRequestImpl();
108    }
109
110    public static SimilarProductSearchRequest of(final SimilarProductSearchRequest template) {
111        SimilarProductSearchRequestImpl instance = new SimilarProductSearchRequestImpl();
112        instance.setLimit(template.getLimit());
113        instance.setOffset(template.getOffset());
114        instance.setLanguage(template.getLanguage());
115        instance.setCurrencyCode(template.getCurrencyCode());
116        instance.setSimilarityMeasures(template.getSimilarityMeasures());
117        instance.setProductSetSelectors(template.getProductSetSelectors());
118        instance.setConfidenceMin(template.getConfidenceMin());
119        instance.setConfidenceMax(template.getConfidenceMax());
120        return instance;
121    }
122
123    public static SimilarProductSearchRequestBuilder builder() {
124        return SimilarProductSearchRequestBuilder.of();
125    }
126
127    public static SimilarProductSearchRequestBuilder builder(final SimilarProductSearchRequest template) {
128        return SimilarProductSearchRequestBuilder.of(template);
129    }
130
131    default <T> T withSimilarProductSearchRequest(Function<SimilarProductSearchRequest, T> helper) {
132        return helper.apply(this);
133    }
134
135    public static com.fasterxml.jackson.core.type.TypeReference<SimilarProductSearchRequest> typeReference() {
136        return new com.fasterxml.jackson.core.type.TypeReference<SimilarProductSearchRequest>() {
137            @Override
138            public String toString() {
139                return "TypeReference<SimilarProductSearchRequest>";
140            }
141        };
142    }
143}