// 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.
import Foundation
import azureSwiftRuntime
internal struct CreateFirewallRuleWithAccountParametersData : CreateFirewallRuleWithAccountParametersProtocol {
    public var name: String
    public var properties: CreateOrUpdateFirewallRulePropertiesProtocol

        enum CodingKeys: String, CodingKey {case name = "name"
        case properties = "properties"
        }

  public init(name: String, properties: CreateOrUpdateFirewallRulePropertiesProtocol)  {
    self.name = name
    self.properties = properties
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.name = try container.decode(String.self, forKey: .name)
    self.properties = try container.decode(CreateOrUpdateFirewallRulePropertiesData.self, forKey: .properties)
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.name, forKey: .name)
    try container.encode(self.properties as! CreateOrUpdateFirewallRulePropertiesData, forKey: .properties)
  }
}

extension DataFactory {
  public static func createCreateFirewallRuleWithAccountParametersProtocol(name: String, properties: CreateOrUpdateFirewallRulePropertiesProtocol) -> CreateFirewallRuleWithAccountParametersProtocol {
    return CreateFirewallRuleWithAccountParametersData(name: name, properties: properties)
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct CreateOrUpdateComputePolicyParametersData : CreateOrUpdateComputePolicyParametersProtocol {
    public var properties: CreateOrUpdateComputePolicyPropertiesProtocol

        enum CodingKeys: String, CodingKey {case properties = "properties"
        }

  public init(properties: CreateOrUpdateComputePolicyPropertiesProtocol)  {
    self.properties = properties
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.properties = try container.decode(CreateOrUpdateComputePolicyPropertiesData.self, forKey: .properties)
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.properties as! CreateOrUpdateComputePolicyPropertiesData, forKey: .properties)
  }
}

extension DataFactory {
  public static func createCreateOrUpdateComputePolicyParametersProtocol(properties: CreateOrUpdateComputePolicyPropertiesProtocol) -> CreateOrUpdateComputePolicyParametersProtocol {
    return CreateOrUpdateComputePolicyParametersData(properties: properties)
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct CreateOrUpdateComputePolicyPropertiesData : CreateOrUpdateComputePolicyPropertiesProtocol {
    public var objectId: String
    public var objectType: AADObjectTypeEnum
    public var maxDegreeOfParallelismPerJob: Int32?
    public var minPriorityPerJob: Int32?

        enum CodingKeys: String, CodingKey {case objectId = "objectId"
        case objectType = "objectType"
        case maxDegreeOfParallelismPerJob = "maxDegreeOfParallelismPerJob"
        case minPriorityPerJob = "minPriorityPerJob"
        }

  public init(objectId: String, objectType: AADObjectTypeEnum)  {
    self.objectId = objectId
    self.objectType = objectType
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.objectId = try container.decode(String.self, forKey: .objectId)
    self.objectType = try container.decode(AADObjectTypeEnum.self, forKey: .objectType)
    if container.contains(.maxDegreeOfParallelismPerJob) {
        self.maxDegreeOfParallelismPerJob = try container.decode(Int32?.self, forKey: .maxDegreeOfParallelismPerJob)
    }
    if container.contains(.minPriorityPerJob) {
        self.minPriorityPerJob = try container.decode(Int32?.self, forKey: .minPriorityPerJob)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.objectId, forKey: .objectId)
    try container.encode(self.objectType, forKey: .objectType)
    if self.maxDegreeOfParallelismPerJob != nil {try container.encode(self.maxDegreeOfParallelismPerJob, forKey: .maxDegreeOfParallelismPerJob)}
    if self.minPriorityPerJob != nil {try container.encode(self.minPriorityPerJob, forKey: .minPriorityPerJob)}
  }
}

extension DataFactory {
  public static func createCreateOrUpdateComputePolicyPropertiesProtocol(objectId: String, objectType: AADObjectTypeEnum) -> CreateOrUpdateComputePolicyPropertiesProtocol {
    return CreateOrUpdateComputePolicyPropertiesData(objectId: objectId, objectType: objectType)
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct CreateOrUpdateFirewallRuleParametersData : CreateOrUpdateFirewallRuleParametersProtocol {
    public var properties: CreateOrUpdateFirewallRulePropertiesProtocol

        enum CodingKeys: String, CodingKey {case properties = "properties"
        }

  public init(properties: CreateOrUpdateFirewallRulePropertiesProtocol)  {
    self.properties = properties
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.properties = try container.decode(CreateOrUpdateFirewallRulePropertiesData.self, forKey: .properties)
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.properties as! CreateOrUpdateFirewallRulePropertiesData, forKey: .properties)
  }
}

extension DataFactory {
  public static func createCreateOrUpdateFirewallRuleParametersProtocol(properties: CreateOrUpdateFirewallRulePropertiesProtocol) -> CreateOrUpdateFirewallRuleParametersProtocol {
    return CreateOrUpdateFirewallRuleParametersData(properties: properties)
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct CreateOrUpdateFirewallRulePropertiesData : CreateOrUpdateFirewallRulePropertiesProtocol {
    public var startIpAddress: String
    public var endIpAddress: String

        enum CodingKeys: String, CodingKey {case startIpAddress = "startIpAddress"
        case endIpAddress = "endIpAddress"
        }

  public init(startIpAddress: String, endIpAddress: String)  {
    self.startIpAddress = startIpAddress
    self.endIpAddress = endIpAddress
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.startIpAddress = try container.decode(String.self, forKey: .startIpAddress)
    self.endIpAddress = try container.decode(String.self, forKey: .endIpAddress)
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.startIpAddress, forKey: .startIpAddress)
    try container.encode(self.endIpAddress, forKey: .endIpAddress)
  }
}

extension DataFactory {
  public static func createCreateOrUpdateFirewallRulePropertiesProtocol(startIpAddress: String, endIpAddress: String) -> CreateOrUpdateFirewallRulePropertiesProtocol {
    return CreateOrUpdateFirewallRulePropertiesData(startIpAddress: startIpAddress, endIpAddress: endIpAddress)
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct DataLakeAnalyticsAccountBasicData : DataLakeAnalyticsAccountBasicProtocol, ResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var location: String?
    public var tags: [String:String]?
    public var properties: DataLakeAnalyticsAccountPropertiesBasicProtocol?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case location = "location"
        case tags = "tags"
        case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.location) {
        self.location = try container.decode(String?.self, forKey: .location)
    }
    if container.contains(.tags) {
        self.tags = try container.decode([String:String]?.self, forKey: .tags)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(DataLakeAnalyticsAccountPropertiesBasicData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.location != nil {try container.encode(self.location, forKey: .location)}
    if self.tags != nil {try container.encode(self.tags, forKey: .tags)}
    if self.properties != nil {try container.encode(self.properties as! DataLakeAnalyticsAccountPropertiesBasicData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createDataLakeAnalyticsAccountBasicProtocol() -> DataLakeAnalyticsAccountBasicProtocol {
    return DataLakeAnalyticsAccountBasicData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct DataLakeAnalyticsAccountData : DataLakeAnalyticsAccountProtocol, ResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var location: String?
    public var tags: [String:String]?
    public var properties: DataLakeAnalyticsAccountPropertiesProtocol?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case location = "location"
        case tags = "tags"
        case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.location) {
        self.location = try container.decode(String?.self, forKey: .location)
    }
    if container.contains(.tags) {
        self.tags = try container.decode([String:String]?.self, forKey: .tags)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(DataLakeAnalyticsAccountPropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.location != nil {try container.encode(self.location, forKey: .location)}
    if self.tags != nil {try container.encode(self.tags, forKey: .tags)}
    if self.properties != nil {try container.encode(self.properties as! DataLakeAnalyticsAccountPropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createDataLakeAnalyticsAccountProtocol() -> DataLakeAnalyticsAccountProtocol {
    return DataLakeAnalyticsAccountData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct DataLakeAnalyticsAccountListResultData : DataLakeAnalyticsAccountListResultProtocol {
    public var value: [DataLakeAnalyticsAccountBasicProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([DataLakeAnalyticsAccountBasicData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [DataLakeAnalyticsAccountBasicData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createDataLakeAnalyticsAccountListResultProtocol() -> DataLakeAnalyticsAccountListResultProtocol {
    return DataLakeAnalyticsAccountListResultData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct DataLakeAnalyticsAccountPropertiesBasicData : DataLakeAnalyticsAccountPropertiesBasicProtocol {
    public var accountId: String?
    public var provisioningState: DataLakeAnalyticsAccountStatusEnum?
    public var state: DataLakeAnalyticsAccountStateEnum?
    public var creationTime: Date?
    public var lastModifiedTime: Date?
    public var endpoint: String?

        enum CodingKeys: String, CodingKey {case accountId = "accountId"
        case provisioningState = "provisioningState"
        case state = "state"
        case creationTime = "creationTime"
        case lastModifiedTime = "lastModifiedTime"
        case endpoint = "endpoint"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.accountId) {
        self.accountId = try container.decode(String?.self, forKey: .accountId)
    }
    if container.contains(.provisioningState) {
        self.provisioningState = try container.decode(DataLakeAnalyticsAccountStatusEnum?.self, forKey: .provisioningState)
    }
    if container.contains(.state) {
        self.state = try container.decode(DataLakeAnalyticsAccountStateEnum?.self, forKey: .state)
    }
    if container.contains(.creationTime) {
        self.creationTime = DateConverter.fromString(dateStr: (try container.decode(String?.self, forKey: .creationTime)), format: .dateTime)
    }
    if container.contains(.lastModifiedTime) {
        self.lastModifiedTime = DateConverter.fromString(dateStr: (try container.decode(String?.self, forKey: .lastModifiedTime)), format: .dateTime)
    }
    if container.contains(.endpoint) {
        self.endpoint = try container.decode(String?.self, forKey: .endpoint)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.accountId != nil {try container.encode(self.accountId, forKey: .accountId)}
    if self.provisioningState != nil {try container.encode(self.provisioningState, forKey: .provisioningState)}
    if self.state != nil {try container.encode(self.state, forKey: .state)}
    if self.creationTime != nil {
        try container.encode(DateConverter.toString(date: self.creationTime!, format: .dateTime), forKey: .creationTime)
    }
    if self.lastModifiedTime != nil {
        try container.encode(DateConverter.toString(date: self.lastModifiedTime!, format: .dateTime), forKey: .lastModifiedTime)
    }
    if self.endpoint != nil {try container.encode(self.endpoint, forKey: .endpoint)}
  }
}

extension DataFactory {
  public static func createDataLakeAnalyticsAccountPropertiesBasicProtocol() -> DataLakeAnalyticsAccountPropertiesBasicProtocol {
    return DataLakeAnalyticsAccountPropertiesBasicData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct DataLakeAnalyticsAccountPropertiesData : DataLakeAnalyticsAccountPropertiesProtocol, DataLakeAnalyticsAccountPropertiesBasicProtocol {
    public var accountId: String?
    public var provisioningState: DataLakeAnalyticsAccountStatusEnum?
    public var state: DataLakeAnalyticsAccountStateEnum?
    public var creationTime: Date?
    public var lastModifiedTime: Date?
    public var endpoint: String?
    public var defaultDataLakeStoreAccount: String?
    public var dataLakeStoreAccounts: [DataLakeStoreAccountInformationProtocol?]?
    public var storageAccounts: [StorageAccountInformationProtocol?]?
    public var computePolicies: [ComputePolicyProtocol?]?
    public var firewallRules: [FirewallRuleProtocol?]?
    public var firewallState: FirewallStateEnum?
    public var firewallAllowAzureIps: FirewallAllowAzureIpsStateEnum?
    public var newTier: TierTypeEnum?
    public var currentTier: TierTypeEnum?
    public var maxJobCount: Int32?
    public var systemMaxJobCount: Int32?
    public var maxDegreeOfParallelism: Int32?
    public var systemMaxDegreeOfParallelism: Int32?
    public var maxDegreeOfParallelismPerJob: Int32?
    public var minPriorityPerJob: Int32?
    public var queryStoreRetention: Int32?

        enum CodingKeys: String, CodingKey {case accountId = "accountId"
        case provisioningState = "provisioningState"
        case state = "state"
        case creationTime = "creationTime"
        case lastModifiedTime = "lastModifiedTime"
        case endpoint = "endpoint"
        case defaultDataLakeStoreAccount = "defaultDataLakeStoreAccount"
        case dataLakeStoreAccounts = "dataLakeStoreAccounts"
        case storageAccounts = "storageAccounts"
        case computePolicies = "computePolicies"
        case firewallRules = "firewallRules"
        case firewallState = "firewallState"
        case firewallAllowAzureIps = "firewallAllowAzureIps"
        case newTier = "newTier"
        case currentTier = "currentTier"
        case maxJobCount = "maxJobCount"
        case systemMaxJobCount = "systemMaxJobCount"
        case maxDegreeOfParallelism = "maxDegreeOfParallelism"
        case systemMaxDegreeOfParallelism = "systemMaxDegreeOfParallelism"
        case maxDegreeOfParallelismPerJob = "maxDegreeOfParallelismPerJob"
        case minPriorityPerJob = "minPriorityPerJob"
        case queryStoreRetention = "queryStoreRetention"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.accountId) {
        self.accountId = try container.decode(String?.self, forKey: .accountId)
    }
    if container.contains(.provisioningState) {
        self.provisioningState = try container.decode(DataLakeAnalyticsAccountStatusEnum?.self, forKey: .provisioningState)
    }
    if container.contains(.state) {
        self.state = try container.decode(DataLakeAnalyticsAccountStateEnum?.self, forKey: .state)
    }
    if container.contains(.creationTime) {
        self.creationTime = DateConverter.fromString(dateStr: (try container.decode(String?.self, forKey: .creationTime)), format: .dateTime)
    }
    if container.contains(.lastModifiedTime) {
        self.lastModifiedTime = DateConverter.fromString(dateStr: (try container.decode(String?.self, forKey: .lastModifiedTime)), format: .dateTime)
    }
    if container.contains(.endpoint) {
        self.endpoint = try container.decode(String?.self, forKey: .endpoint)
    }
    if container.contains(.defaultDataLakeStoreAccount) {
        self.defaultDataLakeStoreAccount = try container.decode(String?.self, forKey: .defaultDataLakeStoreAccount)
    }
    if container.contains(.dataLakeStoreAccounts) {
        self.dataLakeStoreAccounts = try container.decode([DataLakeStoreAccountInformationData?]?.self, forKey: .dataLakeStoreAccounts)
    }
    if container.contains(.storageAccounts) {
        self.storageAccounts = try container.decode([StorageAccountInformationData?]?.self, forKey: .storageAccounts)
    }
    if container.contains(.computePolicies) {
        self.computePolicies = try container.decode([ComputePolicyData?]?.self, forKey: .computePolicies)
    }
    if container.contains(.firewallRules) {
        self.firewallRules = try container.decode([FirewallRuleData?]?.self, forKey: .firewallRules)
    }
    if container.contains(.firewallState) {
        self.firewallState = try container.decode(FirewallStateEnum?.self, forKey: .firewallState)
    }
    if container.contains(.firewallAllowAzureIps) {
        self.firewallAllowAzureIps = try container.decode(FirewallAllowAzureIpsStateEnum?.self, forKey: .firewallAllowAzureIps)
    }
    if container.contains(.newTier) {
        self.newTier = try container.decode(TierTypeEnum?.self, forKey: .newTier)
    }
    if container.contains(.currentTier) {
        self.currentTier = try container.decode(TierTypeEnum?.self, forKey: .currentTier)
    }
    if container.contains(.maxJobCount) {
        self.maxJobCount = try container.decode(Int32?.self, forKey: .maxJobCount)
    }
    if container.contains(.systemMaxJobCount) {
        self.systemMaxJobCount = try container.decode(Int32?.self, forKey: .systemMaxJobCount)
    }
    if container.contains(.maxDegreeOfParallelism) {
        self.maxDegreeOfParallelism = try container.decode(Int32?.self, forKey: .maxDegreeOfParallelism)
    }
    if container.contains(.systemMaxDegreeOfParallelism) {
        self.systemMaxDegreeOfParallelism = try container.decode(Int32?.self, forKey: .systemMaxDegreeOfParallelism)
    }
    if container.contains(.maxDegreeOfParallelismPerJob) {
        self.maxDegreeOfParallelismPerJob = try container.decode(Int32?.self, forKey: .maxDegreeOfParallelismPerJob)
    }
    if container.contains(.minPriorityPerJob) {
        self.minPriorityPerJob = try container.decode(Int32?.self, forKey: .minPriorityPerJob)
    }
    if container.contains(.queryStoreRetention) {
        self.queryStoreRetention = try container.decode(Int32?.self, forKey: .queryStoreRetention)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.accountId != nil {try container.encode(self.accountId, forKey: .accountId)}
    if self.provisioningState != nil {try container.encode(self.provisioningState, forKey: .provisioningState)}
    if self.state != nil {try container.encode(self.state, forKey: .state)}
    if self.creationTime != nil {
        try container.encode(DateConverter.toString(date: self.creationTime!, format: .dateTime), forKey: .creationTime)
    }
    if self.lastModifiedTime != nil {
        try container.encode(DateConverter.toString(date: self.lastModifiedTime!, format: .dateTime), forKey: .lastModifiedTime)
    }
    if self.endpoint != nil {try container.encode(self.endpoint, forKey: .endpoint)}
    if self.defaultDataLakeStoreAccount != nil {try container.encode(self.defaultDataLakeStoreAccount, forKey: .defaultDataLakeStoreAccount)}
    if self.dataLakeStoreAccounts != nil {try container.encode(self.dataLakeStoreAccounts as! [DataLakeStoreAccountInformationData?]?, forKey: .dataLakeStoreAccounts)}
    if self.storageAccounts != nil {try container.encode(self.storageAccounts as! [StorageAccountInformationData?]?, forKey: .storageAccounts)}
    if self.computePolicies != nil {try container.encode(self.computePolicies as! [ComputePolicyData?]?, forKey: .computePolicies)}
    if self.firewallRules != nil {try container.encode(self.firewallRules as! [FirewallRuleData?]?, forKey: .firewallRules)}
    if self.firewallState != nil {try container.encode(self.firewallState, forKey: .firewallState)}
    if self.firewallAllowAzureIps != nil {try container.encode(self.firewallAllowAzureIps, forKey: .firewallAllowAzureIps)}
    if self.newTier != nil {try container.encode(self.newTier, forKey: .newTier)}
    if self.currentTier != nil {try container.encode(self.currentTier, forKey: .currentTier)}
    if self.maxJobCount != nil {try container.encode(self.maxJobCount, forKey: .maxJobCount)}
    if self.systemMaxJobCount != nil {try container.encode(self.systemMaxJobCount, forKey: .systemMaxJobCount)}
    if self.maxDegreeOfParallelism != nil {try container.encode(self.maxDegreeOfParallelism, forKey: .maxDegreeOfParallelism)}
    if self.systemMaxDegreeOfParallelism != nil {try container.encode(self.systemMaxDegreeOfParallelism, forKey: .systemMaxDegreeOfParallelism)}
    if self.maxDegreeOfParallelismPerJob != nil {try container.encode(self.maxDegreeOfParallelismPerJob, forKey: .maxDegreeOfParallelismPerJob)}
    if self.minPriorityPerJob != nil {try container.encode(self.minPriorityPerJob, forKey: .minPriorityPerJob)}
    if self.queryStoreRetention != nil {try container.encode(self.queryStoreRetention, forKey: .queryStoreRetention)}
  }
}

extension DataFactory {
  public static func createDataLakeAnalyticsAccountPropertiesProtocol() -> DataLakeAnalyticsAccountPropertiesProtocol {
    return DataLakeAnalyticsAccountPropertiesData()
  }
}


// DataLakeAnalyticsAccountState enumerates the values for data lake analytics account state.

// 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.
public enum DataLakeAnalyticsAccountStateEnum: String, Codable
{
// Active specifies the active state for data lake analytics account state.
    case Active = "Active"
// Suspended specifies the suspended state for data lake analytics account state.
    case Suspended = "Suspended"
}


// DataLakeAnalyticsAccountStatus enumerates the values for data lake analytics account status.

// 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.
public enum DataLakeAnalyticsAccountStatusEnum: String, Codable
{
// Canceled specifies the canceled state for data lake analytics account status.
    case Canceled = "Canceled"
// Creating specifies the creating state for data lake analytics account status.
    case Creating = "Creating"
// Deleted specifies the deleted state for data lake analytics account status.
    case Deleted = "Deleted"
// Deleting specifies the deleting state for data lake analytics account status.
    case Deleting = "Deleting"
// Failed specifies the failed state for data lake analytics account status.
    case Failed = "Failed"
// Patching specifies the patching state for data lake analytics account status.
    case Patching = "Patching"
// Resuming specifies the resuming state for data lake analytics account status.
    case Resuming = "Resuming"
// Running specifies the running state for data lake analytics account status.
    case Running = "Running"
// Succeeded specifies the succeeded state for data lake analytics account status.
    case Succeeded = "Succeeded"
// Suspending specifies the suspending state for data lake analytics account status.
    case Suspending = "Suspending"
// Undeleting specifies the undeleting state for data lake analytics account status.
    case Undeleting = "Undeleting"
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct DataLakeStoreAccountInformationData : DataLakeStoreAccountInformationProtocol, SubResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var properties: DataLakeStoreAccountInformationPropertiesProtocol?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(DataLakeStoreAccountInformationPropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.properties != nil {try container.encode(self.properties as! DataLakeStoreAccountInformationPropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createDataLakeStoreAccountInformationProtocol() -> DataLakeStoreAccountInformationProtocol {
    return DataLakeStoreAccountInformationData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct DataLakeStoreAccountInformationListResultData : DataLakeStoreAccountInformationListResultProtocol {
    public var value: [DataLakeStoreAccountInformationProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([DataLakeStoreAccountInformationData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [DataLakeStoreAccountInformationData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createDataLakeStoreAccountInformationListResultProtocol() -> DataLakeStoreAccountInformationListResultProtocol {
    return DataLakeStoreAccountInformationListResultData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct DataLakeStoreAccountInformationPropertiesData : DataLakeStoreAccountInformationPropertiesProtocol {
    public var suffix: String?

        enum CodingKeys: String, CodingKey {case suffix = "suffix"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.suffix) {
        self.suffix = try container.decode(String?.self, forKey: .suffix)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.suffix != nil {try container.encode(self.suffix, forKey: .suffix)}
  }
}

extension DataFactory {
  public static func createDataLakeStoreAccountInformationPropertiesProtocol() -> DataLakeStoreAccountInformationPropertiesProtocol {
    return DataLakeStoreAccountInformationPropertiesData()
  }
}


// FirewallAllowAzureIpsState enumerates the values for firewall allow azure ips state.

// 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.
public enum FirewallAllowAzureIpsStateEnum: String, Codable
{
// Disabled specifies the disabled state for firewall allow azure ips state.
    case Disabled = "Disabled"
// Enabled specifies the enabled state for firewall allow azure ips state.
    case Enabled = "Enabled"
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct FirewallRuleData : FirewallRuleProtocol, SubResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var properties: FirewallRulePropertiesProtocol?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(FirewallRulePropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.properties != nil {try container.encode(self.properties as! FirewallRulePropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createFirewallRuleProtocol() -> FirewallRuleProtocol {
    return FirewallRuleData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct FirewallRuleListResultData : FirewallRuleListResultProtocol {
    public var value: [FirewallRuleProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([FirewallRuleData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [FirewallRuleData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createFirewallRuleListResultProtocol() -> FirewallRuleListResultProtocol {
    return FirewallRuleListResultData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct FirewallRulePropertiesData : FirewallRulePropertiesProtocol {
    public var startIpAddress: String?
    public var endIpAddress: String?

        enum CodingKeys: String, CodingKey {case startIpAddress = "startIpAddress"
        case endIpAddress = "endIpAddress"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.startIpAddress) {
        self.startIpAddress = try container.decode(String?.self, forKey: .startIpAddress)
    }
    if container.contains(.endIpAddress) {
        self.endIpAddress = try container.decode(String?.self, forKey: .endIpAddress)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.startIpAddress != nil {try container.encode(self.startIpAddress, forKey: .startIpAddress)}
    if self.endIpAddress != nil {try container.encode(self.endIpAddress, forKey: .endIpAddress)}
  }
}

extension DataFactory {
  public static func createFirewallRulePropertiesProtocol() -> FirewallRulePropertiesProtocol {
    return FirewallRulePropertiesData()
  }
}


// FirewallState enumerates the values for firewall state.

// 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.
public enum FirewallStateEnum: String, Codable
{
// FirewallStateDisabled specifies the firewall state disabled state for firewall state.
    case FirewallStateDisabled = "Disabled"
// FirewallStateEnabled specifies the firewall state enabled state for firewall state.
    case FirewallStateEnabled = "Enabled"
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct NameAvailabilityInformationData : NameAvailabilityInformationProtocol {
    public var nameAvailable: Bool?
    public var reason: String?
    public var message: String?

        enum CodingKeys: String, CodingKey {case nameAvailable = "nameAvailable"
        case reason = "reason"
        case message = "message"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.nameAvailable) {
        self.nameAvailable = try container.decode(Bool?.self, forKey: .nameAvailable)
    }
    if container.contains(.reason) {
        self.reason = try container.decode(String?.self, forKey: .reason)
    }
    if container.contains(.message) {
        self.message = try container.decode(String?.self, forKey: .message)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.nameAvailable != nil {try container.encode(self.nameAvailable, forKey: .nameAvailable)}
    if self.reason != nil {try container.encode(self.reason, forKey: .reason)}
    if self.message != nil {try container.encode(self.message, forKey: .message)}
  }
}

extension DataFactory {
  public static func createNameAvailabilityInformationProtocol() -> NameAvailabilityInformationProtocol {
    return NameAvailabilityInformationData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct OperationData : OperationProtocol {
    public var name: String?
    public var display: OperationDisplayProtocol?
    public var origin: OperationOriginEnum?

        enum CodingKeys: String, CodingKey {case name = "name"
        case display = "display"
        case origin = "origin"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.display) {
        self.display = try container.decode(OperationDisplayData?.self, forKey: .display)
    }
    if container.contains(.origin) {
        self.origin = try container.decode(OperationOriginEnum?.self, forKey: .origin)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.display != nil {try container.encode(self.display as! OperationDisplayData?, forKey: .display)}
    if self.origin != nil {try container.encode(self.origin, forKey: .origin)}
  }
}

extension DataFactory {
  public static func createOperationProtocol() -> OperationProtocol {
    return OperationData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct OperationDisplayData : OperationDisplayProtocol {
    public var provider: String?
    public var resource: String?
    public var operation: String?
    public var description: String?

        enum CodingKeys: String, CodingKey {case provider = "provider"
        case resource = "resource"
        case operation = "operation"
        case description = "description"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.provider) {
        self.provider = try container.decode(String?.self, forKey: .provider)
    }
    if container.contains(.resource) {
        self.resource = try container.decode(String?.self, forKey: .resource)
    }
    if container.contains(.operation) {
        self.operation = try container.decode(String?.self, forKey: .operation)
    }
    if container.contains(.description) {
        self.description = try container.decode(String?.self, forKey: .description)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.provider != nil {try container.encode(self.provider, forKey: .provider)}
    if self.resource != nil {try container.encode(self.resource, forKey: .resource)}
    if self.operation != nil {try container.encode(self.operation, forKey: .operation)}
    if self.description != nil {try container.encode(self.description, forKey: .description)}
  }
}

extension DataFactory {
  public static func createOperationDisplayProtocol() -> OperationDisplayProtocol {
    return OperationDisplayData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct OperationListResultData : OperationListResultProtocol {
    public var value: [OperationProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([OperationData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [OperationData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createOperationListResultProtocol() -> OperationListResultProtocol {
    return OperationListResultData()
  }
}


// OperationOrigin enumerates the values for operation origin.

// 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.
public enum OperationOriginEnum: String, Codable
{
// OperationOriginSystem specifies the operation origin system state for operation origin.
    case OperationOriginSystem = "system"
// OperationOriginUser specifies the operation origin user state for operation origin.
    case OperationOriginUser = "user"
// OperationOriginUsersystem specifies the operation origin usersystem state for operation origin.
    case OperationOriginUsersystem = "user,system"
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct ResourceData : ResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var location: String?
    public var tags: [String:String]?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case location = "location"
        case tags = "tags"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.location) {
        self.location = try container.decode(String?.self, forKey: .location)
    }
    if container.contains(.tags) {
        self.tags = try container.decode([String:String]?.self, forKey: .tags)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.location != nil {try container.encode(self.location, forKey: .location)}
    if self.tags != nil {try container.encode(self.tags, forKey: .tags)}
  }
}

extension DataFactory {
  public static func createResourceProtocol() -> ResourceProtocol {
    return ResourceData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct SasTokenInformationData : SasTokenInformationProtocol {
    public var accessToken: String?

        enum CodingKeys: String, CodingKey {case accessToken = "accessToken"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.accessToken) {
        self.accessToken = try container.decode(String?.self, forKey: .accessToken)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.accessToken != nil {try container.encode(self.accessToken, forKey: .accessToken)}
  }
}

extension DataFactory {
  public static func createSasTokenInformationProtocol() -> SasTokenInformationProtocol {
    return SasTokenInformationData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct SasTokenInformationListResultData : SasTokenInformationListResultProtocol {
    public var value: [SasTokenInformationProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([SasTokenInformationData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [SasTokenInformationData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createSasTokenInformationListResultProtocol() -> SasTokenInformationListResultProtocol {
    return SasTokenInformationListResultData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct StorageAccountInformationData : StorageAccountInformationProtocol, SubResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var properties: StorageAccountInformationPropertiesProtocol?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(StorageAccountInformationPropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.properties != nil {try container.encode(self.properties as! StorageAccountInformationPropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createStorageAccountInformationProtocol() -> StorageAccountInformationProtocol {
    return StorageAccountInformationData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct StorageAccountInformationListResultData : StorageAccountInformationListResultProtocol {
    public var value: [StorageAccountInformationProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([StorageAccountInformationData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [StorageAccountInformationData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createStorageAccountInformationListResultProtocol() -> StorageAccountInformationListResultProtocol {
    return StorageAccountInformationListResultData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct StorageAccountInformationPropertiesData : StorageAccountInformationPropertiesProtocol {
    public var suffix: String?

        enum CodingKeys: String, CodingKey {case suffix = "suffix"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.suffix) {
        self.suffix = try container.decode(String?.self, forKey: .suffix)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.suffix != nil {try container.encode(self.suffix, forKey: .suffix)}
  }
}

extension DataFactory {
  public static func createStorageAccountInformationPropertiesProtocol() -> StorageAccountInformationPropertiesProtocol {
    return StorageAccountInformationPropertiesData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct StorageContainerData : StorageContainerProtocol, SubResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?
    public var properties: StorageContainerPropertiesProtocol?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(StorageContainerPropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
    if self.properties != nil {try container.encode(self.properties as! StorageContainerPropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createStorageContainerProtocol() -> StorageContainerProtocol {
    return StorageContainerData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct StorageContainerListResultData : StorageContainerListResultProtocol {
    public var value: [StorageContainerProtocol?]?
    public var _nextLink: String?

        enum CodingKeys: String, CodingKey {case value = "value"
        case _nextLink = "nextLink"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.value) {
        self.value = try container.decode([StorageContainerData?]?.self, forKey: .value)
    }
    if container.contains(._nextLink) {
        self._nextLink = try container.decode(String?.self, forKey: ._nextLink)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.value != nil {try container.encode(self.value as! [StorageContainerData?]?, forKey: .value)}
    if self._nextLink != nil {try container.encode(self._nextLink, forKey: ._nextLink)}
  }
}

extension DataFactory {
  public static func createStorageContainerListResultProtocol() -> StorageContainerListResultProtocol {
    return StorageContainerListResultData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct StorageContainerPropertiesData : StorageContainerPropertiesProtocol {
    public var lastModifiedTime: Date?

        enum CodingKeys: String, CodingKey {case lastModifiedTime = "lastModifiedTime"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.lastModifiedTime) {
        self.lastModifiedTime = DateConverter.fromString(dateStr: (try container.decode(String?.self, forKey: .lastModifiedTime)), format: .dateTime)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.lastModifiedTime != nil {
        try container.encode(DateConverter.toString(date: self.lastModifiedTime!, format: .dateTime), forKey: .lastModifiedTime)
    }
  }
}

extension DataFactory {
  public static func createStorageContainerPropertiesProtocol() -> StorageContainerPropertiesProtocol {
    return StorageContainerPropertiesData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct SubResourceData : SubResourceProtocol {
    public var id: String?
    public var name: String?
    public var type: String?

        enum CodingKeys: String, CodingKey {case id = "id"
        case name = "name"
        case type = "type"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.id) {
        self.id = try container.decode(String?.self, forKey: .id)
    }
    if container.contains(.name) {
        self.name = try container.decode(String?.self, forKey: .name)
    }
    if container.contains(.type) {
        self.type = try container.decode(String?.self, forKey: .type)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.id != nil {try container.encode(self.id, forKey: .id)}
    if self.name != nil {try container.encode(self.name, forKey: .name)}
    if self.type != nil {try container.encode(self.type, forKey: .type)}
  }
}

extension DataFactory {
  public static func createSubResourceProtocol() -> SubResourceProtocol {
    return SubResourceData()
  }
}


// SubscriptionState enumerates the values for subscription state.

// 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.
public enum SubscriptionStateEnum: String, Codable
{
// SubscriptionStateDeleted specifies the subscription state deleted state for subscription state.
    case SubscriptionStateDeleted = "Deleted"
// SubscriptionStateRegistered specifies the subscription state registered state for subscription state.
    case SubscriptionStateRegistered = "Registered"
// SubscriptionStateSuspended specifies the subscription state suspended state for subscription state.
    case SubscriptionStateSuspended = "Suspended"
// SubscriptionStateUnregistered specifies the subscription state unregistered state for subscription state.
    case SubscriptionStateUnregistered = "Unregistered"
// SubscriptionStateWarned specifies the subscription state warned state for subscription state.
    case SubscriptionStateWarned = "Warned"
}


// TierType enumerates the values for tier type.

// 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.
public enum TierTypeEnum: String, Codable
{
// Commitment100000AUHours specifies the commitment 100000au hours state for tier type.
    case Commitment100000AUHours = "Commitment_100000AUHours"
// Commitment10000AUHours specifies the commitment 10000au hours state for tier type.
    case Commitment10000AUHours = "Commitment_10000AUHours"
// Commitment1000AUHours specifies the commitment 1000au hours state for tier type.
    case Commitment1000AUHours = "Commitment_1000AUHours"
// Commitment100AUHours specifies the commitment 100au hours state for tier type.
    case Commitment100AUHours = "Commitment_100AUHours"
// Commitment500000AUHours specifies the commitment 500000au hours state for tier type.
    case Commitment500000AUHours = "Commitment_500000AUHours"
// Commitment50000AUHours specifies the commitment 50000au hours state for tier type.
    case Commitment50000AUHours = "Commitment_50000AUHours"
// Commitment5000AUHours specifies the commitment 5000au hours state for tier type.
    case Commitment5000AUHours = "Commitment_5000AUHours"
// Commitment500AUHours specifies the commitment 500au hours state for tier type.
    case Commitment500AUHours = "Commitment_500AUHours"
// Consumption specifies the consumption state for tier type.
    case Consumption = "Consumption"
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateComputePolicyParametersData : UpdateComputePolicyParametersProtocol {
    public var properties: UpdateComputePolicyPropertiesProtocol?

        enum CodingKeys: String, CodingKey {case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.properties) {
        self.properties = try container.decode(UpdateComputePolicyPropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.properties != nil {try container.encode(self.properties as! UpdateComputePolicyPropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createUpdateComputePolicyParametersProtocol() -> UpdateComputePolicyParametersProtocol {
    return UpdateComputePolicyParametersData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateComputePolicyPropertiesData : UpdateComputePolicyPropertiesProtocol {
    public var objectId: String?
    public var objectType: AADObjectTypeEnum?
    public var maxDegreeOfParallelismPerJob: Int32?
    public var minPriorityPerJob: Int32?

        enum CodingKeys: String, CodingKey {case objectId = "objectId"
        case objectType = "objectType"
        case maxDegreeOfParallelismPerJob = "maxDegreeOfParallelismPerJob"
        case minPriorityPerJob = "minPriorityPerJob"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.objectId) {
        self.objectId = try container.decode(String?.self, forKey: .objectId)
    }
    if container.contains(.objectType) {
        self.objectType = try container.decode(AADObjectTypeEnum?.self, forKey: .objectType)
    }
    if container.contains(.maxDegreeOfParallelismPerJob) {
        self.maxDegreeOfParallelismPerJob = try container.decode(Int32?.self, forKey: .maxDegreeOfParallelismPerJob)
    }
    if container.contains(.minPriorityPerJob) {
        self.minPriorityPerJob = try container.decode(Int32?.self, forKey: .minPriorityPerJob)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.objectId != nil {try container.encode(self.objectId, forKey: .objectId)}
    if self.objectType != nil {try container.encode(self.objectType, forKey: .objectType)}
    if self.maxDegreeOfParallelismPerJob != nil {try container.encode(self.maxDegreeOfParallelismPerJob, forKey: .maxDegreeOfParallelismPerJob)}
    if self.minPriorityPerJob != nil {try container.encode(self.minPriorityPerJob, forKey: .minPriorityPerJob)}
  }
}

extension DataFactory {
  public static func createUpdateComputePolicyPropertiesProtocol() -> UpdateComputePolicyPropertiesProtocol {
    return UpdateComputePolicyPropertiesData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateComputePolicyWithAccountParametersData : UpdateComputePolicyWithAccountParametersProtocol {
    public var name: String
    public var properties: UpdateComputePolicyPropertiesProtocol?

        enum CodingKeys: String, CodingKey {case name = "name"
        case properties = "properties"
        }

  public init(name: String)  {
    self.name = name
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.name = try container.decode(String.self, forKey: .name)
    if container.contains(.properties) {
        self.properties = try container.decode(UpdateComputePolicyPropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.name, forKey: .name)
    if self.properties != nil {try container.encode(self.properties as! UpdateComputePolicyPropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createUpdateComputePolicyWithAccountParametersProtocol(name: String) -> UpdateComputePolicyWithAccountParametersProtocol {
    return UpdateComputePolicyWithAccountParametersData(name: name)
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateDataLakeAnalyticsAccountParametersData : UpdateDataLakeAnalyticsAccountParametersProtocol {
    public var tags: [String:String]?
    public var properties: UpdateDataLakeAnalyticsAccountPropertiesProtocol?

        enum CodingKeys: String, CodingKey {case tags = "tags"
        case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.tags) {
        self.tags = try container.decode([String:String]?.self, forKey: .tags)
    }
    if container.contains(.properties) {
        self.properties = try container.decode(UpdateDataLakeAnalyticsAccountPropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.tags != nil {try container.encode(self.tags, forKey: .tags)}
    if self.properties != nil {try container.encode(self.properties as! UpdateDataLakeAnalyticsAccountPropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createUpdateDataLakeAnalyticsAccountParametersProtocol() -> UpdateDataLakeAnalyticsAccountParametersProtocol {
    return UpdateDataLakeAnalyticsAccountParametersData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateDataLakeAnalyticsAccountPropertiesData : UpdateDataLakeAnalyticsAccountPropertiesProtocol {
    public var dataLakeStoreAccounts: [UpdateDataLakeStoreWithAccountParametersProtocol?]?
    public var storageAccounts: [UpdateStorageAccountWithAccountParametersProtocol?]?
    public var computePolicies: [UpdateComputePolicyWithAccountParametersProtocol?]?
    public var firewallRules: [UpdateFirewallRuleWithAccountParametersProtocol?]?
    public var firewallState: FirewallStateEnum?
    public var firewallAllowAzureIps: FirewallAllowAzureIpsStateEnum?
    public var newTier: TierTypeEnum?
    public var maxJobCount: Int32?
    public var maxDegreeOfParallelism: Int32?
    public var maxDegreeOfParallelismPerJob: Int32?
    public var minPriorityPerJob: Int32?
    public var queryStoreRetention: Int32?

        enum CodingKeys: String, CodingKey {case dataLakeStoreAccounts = "dataLakeStoreAccounts"
        case storageAccounts = "storageAccounts"
        case computePolicies = "computePolicies"
        case firewallRules = "firewallRules"
        case firewallState = "firewallState"
        case firewallAllowAzureIps = "firewallAllowAzureIps"
        case newTier = "newTier"
        case maxJobCount = "maxJobCount"
        case maxDegreeOfParallelism = "maxDegreeOfParallelism"
        case maxDegreeOfParallelismPerJob = "maxDegreeOfParallelismPerJob"
        case minPriorityPerJob = "minPriorityPerJob"
        case queryStoreRetention = "queryStoreRetention"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.dataLakeStoreAccounts) {
        self.dataLakeStoreAccounts = try container.decode([UpdateDataLakeStoreWithAccountParametersData?]?.self, forKey: .dataLakeStoreAccounts)
    }
    if container.contains(.storageAccounts) {
        self.storageAccounts = try container.decode([UpdateStorageAccountWithAccountParametersData?]?.self, forKey: .storageAccounts)
    }
    if container.contains(.computePolicies) {
        self.computePolicies = try container.decode([UpdateComputePolicyWithAccountParametersData?]?.self, forKey: .computePolicies)
    }
    if container.contains(.firewallRules) {
        self.firewallRules = try container.decode([UpdateFirewallRuleWithAccountParametersData?]?.self, forKey: .firewallRules)
    }
    if container.contains(.firewallState) {
        self.firewallState = try container.decode(FirewallStateEnum?.self, forKey: .firewallState)
    }
    if container.contains(.firewallAllowAzureIps) {
        self.firewallAllowAzureIps = try container.decode(FirewallAllowAzureIpsStateEnum?.self, forKey: .firewallAllowAzureIps)
    }
    if container.contains(.newTier) {
        self.newTier = try container.decode(TierTypeEnum?.self, forKey: .newTier)
    }
    if container.contains(.maxJobCount) {
        self.maxJobCount = try container.decode(Int32?.self, forKey: .maxJobCount)
    }
    if container.contains(.maxDegreeOfParallelism) {
        self.maxDegreeOfParallelism = try container.decode(Int32?.self, forKey: .maxDegreeOfParallelism)
    }
    if container.contains(.maxDegreeOfParallelismPerJob) {
        self.maxDegreeOfParallelismPerJob = try container.decode(Int32?.self, forKey: .maxDegreeOfParallelismPerJob)
    }
    if container.contains(.minPriorityPerJob) {
        self.minPriorityPerJob = try container.decode(Int32?.self, forKey: .minPriorityPerJob)
    }
    if container.contains(.queryStoreRetention) {
        self.queryStoreRetention = try container.decode(Int32?.self, forKey: .queryStoreRetention)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.dataLakeStoreAccounts != nil {try container.encode(self.dataLakeStoreAccounts as! [UpdateDataLakeStoreWithAccountParametersData?]?, forKey: .dataLakeStoreAccounts)}
    if self.storageAccounts != nil {try container.encode(self.storageAccounts as! [UpdateStorageAccountWithAccountParametersData?]?, forKey: .storageAccounts)}
    if self.computePolicies != nil {try container.encode(self.computePolicies as! [UpdateComputePolicyWithAccountParametersData?]?, forKey: .computePolicies)}
    if self.firewallRules != nil {try container.encode(self.firewallRules as! [UpdateFirewallRuleWithAccountParametersData?]?, forKey: .firewallRules)}
    if self.firewallState != nil {try container.encode(self.firewallState, forKey: .firewallState)}
    if self.firewallAllowAzureIps != nil {try container.encode(self.firewallAllowAzureIps, forKey: .firewallAllowAzureIps)}
    if self.newTier != nil {try container.encode(self.newTier, forKey: .newTier)}
    if self.maxJobCount != nil {try container.encode(self.maxJobCount, forKey: .maxJobCount)}
    if self.maxDegreeOfParallelism != nil {try container.encode(self.maxDegreeOfParallelism, forKey: .maxDegreeOfParallelism)}
    if self.maxDegreeOfParallelismPerJob != nil {try container.encode(self.maxDegreeOfParallelismPerJob, forKey: .maxDegreeOfParallelismPerJob)}
    if self.minPriorityPerJob != nil {try container.encode(self.minPriorityPerJob, forKey: .minPriorityPerJob)}
    if self.queryStoreRetention != nil {try container.encode(self.queryStoreRetention, forKey: .queryStoreRetention)}
  }
}

extension DataFactory {
  public static func createUpdateDataLakeAnalyticsAccountPropertiesProtocol() -> UpdateDataLakeAnalyticsAccountPropertiesProtocol {
    return UpdateDataLakeAnalyticsAccountPropertiesData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateDataLakeStorePropertiesData : UpdateDataLakeStorePropertiesProtocol {
    public var suffix: String?

        enum CodingKeys: String, CodingKey {case suffix = "suffix"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.suffix) {
        self.suffix = try container.decode(String?.self, forKey: .suffix)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.suffix != nil {try container.encode(self.suffix, forKey: .suffix)}
  }
}

extension DataFactory {
  public static func createUpdateDataLakeStorePropertiesProtocol() -> UpdateDataLakeStorePropertiesProtocol {
    return UpdateDataLakeStorePropertiesData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateDataLakeStoreWithAccountParametersData : UpdateDataLakeStoreWithAccountParametersProtocol {
    public var name: String
    public var properties: UpdateDataLakeStorePropertiesProtocol?

        enum CodingKeys: String, CodingKey {case name = "name"
        case properties = "properties"
        }

  public init(name: String)  {
    self.name = name
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.name = try container.decode(String.self, forKey: .name)
    if container.contains(.properties) {
        self.properties = try container.decode(UpdateDataLakeStorePropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.name, forKey: .name)
    if self.properties != nil {try container.encode(self.properties as! UpdateDataLakeStorePropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createUpdateDataLakeStoreWithAccountParametersProtocol(name: String) -> UpdateDataLakeStoreWithAccountParametersProtocol {
    return UpdateDataLakeStoreWithAccountParametersData(name: name)
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateFirewallRuleParametersData : UpdateFirewallRuleParametersProtocol {
    public var properties: UpdateFirewallRulePropertiesProtocol?

        enum CodingKeys: String, CodingKey {case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.properties) {
        self.properties = try container.decode(UpdateFirewallRulePropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.properties != nil {try container.encode(self.properties as! UpdateFirewallRulePropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createUpdateFirewallRuleParametersProtocol() -> UpdateFirewallRuleParametersProtocol {
    return UpdateFirewallRuleParametersData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateFirewallRulePropertiesData : UpdateFirewallRulePropertiesProtocol {
    public var startIpAddress: String?
    public var endIpAddress: String?

        enum CodingKeys: String, CodingKey {case startIpAddress = "startIpAddress"
        case endIpAddress = "endIpAddress"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.startIpAddress) {
        self.startIpAddress = try container.decode(String?.self, forKey: .startIpAddress)
    }
    if container.contains(.endIpAddress) {
        self.endIpAddress = try container.decode(String?.self, forKey: .endIpAddress)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.startIpAddress != nil {try container.encode(self.startIpAddress, forKey: .startIpAddress)}
    if self.endIpAddress != nil {try container.encode(self.endIpAddress, forKey: .endIpAddress)}
  }
}

extension DataFactory {
  public static func createUpdateFirewallRulePropertiesProtocol() -> UpdateFirewallRulePropertiesProtocol {
    return UpdateFirewallRulePropertiesData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateFirewallRuleWithAccountParametersData : UpdateFirewallRuleWithAccountParametersProtocol {
    public var name: String
    public var properties: UpdateFirewallRulePropertiesProtocol?

        enum CodingKeys: String, CodingKey {case name = "name"
        case properties = "properties"
        }

  public init(name: String)  {
    self.name = name
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      self.name = try container.decode(String.self, forKey: .name)
    if container.contains(.properties) {
        self.properties = try container.decode(UpdateFirewallRulePropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(self.name, forKey: .name)
    if self.properties != nil {try container.encode(self.properties as! UpdateFirewallRulePropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createUpdateFirewallRuleWithAccountParametersProtocol(name: String) -> UpdateFirewallRuleWithAccountParametersProtocol {
    return UpdateFirewallRuleWithAccountParametersData(name: name)
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateStorageAccountParametersData : UpdateStorageAccountParametersProtocol {
    public var properties: UpdateStorageAccountPropertiesProtocol?

        enum CodingKeys: String, CodingKey {case properties = "properties"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.properties) {
        self.properties = try container.decode(UpdateStorageAccountPropertiesData?.self, forKey: .properties)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.properties != nil {try container.encode(self.properties as! UpdateStorageAccountPropertiesData?, forKey: .properties)}
  }
}

extension DataFactory {
  public static func createUpdateStorageAccountParametersProtocol() -> UpdateStorageAccountParametersProtocol {
    return UpdateStorageAccountParametersData()
  }
}


// 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.
import Foundation
import azureSwiftRuntime
internal struct UpdateStorageAccountPropertiesData : UpdateStorageAccountPropertiesProtocol {
    public var accessKey: String?
    public var suffix: String?

        enum CodingKeys: String, CodingKey {case accessKey = "accessKey"
        case suffix = "suffix"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.accessKey) {
        self.accessKey = try container.decode(String?.self, forKey: .accessKey)
    }
    if container.contains(.suffix) {
        self.suffix = try container.decode(String?.self, forKey: .suffix)
    }
    if var pageDecoder = decoder as? PageDecoder  {
      if pageDecoder.isPagedData,
        let nextLinkName = pageDecoder.nextLinkName {
          pageDecoder.nextLink = try UnknownCodingKey.decodeStringForKey(decoder: decoder, keyForDecode: nextLinkName)
      }
    }
  }

  public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    if self.accessKey != nil {try container.encode(self.accessKey, forKey: .accessKey)}
    if self.suffix != nil {try container.encode(self.suffix, forKey: .suffix)}
  }
}

extension DataFactory {
  public static func createUpdateStorageAccountPropertiesProtocol() -> UpdateStorageAccountPropertiesProtocol {
    return UpdateStorageAccountPropertiesData()
  }
}