microsoft-bonsai-api-main/Java/com.microsoft.bonsai.api/simulator/generated/src/main/java/com/microsoft/bonsai/simulatorapi/models/Event.java
/**
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
 */

package com.microsoft.bonsai.simulatorapi.models;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
 * RL action returned by bonsai platform when it got new state from simulator
 * session.
 */
public class Event {
    /**
     * Possible values include: 'Unspecified', 'EpisodeStart', 'EpisodeStep',
     * 'EpisodeFinish', 'Idle', 'Unregister'.
     */
    @JsonProperty(value = "type", required = true)
    private EventType type;

    /**
     * unique session id.
     */
    @JsonProperty(value = "sessionId", required = true)
    private String sessionId;

    /**
     * Always startes with 1, and Bonsai platform increment it at each Step
     * event in advance operation.static
     * Always just return the sequenceId returned by previous advance operation
     * response.
     */
    @JsonProperty(value = "sequenceId", required = true)
    private int sequenceId;

    /**
     * The episodeStart property.
     */
    @JsonProperty(value = "episodeStart")
    private EpisodeStart episodeStart;

    /**
     * The episodeStep property.
     */
    @JsonProperty(value = "episodeStep")
    private EpisodeStep episodeStep;

    /**
     * The episodeFinish property.
     */
    @JsonProperty(value = "episodeFinish")
    private EpisodeFinish episodeFinish;

    /**
     * The idle property.
     */
    @JsonProperty(value = "idle")
    private Idle idle;

    /**
     * The unregister property.
     */
    @JsonProperty(value = "unregister")
    private Unregister unregister;

    /**
     * Get possible values include: 'Unspecified', 'EpisodeStart', 'EpisodeStep', 'EpisodeFinish', 'Idle', 'Unregister'.
     *
     * @return the type value
     */
    public EventType type() {
        return this.type;
    }

    /**
     * Set possible values include: 'Unspecified', 'EpisodeStart', 'EpisodeStep', 'EpisodeFinish', 'Idle', 'Unregister'.
     *
     * @param type the type value to set
     * @return the Event object itself.
     */
    public Event withType(EventType type) {
        this.type = type;
        return this;
    }

    /**
     * Get unique session id.
     *
     * @return the sessionId value
     */
    public String sessionId() {
        return this.sessionId;
    }

    /**
     * Set unique session id.
     *
     * @param sessionId the sessionId value to set
     * @return the Event object itself.
     */
    public Event withSessionId(String sessionId) {
        this.sessionId = sessionId;
        return this;
    }

    /**
     * Get always startes with 1, and Bonsai platform increment it at each Step event in advance operation.static
     Always just return the sequenceId returned by previous advance operation response.
     *
     * @return the sequenceId value
     */
    public int sequenceId() {
        return this.sequenceId;
    }

    /**
     * Set always startes with 1, and Bonsai platform increment it at each Step event in advance operation.static
     Always just return the sequenceId returned by previous advance operation response.
     *
     * @param sequenceId the sequenceId value to set
     * @return the Event object itself.
     */
    public Event withSequenceId(int sequenceId) {
        this.sequenceId = sequenceId;
        return this;
    }

    /**
     * Get the episodeStart value.
     *
     * @return the episodeStart value
     */
    public EpisodeStart episodeStart() {
        return this.episodeStart;
    }

    /**
     * Set the episodeStart value.
     *
     * @param episodeStart the episodeStart value to set
     * @return the Event object itself.
     */
    public Event withEpisodeStart(EpisodeStart episodeStart) {
        this.episodeStart = episodeStart;
        return this;
    }

    /**
     * Get the episodeStep value.
     *
     * @return the episodeStep value
     */
    public EpisodeStep episodeStep() {
        return this.episodeStep;
    }

    /**
     * Set the episodeStep value.
     *
     * @param episodeStep the episodeStep value to set
     * @return the Event object itself.
     */
    public Event withEpisodeStep(EpisodeStep episodeStep) {
        this.episodeStep = episodeStep;
        return this;
    }

    /**
     * Get the episodeFinish value.
     *
     * @return the episodeFinish value
     */
    public EpisodeFinish episodeFinish() {
        return this.episodeFinish;
    }

    /**
     * Set the episodeFinish value.
     *
     * @param episodeFinish the episodeFinish value to set
     * @return the Event object itself.
     */
    public Event withEpisodeFinish(EpisodeFinish episodeFinish) {
        this.episodeFinish = episodeFinish;
        return this;
    }

    /**
     * Get the idle value.
     *
     * @return the idle value
     */
    public Idle idle() {
        return this.idle;
    }

    /**
     * Set the idle value.
     *
     * @param idle the idle value to set
     * @return the Event object itself.
     */
    public Event withIdle(Idle idle) {
        this.idle = idle;
        return this;
    }

    /**
     * Get the unregister value.
     *
     * @return the unregister value
     */
    public Unregister unregister() {
        return this.unregister;
    }

    /**
     * Set the unregister value.
     *
     * @param unregister the unregister value to set
     * @return the Event object itself.
     */
    public Event withUnregister(Unregister unregister) {
        this.unregister = unregister;
        return this;
    }

}
