// WorkloadType enumerates the values for workload 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 WorkloadTypeEnum: String, Codable
{
// WorkloadTypeAzureFileShare specifies the workload type azure file share state for workload type.
    case WorkloadTypeAzureFileShare = "AzureFileShare"
// WorkloadTypeAzureSqlDb specifies the workload type azure sql db state for workload type.
    case WorkloadTypeAzureSqlDb = "AzureSqlDb"
// WorkloadTypeClient specifies the workload type client state for workload type.
    case WorkloadTypeClient = "Client"
// WorkloadTypeExchange specifies the workload type exchange state for workload type.
    case WorkloadTypeExchange = "Exchange"
// WorkloadTypeFileFolder specifies the workload type file folder state for workload type.
    case WorkloadTypeFileFolder = "FileFolder"
// WorkloadTypeGenericDataSource specifies the workload type generic data source state for workload type.
    case WorkloadTypeGenericDataSource = "GenericDataSource"
// WorkloadTypeInvalid specifies the workload type invalid state for workload type.
    case WorkloadTypeInvalid = "Invalid"
// WorkloadTypeSharepoint specifies the workload type sharepoint state for workload type.
    case WorkloadTypeSharepoint = "Sharepoint"
// WorkloadTypeSQLDataBase specifies the workload type sql data base state for workload type.
    case WorkloadTypeSQLDataBase = "SQLDataBase"
// WorkloadTypeSQLDB specifies the workload type sqldb state for workload type.
    case WorkloadTypeSQLDB = "SQLDB"
// WorkloadTypeSystemState specifies the workload type system state state for workload type.
    case WorkloadTypeSystemState = "SystemState"
// WorkloadTypeVM specifies the workload type vm state for workload type.
    case WorkloadTypeVM = "VM"
// WorkloadTypeVMwareVM specifies the workload type v mware vm state for workload type.
    case WorkloadTypeVMwareVM = "VMwareVM"
}


// 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 YearlyRetentionScheduleData : YearlyRetentionScheduleProtocol {
    public var retentionScheduleFormatType: RetentionScheduleFormatEnum?
    public var monthsOfYear: [MonthOfYearEnum?]?
    public var retentionScheduleDaily: DailyRetentionFormatProtocol?
    public var retentionScheduleWeekly: WeeklyRetentionFormatProtocol?
    public var retentionTimes: [Date]?
    public var retentionDuration: RetentionDurationProtocol?

        enum CodingKeys: String, CodingKey {case retentionScheduleFormatType = "retentionScheduleFormatType"
        case monthsOfYear = "monthsOfYear"
        case retentionScheduleDaily = "retentionScheduleDaily"
        case retentionScheduleWeekly = "retentionScheduleWeekly"
        case retentionTimes = "retentionTimes"
        case retentionDuration = "retentionDuration"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.retentionScheduleFormatType) {
        self.retentionScheduleFormatType = try container.decode(RetentionScheduleFormatEnum?.self, forKey: .retentionScheduleFormatType)
    }
    if container.contains(.monthsOfYear) {
        self.monthsOfYear = try container.decode([MonthOfYearEnum?]?.self, forKey: .monthsOfYear)
    }
    if container.contains(.retentionScheduleDaily) {
        self.retentionScheduleDaily = try container.decode(DailyRetentionFormatData?.self, forKey: .retentionScheduleDaily)
    }
    if container.contains(.retentionScheduleWeekly) {
        self.retentionScheduleWeekly = try container.decode(WeeklyRetentionFormatData?.self, forKey: .retentionScheduleWeekly)
    }
    if container.contains(.retentionTimes) {
        self.retentionTimes = try container.decode([Date]?.self, forKey: .retentionTimes)
    }
    if container.contains(.retentionDuration) {
        self.retentionDuration = try container.decode(RetentionDurationData?.self, forKey: .retentionDuration)
    }
    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.retentionScheduleFormatType != nil {try container.encode(self.retentionScheduleFormatType, forKey: .retentionScheduleFormatType)}
    if self.monthsOfYear != nil {try container.encode(self.monthsOfYear as! [MonthOfYearEnum?]?, forKey: .monthsOfYear)}
    if self.retentionScheduleDaily != nil {try container.encode(self.retentionScheduleDaily as! DailyRetentionFormatData?, forKey: .retentionScheduleDaily)}
    if self.retentionScheduleWeekly != nil {try container.encode(self.retentionScheduleWeekly as! WeeklyRetentionFormatData?, forKey: .retentionScheduleWeekly)}
    if self.retentionTimes != nil {try container.encode(self.retentionTimes as! [Date]?, forKey: .retentionTimes)}
    if self.retentionDuration != nil {try container.encode(self.retentionDuration as! RetentionDurationData?, forKey: .retentionDuration)}
  }
}

extension DataFactory {
  public static func createYearlyRetentionScheduleProtocol() -> YearlyRetentionScheduleProtocol {
    return YearlyRetentionScheduleData()
  }
}


// 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
// AzureBackupServerContainerProtocol is azureBackupServer (DPMVenus) workload-specific protection container.
public protocol AzureBackupServerContainerProtocol : ProtectionContainerProtocol {
     var canReRegister: Bool? { get set }
     var containerId: String? { get set }
     var protectedItemCount: Int64? { get set }
     var dpmAgentVersion: String? { get set }
     var dpmServers: [String]? { get set }
     var upgradeAvailable: Bool? { get set }
     var protectionStatus: String? { get set }
     var extendedInfo: DPMContainerExtendedInfoProtocol? { get set }
}


// 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
// AzureBackupServerEngineProtocol is backup engine type when Azure Backup Server is used to manage the backups.
public protocol AzureBackupServerEngineProtocol : BackupEngineBaseProtocol {
}


// 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
// AzureFileShareBackupRequestProtocol is azureFileShare workload-specific backup request.
public protocol AzureFileShareBackupRequestProtocol : BackupRequestProtocol {
     var recoveryPointExpiryTimeInUTC: Date? { get set }
}


// 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
// AzureFileShareProtectableItemProtocol is protectable item for Azure Fileshare workloads.
public protocol AzureFileShareProtectableItemProtocol : WorkloadProtectableItemProtocol {
     var parentContainerFabricId: String? { get set }
     var parentContainerFriendlyName: String? { get set }
     var azureFileShareType: AzureFileShareTypeEnum? { get set }
}


// 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
// AzureFileshareProtectedItemExtendedInfoProtocol is additional information about Azure File Share backup item.
public protocol AzureFileshareProtectedItemExtendedInfoProtocol : Codable {
     var oldestRecoveryPoint: Date? { get set }
     var recoveryPointCount: Int32? { get set }
     var policyState: String? { get set }
}


// 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
// AzureFileshareProtectedItemProtocol is azure File Share workload-specific backup item.
public protocol AzureFileshareProtectedItemProtocol : ProtectedItemProtocol {
     var friendlyName: String? { get set }
     var protectionStatus: String? { get set }
     var protectionState: ProtectionStateEnum? { get set }
     var healthStatus: HealthStatusEnum? { get set }
     var lastBackupStatus: String? { get set }
     var lastBackupTime: Date? { get set }
     var extendedInfo: AzureFileshareProtectedItemExtendedInfoProtocol? { get set }
}


// 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
// AzureFileShareProtectionPolicyProtocol is azureStorage backup policy.
public protocol AzureFileShareProtectionPolicyProtocol : ProtectionPolicyProtocol {
     var workLoadType: String? { get set }
     var schedulePolicy: SchedulePolicyProtocol? { get set }
     var retentionPolicy: RetentionPolicyProtocol? { get set }
     var timeZone: String? { get set }
}


// 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
// AzureFileShareRecoveryPointProtocol is azure File Share workload specific backup copy.
public protocol AzureFileShareRecoveryPointProtocol : RecoveryPointProtocol {
     var recoveryPointType: String? { get set }
     var recoveryPointTime: Date? { get set }
     var fileShareSnapshotUri: String? { get set }
}


// 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
// AzureFileShareRestoreRequestProtocol is azureFileShare Restore Request
public protocol AzureFileShareRestoreRequestProtocol : RestoreRequestProtocol {
     var recoveryType: RecoveryTypeEnum? { get set }
     var sourceResourceId: String? { get set }
     var copyOptions: CopyOptionsEnum? { get set }
     var restoreRequestType: RestoreRequestTypeEnum? { get set }
     var restoreFileSpecs: [RestoreFileSpecsProtocol?]? { get set }
     var targetDetails: TargetAFSRestoreInfoProtocol? { get set }
}


// 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
// AzureIaaSClassicComputeVMContainerProtocol is iaaS VM workload-specific backup item representing a classic virtual
// machine.
public protocol AzureIaaSClassicComputeVMContainerProtocol : IaaSVMContainerProtocol {
}


// 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
// AzureIaaSClassicComputeVMProtectableItemProtocol is iaaS VM workload-specific backup item representing the Classic
// Compute VM.
public protocol AzureIaaSClassicComputeVMProtectableItemProtocol : IaaSVMProtectableItemProtocol {
}


// 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
// AzureIaaSClassicComputeVMProtectedItemProtocol is iaaS VM workload-specific backup item representing the Classic
// Compute VM.
public protocol AzureIaaSClassicComputeVMProtectedItemProtocol : AzureIaaSVMProtectedItemProtocol {
}


// 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
// AzureIaaSComputeVMContainerProtocol is iaaS VM workload-specific backup item representing an Azure Resource Manager
// virtual machine.
public protocol AzureIaaSComputeVMContainerProtocol : IaaSVMContainerProtocol {
}


// 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
// AzureIaaSComputeVMProtectableItemProtocol is iaaS VM workload-specific backup item representing the Azure Resource
// Manager VM.
public protocol AzureIaaSComputeVMProtectableItemProtocol : IaaSVMProtectableItemProtocol {
}


// 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
// AzureIaaSComputeVMProtectedItemProtocol is iaaS VM workload-specific backup item representing the Azure Resource
// Manager VM.
public protocol AzureIaaSComputeVMProtectedItemProtocol : AzureIaaSVMProtectedItemProtocol {
}


// 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
// AzureIaaSVMErrorInfoProtocol is azure IaaS VM workload-specific error information.
public protocol AzureIaaSVMErrorInfoProtocol : Codable {
     var errorCode: Int32? { get set }
     var errorTitle: String? { get set }
     var errorString: String? { get set }
     var recommendations: [String]? { get set }
}


// 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
// AzureIaaSVMHealthDetailsProtocol is azure IaaS VM workload-specific Health Details.
public protocol AzureIaaSVMHealthDetailsProtocol : Codable {
     var code: Int32? { get set }
     var title: String? { get set }
     var message: String? { get set }
     var recommendations: [String]? { get set }
}


// 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
// AzureIaaSVMJobExtendedInfoProtocol is azure IaaS VM workload-specific additional information for job.
public protocol AzureIaaSVMJobExtendedInfoProtocol : Codable {
     var tasksList: [AzureIaaSVMJobTaskDetailsProtocol?]? { get set }
     var propertyBag: [String:String]? { get set }
     var progressPercentage: Double? { get set }
     var dynamicErrorMessage: String? { get set }
}


// 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
// AzureIaaSVMJobProtocol is azure IaaS VM workload-specifc job object.
public protocol AzureIaaSVMJobProtocol : JobProtocol {
     var duration: String? { get set }
     var actionsInfo: [JobSupportedActionEnum?]? { get set }
     var errorDetails: [AzureIaaSVMErrorInfoProtocol?]? { get set }
     var virtualMachineVersion: String? { get set }
     var extendedInfo: AzureIaaSVMJobExtendedInfoProtocol? { get set }
}


// 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
// AzureIaaSVMJobTaskDetailsProtocol is azure IaaS VM workload-specific job task details.
public protocol AzureIaaSVMJobTaskDetailsProtocol : Codable {
     var taskId: String? { get set }
     var startTime: Date? { get set }
     var endTime: Date? { get set }
     var instanceId: String? { get set }
     var duration: String? { get set }
     var status: String? { get set }
     var progressPercentage: Double? { get set }
}


// 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
// AzureIaaSVMProtectedItemExtendedInfoProtocol is additional information on Azure IaaS VM specific backup item.
public protocol AzureIaaSVMProtectedItemExtendedInfoProtocol : Codable {
     var oldestRecoveryPoint: Date? { get set }
     var recoveryPointCount: Int32? { get set }
     var policyInconsistent: Bool? { get set }
}


// 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
// AzureIaaSVMProtectedItemProtocol is iaaS VM workload-specific backup item.
public protocol AzureIaaSVMProtectedItemProtocol : ProtectedItemProtocol {
     var friendlyName: String? { get set }
     var virtualMachineId: String? { get set }
     var protectionStatus: String? { get set }
     var protectionState: ProtectionStateEnum? { get set }
     var healthStatus: HealthStatusEnum? { get set }
     var healthDetails: [AzureIaaSVMHealthDetailsProtocol?]? { get set }
     var lastBackupStatus: String? { get set }
     var lastBackupTime: Date? { get set }
     var protectedItemDataId: String? { get set }
     var extendedInfo: AzureIaaSVMProtectedItemExtendedInfoProtocol? { get set }
}


// 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
// AzureIaaSVMProtectionPolicyProtocol is iaaS VM workload-specific backup policy.
public protocol AzureIaaSVMProtectionPolicyProtocol : ProtectionPolicyProtocol {
     var schedulePolicy: SchedulePolicyProtocol? { get set }
     var retentionPolicy: RetentionPolicyProtocol? { get set }
     var timeZone: String? { get set }
}


// 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
// AzureResourceProtectionIntentProtocol is iaaS VM specific backup protection intent item.
public protocol AzureResourceProtectionIntentProtocol : ProtectionIntentProtocol {
     var friendlyName: String? { get set }
}


// 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
// AzureSQLAGWorkloadContainerProtectionContainerProtocol is container for SQL workloads under SQL Availability Group.
public protocol AzureSQLAGWorkloadContainerProtectionContainerProtocol : AzureWorkloadContainerProtocol {
}


// 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
// AzureSqlContainerProtocol is azure Sql workload-specific container.
public protocol AzureSqlContainerProtocol : ProtectionContainerProtocol {
}


// 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
// AzureSqlProtectedItemExtendedInfoProtocol is additional information on Azure Sql specific protected item.
public protocol AzureSqlProtectedItemExtendedInfoProtocol : Codable {
     var oldestRecoveryPoint: Date? { get set }
     var recoveryPointCount: Int32? { get set }
     var policyState: String? { get set }
}


// 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
// AzureSqlProtectedItemProtocol is azure SQL workload-specific backup item.
public protocol AzureSqlProtectedItemProtocol : ProtectedItemProtocol {
     var protectedItemDataId: String? { get set }
     var protectionState: ProtectedItemStateEnum? { get set }
     var extendedInfo: AzureSqlProtectedItemExtendedInfoProtocol? { get set }
}


// 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
// AzureSqlProtectionPolicyProtocol is azure SQL workload-specific backup policy.
public protocol AzureSqlProtectionPolicyProtocol : ProtectionPolicyProtocol {
     var retentionPolicy: RetentionPolicyProtocol? { get set }
}


// 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
// AzureStorageContainerProtocol is azure Storage Account workload-specific container.
public protocol AzureStorageContainerProtocol : ProtectionContainerProtocol {
     var sourceResourceId: String? { get set }
     var storageAccountVersion: String? { get set }
     var resourceGroup: String? { get set }
     var protectedItemCount: Int64? { get set }
}


// 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
// AzureStorageErrorInfoProtocol is azure storage specific error information
public protocol AzureStorageErrorInfoProtocol : Codable {
     var errorCode: Int32? { get set }
     var errorString: String? { get set }
     var recommendations: [String]? { get set }
}


// 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
// AzureStorageJobExtendedInfoProtocol is azure Storage workload-specific additional information for job.
public protocol AzureStorageJobExtendedInfoProtocol : Codable {
     var tasksList: [AzureStorageJobTaskDetailsProtocol?]? { get set }
     var propertyBag: [String:String]? { get set }
     var dynamicErrorMessage: String? { get set }
}


// 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
// AzureStorageJobProtocol is azure storage specific job.
public protocol AzureStorageJobProtocol : JobProtocol {
     var duration: String? { get set }
     var actionsInfo: [JobSupportedActionEnum?]? { get set }
     var errorDetails: [AzureStorageErrorInfoProtocol?]? { get set }
     var storageAccountName: String? { get set }
     var storageAccountVersion: String? { get set }
     var extendedInfo: AzureStorageJobExtendedInfoProtocol? { get set }
}


// 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
// AzureStorageJobTaskDetailsProtocol is azure storage workload specific job task details.
public protocol AzureStorageJobTaskDetailsProtocol : Codable {
     var taskId: String? { get set }
     var status: String? { get set }
}


// 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
// AzureStorageProtectableContainerProtocol is azure Storage-specific protectable containers
public protocol AzureStorageProtectableContainerProtocol : ProtectableContainerProtocol {
}


// 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
// AzureVMAppContainerProtectableContainerProtocol is azure workload-specific container
public protocol AzureVMAppContainerProtectableContainerProtocol : ProtectableContainerProtocol {
}


// 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
// AzureVMAppContainerProtectionContainerProtocol is container for SQL workloads under Azure Virtual Machines.
public protocol AzureVMAppContainerProtectionContainerProtocol : AzureWorkloadContainerProtocol {
}


// 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
// AzureVMResourceFeatureSupportRequestProtocol is azureResource(IaaS VM) Specific feature support request
public protocol AzureVMResourceFeatureSupportRequestProtocol : FeatureSupportRequestProtocol {
     var vmSize: String? { get set }
     var vmSku: String? { get set }
}


// 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
// AzureVMResourceFeatureSupportResponseProtocol is response for feature support requests for Azure IaasVm
public protocol AzureVMResourceFeatureSupportResponseProtocol : Codable {
     var supportStatus: SupportStatusEnum? { get set }
}


// 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
// AzureVmWorkloadItemProtocol is azure VM workload-specific workload item.
public protocol AzureVmWorkloadItemProtocol : WorkloadItemProtocol {
     var parentName: String? { get set }
     var serverName: String? { get set }
     var isAutoProtectable: Bool? { get set }
     var subinquireditemcount: Int32? { get set }
     var subWorkloadItemCount: Int32? { get set }
}


// 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
// AzureVmWorkloadProtectableItemProtocol is azure VM workload-specific protectable item.
public protocol AzureVmWorkloadProtectableItemProtocol : WorkloadProtectableItemProtocol {
     var parentName: String? { get set }
     var parentUniqueName: String? { get set }
     var serverName: String? { get set }
     var isAutoProtectable: Bool? { get set }
     var subinquireditemcount: Int32? { get set }
     var subprotectableitemcount: Int32? { get set }
     var prebackupvalidation: PreBackupValidationProtocol? { get set }
}


// 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
// AzureVmWorkloadProtectedItemExtendedInfoProtocol is additional information on Azure Workload for SQL specific backup
// item.
public protocol AzureVmWorkloadProtectedItemExtendedInfoProtocol : Codable {
     var oldestRecoveryPoint: Date? { get set }
     var recoveryPointCount: Int32? { get set }
     var policyState: String? { get set }
}


// 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
// AzureVmWorkloadProtectionPolicyProtocol is azure VM (Mercury) workload-specific backup policy.
public protocol AzureVmWorkloadProtectionPolicyProtocol : ProtectionPolicyProtocol {
     var workLoadType: String? { get set }
     var settings: SettingsProtocol? { get set }
     var subProtectionPolicy: [SubProtectionPolicyProtocol?]? { get set }
}


// 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
// AzureVmWorkloadSQLAvailabilityGroupProtectableItemProtocol is azure VM workload-specific protectable item
// representing SQL Availability Group.
public protocol AzureVmWorkloadSQLAvailabilityGroupProtectableItemProtocol : AzureVmWorkloadProtectableItemProtocol {
}


// 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
// AzureVmWorkloadSQLDatabaseProtectableItemProtocol is azure VM workload-specific protectable item representing SQL
// Database.
public protocol AzureVmWorkloadSQLDatabaseProtectableItemProtocol : AzureVmWorkloadProtectableItemProtocol {
}


// 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
// AzureVmWorkloadSQLDatabaseProtectedItemProtocol is azure VM workload-specific protected item representing SQL
// Database.
public protocol AzureVmWorkloadSQLDatabaseProtectedItemProtocol : ProtectedItemProtocol {
     var friendlyName: String? { get set }
     var serverName: String? { get set }
     var parentName: String? { get set }
     var parentType: String? { get set }
     var protectionStatus: String? { get set }
     var protectionState: ProtectionStateEnum? { get set }
     var lastBackupStatus: LastBackupStatusEnum? { get set }
     var lastBackupTime: Date? { get set }
     var lastBackupErrorDetail: ErrorDetailProtocol? { get set }
     var protectedItemDataSourceId: String? { get set }
     var protectedItemHealthStatus: ProtectedItemHealthStatusEnum? { get set }
     var extendedInfo: AzureVmWorkloadProtectedItemExtendedInfoProtocol? { get set }
}


// 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
// AzureVmWorkloadSQLDatabaseWorkloadItemProtocol is azure VM workload-specific workload item representing SQL
// Database.
public protocol AzureVmWorkloadSQLDatabaseWorkloadItemProtocol : AzureVmWorkloadItemProtocol {
}


// 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
// AzureVmWorkloadSQLInstanceProtectableItemProtocol is azure VM workload-specific protectable item representing SQL
// Instance.
public protocol AzureVmWorkloadSQLInstanceProtectableItemProtocol : AzureVmWorkloadProtectableItemProtocol {
}


// 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
// AzureVmWorkloadSQLInstanceWorkloadItemProtocol is azure VM workload-specific workload item representing SQL
// Instance.
public protocol AzureVmWorkloadSQLInstanceWorkloadItemProtocol : AzureVmWorkloadItemProtocol {
     var dataDirectoryPaths: [SQLDataDirectoryProtocol?]? { get set }
}


// 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
// AzureWorkloadBackupRequestProtocol is azureWorkload workload-specific backup request.
public protocol AzureWorkloadBackupRequestProtocol : BackupRequestProtocol {
     var backupType: BackupTypeEnum? { get set }
     var enableCompression: Bool? { get set }
     var recoveryPointExpiryTimeInUTC: Date? { get set }
}


// 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
// AzureWorkloadContainerExtendedInfoProtocol is extended information of the container.
public protocol AzureWorkloadContainerExtendedInfoProtocol : Codable {
     var hostServerName: String? { get set }
     var inquiryInfo: InquiryInfoProtocol? { get set }
     var nodesList: [DistributedNodesInfoProtocol?]? { get set }
}


// 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
// AzureWorkloadContainerProtocol is container for the workloads running inside Azure Compute or Classic Compute.
public protocol AzureWorkloadContainerProtocol : ProtectionContainerProtocol {
     var sourceResourceId: String? { get set }
     var lastUpdatedTime: Date? { get set }
     var extendedInfo: AzureWorkloadContainerExtendedInfoProtocol? { get set }
}


// 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
// AzureWorkloadErrorInfoProtocol is azure storage specific error information
public protocol AzureWorkloadErrorInfoProtocol : Codable {
     var errorCode: Int32? { get set }
     var errorString: String? { get set }
     var errorTitle: String? { get set }
     var recommendations: [String]? { get set }
     var additionalDetails: String? { get set }
}


// 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
// AzureWorkloadJobExtendedInfoProtocol is azure VM workload-specific additional information for job.
public protocol AzureWorkloadJobExtendedInfoProtocol : Codable {
     var tasksList: [AzureWorkloadJobTaskDetailsProtocol?]? { get set }
     var propertyBag: [String:String]? { get set }
     var dynamicErrorMessage: String? { get set }
}


// 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
// AzureWorkloadJobProtocol is azure storage specific job.
public protocol AzureWorkloadJobProtocol : JobProtocol {
     var duration: String? { get set }
     var actionsInfo: [JobSupportedActionEnum?]? { get set }
     var errorDetails: [AzureWorkloadErrorInfoProtocol?]? { get set }
     var extendedInfo: AzureWorkloadJobExtendedInfoProtocol? { get set }
}


// 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
// AzureWorkloadJobTaskDetailsProtocol is azure VM workload specific job task details.
public protocol AzureWorkloadJobTaskDetailsProtocol : Codable {
     var taskId: String? { get set }
     var status: String? { get set }
}


// 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
// AzureWorkloadRecoveryPointProtocol is workload specific recoverypoint, specifcally encaspulates full/diff
// recoverypoint
public protocol AzureWorkloadRecoveryPointProtocol : RecoveryPointProtocol {
     var recoveryPointTimeInUTC: Date? { get set }
     var type: RestorePointTypeEnum? { get set }
}


// 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
// AzureWorkloadRestoreRequestProtocol is azureWorkload-specific restore.
public protocol AzureWorkloadRestoreRequestProtocol : RestoreRequestProtocol {
     var recoveryType: RecoveryTypeEnum? { get set }
     var sourceResourceId: String? { get set }
     var propertyBag: [String:String]? { get set }
}


// 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
// AzureWorkloadSQLPointInTimeRecoveryPointProtocol is recovery point specific to PointInTime
public protocol AzureWorkloadSQLPointInTimeRecoveryPointProtocol : AzureWorkloadSQLRecoveryPointProtocol {
     var timeRanges: [PointInTimeRangeProtocol?]? { get set }
}


// 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
// AzureWorkloadSQLPointInTimeRestoreRequestProtocol is azureWorkload SQL -specific restore. Specifically for
// PointInTime/Log restore
public protocol AzureWorkloadSQLPointInTimeRestoreRequestProtocol : AzureWorkloadSQLRestoreRequestProtocol {
     var pointInTime: Date? { get set }
}


// 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
// AzureWorkloadSQLRecoveryPointExtendedInfoProtocol is extended info class details
public protocol AzureWorkloadSQLRecoveryPointExtendedInfoProtocol : Codable {
     var dataDirectoryTimeInUTC: Date? { get set }
     var dataDirectoryPaths: [SQLDataDirectoryProtocol?]? { get set }
}


// 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
// AzureWorkloadSQLRecoveryPointProtocol is SQL specific recoverypoint, specifcally encaspulates full/diff
// recoverypoint alongwith extended info
public protocol AzureWorkloadSQLRecoveryPointProtocol : AzureWorkloadRecoveryPointProtocol {
     var extendedInfo: AzureWorkloadSQLRecoveryPointExtendedInfoProtocol? { get set }
}


// 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
// AzureWorkloadSQLRestoreRequestProtocol is azureWorkload SQL -specific restore. Specifically for full/diff restore
public protocol AzureWorkloadSQLRestoreRequestProtocol : AzureWorkloadRestoreRequestProtocol {
     var shouldUseAlternateTargetLocation: Bool? { get set }
     var isNonRecoverable: Bool? { get set }
     var targetInfo: TargetRestoreInfoProtocol? { get set }
     var alternateDirectoryPaths: [SQLDataDirectoryMappingProtocol?]? { get set }
}


// 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
// BackupEngineBaseProtocol is the base backup engine class. All workload specific backup engines derive from this
// class.
public protocol BackupEngineBaseProtocol : Codable {
     var friendlyName: String? { get set }
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var registrationStatus: String? { get set }
     var backupEngineState: String? { get set }
     var healthStatus: String? { get set }
     var canReRegister: Bool? { get set }
     var backupEngineId: String? { get set }
     var dpmVersion: String? { get set }
     var azureBackupAgentVersion: String? { get set }
     var isAzureBackupAgentUpgradeAvailable: Bool? { get set }
     var isDpmUpgradeAvailable: Bool? { get set }
     var extendedInfo: BackupEngineExtendedInfoProtocol? { get set }
}


// 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
// BackupEngineBaseResourceListProtocol is list of BackupEngineBase resources
public protocol BackupEngineBaseResourceListProtocol : ResourceListProtocol {
     var value: [BackupEngineBaseResourceProtocol?]? { get set }
}


// 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
// BackupEngineBaseResourceProtocol is the base backup engine class. All workload specific backup engines derive from
// this class.
public protocol BackupEngineBaseResourceProtocol : ResourceProtocol {
     var properties: BackupEngineBaseProtocol? { get set }
}


// 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
// BackupEngineExtendedInfoProtocol is additional information on backup engine.
public protocol BackupEngineExtendedInfoProtocol : Codable {
     var databaseName: String? { get set }
     var protectedItemsCount: Int32? { get set }
     var protectedServersCount: Int32? { get set }
     var diskCount: Int32? { get set }
     var usedDiskSpace: Double? { get set }
     var availableDiskSpace: Double? { get set }
     var refreshedAt: Date? { get set }
     var azureProtectedInstances: Int32? { get set }
}


// 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
// BackupManagementUsageListProtocol is backup management usage for vault.
public protocol BackupManagementUsageListProtocol : Codable {
     var value: [BackupManagementUsageProtocol?]? { get set }
}


// 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
// BackupManagementUsageProtocol is backup management usages of a vault.
public protocol BackupManagementUsageProtocol : Codable {
     var unit: UsagesUnitEnum? { get set }
     var quotaPeriod: String? { get set }
     var nextResetTime: Date? { get set }
     var currentValue: Int64? { get set }
     var limit: Int64? { get set }
     var name: NameInfoProtocol? { get set }
}


// 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
// BackupRequestProtocol is base class for backup request. Workload-specific backup requests are derived from this
// class.
public protocol BackupRequestProtocol : Codable {
}


// 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
// BackupRequestResourceProtocol is base class for backup request. Workload-specific backup requests are derived from
// this class.
public protocol BackupRequestResourceProtocol : ResourceProtocol {
     var properties: BackupRequestProtocol? { get set }
}


// 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
// BackupResourceConfigProtocol is the resource storage details.
public protocol BackupResourceConfigProtocol : Codable {
     var storageModelType: StorageTypeEnum? { get set }
     var storageType: StorageTypeEnum? { get set }
     var storageTypeState: StorageTypeStateEnum? { get set }
}


// 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
// BackupResourceConfigResourceProtocol is the resource storage details.
public protocol BackupResourceConfigResourceProtocol : ResourceProtocol {
     var properties: BackupResourceConfigProtocol? { get set }
}


// 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
// BackupResourceVaultConfigProtocol is backup resource vault config details.
public protocol BackupResourceVaultConfigProtocol : Codable {
     var storageModelType: StorageTypeEnum? { get set }
     var storageType: StorageTypeEnum? { get set }
     var storageTypeState: StorageTypeStateEnum? { get set }
     var enhancedSecurityState: EnhancedSecurityStateEnum? { get set }
}


// 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
// BackupResourceVaultConfigResourceProtocol is backup resource vault config details.
public protocol BackupResourceVaultConfigResourceProtocol : ResourceProtocol {
     var properties: BackupResourceVaultConfigProtocol? { get set }
}


// 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
// BackupStatusRequestProtocol is backupStatus request.
public protocol BackupStatusRequestProtocol : Codable {
     var resourceType: DataSourceTypeEnum? { get set }
     var resourceId: String? { get set }
     var poLogicalName: String? { get set }
}


// 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
// BackupStatusResponseProtocol is backupStatus response.
public protocol BackupStatusResponseProtocol : Codable {
     var protectionStatus: ProtectionStatusEnum? { get set }
     var vaultId: String? { get set }
     var fabricName: FabricNameEnum? { get set }
     var containerName: String? { get set }
     var protectedItemName: String? { get set }
     var errorCode: String? { get set }
     var errorMessage: String? { get set }
     var policyName: String? { get set }
     var registrationStatus: String? { get set }
}


// 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
// BEKDetailsProtocol is BEK is bitlocker encrpytion key.
public protocol BEKDetailsProtocol : Codable {
     var secretUrl: String? { get set }
     var secretVaultId: String? { get set }
     var secretData: String? { get set }
}


// 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
// BMSBackupEngineQueryObjectProtocol is query parameters to fetch list of backup engines.
public protocol BMSBackupEngineQueryObjectProtocol : Codable {
     var expand: String? { get set }
}


// 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
// BMSBackupEnginesQueryObjectProtocol is query parameters to fetch list of backup engines.
public protocol BMSBackupEnginesQueryObjectProtocol : Codable {
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var friendlyName: String? { get set }
     var expand: String? { get set }
}


// 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
// BMSBackupSummariesQueryObjectProtocol is query parameters to fetch backup summaries.
public protocol BMSBackupSummariesQueryObjectProtocol : Codable {
     var type: TypeEnumEnum? { get set }
}


// 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
// BMSContainerQueryObjectProtocol is the query filters that can be used with the list containers API.
public protocol BMSContainerQueryObjectProtocol : Codable {
     var backupManagementType: BackupManagementTypeEnum { get set }
     var containerType: ContainerTypeEnum? { get set }
     var backupEngineName: String? { get set }
     var fabricName: String? { get set }
     var status: String? { get set }
     var friendlyName: String? { get set }
}


// 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
// BMSPOQueryObjectProtocol is filters to list items that can be backed up.
public protocol BMSPOQueryObjectProtocol : Codable {
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var workloadType: WorkloadTypeEnum? { get set }
     var containerName: String? { get set }
     var status: String? { get set }
     var friendlyName: String? { get set }
}


// 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
// BMSRefreshContainersQueryObjectProtocol is the query filters that can be used with the list containers API.
public protocol BMSRefreshContainersQueryObjectProtocol : Codable {
     var backupManagementType: BackupManagementTypeEnum? { get set }
}


// 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
// BMSRPQueryObjectProtocol is filters to list backup copies.
public protocol BMSRPQueryObjectProtocol : Codable {
     var startDate: Date? { get set }
     var endDate: Date? { get set }
     var restorePointQueryType: RestorePointQueryTypeEnum? { get set }
     var extendedInfo: Bool? { get set }
}


// 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
// BMSWorkloadItemQueryObjectProtocol is filters to list items that can be backed up.
public protocol BMSWorkloadItemQueryObjectProtocol : Codable {
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var workloadItemType: WorkloadItemTypeEnum? { get set }
     var workloadType: WorkloadTypeEnum? { get set }
     var protectionStatus: ProtectionStatusEnum? { get set }
}


// 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
// ClientDiscoveryDisplayProtocol is localized display information of an operation.
public protocol ClientDiscoveryDisplayProtocol : Codable {
     var provider: String? { get set }
     var resource: String? { get set }
     var operation: String? { get set }
     var description: String? { get set }
}


// 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
// ClientDiscoveryForLogSpecificationProtocol is class to represent shoebox log specification in json client discovery.
public protocol ClientDiscoveryForLogSpecificationProtocol : Codable {
     var name: String? { get set }
     var displayName: String? { get set }
     var blobDuration: String? { get set }
}


// 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
// ClientDiscoveryForPropertiesProtocol is class to represent shoebox properties in json client discovery.
public protocol ClientDiscoveryForPropertiesProtocol : Codable {
     var serviceSpecification: ClientDiscoveryForServiceSpecificationProtocol? { get set }
}


// 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
// ClientDiscoveryForServiceSpecificationProtocol is class to represent shoebox service specification in json client
// discovery.
public protocol ClientDiscoveryForServiceSpecificationProtocol : Codable {
     var logSpecifications: [ClientDiscoveryForLogSpecificationProtocol?]? { get set }
}


// 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
// ClientDiscoveryResponseProtocol is operations List response which contains list of available APIs.
public protocol ClientDiscoveryResponseProtocol : Codable {
     var value: [ClientDiscoveryValueForSingleApiProtocol?]? { get set }
     var _nextLink: String? { get set }
}


// 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
// ClientDiscoveryValueForSingleApiProtocol is available operation details.
public protocol ClientDiscoveryValueForSingleApiProtocol : Codable {
     var name: String? { get set }
     var display: ClientDiscoveryDisplayProtocol? { get set }
     var origin: String? { get set }
     var properties: ClientDiscoveryForPropertiesProtocol? { get set }
}


// 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
// ClientScriptForConnectProtocol is client script details for file / folder restore.
public protocol ClientScriptForConnectProtocol : Codable {
     var scriptContent: String? { get set }
     var scriptExtension: String? { get set }
     var osType: String? { get set }
     var url: String? { get set }
     var scriptNameSuffix: String? { get set }
}


// 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
// ContainerIdentityInfoProtocol is container identity information
public protocol ContainerIdentityInfoProtocol : Codable {
     var uniqueName: String? { get set }
     var aadTenantId: String? { get set }
     var servicePrincipalClientId: String? { get set }
     var audience: String? { get set }
}


// 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
// DailyRetentionFormatProtocol is daily retention format.
public protocol DailyRetentionFormatProtocol : Codable {
     var daysOfTheMonth: [DayProtocol?]? { get set }
}


// 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
// DailyRetentionScheduleProtocol is daily retention schedule.
public protocol DailyRetentionScheduleProtocol : Codable {
     var retentionTimes: [Date]? { get set }
     var retentionDuration: RetentionDurationProtocol? { get set }
}


// 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
// DayProtocol is day of the week.
public protocol DayProtocol : Codable {
     var date: Int32? { get set }
     var isLast: Bool? { get set }
}


// 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
// DistributedNodesInfoProtocol is this is used to represent the various nodes of the distributed container.
public protocol DistributedNodesInfoProtocol : Codable {
     var nodeName: String? { get set }
     var status: String? { get set }
     var errorDetail: ErrorDetailProtocol? { get set }
}


// 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
// DpmBackupEngineProtocol is data Protection Manager (DPM) specific backup engine.
public protocol DpmBackupEngineProtocol : BackupEngineBaseProtocol {
}


// 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
// DPMContainerExtendedInfoProtocol is additional information of the DPMContainer.
public protocol DPMContainerExtendedInfoProtocol : Codable {
     var lastRefreshedAt: Date? { get set }
}


// 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
// DpmContainerProtocol is DPM workload-specific protection container.
public protocol DpmContainerProtocol : ProtectionContainerProtocol {
     var canReRegister: Bool? { get set }
     var containerId: String? { get set }
     var protectedItemCount: Int64? { get set }
     var dpmAgentVersion: String? { get set }
     var dpmServers: [String]? { get set }
     var upgradeAvailable: Bool? { get set }
     var protectionStatus: String? { get set }
     var extendedInfo: DPMContainerExtendedInfoProtocol? { get set }
}


// 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
// DpmErrorInfoProtocol is DPM workload-specific error information.
public protocol DpmErrorInfoProtocol : Codable {
     var errorString: String? { get set }
     var recommendations: [String]? { get set }
}


// 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
// DpmJobExtendedInfoProtocol is additional information on the DPM workload-specific job.
public protocol DpmJobExtendedInfoProtocol : Codable {
     var tasksList: [DpmJobTaskDetailsProtocol?]? { get set }
     var propertyBag: [String:String]? { get set }
     var dynamicErrorMessage: String? { get set }
}


// 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
// DpmJobProtocol is DPM workload-specifc job object.
public protocol DpmJobProtocol : JobProtocol {
     var duration: String? { get set }
     var dpmServerName: String? { get set }
     var containerName: String? { get set }
     var containerType: String? { get set }
     var workloadType: String? { get set }
     var actionsInfo: [JobSupportedActionEnum?]? { get set }
     var errorDetails: [DpmErrorInfoProtocol?]? { get set }
     var extendedInfo: DpmJobExtendedInfoProtocol? { get set }
}


// 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
// DpmJobTaskDetailsProtocol is DPM workload-specific job task details.
public protocol DpmJobTaskDetailsProtocol : Codable {
     var taskId: String? { get set }
     var startTime: Date? { get set }
     var endTime: Date? { get set }
     var duration: String? { get set }
     var status: String? { get set }
}


// 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
// DPMProtectedItemExtendedInfoProtocol is additional information of DPM Protected item.
public protocol DPMProtectedItemExtendedInfoProtocol : Codable {
     var protectableObjectLoadPath: [String:String]? { get set }
     var protected: Bool? { get set }
     var isPresentOnCloud: Bool? { get set }
     var lastBackupStatus: String? { get set }
     var lastRefreshedAt: Date? { get set }
     var oldestRecoveryPoint: Date? { get set }
     var recoveryPointCount: Int32? { get set }
     var onPremiseOldestRecoveryPoint: Date? { get set }
     var onPremiseLatestRecoveryPoint: Date? { get set }
     var onPremiseRecoveryPointCount: Int32? { get set }
     var isCollocated: Bool? { get set }
     var protectionGroupName: String? { get set }
     var diskStorageUsedInBytes: String? { get set }
     var totalDiskStorageSizeInBytes: String? { get set }
}


// 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
// DPMProtectedItemProtocol is additional information on Backup engine specific backup item.
public protocol DPMProtectedItemProtocol : ProtectedItemProtocol {
     var friendlyName: String? { get set }
     var backupEngineName: String? { get set }
     var protectionState: ProtectedItemStateEnum? { get set }
     var isScheduledForDeferredDelete: Bool? { get set }
     var extendedInfo: DPMProtectedItemExtendedInfoProtocol? { get set }
}


// 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
// EncryptionDetailsProtocol is details needed if the VM was encrypted at the time of backup.
public protocol EncryptionDetailsProtocol : Codable {
     var encryptionEnabled: Bool? { get set }
     var kekUrl: String? { get set }
     var secretKeyUrl: String? { get set }
     var kekVaultId: String? { get set }
     var secretKeyVaultId: String? { get set }
}


// 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
// ErrorDetailProtocol is error Detail class which encapsulates Code, Message and Recommendations.
public protocol ErrorDetailProtocol : Codable {
     var code: String? { get set }
     var message: String? { get set }
     var recommendations: [String]? { get set }
}


// 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
// ExportJobsOperationResultInfoProtocol is this class is used to send blob details after exporting jobs.
public protocol ExportJobsOperationResultInfoProtocol : OperationResultInfoBaseProtocol {
     var blobUrl: String? { get set }
     var blobSasKey: String? { get set }
}


// 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
// FeatureSupportRequestProtocol is base class for feature request
public protocol FeatureSupportRequestProtocol : Codable {
}


// 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
// GenericContainerExtendedInfoProtocol is container extended information
public protocol GenericContainerExtendedInfoProtocol : Codable {
     var rawCertData: String? { get set }
     var containerIdentityInfo: ContainerIdentityInfoProtocol? { get set }
     var serviceEndpoints: [String:String]? { get set }
}


// 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
// GenericContainerProtocol is base class for generic container of backup items
public protocol GenericContainerProtocol : ProtectionContainerProtocol {
     var fabricName: String? { get set }
     var extendedInformation: GenericContainerExtendedInfoProtocol? { get set }
}


// 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
// GenericProtectedItemProtocol is base class for backup items.
public protocol GenericProtectedItemProtocol : ProtectedItemProtocol {
     var friendlyName: String? { get set }
     var policyState: String? { get set }
     var protectionState: ProtectionStateEnum? { get set }
     var protectedItemId: Int64? { get set }
     var sourceAssociations: [String:String]? { get set }
     var fabricName: String? { get set }
}


// 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
// GenericProtectionPolicyProtocol is azure VM (Mercury) workload-specific backup policy.
public protocol GenericProtectionPolicyProtocol : ProtectionPolicyProtocol {
     var subProtectionPolicy: [SubProtectionPolicyProtocol?]? { get set }
     var timeZone: String? { get set }
     var fabricName: String? { get set }
}


// 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
// GenericRecoveryPointProtocol is generic backup copy.
public protocol GenericRecoveryPointProtocol : RecoveryPointProtocol {
     var friendlyName: String? { get set }
     var recoveryPointType: String? { get set }
     var recoveryPointTime: Date? { get set }
     var recoveryPointAdditionalInfo: String? { get set }
}


// 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
// GetProtectedItemQueryObjectProtocol is filters to list backup items.
public protocol GetProtectedItemQueryObjectProtocol : Codable {
     var expand: String? { get set }
}


// 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
// IaasVMBackupRequestProtocol is iaaS VM workload-specific backup request.
public protocol IaasVMBackupRequestProtocol : BackupRequestProtocol {
     var recoveryPointExpiryTimeInUTC: Date? { get set }
}


// 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
// IaaSVMContainerProtocol is iaaS VM workload-specific container.
public protocol IaaSVMContainerProtocol : ProtectionContainerProtocol {
     var virtualMachineId: String? { get set }
     var virtualMachineVersion: String? { get set }
     var resourceGroup: String? { get set }
}


// 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
// IaasVMILRRegistrationRequestProtocol is restore files/folders from a backup copy of IaaS VM.
public protocol IaasVMILRRegistrationRequestProtocol : ILRRequestProtocol {
     var recoveryPointId: String? { get set }
     var virtualMachineId: String? { get set }
     var initiatorName: String? { get set }
     var renewExistingRegistration: Bool? { get set }
}


// 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
// IaaSVMProtectableItemProtocol is iaaS VM workload-specific backup item.
public protocol IaaSVMProtectableItemProtocol : WorkloadProtectableItemProtocol {
     var virtualMachineId: String? { get set }
}


// 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
// IaasVMRecoveryPointProtocol is iaaS VM workload specific backup copy.
public protocol IaasVMRecoveryPointProtocol : RecoveryPointProtocol {
     var recoveryPointType: String? { get set }
     var recoveryPointTime: Date? { get set }
     var recoveryPointAdditionalInfo: String? { get set }
     var sourceVMStorageType: String? { get set }
     var isSourceVMEncrypted: Bool? { get set }
     var keyAndSecret: KeyAndSecretDetailsProtocol? { get set }
     var isInstantIlrSessionActive: Bool? { get set }
     var recoveryPointTierDetails: [RecoveryPointTierInformationProtocol?]? { get set }
     var isManagedVirtualMachine: Bool? { get set }
     var virtualMachineSize: String? { get set }
     var originalStorageAccountOption: Bool? { get set }
}


// 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
// IaasVMRestoreRequestProtocol is iaaS VM workload-specific restore.
public protocol IaasVMRestoreRequestProtocol : RestoreRequestProtocol {
     var recoveryPointId: String? { get set }
     var recoveryType: RecoveryTypeEnum? { get set }
     var sourceResourceId: String? { get set }
     var targetVirtualMachineId: String? { get set }
     var targetResourceGroupId: String? { get set }
     var storageAccountId: String? { get set }
     var virtualNetworkId: String? { get set }
     var subnetId: String? { get set }
     var targetDomainNameId: String? { get set }
     var region: String? { get set }
     var affinityGroup: String? { get set }
     var createNewCloudService: Bool? { get set }
     var originalStorageAccountOption: Bool? { get set }
     var encryptionDetails: EncryptionDetailsProtocol? { get set }
}


// 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
// ILRRequestProtocol is parameters to restore file/folders API.
public protocol ILRRequestProtocol : Codable {
}


// 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
// ILRRequestResourceProtocol is parameters to restore file/folders API.
public protocol ILRRequestResourceProtocol : ResourceProtocol {
     var properties: ILRRequestProtocol? { get set }
}


// 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
// InquiryInfoProtocol is details about inquired protectable items under a given container.
public protocol InquiryInfoProtocol : Codable {
     var status: String? { get set }
     var errorDetail: ErrorDetailProtocol? { get set }
     var inquiryDetails: [WorkloadInquiryDetailsProtocol?]? { get set }
}


// 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
// InquiryValidationProtocol is validation for inquired protectable items under a given container.
public protocol InquiryValidationProtocol : Codable {
     var status: String? { get set }
     var errorDetail: ErrorDetailProtocol? { get set }
}


// 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
// InstantItemRecoveryTargetProtocol is target details for file / folder restore.
public protocol InstantItemRecoveryTargetProtocol : Codable {
     var clientScripts: [ClientScriptForConnectProtocol?]? { get set }
}


// 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
// JobProtocol is defines workload agnostic properties for a job.
public protocol JobProtocol : Codable {
     var entityFriendlyName: String? { get set }
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var operation: String? { get set }
     var status: String? { get set }
     var startTime: Date? { get set }
     var endTime: Date? { get set }
     var activityId: String? { get set }
}


// 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
// JobQueryObjectProtocol is filters to list the jobs.
public protocol JobQueryObjectProtocol : Codable {
     var status: JobStatusEnum? { get set }
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var operation: JobOperationTypeEnum? { get set }
     var jobId: String? { get set }
     var startTime: Date? { get set }
     var endTime: Date? { get set }
}


// 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
// JobResourceListProtocol is list of Job resources
public protocol JobResourceListProtocol : ResourceListProtocol {
     var value: [JobResourceProtocol?]? { get set }
}


// 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
// JobResourceProtocol is defines workload agnostic properties for a job.
public protocol JobResourceProtocol : ResourceProtocol {
     var properties: JobProtocol? { get set }
}


// 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
// KEKDetailsProtocol is KEK is encryption key for BEK.
public protocol KEKDetailsProtocol : Codable {
     var keyUrl: String? { get set }
     var keyVaultId: String? { get set }
     var keyBackupData: String? { get set }
}


// 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
// KeyAndSecretDetailsProtocol is BEK is bitlocker key.
// KEK is encryption key for BEK
// If the VM was encrypted then we will store follwing details :
// 1. Secret(BEK) - Url + Backup Data + vaultId.
// 2. Key(KEK) - Url + Backup Data + vaultId.
// BEK and KEK can potentiallty have different vault ids.
public protocol KeyAndSecretDetailsProtocol : Codable {
     var kekDetails: KEKDetailsProtocol? { get set }
     var bekDetails: BEKDetailsProtocol? { get set }
}


// 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
// LogSchedulePolicyProtocol is log policy schedule.
public protocol LogSchedulePolicyProtocol : SchedulePolicyProtocol {
     var scheduleFrequencyInMins: Int32? { get set }
}


// 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
// LongTermRetentionPolicyProtocol is long term retention policy.
public protocol LongTermRetentionPolicyProtocol : RetentionPolicyProtocol {
     var dailySchedule: DailyRetentionScheduleProtocol? { get set }
     var weeklySchedule: WeeklyRetentionScheduleProtocol? { get set }
     var monthlySchedule: MonthlyRetentionScheduleProtocol? { get set }
     var yearlySchedule: YearlyRetentionScheduleProtocol? { get set }
}


// 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
// LongTermSchedulePolicyProtocol is long term policy schedule.
public protocol LongTermSchedulePolicyProtocol : SchedulePolicyProtocol {
}


// 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
// MabContainerExtendedInfoProtocol is additional information of the container.
public protocol MabContainerExtendedInfoProtocol : Codable {
     var lastRefreshedAt: Date? { get set }
     var backupItemType: BackupItemTypeEnum? { get set }
     var backupItems: [String]? { get set }
     var policyName: String? { get set }
     var lastBackupStatus: String? { get set }
}


// 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
// MABContainerHealthDetailsProtocol is MAB workload-specific Health Details.
public protocol MABContainerHealthDetailsProtocol : Codable {
     var code: Int32? { get set }
     var title: String? { get set }
     var message: String? { get set }
     var recommendations: [String]? { get set }
}


// 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
// MabContainerProtocol is container with items backed up using MAB backup engine.
public protocol MabContainerProtocol : ProtectionContainerProtocol {
     var canReRegister: Bool? { get set }
     var containerId: Int64? { get set }
     var protectedItemCount: Int64? { get set }
     var agentVersion: String? { get set }
     var extendedInfo: MabContainerExtendedInfoProtocol? { get set }
     var mabContainerHealthDetails: [MABContainerHealthDetailsProtocol?]? { get set }
     var containerHealthState: String? { get set }
}


// 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
// MabErrorInfoProtocol is MAB workload-specific error information.
public protocol MabErrorInfoProtocol : Codable {
     var errorString: String? { get set }
     var recommendations: [String]? { get set }
}


// 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
// MabFileFolderProtectedItemExtendedInfoProtocol is additional information on the backed up item.
public protocol MabFileFolderProtectedItemExtendedInfoProtocol : Codable {
     var lastRefreshedAt: Date? { get set }
     var oldestRecoveryPoint: Date? { get set }
     var recoveryPointCount: Int32? { get set }
}


// 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
// MabFileFolderProtectedItemProtocol is MAB workload-specific backup item.
public protocol MabFileFolderProtectedItemProtocol : ProtectedItemProtocol {
     var friendlyName: String? { get set }
     var computerName: String? { get set }
     var lastBackupStatus: String? { get set }
     var protectionState: String? { get set }
     var isScheduledForDeferredDelete: Bool? { get set }
     var deferredDeleteSyncTimeInUTC: Int64? { get set }
     var extendedInfo: MabFileFolderProtectedItemExtendedInfoProtocol? { get set }
}


// 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
// MabJobExtendedInfoProtocol is additional information for the MAB workload-specific job.
public protocol MabJobExtendedInfoProtocol : Codable {
     var tasksList: [MabJobTaskDetailsProtocol?]? { get set }
     var propertyBag: [String:String]? { get set }
     var dynamicErrorMessage: String? { get set }
}


// 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
// MabJobProtocol is MAB workload-specific job.
public protocol MabJobProtocol : JobProtocol {
     var duration: String? { get set }
     var actionsInfo: [JobSupportedActionEnum?]? { get set }
     var mabServerName: String? { get set }
     var mabServerType: MabServerTypeEnum? { get set }
     var workloadType: WorkloadTypeEnum? { get set }
     var errorDetails: [MabErrorInfoProtocol?]? { get set }
     var extendedInfo: MabJobExtendedInfoProtocol? { get set }
}


// 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
// MabJobTaskDetailsProtocol is MAB workload-specific job task details.
public protocol MabJobTaskDetailsProtocol : Codable {
     var taskId: String? { get set }
     var startTime: Date? { get set }
     var endTime: Date? { get set }
     var duration: String? { get set }
     var status: String? { get set }
}


// 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
// MabProtectionPolicyProtocol is mab container-specific backup policy.
public protocol MabProtectionPolicyProtocol : ProtectionPolicyProtocol {
     var schedulePolicy: SchedulePolicyProtocol? { get set }
     var retentionPolicy: RetentionPolicyProtocol? { get set }
}


// 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
// MonthlyRetentionScheduleProtocol is monthly retention schedule.
public protocol MonthlyRetentionScheduleProtocol : Codable {
     var retentionScheduleFormatType: RetentionScheduleFormatEnum? { get set }
     var retentionScheduleDaily: DailyRetentionFormatProtocol? { get set }
     var retentionScheduleWeekly: WeeklyRetentionFormatProtocol? { get set }
     var retentionTimes: [Date]? { get set }
     var retentionDuration: RetentionDurationProtocol? { get set }
}


// 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
// NameInfoProtocol is the name of usage.
public protocol NameInfoProtocol : Codable {
     var value: String? { get set }
     var localizedValue: String? { get set }
}


// 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
// OperationResultInfoBaseProtocol is base class for operation result info.
public protocol OperationResultInfoBaseProtocol : Codable {
}


// 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
// OperationResultInfoBaseResourceProtocol is base class for operation result info.
public protocol OperationResultInfoBaseResourceProtocol : OperationWorkerResponseProtocol {
     var operation: OperationResultInfoBaseProtocol? { get set }
}


// 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
// OperationResultInfoProtocol is operation result info.
public protocol OperationResultInfoProtocol : OperationResultInfoBaseProtocol {
     var jobList: [String]? { get set }
}


// 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
// OperationStatusErrorProtocol is error information associated with operation status call.
public protocol OperationStatusErrorProtocol : Codable {
     var code: String? { get set }
     var message: String? { get set }
}


// 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
// OperationStatusExtendedInfoProtocol is base class for additional information of operation status.
public protocol OperationStatusExtendedInfoProtocol : Codable {
}


// 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
// OperationStatusJobExtendedInfoProtocol is operation status job extended info.
public protocol OperationStatusJobExtendedInfoProtocol : OperationStatusExtendedInfoProtocol {
     var jobId: String? { get set }
}


// 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
// OperationStatusJobsExtendedInfoProtocol is operation status extended info for list of jobs.
public protocol OperationStatusJobsExtendedInfoProtocol : OperationStatusExtendedInfoProtocol {
     var jobIds: [String]? { get set }
     var failedJobsError: [String:String]? { get set }
}


// 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
// OperationStatusProtocol is operation status.
public protocol OperationStatusProtocol : Codable {
     var id: String? { get set }
     var name: String? { get set }
     var status: OperationStatusValuesEnum? { get set }
     var startTime: Date? { get set }
     var endTime: Date? { get set }
     var error: OperationStatusErrorProtocol? { get set }
     var properties: OperationStatusExtendedInfoProtocol? { get set }
}


// 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
// OperationStatusProvisionILRExtendedInfoProtocol is operation status extended info for ILR provision action.
public protocol OperationStatusProvisionILRExtendedInfoProtocol : OperationStatusExtendedInfoProtocol {
     var recoveryTarget: InstantItemRecoveryTargetProtocol? { get set }
}


// 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
// OperationWorkerResponseProtocol is this is the base class for operation result responses.
public protocol OperationWorkerResponseProtocol : Codable {
     var statusCode: HttpStatusCodeEnum? { get set }
     var headers: [String:[String]?]? { get set }
}


// 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
// PointInTimeRangeProtocol is provides details for log ranges
public protocol PointInTimeRangeProtocol : Codable {
     var startTime: Date? { get set }
     var endTime: Date? { get set }
}


// 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
// PreBackupValidationProtocol is pre-backup validation for Azure VM Workload provider.
public protocol PreBackupValidationProtocol : Codable {
     var status: InquiryStatusEnum? { get set }
     var code: String? { get set }
     var message: String? { get set }
}


// 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
// PreValidateEnableBackupRequestProtocol is contract to validate if backup can be enabled on the given resource in a
// given vault and given configuration.
// It will validate followings
// 1. Vault capacity
// 2. VM is already protected
// 3. Any VM related configuration passed in properties.
public protocol PreValidateEnableBackupRequestProtocol : Codable {
     var resourceType: DataSourceTypeEnum? { get set }
     var resourceId: String? { get set }
     var vaultId: String? { get set }
     var properties: String? { get set }
}


// 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
// PreValidateEnableBackupResponseProtocol is response contract for enable backup validation request
public protocol PreValidateEnableBackupResponseProtocol : Codable {
     var status: ValidationStatusEnum? { get set }
     var errorCode: String? { get set }
     var errorMessage: String? { get set }
     var recommendation: String? { get set }
     var containerName: String? { get set }
     var protectedItemName: String? { get set }
}


// 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
// ProtectableContainerProtocol is protectable Container Class.
public protocol ProtectableContainerProtocol : Codable {
     var friendlyName: String? { get set }
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var healthStatus: String? { get set }
     var containerId: String? { get set }
}


// 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
// ProtectableContainerResourceListProtocol is list of ProtectableContainer resources
public protocol ProtectableContainerResourceListProtocol : ResourceListProtocol {
     var value: [ProtectableContainerResourceProtocol?]? { get set }
}


// 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
// ProtectableContainerResourceProtocol is protectable Container Class.
public protocol ProtectableContainerResourceProtocol : ResourceProtocol {
     var properties: ProtectableContainerProtocol? { get set }
}


// 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
// ProtectedItemProtocol is base class for backup items.
public protocol ProtectedItemProtocol : Codable {
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var workloadType: DataSourceTypeEnum? { get set }
     var containerName: String? { get set }
     var sourceResourceId: String? { get set }
     var policyId: String? { get set }
     var lastRecoveryPoint: Date? { get set }
     var backupSetName: String? { get set }
}


// 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
// ProtectedItemQueryObjectProtocol is filters to list backup items.
public protocol ProtectedItemQueryObjectProtocol : Codable {
     var healthState: HealthStateEnum? { get set }
     var backupManagementType: BackupManagementTypeEnum? { get set }
     var itemType: DataSourceTypeEnum? { get set }
     var policyName: String? { get set }
     var containerName: String? { get set }
     var backupEngineName: String? { get set }
     var friendlyName: String? { get set }
     var fabricName: String? { get set }
     var backupSetName: String? { get set }
}