// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>

namespace k8s.Models
{
    using Newtonsoft.Json;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;

    /// <summary>
    /// An API server instance reports the version it can decode and the
    /// version it encodes objects to when persisting objects in the backend.
    /// </summary>
    public partial class V1alpha1ServerStorageVersion
    {
        /// <summary>
        /// Initializes a new instance of the V1alpha1ServerStorageVersion
        /// class.
        /// </summary>
        public V1alpha1ServerStorageVersion()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the V1alpha1ServerStorageVersion
        /// class.
        /// </summary>
        /// <param name="apiServerID">The ID of the reporting API
        /// server.</param>
        /// <param name="decodableVersions">The API server can decode objects
        /// encoded in these versions. The encodingVersion must be included in
        /// the decodableVersions.</param>
        /// <param name="encodingVersion">The API server encodes the object to
        /// this version when persisting it in the backend (e.g.,
        /// etcd).</param>
        public V1alpha1ServerStorageVersion(string apiServerID = default(string), IList<string> decodableVersions = default(IList<string>), string encodingVersion = default(string))
        {
            ApiServerID = apiServerID;
            DecodableVersions = decodableVersions;
            EncodingVersion = encodingVersion;
            CustomInit();
        }

        /// <summary>
        /// An initialization method that performs custom operations like setting defaults
        /// </summary>
        partial void CustomInit();

        /// <summary>
        /// Gets or sets the ID of the reporting API server.
        /// </summary>
        [JsonProperty(PropertyName = "apiServerID")]
        public string ApiServerID { get; set; }

        /// <summary>
        /// Gets or sets the API server can decode objects encoded in these
        /// versions. The encodingVersion must be included in the
        /// decodableVersions.
        /// </summary>
        [JsonProperty(PropertyName = "decodableVersions")]
        public IList<string> DecodableVersions { get; set; }

        /// <summary>
        /// Gets or sets the API server encodes the object to this version when
        /// persisting it in the backend (e.g., etcd).
        /// </summary>
        [JsonProperty(PropertyName = "encodingVersion")]
        public string EncodingVersion { get; set; }

    }
}
