// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for
// license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.

namespace Microsoft.Azure.Management.DataFactory.Models
{
    using Microsoft.Azure;
    using Microsoft.Azure.Management;
    using Microsoft.Azure.Management.DataFactory;
    using Microsoft.Rest;
    using Microsoft.Rest.Serialization;
    using Newtonsoft.Json;
    using System.Linq;

    /// <summary>
    /// Azure Data Factory API operation definition.
    /// </summary>
    [Rest.Serialization.JsonTransformation]
    public partial class Operation
    {
        /// <summary>
        /// Initializes a new instance of the Operation class.
        /// </summary>
        public Operation()
        {
          CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the Operation class.
        /// </summary>
        /// <param name="name">Operation name:
        /// {provider}/{resource}/{operation}</param>
        /// <param name="origin">The intended executor of the
        /// operation.</param>
        /// <param name="display">Metadata associated with the
        /// operation.</param>
        /// <param name="serviceSpecification">Details about a service
        /// operation.</param>
        public Operation(string name = default(string), string origin = default(string), OperationDisplay display = default(OperationDisplay), OperationServiceSpecification serviceSpecification = default(OperationServiceSpecification))
        {
            Name = name;
            Origin = origin;
            Display = display;
            ServiceSpecification = serviceSpecification;
            CustomInit();
        }

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

        /// <summary>
        /// Gets or sets operation name: {provider}/{resource}/{operation}
        /// </summary>
        [JsonProperty(PropertyName = "name")]
        public string Name { get; set; }

        /// <summary>
        /// Gets or sets the intended executor of the operation.
        /// </summary>
        [JsonProperty(PropertyName = "origin")]
        public string Origin { get; set; }

        /// <summary>
        /// Gets or sets metadata associated with the operation.
        /// </summary>
        [JsonProperty(PropertyName = "display")]
        public OperationDisplay Display { get; set; }

        /// <summary>
        /// Gets or sets details about a service operation.
        /// </summary>
        [JsonProperty(PropertyName = "properties.serviceSpecification")]
        public OperationServiceSpecification ServiceSpecification { get; set; }

    }
}
