001
002package com.commercetools.ml.models.similar_products;
003
004import java.time.*;
005import java.time.ZonedDateTime;
006import java.util.*;
007import java.util.function.Function;
008
009import javax.validation.Valid;
010import javax.validation.constraints.NotNull;
011
012import com.commercetools.ml.models.common.TaskStatusEnum;
013import com.fasterxml.jackson.annotation.*;
014import com.fasterxml.jackson.databind.annotation.*;
015
016import io.vrap.rmf.base.client.utils.Generated;
017
018/**
019 *  <p>Represents a URL path to poll to get the results of an Asynchronous Request.</p>
020 *
021 * <hr>
022 * Example to create an instance using the builder pattern
023 * <div class=code-example>
024 * <pre><code class='java'>
025 *     SimilarProductsTaskStatus similarProductsTaskStatus = SimilarProductsTaskStatus.builder()
026 *             .state(TaskStatusEnum.PENDING)
027 *             .result(resultBuilder -> resultBuilder)
028 *             .build()
029 * </code></pre>
030 * </div>
031 */
032@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
033@JsonDeserialize(as = SimilarProductsTaskStatusImpl.class)
034public interface SimilarProductsTaskStatus {
035
036    /**
037     *
038     */
039    @NotNull
040    @JsonProperty("state")
041    public TaskStatusEnum getState();
042
043    /**
044     *  <p>The expiry date of the result. You cannot access the result after the expiry date. Default: 1 day after the result first becomes available. This is only available when the TaskStatus state is SUCCESS.</p>
045     */
046
047    @JsonProperty("expires")
048    public ZonedDateTime getExpires();
049
050    /**
051     *  <p>The response to an asynchronous request. The type depends on the request initiated. Only populated when the status is <code>SUCCESS</code>.</p>
052     */
053    @NotNull
054    @Valid
055    @JsonProperty("result")
056    public SimilarProductsPagedQueryResult getResult();
057
058    public void setState(final TaskStatusEnum state);
059
060    public void setExpires(final ZonedDateTime expires);
061
062    public void setResult(final SimilarProductsPagedQueryResult result);
063
064    public static SimilarProductsTaskStatus of() {
065        return new SimilarProductsTaskStatusImpl();
066    }
067
068    public static SimilarProductsTaskStatus of(final SimilarProductsTaskStatus template) {
069        SimilarProductsTaskStatusImpl instance = new SimilarProductsTaskStatusImpl();
070        instance.setState(template.getState());
071        instance.setExpires(template.getExpires());
072        instance.setResult(template.getResult());
073        return instance;
074    }
075
076    public static SimilarProductsTaskStatusBuilder builder() {
077        return SimilarProductsTaskStatusBuilder.of();
078    }
079
080    public static SimilarProductsTaskStatusBuilder builder(final SimilarProductsTaskStatus template) {
081        return SimilarProductsTaskStatusBuilder.of(template);
082    }
083
084    default <T> T withSimilarProductsTaskStatus(Function<SimilarProductsTaskStatus, T> helper) {
085        return helper.apply(this);
086    }
087
088    public static com.fasterxml.jackson.core.type.TypeReference<SimilarProductsTaskStatus> typeReference() {
089        return new com.fasterxml.jackson.core.type.TypeReference<SimilarProductsTaskStatus>() {
090            @Override
091            public String toString() {
092                return "TypeReference<SimilarProductsTaskStatus>";
093            }
094        };
095    }
096}