// 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
// AutoscaleSettingProtocol is a setting that contains all of the configuration for the automatic scaling of a
// resource.
public protocol AutoscaleSettingProtocol : Codable {
     var profiles: [AutoscaleProfileProtocol] { get set }
     var notifications: [AutoscaleNotificationProtocol?]? { get set }
     var enabled: Bool? { get set }
     var name: String? { get set }
     var targetResourceUri: 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
// AutoscaleSettingResourceCollectionProtocol is represents a collection of autoscale setting resources.
public protocol AutoscaleSettingResourceCollectionProtocol : Codable {
     var value: [AutoscaleSettingResourceProtocol] { 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
// AutoscaleSettingResourcePatchProtocol is the autoscale setting object for patch operations.
public protocol AutoscaleSettingResourcePatchProtocol : Codable {
     var tags: [String:String]? { get set }
     var properties: AutoscaleSettingProtocol? { 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
// AutoscaleSettingResourceProtocol is the autoscale setting resource.
public protocol AutoscaleSettingResourceProtocol : ResourceProtocol {
     var properties: AutoscaleSettingProtocol { 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
// AzureAppPushReceiverProtocol is the Azure mobile App push notification receiver.
public protocol AzureAppPushReceiverProtocol : Codable {
     var name: String { get set }
     var emailAddress: 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
// BaselineMetadataValueProtocol is represents a baseline metadata value.
public protocol BaselineMetadataValueProtocol : Codable {
     var name: LocalizableStringProtocol? { get set }
     var value: 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
// BaselinePropertiesProtocol is the baseline properties class.
public protocol BaselinePropertiesProtocol : Codable {
     var timespan: String? { get set }
     var interval: String? { get set }
     var aggregation: String? { get set }
     var timestamps: [Date]? { get set }
     var baseline: [BaselineProtocol?]? { get set }
     var metadata: [BaselineMetadataValueProtocol?]? { 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
// BaselineProtocol is the baseline values for a single sensitivity value.
public protocol BaselineProtocol : Codable {
     var sensitivity: SensitivityEnum { get set }
     var lowThresholds: [Double] { get set }
     var highThresholds: [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
// BaselineResponseProtocol is the response to a baseline query.
public protocol BaselineResponseProtocol : Codable {
     var id: String? { get set }
     var type: String? { get set }
     var name: LocalizableStringProtocol? { get set }
     var properties: BaselinePropertiesProtocol? { 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
// CalculateBaselineResponseProtocol is the response to a calcualte baseline call.
public protocol CalculateBaselineResponseProtocol : Codable {
     var type: String { get set }
     var timestamps: [Date]? { get set }
     var baseline: [BaselineProtocol] { 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
// DiagnosticSettingsCategoryProtocol is the diagnostic settings Category.
public protocol DiagnosticSettingsCategoryProtocol : Codable {
     var categoryType: CategoryTypeEnum? { 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
// DiagnosticSettingsCategoryResourceCollectionProtocol is represents a collection of diagnostic setting category
// resources.
public protocol DiagnosticSettingsCategoryResourceCollectionProtocol : Codable {
     var value: [DiagnosticSettingsCategoryResourceProtocol?]? { 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
// DiagnosticSettingsCategoryResourceProtocol is the diagnostic settings category resource.
public protocol DiagnosticSettingsCategoryResourceProtocol : ProxyOnlyResourceProtocol {
     var properties: DiagnosticSettingsCategoryProtocol? { 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
// DiagnosticSettingsProtocol is the diagnostic settings.
public protocol DiagnosticSettingsProtocol : Codable {
     var storageAccountId: String? { get set }
     var eventHubAuthorizationRuleId: String? { get set }
     var eventHubName: String? { get set }
     var metrics: [MetricSettingsProtocol?]? { get set }
     var logs: [LogSettingsProtocol?]? { get set }
     var workspaceId: 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
// DiagnosticSettingsResourceCollectionProtocol is represents a collection of alert rule resources.
public protocol DiagnosticSettingsResourceCollectionProtocol : Codable {
     var value: [DiagnosticSettingsResourceProtocol?]? { 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
// DiagnosticSettingsResourceProtocol is the diagnostic setting resource.
public protocol DiagnosticSettingsResourceProtocol : ProxyOnlyResourceProtocol {
     var properties: DiagnosticSettingsProtocol? { 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
// EmailNotificationProtocol is email notification of an autoscale event.
public protocol EmailNotificationProtocol : Codable {
     var sendToSubscriptionAdministrator: Bool? { get set }
     var sendToSubscriptionCoAdministrators: Bool? { get set }
     var customEmails: [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
// EmailReceiverProtocol is an email receiver.
public protocol EmailReceiverProtocol : Codable {
     var name: String { get set }
     var emailAddress: String { get set }
     var status: ReceiverStatusEnum? { 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
// EnableRequestProtocol is describes a receiver that should be resubscribed.
public protocol EnableRequestProtocol : Codable {
     var receiverName: 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
// ErrorResponseProtocol is describes the format of Error response.
public protocol ErrorResponseProtocol : 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
// EventCategoryCollectionProtocol is a collection of event categories. Currently possible values are: Administrative,
// Security, ServiceHealth, Alert, Recommendation, Policy.
public protocol EventCategoryCollectionProtocol : Codable {
     var value: [LocalizableStringProtocol] { 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
// EventDataCollectionProtocol is represents collection of events.
public protocol EventDataCollectionProtocol : Codable {
     var value: [EventDataProtocol] { 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
// EventDataProtocol is the Azure event log entries are of type EventData
public protocol EventDataProtocol : Codable {
     var authorization: SenderAuthorizationProtocol? { get set }
     var claims: [String:String]? { get set }
     var caller: String? { get set }
     var description: String? { get set }
     var id: String? { get set }
     var eventDataId: String? { get set }
     var correlationId: String? { get set }
     var eventName: LocalizableStringProtocol? { get set }
     var category: LocalizableStringProtocol? { get set }
     var httpRequest: HttpRequestInfoProtocol? { get set }
     var level: EventLevelEnum? { get set }
     var resourceGroupName: String? { get set }
     var resourceProviderName: LocalizableStringProtocol? { get set }
     var resourceId: String? { get set }
     var resourceType: LocalizableStringProtocol? { get set }
     var operationId: String? { get set }
     var operationName: LocalizableStringProtocol? { get set }
     var properties: [String:String]? { get set }
     var status: LocalizableStringProtocol? { get set }
     var subStatus: LocalizableStringProtocol? { get set }
     var eventTimestamp: Date? { get set }
     var submissionTimestamp: Date? { get set }
     var subscriptionId: String? { get set }
     var tenantId: 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
// HttpRequestInfoProtocol is the Http request info.
public protocol HttpRequestInfoProtocol : Codable {
     var clientRequestId: String? { get set }
     var clientIpAddress: String? { get set }
     var method: String? { get set }
     var uri: 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
// IncidentListResultProtocol is the List incidents operation response.
public protocol IncidentListResultProtocol : Codable {
     var value: [IncidentProtocol?]? { 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
// IncidentProtocol is an alert incident indicates the activation status of an alert rule.
public protocol IncidentProtocol : Codable {
     var name: String? { get set }
     var ruleName: String? { get set }
     var isActive: Bool? { get set }
     var activatedTime: Date? { get set }
     var resolvedTime: 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
// ItsmReceiverProtocol is an Itsm receiver.
public protocol ItsmReceiverProtocol : Codable {
     var name: String { get set }
     var workspaceId: String { get set }
     var connectionId: String { get set }
     var ticketConfiguration: String { get set }
     var region: 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
// LocalizableStringProtocol is the localizable string class.
public protocol LocalizableStringProtocol : 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
// LocationThresholdRuleConditionProtocol is a rule condition based on a certain number of locations failing.
public protocol LocationThresholdRuleConditionProtocol : RuleConditionProtocol {
     var windowSize: String? { get set }
     var failedLocationCount: 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
// LogProfileCollectionProtocol is represents a collection of log profiles.
public protocol LogProfileCollectionProtocol : Codable {
     var value: [LogProfileResourceProtocol] { 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
// LogProfilePropertiesProtocol is the log profile properties.
public protocol LogProfilePropertiesProtocol : Codable {
     var storageAccountId: String? { get set }
     var serviceBusRuleId: String? { get set }
     var locations: [String] { get set }
     var categories: [String] { 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
// LogProfileResourcePatchProtocol is the log profile resource for patch operations.
public protocol LogProfileResourcePatchProtocol : Codable {
     var tags: [String:String]? { get set }
     var properties: LogProfilePropertiesProtocol? { 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
// LogProfileResourceProtocol is the log profile resource.
public protocol LogProfileResourceProtocol : ResourceProtocol {
     var properties: LogProfilePropertiesProtocol { 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
// LogSettingsProtocol is part of MultiTenantDiagnosticSettings. Specifies the settings for a particular log.
public protocol LogSettingsProtocol : Codable {
     var category: String? { get set }
     var enabled: Bool { 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
// ManagementEventAggregationConditionProtocol is how the data that is collected should be combined over time.
public protocol ManagementEventAggregationConditionProtocol : Codable {
     var _operator: ConditionOperatorEnum? { get set }
     var threshold: Double? { get set }
     var windowSize: 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
// ManagementEventRuleConditionProtocol is a management event rule condition.
public protocol ManagementEventRuleConditionProtocol : RuleConditionProtocol {
     var aggregation: ManagementEventAggregationConditionProtocol? { 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
// MetadataValueProtocol is represents a metric metadata value.
public protocol MetadataValueProtocol : Codable {
     var name: LocalizableStringProtocol? { get set }
     var value: 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
// MetricAvailabilityProtocol is metric availability specifies the time grain (aggregation interval or frequency) and
// the retention period for that time grain.
public protocol MetricAvailabilityProtocol : Codable {
     var timeGrain: String? { get set }
     var retention: 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
// MetricDefinitionCollectionProtocol is represents collection of metric definitions.
public protocol MetricDefinitionCollectionProtocol : Codable {
     var value: [MetricDefinitionProtocol] { 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
// MetricDefinitionProtocol is metric definition class specifies the metadata for a metric.
public protocol MetricDefinitionProtocol : Codable {
     var isDimensionRequired: Bool? { get set }
     var resourceId: String? { get set }
     var namespace: String? { get set }
     var name: LocalizableStringProtocol? { get set }
     var unit: UnitEnum? { get set }
     var primaryAggregationType: AggregationTypeEnum? { get set }
     var supportedAggregationTypes: [AggregationTypeEnum?]? { get set }
     var metricAvailabilities: [MetricAvailabilityProtocol?]? { get set }
     var id: String? { get set }
     var dimensions: [LocalizableStringProtocol?]? { 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
// MetricProtocol is the result data of a query.
public protocol MetricProtocol : Codable {
     var id: String { get set }
     var type: String { get set }
     var name: LocalizableStringProtocol { get set }
     var unit: UnitEnum { get set }
     var timeseries: [TimeSeriesElementProtocol] { 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
// MetricSettingsProtocol is part of MultiTenantDiagnosticSettings. Specifies the settings for a particular metric.
public protocol MetricSettingsProtocol : Codable {
     var timeGrain: String? { get set }
     var category: String? { get set }
     var enabled: Bool { 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
// MetricTriggerProtocol is the trigger that results in a scaling action.
public protocol MetricTriggerProtocol : Codable {
     var metricName: String { get set }
     var metricResourceUri: String { get set }
     var timeGrain: String { get set }
     var statistic: MetricStatisticTypeEnum { get set }
     var timeWindow: String { get set }
     var timeAggregation: TimeAggregationTypeEnum { get set }
     var _operator: ComparisonOperationTypeEnum { get set }
     var threshold: 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
// MetricValueProtocol is represents a metric value.
public protocol MetricValueProtocol : Codable {
     var timeStamp: Date { get set }
     var average: Double? { get set }
     var minimum: Double? { get set }
     var maximum: Double? { get set }
     var total: Double? { get set }
     var count: 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
// OperationDisplayProtocol is display metadata associated with the operation.
public protocol OperationDisplayProtocol : Codable {
     var provider: String? { get set }
     var resource: String? { get set }
     var operation: 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
// OperationListResultProtocol is result of the request to list Microsoft.Insights operations. It contains a list of
// operations and a URL link to get the next set of results.
public protocol OperationListResultProtocol : Codable {
     var value: [OperationProtocol?]? { 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
// OperationProtocol is microsoft Insights API operation definition.
public protocol OperationProtocol : Codable {
     var name: String? { get set }
     var display: OperationDisplayProtocol? { 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
// ProxyOnlyResourceProtocol is a proxy only azure resource object
public protocol ProxyOnlyResourceProtocol : Codable {
     var id: String? { get set }
     var name: String? { get set }
     var type: 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
// RecurrenceProtocol is the repeating times at which this profile begins. This element is not used if the FixedDate
// element is used.
public protocol RecurrenceProtocol : Codable {
     var frequency: RecurrenceFrequencyEnum { get set }
     var schedule: RecurrentScheduleProtocol { 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
// RecurrentScheduleProtocol is the scheduling constraints for when the profile begins.
public protocol RecurrentScheduleProtocol : Codable {
     var timeZone: String { get set }
     var days: [String] { get set }
     var hours: [Int32] { get set }
     var minutes: [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
// ResourceProtocol is an azure resource object
public protocol ResourceProtocol : Codable {
     var id: String? { get set }
     var name: String? { get set }
     var type: String? { get set }
     var location: String { get set }
     var tags: [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
// ResponseProtocol is the response to a metrics query.
public protocol ResponseProtocol : Codable {
     var cost: Double? { get set }
     var timespan: String { get set }
     var interval: String? { get set }
     var namespace: String? { get set }
     var resourceregion: String? { get set }
     var value: [MetricProtocol] { 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
// RetentionPolicyProtocol is specifies the retention policy for the log.
public protocol RetentionPolicyProtocol : Codable {
     var enabled: Bool { get set }
     var days: 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
// RuleActionProtocol is the action that is performed when the alert rule becomes active, and when an alert condition
// is resolved.
public protocol RuleActionProtocol : 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
// RuleConditionProtocol is the condition that results in the alert rule being activated.
public protocol RuleConditionProtocol : Codable {
     var dataSource: RuleDataSourceProtocol? { 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
// RuleDataSourceProtocol is the resource from which the rule collects its data.
public protocol RuleDataSourceProtocol : Codable {
     var resourceUri: 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
// RuleEmailActionProtocol is specifies the action to send email when the rule condition is evaluated. The
// discriminator is always RuleEmailAction in this case.
public protocol RuleEmailActionProtocol : RuleActionProtocol {
     var sendToServiceOwners: Bool? { get set }
     var customEmails: [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
// RuleManagementEventClaimsDataSourceProtocol is the claims for a rule management event data source.
public protocol RuleManagementEventClaimsDataSourceProtocol : Codable {
     var emailAddress: 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
// RuleManagementEventDataSourceProtocol is a rule management event data source. The discriminator fields is always
// RuleManagementEventDataSource in this case.
public protocol RuleManagementEventDataSourceProtocol : RuleDataSourceProtocol {
     var eventName: String? { get set }
     var eventSource: String? { get set }
     var level: String? { get set }
     var operationName: String? { get set }
     var resourceGroupName: String? { get set }
     var resourceProviderName: String? { get set }
     var status: String? { get set }
     var subStatus: String? { get set }
     var claims: RuleManagementEventClaimsDataSourceProtocol? { 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
// RuleMetricDataSourceProtocol is a rule metric data source. The discriminator value is always RuleMetricDataSource in
// this case.
public protocol RuleMetricDataSourceProtocol : RuleDataSourceProtocol {
     var metricName: 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
// RuleWebhookActionProtocol is specifies the action to post to service when the rule condition is evaluated. The
// discriminator is always RuleWebhookAction in this case.
public protocol RuleWebhookActionProtocol : RuleActionProtocol {
     var serviceUri: String? { get set }
     var properties: [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
// ScaleActionProtocol is the parameters for the scaling action.
public protocol ScaleActionProtocol : Codable {
     var direction: ScaleDirectionEnum { get set }
     var type: ScaleTypeEnum { get set }
     var value: String? { get set }
     var cooldown: 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
// ScaleCapacityProtocol is the number of instances that can be used during this profile.
public protocol ScaleCapacityProtocol : Codable {
     var minimum: String { get set }
     var maximum: String { get set }
     var _default: 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
// ScaleRuleProtocol is a rule that provide the triggers and parameters for the scaling action.
public protocol ScaleRuleProtocol : Codable {
     var metricTrigger: MetricTriggerProtocol { get set }
     var scaleAction: ScaleActionProtocol { 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
// SenderAuthorizationProtocol is the authorization used by the user who has performed the operation that led to this
// event. This captures the RBAC properties of the event. These usually include the 'action', 'role' and the 'scope'
public protocol SenderAuthorizationProtocol : Codable {
     var action: String? { get set }
     var role: String? { get set }
     var scope: 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
// SmsReceiverProtocol is an SMS receiver.
public protocol SmsReceiverProtocol : Codable {
     var name: String { get set }
     var countryCode: String { get set }
     var phoneNumber: String { get set }
     var status: ReceiverStatusEnum? { 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
// ThresholdRuleConditionProtocol is a rule condition based on a metric crossing a threshold.
public protocol ThresholdRuleConditionProtocol : RuleConditionProtocol {
     var _operator: ConditionOperatorEnum { get set }
     var threshold: Double { get set }
     var windowSize: String? { get set }
     var timeAggregation: TimeAggregationOperatorEnum? { 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
// TimeSeriesElementProtocol is a time series result type. The discriminator value is always TimeSeries in this case.
public protocol TimeSeriesElementProtocol : Codable {
     var metadatavalues: [MetadataValueProtocol?]? { get set }
     var data: [MetricValueProtocol?]? { 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
// TimeSeriesInformationProtocol is the time series info needed for calculating the baseline.
public protocol TimeSeriesInformationProtocol : Codable {
     var sensitivities: [String] { get set }
     var values: [Double] { get set }
     var timestamps: [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
// TimeWindowProtocol is a specific date-time for the profile.
public protocol TimeWindowProtocol : Codable {
     var timeZone: String? { get set }
     var start: Date { get set }
     var end: 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
// WebhookNotificationProtocol is webhook notification of an autoscale event.
public protocol WebhookNotificationProtocol : Codable {
     var serviceUri: String? { get set }
     var properties: [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
// WebhookReceiverProtocol is a webhook receiver.
public protocol WebhookReceiverProtocol : Codable {
     var name: String { get set }
     var serviceUri: String { get set }
}


// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
    name: "msi",
    products: [
        // Products define the executables and libraries produced by a package, and make them visible to other packages.
        .library(
            name: "msi",
            targets: ["msi"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.10"),
        .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "3.4.2"),
        .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "3.1.4"),
        .package(url: "git@github.com:alvadb/autorest-clientruntime-for-swift.git", .branch("master"))
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "msi",
            dependencies: ["Alamofire", "RxSwift", "SwiftyJSON", "azureSwiftRuntime"])
    ]
)


// 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 class DataFactory {
}
public class Commands {
}


// 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.

// Operations is the the Managed Service Identity Client.
import Foundation
import azureSwiftRuntime
extension Commands {
public struct Operations {
    public static func List() -> OperationsList {
        return ListCommand()
    }
}
}


import Foundation
import azureSwiftRuntime
public protocol OperationsList  {
    var nextLink: String? { get }
    var hasAdditionalPages : Bool { get }
    var headerParameters: [String: String] { get set }
    var apiVersion : String { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (OperationListResultProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.Operations {
// List lists available operations for the Microsoft.ManagedIdentity provider
    internal class ListCommand : BaseCommand, OperationsList {
        var nextLink: String?
        public var hasAdditionalPages : Bool {
        get {
            return nextLink != nil
        }
    }
        public var apiVersion = "2015-08-31-preview"

    public override init() {
            super.init()
            self.method = "Get"
            self.isLongRunningOperation = false
            self.path = "/providers/Microsoft.ManagedIdentity/operations"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.queryParameters["api-version"] = String(describing: self.apiVersion)

        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                if var pageDecoder = decoder as? PageDecoder {
                    pageDecoder.isPagedData = true
                    pageDecoder.nextLinkName = "NextLink"
                }
                let result = try decoder.decode(OperationListResultData?.self, from: data)
                if var pageDecoder = decoder as? PageDecoder {
                    self.nextLink = pageDecoder.nextLink
                }
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (OperationListResultProtocol?, Error?) -> Void) -> Void {
            if self.nextLink != nil {
                self.path = nextLink!
                self.nextLink = nil;
                self.pathType = .absolute
            }
            client.executeAsync(command: self) {
                (result: OperationListResultData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}


// 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.

// UserAssignedIdentities is the the Managed Service Identity Client.
import Foundation
import azureSwiftRuntime
extension Commands {
public struct UserAssignedIdentities {
    public static func CreateOrUpdate(subscriptionId: String, resourceGroupName: String, resourceName: String, parameters: IdentityProtocol) -> UserAssignedIdentitiesCreateOrUpdate {
        return CreateOrUpdateCommand(subscriptionId: subscriptionId, resourceGroupName: resourceGroupName, resourceName: resourceName, parameters: parameters)
    }
    public static func Delete(subscriptionId: String, resourceGroupName: String, resourceName: String) -> UserAssignedIdentitiesDelete {
        return DeleteCommand(subscriptionId: subscriptionId, resourceGroupName: resourceGroupName, resourceName: resourceName)
    }
    public static func Get(subscriptionId: String, resourceGroupName: String, resourceName: String) -> UserAssignedIdentitiesGet {
        return GetCommand(subscriptionId: subscriptionId, resourceGroupName: resourceGroupName, resourceName: resourceName)
    }
    public static func ListByResourceGroup(subscriptionId: String, resourceGroupName: String) -> UserAssignedIdentitiesListByResourceGroup {
        return ListByResourceGroupCommand(subscriptionId: subscriptionId, resourceGroupName: resourceGroupName)
    }
    public static func ListBySubscription(subscriptionId: String) -> UserAssignedIdentitiesListBySubscription {
        return ListBySubscriptionCommand(subscriptionId: subscriptionId)
    }
    public static func Update(subscriptionId: String, resourceGroupName: String, resourceName: String, parameters: IdentityProtocol) -> UserAssignedIdentitiesUpdate {
        return UpdateCommand(subscriptionId: subscriptionId, resourceGroupName: resourceGroupName, resourceName: resourceName, parameters: parameters)
    }
}
}


import Foundation
import azureSwiftRuntime
public protocol UserAssignedIdentitiesCreateOrUpdate  {
    var headerParameters: [String: String] { get set }
    var subscriptionId : String { get set }
    var resourceGroupName : String { get set }
    var resourceName : String { get set }
    var apiVersion : String { get set }
    var parameters :  IdentityProtocol?  { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (IdentityProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.UserAssignedIdentities {
// CreateOrUpdate create or update an identity in the specified subscription and resource group.
    internal class CreateOrUpdateCommand : BaseCommand, UserAssignedIdentitiesCreateOrUpdate {
        public var subscriptionId : String
        public var resourceGroupName : String
        public var resourceName : String
        public var apiVersion = "2015-08-31-preview"
    public var parameters :  IdentityProtocol?

        public init(subscriptionId: String, resourceGroupName: String, resourceName: String, parameters: IdentityProtocol) {
            self.subscriptionId = subscriptionId
            self.resourceGroupName = resourceGroupName
            self.resourceName = resourceName
            self.parameters = parameters
            super.init()
            self.method = "Put"
            self.isLongRunningOperation = false
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{resourceName}"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.pathParameters["{resourceName}"] = String(describing: self.resourceName)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)
            self.body = parameters

        }
        public override func encodeBody() throws -> Data? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let encoder = try CoderFactory.encoder(for: mimeType)
                let encodedValue = try encoder.encode(parameters as? IdentityData)
                return encodedValue
            }
            throw DecodeError.unknownMimeType
        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                let result = try decoder.decode(IdentityData?.self, from: data)
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (IdentityProtocol?, Error?) -> Void) -> Void {
            client.executeAsync(command: self) {
                (result: IdentityData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}


import Foundation
import azureSwiftRuntime
public protocol UserAssignedIdentitiesDelete  {
    var headerParameters: [String: String] { get set }
    var subscriptionId : String { get set }
    var resourceGroupName : String { get set }
    var resourceName : String { get set }
    var apiVersion : String { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (Error?) -> Void) -> Void;
}

extension Commands.UserAssignedIdentities {
// Delete deletes the identity.
    internal class DeleteCommand : BaseCommand, UserAssignedIdentitiesDelete {
        public var subscriptionId : String
        public var resourceGroupName : String
        public var resourceName : String
        public var apiVersion = "2015-08-31-preview"

        public init(subscriptionId: String, resourceGroupName: String, resourceName: String) {
            self.subscriptionId = subscriptionId
            self.resourceGroupName = resourceGroupName
            self.resourceName = resourceName
            super.init()
            self.method = "Delete"
            self.isLongRunningOperation = false
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{resourceName}"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.pathParameters["{resourceName}"] = String(describing: self.resourceName)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)

        }

        public func execute(client: RuntimeClient,
            completionHandler: @escaping (Error?) -> Void) -> Void {
            client.executeAsync(command: self) {
                (error) in
                completionHandler(error)
            }
        }
    }
}


import Foundation
import azureSwiftRuntime
public protocol UserAssignedIdentitiesGet  {
    var headerParameters: [String: String] { get set }
    var subscriptionId : String { get set }
    var resourceGroupName : String { get set }
    var resourceName : String { get set }
    var apiVersion : String { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (IdentityProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.UserAssignedIdentities {
// Get gets the identity.
    internal class GetCommand : BaseCommand, UserAssignedIdentitiesGet {
        public var subscriptionId : String
        public var resourceGroupName : String
        public var resourceName : String
        public var apiVersion = "2015-08-31-preview"

        public init(subscriptionId: String, resourceGroupName: String, resourceName: String) {
            self.subscriptionId = subscriptionId
            self.resourceGroupName = resourceGroupName
            self.resourceName = resourceName
            super.init()
            self.method = "Get"
            self.isLongRunningOperation = false
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{resourceName}"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.pathParameters["{resourceName}"] = String(describing: self.resourceName)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)

        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                let result = try decoder.decode(IdentityData?.self, from: data)
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (IdentityProtocol?, Error?) -> Void) -> Void {
            client.executeAsync(command: self) {
                (result: IdentityData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}


import Foundation
import azureSwiftRuntime
public protocol UserAssignedIdentitiesListByResourceGroup  {
    var nextLink: String? { get }
    var hasAdditionalPages : Bool { get }
    var headerParameters: [String: String] { get set }
    var subscriptionId : String { get set }
    var resourceGroupName : String { get set }
    var apiVersion : String { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (UserAssignedIdentitiesListResultProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.UserAssignedIdentities {
// ListByResourceGroup lists all the userAssignedIdentities available under the specified ResourceGroup.
    internal class ListByResourceGroupCommand : BaseCommand, UserAssignedIdentitiesListByResourceGroup {
        var nextLink: String?
        public var hasAdditionalPages : Bool {
        get {
            return nextLink != nil
        }
    }
        public var subscriptionId : String
        public var resourceGroupName : String
        public var apiVersion = "2015-08-31-preview"

        public init(subscriptionId: String, resourceGroupName: String) {
            self.subscriptionId = subscriptionId
            self.resourceGroupName = resourceGroupName
            super.init()
            self.method = "Get"
            self.isLongRunningOperation = false
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)

        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                if var pageDecoder = decoder as? PageDecoder {
                    pageDecoder.isPagedData = true
                    pageDecoder.nextLinkName = "NextLink"
                }
                let result = try decoder.decode(UserAssignedIdentitiesListResultData?.self, from: data)
                if var pageDecoder = decoder as? PageDecoder {
                    self.nextLink = pageDecoder.nextLink
                }
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (UserAssignedIdentitiesListResultProtocol?, Error?) -> Void) -> Void {
            if self.nextLink != nil {
                self.path = nextLink!
                self.nextLink = nil;
                self.pathType = .absolute
            }
            client.executeAsync(command: self) {
                (result: UserAssignedIdentitiesListResultData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}


import Foundation
import azureSwiftRuntime
public protocol UserAssignedIdentitiesListBySubscription  {
    var nextLink: String? { get }
    var hasAdditionalPages : Bool { get }
    var headerParameters: [String: String] { get set }
    var subscriptionId : String { get set }
    var apiVersion : String { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (UserAssignedIdentitiesListResultProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.UserAssignedIdentities {
// ListBySubscription lists all the userAssignedIdentities available under the specified subscription.
    internal class ListBySubscriptionCommand : BaseCommand, UserAssignedIdentitiesListBySubscription {
        var nextLink: String?
        public var hasAdditionalPages : Bool {
        get {
            return nextLink != nil
        }
    }
        public var subscriptionId : String
        public var apiVersion = "2015-08-31-preview"

        public init(subscriptionId: String) {
            self.subscriptionId = subscriptionId
            super.init()
            self.method = "Get"
            self.isLongRunningOperation = false
            self.path = "/subscriptions/{subscriptionId}/providers/Microsoft.ManagedIdentity/userAssignedIdentities"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)

        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                if var pageDecoder = decoder as? PageDecoder {
                    pageDecoder.isPagedData = true
                    pageDecoder.nextLinkName = "NextLink"
                }
                let result = try decoder.decode(UserAssignedIdentitiesListResultData?.self, from: data)
                if var pageDecoder = decoder as? PageDecoder {
                    self.nextLink = pageDecoder.nextLink
                }
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (UserAssignedIdentitiesListResultProtocol?, Error?) -> Void) -> Void {
            if self.nextLink != nil {
                self.path = nextLink!
                self.nextLink = nil;
                self.pathType = .absolute
            }
            client.executeAsync(command: self) {
                (result: UserAssignedIdentitiesListResultData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}


import Foundation
import azureSwiftRuntime
public protocol UserAssignedIdentitiesUpdate  {
    var headerParameters: [String: String] { get set }
    var subscriptionId : String { get set }
    var resourceGroupName : String { get set }
    var resourceName : String { get set }
    var apiVersion : String { get set }
    var parameters :  IdentityProtocol?  { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (IdentityProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.UserAssignedIdentities {
// Update update an identity in the specified subscription and resource group.
    internal class UpdateCommand : BaseCommand, UserAssignedIdentitiesUpdate {
        public var subscriptionId : String
        public var resourceGroupName : String
        public var resourceName : String
        public var apiVersion = "2015-08-31-preview"
    public var parameters :  IdentityProtocol?

        public init(subscriptionId: String, resourceGroupName: String, resourceName: String, parameters: IdentityProtocol) {
            self.subscriptionId = subscriptionId
            self.resourceGroupName = resourceGroupName
            self.resourceName = resourceName
            self.parameters = parameters
            super.init()
            self.method = "Patch"
            self.isLongRunningOperation = false
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{resourceName}"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.pathParameters["{resourceName}"] = String(describing: self.resourceName)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)
            self.body = parameters

        }
        public override func encodeBody() throws -> Data? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let encoder = try CoderFactory.encoder(for: mimeType)
                let encodedValue = try encoder.encode(parameters as? IdentityData)
                return encodedValue
            }
            throw DecodeError.unknownMimeType
        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                let result = try decoder.decode(IdentityData?.self, from: data)
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (IdentityProtocol?, Error?) -> Void) -> Void {
            client.executeAsync(command: self) {
                (result: IdentityData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}


// 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 CloudErrorBodyData : CloudErrorBodyProtocol {
    public var code: String?
    public var message: String?
    public var target: String?
    public var details: [CloudErrorBodyProtocol?]?

        enum CodingKeys: String, CodingKey {case code = "code"
        case message = "message"
        case target = "target"
        case details = "details"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.code) {
        self.code = try container.decode(String?.self, forKey: .code)
    }
    if container.contains(.message) {
        self.message = try container.decode(String?.self, forKey: .message)
    }
    if container.contains(.target) {
        self.target = try container.decode(String?.self, forKey: .target)
    }
    if container.contains(.details) {
        self.details = try container.decode([CloudErrorBodyData?]?.self, forKey: .details)
    }
    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.code != nil {try container.encode(self.code, forKey: .code)}
    if self.message != nil {try container.encode(self.message, forKey: .message)}
    if self.target != nil {try container.encode(self.target, forKey: .target)}
    if self.details != nil {try container.encode(self.details as! [CloudErrorBodyData?]?, forKey: .details)}
  }
}

extension DataFactory {
  public static func createCloudErrorBodyProtocol() -> CloudErrorBodyProtocol {
    return CloudErrorBodyData()
  }
}


// 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 CloudErrorData : CloudErrorProtocol {
    public var error: CloudErrorBodyProtocol?

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

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.error) {
        self.error = try container.decode(CloudErrorBodyData?.self, forKey: .error)
    }
    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.error != nil {try container.encode(self.error as! CloudErrorBodyData?, forKey: .error)}
  }
}

extension DataFactory {
  public static func createCloudErrorProtocol() -> CloudErrorProtocol {
    return CloudErrorData()
  }
}


// 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 IdentityData : IdentityProtocol {
    public var id: String?
    public var name: String?
    public var location: String?
    public var tags: [String:String]?
    public var properties: IdentityPropertiesProtocol?
    public var type: UserAssignedIdentitiesEnum?

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

  public init()  {
  }

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

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

extension DataFactory {
  public static func createIdentityProtocol() -> IdentityProtocol {
    return IdentityData()
  }
}


// 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 IdentityPropertiesData : IdentityPropertiesProtocol {
    public var tenantId: String?
    public var principalId: String?
    public var clientId: String?
    public var clientSecretUrl: String?

        enum CodingKeys: String, CodingKey {case tenantId = "tenantId"
        case principalId = "principalId"
        case clientId = "clientId"
        case clientSecretUrl = "clientSecretUrl"
        }

  public init()  {
  }

  public init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
      if container.contains(.tenantId) {
        self.tenantId = try container.decode(String?.self, forKey: .tenantId)
    }
    if container.contains(.principalId) {
        self.principalId = try container.decode(String?.self, forKey: .principalId)
    }
    if container.contains(.clientId) {
        self.clientId = try container.decode(String?.self, forKey: .clientId)
    }
    if container.contains(.clientSecretUrl) {
        self.clientSecretUrl = try container.decode(String?.self, forKey: .clientSecretUrl)
    }
    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.tenantId != nil {try container.encode(self.tenantId, forKey: .tenantId)}
    if self.principalId != nil {try container.encode(self.principalId, forKey: .principalId)}
    if self.clientId != nil {try container.encode(self.clientId, forKey: .clientId)}
    if self.clientSecretUrl != nil {try container.encode(self.clientSecretUrl, forKey: .clientSecretUrl)}
  }
}

extension DataFactory {
  public static func createIdentityPropertiesProtocol() -> IdentityPropertiesProtocol {
    return IdentityPropertiesData()
  }
}


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct OperationData : OperationProtocol {
    public var name: String?
    public var display: OperationDisplayProtocol?

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

  public init()  {
  }

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

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

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


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct OperationDisplayData : OperationDisplayProtocol {
    public var provider: String?
    public var operation: String?
    public var resource: String?
    public var description: String?

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

  public init()  {
  }

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

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

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


// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
//
// Code generated by Microsoft (R) AutoRest Code Generator.
import Foundation
import azureSwiftRuntime
internal struct OperationListResultData : OperationListResultProtocol {
    public var value: [OperationProtocol?]?
    public var _nextLink: String?

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

  public init()  {
  }

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

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

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


// UserAssignedIdentities enumerates the values for user assigned identities.

// 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 UserAssignedIdentitiesEnum: String, Codable
{
// MicrosoftManagedIdentityuserAssignedIdentities specifies the microsoft managed identityuser assigned identities
// state for user assigned identities.
    case MicrosoftManagedIdentityuserAssignedIdentities = "Microsoft.ManagedIdentity/userAssignedIdentities"
}


// 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 UserAssignedIdentitiesListResultData : UserAssignedIdentitiesListResultProtocol {
    public var value: [IdentityProtocol?]?
    public var _nextLink: String?

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

  public init()  {
  }

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

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

extension DataFactory {
  public static func createUserAssignedIdentitiesListResultProtocol() -> UserAssignedIdentitiesListResultProtocol {
    return UserAssignedIdentitiesListResultData()
  }
}


// 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
// CloudErrorBodyProtocol is an error response from the ManagedServiceIdentity service.
public protocol CloudErrorBodyProtocol : Codable {
     var code: String? { get set }
     var message: String? { get set }
     var target: String? { get set }
     var details: [CloudErrorBodyProtocol?]? { 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
// CloudErrorProtocol is an error response from the ManagedServiceIdentity service.
public protocol CloudErrorProtocol : Codable {
     var error: CloudErrorBodyProtocol? { 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
// IdentityPropertiesProtocol is the properties associated with the identity.
public protocol IdentityPropertiesProtocol : Codable {
     var tenantId: String? { get set }
     var principalId: String? { get set }
     var clientId: String? { get set }
     var clientSecretUrl: 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
// IdentityProtocol is describes an identity resource.
public protocol IdentityProtocol : Codable {
     var id: String? { get set }
     var name: String? { get set }
     var location: String? { get set }
     var tags: [String:String]? { get set }
     var properties: IdentityPropertiesProtocol? { get set }
     var type: UserAssignedIdentitiesEnum? { 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
// OperationDisplayProtocol is the object that describes the operation.
public protocol OperationDisplayProtocol : Codable {
     var provider: String? { get set }
     var operation: String? { get set }
     var resource: 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
// OperationListResultProtocol is a list of operations supported by Microsoft.ManagedIdentity Resource Provider.
public protocol OperationListResultProtocol : Codable {
     var value: [OperationProtocol?]? { 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
// OperationProtocol is operation supported by the Microsoft.ManagedIdentity REST API.
public protocol OperationProtocol : Codable {
     var name: String? { get set }
     var display: OperationDisplayProtocol? { 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
// UserAssignedIdentitiesListResultProtocol is values returned by the List operation.
public protocol UserAssignedIdentitiesListResultProtocol : Codable {
     var value: [IdentityProtocol?]? { get set }
     var _nextLink: String? { get set }
}


// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
    name: "network",
    products: [
        // Products define the executables and libraries produced by a package, and make them visible to other packages.
        .library(
            name: "network",
            targets: ["network"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.10"),
        .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "3.4.2"),
        .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "3.1.4"),
        .package(url: "git@github.com:alvadb/autorest-clientruntime-for-swift.git", .branch("master"))
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "network",
            dependencies: ["Alamofire", "RxSwift", "SwiftyJSON", "azureSwiftRuntime"])
    ]
)


// 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.

// ApplicationGateways is the network Client
import Foundation
import azureSwiftRuntime
extension Commands {
public struct ApplicationGateways {
    public static func BackendHealth(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String) -> ApplicationGatewaysBackendHealth {
        return BackendHealthCommand(resourceGroupName: resourceGroupName, applicationGatewayName: applicationGatewayName, subscriptionId: subscriptionId)
    }
    public static func CreateOrUpdate(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String, parameters: ApplicationGatewayProtocol) -> ApplicationGatewaysCreateOrUpdate {
        return CreateOrUpdateCommand(resourceGroupName: resourceGroupName, applicationGatewayName: applicationGatewayName, subscriptionId: subscriptionId, parameters: parameters)
    }
    public static func Delete(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String) -> ApplicationGatewaysDelete {
        return DeleteCommand(resourceGroupName: resourceGroupName, applicationGatewayName: applicationGatewayName, subscriptionId: subscriptionId)
    }
    public static func Get(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String) -> ApplicationGatewaysGet {
        return GetCommand(resourceGroupName: resourceGroupName, applicationGatewayName: applicationGatewayName, subscriptionId: subscriptionId)
    }
    public static func GetSslPredefinedPolicy(subscriptionId: String, predefinedPolicyName: String) -> ApplicationGatewaysGetSslPredefinedPolicy {
        return GetSslPredefinedPolicyCommand(subscriptionId: subscriptionId, predefinedPolicyName: predefinedPolicyName)
    }
    public static func List(resourceGroupName: String, subscriptionId: String) -> ApplicationGatewaysList {
        return ListCommand(resourceGroupName: resourceGroupName, subscriptionId: subscriptionId)
    }
    public static func ListAll(subscriptionId: String) -> ApplicationGatewaysListAll {
        return ListAllCommand(subscriptionId: subscriptionId)
    }
    public static func ListAvailableSslOptions(subscriptionId: String) -> ApplicationGatewaysListAvailableSslOptions {
        return ListAvailableSslOptionsCommand(subscriptionId: subscriptionId)
    }
    public static func ListAvailableSslPredefinedPolicies(subscriptionId: String) -> ApplicationGatewaysListAvailableSslPredefinedPolicies {
        return ListAvailableSslPredefinedPoliciesCommand(subscriptionId: subscriptionId)
    }
    public static func ListAvailableWafRuleSets(subscriptionId: String) -> ApplicationGatewaysListAvailableWafRuleSets {
        return ListAvailableWafRuleSetsCommand(subscriptionId: subscriptionId)
    }
    public static func Start(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String) -> ApplicationGatewaysStart {
        return StartCommand(resourceGroupName: resourceGroupName, applicationGatewayName: applicationGatewayName, subscriptionId: subscriptionId)
    }
    public static func Stop(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String) -> ApplicationGatewaysStop {
        return StopCommand(resourceGroupName: resourceGroupName, applicationGatewayName: applicationGatewayName, subscriptionId: subscriptionId)
    }
    public static func UpdateTags(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String, parameters: TagsObjectProtocol) -> ApplicationGatewaysUpdateTags {
        return UpdateTagsCommand(resourceGroupName: resourceGroupName, applicationGatewayName: applicationGatewayName, subscriptionId: subscriptionId, parameters: parameters)
    }
}
}


import Foundation
import azureSwiftRuntime
public protocol ApplicationGatewaysBackendHealth  {
    var headerParameters: [String: String] { get set }
    var resourceGroupName : String { get set }
    var applicationGatewayName : String { get set }
    var subscriptionId : String { get set }
    var apiVersion : String { get set }
    var expand : String? { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (ApplicationGatewayBackendHealthProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.ApplicationGateways {
// BackendHealth gets the backend health of the specified application gateway in a resource group. This method may poll
// for completion. Polling can be canceled by passing the cancel channel argument. The channel will be used to cancel
// polling and any outstanding HTTP requests.
    internal class BackendHealthCommand : BaseCommand, ApplicationGatewaysBackendHealth {
        public var resourceGroupName : String
        public var applicationGatewayName : String
        public var subscriptionId : String
        public var apiVersion = "2018-01-01"
        public var expand : String?

        public init(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String) {
            self.resourceGroupName = resourceGroupName
            self.applicationGatewayName = applicationGatewayName
            self.subscriptionId = subscriptionId
            super.init()
            self.method = "Post"
            self.isLongRunningOperation = true
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendhealth"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.pathParameters["{applicationGatewayName}"] = String(describing: self.applicationGatewayName)
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)
            if self.expand != nil { queryParameters["$expand"] = String(describing: self.expand!) }

        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                let result = try decoder.decode(ApplicationGatewayBackendHealthData?.self, from: data)
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (ApplicationGatewayBackendHealthProtocol?, Error?) -> Void) -> Void {
            client.executeAsyncLRO(command: self) {
                (result: ApplicationGatewayBackendHealthData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}


import Foundation
import azureSwiftRuntime
public protocol ApplicationGatewaysCreateOrUpdate  {
    var headerParameters: [String: String] { get set }
    var resourceGroupName : String { get set }
    var applicationGatewayName : String { get set }
    var subscriptionId : String { get set }
    var apiVersion : String { get set }
    var parameters :  ApplicationGatewayProtocol?  { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (ApplicationGatewayProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.ApplicationGateways {
// CreateOrUpdate creates or updates the specified application gateway. This method may poll for completion. Polling
// can be canceled by passing the cancel channel argument. The channel will be used to cancel polling and any
// outstanding HTTP requests.
    internal class CreateOrUpdateCommand : BaseCommand, ApplicationGatewaysCreateOrUpdate {
        public var resourceGroupName : String
        public var applicationGatewayName : String
        public var subscriptionId : String
        public var apiVersion = "2018-01-01"
    public var parameters :  ApplicationGatewayProtocol?

        public init(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String, parameters: ApplicationGatewayProtocol) {
            self.resourceGroupName = resourceGroupName
            self.applicationGatewayName = applicationGatewayName
            self.subscriptionId = subscriptionId
            self.parameters = parameters
            super.init()
            self.method = "Put"
            self.isLongRunningOperation = true
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.pathParameters["{applicationGatewayName}"] = String(describing: self.applicationGatewayName)
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)
            self.body = parameters

        }
        public override func encodeBody() throws -> Data? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let encoder = try CoderFactory.encoder(for: mimeType)
                let encodedValue = try encoder.encode(parameters as? ApplicationGatewayData)
                return encodedValue
            }
            throw DecodeError.unknownMimeType
        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                let result = try decoder.decode(ApplicationGatewayData?.self, from: data)
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (ApplicationGatewayProtocol?, Error?) -> Void) -> Void {
            client.executeAsyncLRO(command: self) {
                (result: ApplicationGatewayData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}


import Foundation
import azureSwiftRuntime
public protocol ApplicationGatewaysDelete  {
    var headerParameters: [String: String] { get set }
    var resourceGroupName : String { get set }
    var applicationGatewayName : String { get set }
    var subscriptionId : String { get set }
    var apiVersion : String { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (Error?) -> Void) -> Void;
}

extension Commands.ApplicationGateways {
// Delete deletes the specified application gateway. This method may poll for completion. Polling can be canceled by
// passing the cancel channel argument. The channel will be used to cancel polling and any outstanding HTTP requests.
    internal class DeleteCommand : BaseCommand, ApplicationGatewaysDelete {
        public var resourceGroupName : String
        public var applicationGatewayName : String
        public var subscriptionId : String
        public var apiVersion = "2018-01-01"

        public init(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String) {
            self.resourceGroupName = resourceGroupName
            self.applicationGatewayName = applicationGatewayName
            self.subscriptionId = subscriptionId
            super.init()
            self.method = "Delete"
            self.isLongRunningOperation = true
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.pathParameters["{applicationGatewayName}"] = String(describing: self.applicationGatewayName)
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)

        }

        public func execute(client: RuntimeClient,
            completionHandler: @escaping (Error?) -> Void) -> Void {
            client.executeAsyncLRO(command: self) {
                (error) in
                completionHandler(error)
            }
        }
    }
}


import Foundation
import azureSwiftRuntime
public protocol ApplicationGatewaysGet  {
    var headerParameters: [String: String] { get set }
    var resourceGroupName : String { get set }
    var applicationGatewayName : String { get set }
    var subscriptionId : String { get set }
    var apiVersion : String { get set }
    func execute(client: RuntimeClient,
    completionHandler: @escaping (ApplicationGatewayProtocol?, Error?) -> Void) -> Void ;
}

extension Commands.ApplicationGateways {
// Get gets the specified application gateway.
    internal class GetCommand : BaseCommand, ApplicationGatewaysGet {
        public var resourceGroupName : String
        public var applicationGatewayName : String
        public var subscriptionId : String
        public var apiVersion = "2018-01-01"

        public init(resourceGroupName: String, applicationGatewayName: String, subscriptionId: String) {
            self.resourceGroupName = resourceGroupName
            self.applicationGatewayName = applicationGatewayName
            self.subscriptionId = subscriptionId
            super.init()
            self.method = "Get"
            self.isLongRunningOperation = false
            self.path = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}"
            self.headerParameters = ["Content-Type":"application/json; charset=utf-8"]
        }

        public override func preCall()  {
            self.pathParameters["{resourceGroupName}"] = String(describing: self.resourceGroupName)
            self.pathParameters["{applicationGatewayName}"] = String(describing: self.applicationGatewayName)
            self.pathParameters["{subscriptionId}"] = String(describing: self.subscriptionId)
            self.queryParameters["api-version"] = String(describing: self.apiVersion)

        }

        public override func returnFunc(data: Data) throws -> Decodable? {
            let contentType = "application/json"
            if let mimeType = MimeType.getType(forStr: contentType) {
                let decoder = try CoderFactory.decoder(for: mimeType)
                let result = try decoder.decode(ApplicationGatewayData?.self, from: data)
                return result;
            }
            throw DecodeError.unknownMimeType
        }
        public func execute(client: RuntimeClient,
            completionHandler: @escaping (ApplicationGatewayProtocol?, Error?) -> Void) -> Void {
            client.executeAsync(command: self) {
                (result: ApplicationGatewayData?, error: Error?) in
                completionHandler(result, error)
            }
        }
    }
}