// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.microsoft.typespec.http.client.generator.core.util;

import com.azure.core.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

public final class Model {
    /*
     * Required field.
     */
    @Generated
    @JsonProperty(value = "requiredField", required = true)
    private String requiredField;

    /**
     * Manually added Required field.
     */
    private String addedRequiredField;

    /*
     * Optional field
     */
    @Generated
    @JsonProperty(value = "optionalField")
    private String optionalField;

    /**
     * Creates an instance of Model class.
     *
     * @param requiredField
     */
    Model(
            @JsonProperty(value = "requiredField", required = true) String requiredField) {
        this.requiredField = requiredField;
    }

    /**
     * <!-- @formatter:off -->
     * Creates an instance of GeneratedModel class.
     *
     * <table border="1">
     *     <caption>Header Parameters</caption>
     *     <tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
     *     <tr><td>Content-Type</td><td>String</td><td>No</td><td>The content type. Allowed values: "application/json".</td></tr>
     * </table>
     * <!-- @formatter:on -->
     *
     * @param addedRequiredField
     * @param requiredField
     */
    public Model(
            String addedRequiredField,
            @JsonProperty(value = "requiredField", required = true) String requiredField) {
        // @formatter:off
        this.addedRequiredField = addedRequiredField;
        this.requiredField = requiredField;
        // @formatter:on
    }

    /**
     * Get the requiredField property: Required field.
     *
     * @return the requiredField value.
     */
    @Generated
    public String getRequiredField() {
        return this.requiredField;
    }

    /**
     * Get the optionalField property: Optional field.
     *
     * @return the optionalField value.
     */
    @Generated
    public String getOptionalField() {
        return this.optionalField;
    }

    /**
     * Set the optionalField property: Optional field.
     *
     * @param optionalField the optionalField value to set.
     * @return the Model object itself.
     */
    @Generated
    public Model setOptionalField(String optionalField) {
        this.optionalField = optionalField;
        return this;
    }

    /**
     * Get the addedRequiredField property: Manually added Required field.
     *
     * @return the addedRequiredField value.
     */
    public String getAddedRequiredField() {
        return this.addedRequiredField;
    }

}
