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


/**
 * @class
 * Initializes a new instance of the DeploymentExtendedFilter class.
 * @constructor
 * Deployment filter.
 *
 * @member {string} [provisioningState] The provisioning state.
 * 
 */
export interface DeploymentExtendedFilter {
    provisioningState?: string;
}

/**
 * @class
 * Initializes a new instance of the GenericResourceFilter class.
 * @constructor
 * Resource filter.
 *
 * @member {string} [resourceType] The resource type.
 * 
 * @member {string} [tagname] The tag name.
 * 
 * @member {string} [tagvalue] The tag value.
 * 
 */
export interface GenericResourceFilter {
    resourceType?: string;
    tagname?: string;
    tagvalue?: string;
}

/**
 * @class
 * Initializes a new instance of the ResourceGroupFilter class.
 * @constructor
 * Resource group filter.
 *
 * @member {string} [tagName] The tag name.
 * 
 * @member {string} [tagValue] The tag value.
 * 
 */
export interface ResourceGroupFilter {
    tagName?: string;
    tagValue?: string;
}

/**
 * @class
 * Initializes a new instance of the TemplateLink class.
 * @constructor
 * Entity representing the reference to the template.
 *
 * @member {string} uri URI referencing the template.
 * 
 * @member {string} [contentVersion] If included it must match the
 * ContentVersion in the template.
 * 
 */
export interface TemplateLink {
    uri: string;
    contentVersion?: string;
}

/**
 * @class
 * Initializes a new instance of the ParametersLink class.
 * @constructor
 * Entity representing the reference to the deployment paramaters.
 *
 * @member {string} uri URI referencing the template.
 * 
 * @member {string} [contentVersion] If included it must match the
 * ContentVersion in the template.
 * 
 */
export interface ParametersLink {
    uri: string;
    contentVersion?: string;
}

/**
 * @class
 * Initializes a new instance of the DeploymentProperties class.
 * @constructor
 * Deployment properties.
 *
 * @member {object} [template] The template content. It can be a JObject or a
 * well formed JSON string. Use only one of Template or TemplateLink.
 * 
 * @member {object} [templateLink] The template URI. Use only one of Template
 * or TemplateLink.
 * 
 * @member {string} [templateLink.uri] URI referencing the template.
 * 
 * @member {string} [templateLink.contentVersion] If included it must match
 * the ContentVersion in the template.
 * 
 * @member {object} [parameters] Deployment parameters. It can be a JObject or
 * a well formed JSON string. Use only one of Parameters or ParametersLink.
 * 
 * @member {object} [parametersLink] The parameters URI. Use only one of
 * Parameters or ParametersLink.
 * 
 * @member {string} [parametersLink.uri] URI referencing the template.
 * 
 * @member {string} [parametersLink.contentVersion] If included it must match
 * the ContentVersion in the template.
 * 
 * @member {string} mode The deployment mode. Possible values include:
 * 'Incremental', 'Complete'
 * 
 * @member {object} [debugSetting] The debug setting of the deployment.
 * 
 * @member {string} [debugSetting.detailLevel] The debug detail level.
 * 
 */
export interface DeploymentProperties {
    template?: any;
    templateLink?: TemplateLink;
    parameters?: any;
    parametersLink?: ParametersLink;
    mode: string;
    debugSetting?: DebugSetting;
}

/**
 * @class
 * Initializes a new instance of the DebugSetting class.
 * @constructor
 * @member {string} [detailLevel] The debug detail level.
 * 
 */
export interface DebugSetting {
    detailLevel?: string;
}

/**
 * @class
 * Initializes a new instance of the Deployment class.
 * @constructor
 * Deployment operation parameters.
 *
 * @member {object} [properties] The deployment properties.
 * 
 * @member {object} [properties.template] The template content. It can be a
 * JObject or a well formed JSON string. Use only one of Template or
 * TemplateLink.
 * 
 * @member {object} [properties.templateLink] The template URI. Use only one
 * of Template or TemplateLink.
 * 
 * @member {string} [properties.templateLink.uri] URI referencing the template.
 * 
 * @member {string} [properties.templateLink.contentVersion] If included it
 * must match the ContentVersion in the template.
 * 
 * @member {object} [properties.parameters] Deployment parameters. It can be a
 * JObject or a well formed JSON string. Use only one of Parameters or
 * ParametersLink.
 * 
 * @member {object} [properties.parametersLink] The parameters URI. Use only
 * one of Parameters or ParametersLink.
 * 
 * @member {string} [properties.parametersLink.uri] URI referencing the
 * template.
 * 
 * @member {string} [properties.parametersLink.contentVersion] If included it
 * must match the ContentVersion in the template.
 * 
 * @member {string} [properties.mode] The deployment mode. Possible values
 * include: 'Incremental', 'Complete'
 * 
 * @member {object} [properties.debugSetting] The debug setting of the
 * deployment.
 * 
 * @member {string} [properties.debugSetting.detailLevel] The debug detail
 * level.
 * 
 */
export interface Deployment {
    properties?: DeploymentProperties;
}

/**
 * @class
 * Initializes a new instance of the DeploymentExportResult class.
 * @constructor
 * @member {object} [template] The template content.
 * 
 */
export interface DeploymentExportResult {
    template?: any;
}

/**
 * @class
 * Initializes a new instance of the ResourceManagementErrorWithDetails class.
 * @constructor
 * @member {string} code The error code returned from the server.
 * 
 * @member {string} message The error message returned from the server.
 * 
 * @member {string} [target] The target of the error.
 * 
 * @member {array} [details] Validation error.
 * 
 */
export interface ResourceManagementErrorWithDetails {
    code: string;
    message: string;
    target?: string;
    details?: ResourceManagementErrorWithDetails[];
}

/**
 * @class
 * Initializes a new instance of the AliasPathType class.
 * @constructor
 * @member {string} [path] The path of an alias.
 * 
 * @member {array} [apiVersions] The api versions.
 * 
 */
export interface AliasPathType {
    path?: string;
    apiVersions?: string[];
}

/**
 * @class
 * Initializes a new instance of the AliasType class.
 * @constructor
 * @member {string} [name] The alias name.
 * 
 * @member {array} [paths] The paths for an alias.
 * 
 */
export interface AliasType {
    name?: string;
    paths?: AliasPathType[];
}

/**
 * @class
 * Initializes a new instance of the ProviderResourceType class.
 * @constructor
 * Resource type managed by the resource provider.
 *
 * @member {string} [resourceType] The resource type.
 * 
 * @member {array} [locations] The collection of locations where this resource
 * type can be created in.
 * 
 * @member {array} [aliases] The aliases that are supported by this resource
 * type.
 * 
 * @member {array} [apiVersions] The api version.
 * 
 * @member {object} [properties] The properties.
 * 
 */
export interface ProviderResourceType {
    resourceType?: string;
    locations?: string[];
    aliases?: AliasType[];
    apiVersions?: string[];
    properties?: { [propertyName: string]: string };
}

/**
 * @class
 * Initializes a new instance of the Provider class.
 * @constructor
 * Resource provider information.
 *
 * @member {string} [id] The provider id.
 * 
 * @member {string} [namespace] The namespace of the provider.
 * 
 * @member {string} [registrationState] The registration state of the provider.
 * 
 * @member {array} [resourceTypes] The collection of provider resource types.
 * 
 */
export interface Provider {
    id?: string;
    namespace?: string;
    registrationState?: string;
    resourceTypes?: ProviderResourceType[];
}

/**
 * @class
 * Initializes a new instance of the BasicDependency class.
 * @constructor
 * Deployment dependency information.
 *
 * @member {string} [id] The ID of the dependency.
 * 
 * @member {string} [resourceType] The dependency resource type.
 * 
 * @member {string} [resourceName] The dependency resource name.
 * 
 */
export interface BasicDependency {
    id?: string;
    resourceType?: string;
    resourceName?: string;
}

/**
 * @class
 * Initializes a new instance of the Dependency class.
 * @constructor
 * Deployment dependency information.
 *
 * @member {array} [dependsOn] The list of dependencies.
 * 
 * @member {string} [id] The ID of the dependency.
 * 
 * @member {string} [resourceType] The dependency resource type.
 * 
 * @member {string} [resourceName] The dependency resource name.
 * 
 */
export interface Dependency {
    dependsOn?: BasicDependency[];
    id?: string;
    resourceType?: string;
    resourceName?: string;
}

/**
 * @class
 * Initializes a new instance of the DeploymentPropertiesExtended class.
 * @constructor
 * Deployment properties with additional details.
 *
 * @member {string} [provisioningState] The state of the provisioning.
 * 
 * @member {string} [correlationId] The correlation ID of the deployment.
 * 
 * @member {date} [timestamp] The timestamp of the template deployment.
 * 
 * @member {object} [outputs] Key/value pairs that represent deploymentoutput.
 * 
 * @member {array} [providers] The list of resource providers needed for the
 * deployment.
 * 
 * @member {array} [dependencies] The list of deployment dependencies.
 * 
 * @member {object} [template] The template content. Use only one of Template
 * or TemplateLink.
 * 
 * @member {object} [templateLink] The URI referencing the template. Use only
 * one of Template or TemplateLink.
 * 
 * @member {string} [templateLink.uri] URI referencing the template.
 * 
 * @member {string} [templateLink.contentVersion] If included it must match
 * the ContentVersion in the template.
 * 
 * @member {object} [parameters] Deployment parameters. Use only one of
 * Parameters or ParametersLink.
 * 
 * @member {object} [parametersLink] The URI referencing the parameters. Use
 * only one of Parameters or ParametersLink.
 * 
 * @member {string} [parametersLink.uri] URI referencing the template.
 * 
 * @member {string} [parametersLink.contentVersion] If included it must match
 * the ContentVersion in the template.
 * 
 * @member {string} [mode] The deployment mode. Possible values include:
 * 'Incremental', 'Complete'
 * 
 * @member {object} [debugSetting] The debug setting of the deployment.
 * 
 * @member {string} [debugSetting.detailLevel] The debug detail level.
 * 
 */
export interface DeploymentPropertiesExtended {
    provisioningState?: string;
    correlationId?: string;
    timestamp?: Date;
    outputs?: any;
    providers?: Provider[];
    dependencies?: Dependency[];
    template?: any;
    templateLink?: TemplateLink;
    parameters?: any;
    parametersLink?: ParametersLink;
    mode?: string;
    debugSetting?: DebugSetting;
}

/**
 * @class
 * Initializes a new instance of the DeploymentValidateResult class.
 * @constructor
 * Information from validate template deployment response.
 *
 * @member {object} [error] Validation error.
 * 
 * @member {string} [error.code] The error code returned from the server.
 * 
 * @member {string} [error.message] The error message returned from the server.
 * 
 * @member {string} [error.target] The target of the error.
 * 
 * @member {array} [error.details] Validation error.
 * 
 * @member {object} [properties] The template deployment properties.
 * 
 * @member {string} [properties.provisioningState] The state of the
 * provisioning.
 * 
 * @member {string} [properties.correlationId] The correlation ID of the
 * deployment.
 * 
 * @member {date} [properties.timestamp] The timestamp of the template
 * deployment.
 * 
 * @member {object} [properties.outputs] Key/value pairs that represent
 * deploymentoutput.
 * 
 * @member {array} [properties.providers] The list of resource providers
 * needed for the deployment.
 * 
 * @member {array} [properties.dependencies] The list of deployment
 * dependencies.
 * 
 * @member {object} [properties.template] The template content. Use only one
 * of Template or TemplateLink.
 * 
 * @member {object} [properties.templateLink] The URI referencing the
 * template. Use only one of Template or TemplateLink.
 * 
 * @member {string} [properties.templateLink.uri] URI referencing the template.
 * 
 * @member {string} [properties.templateLink.contentVersion] If included it
 * must match the ContentVersion in the template.
 * 
 * @member {object} [properties.parameters] Deployment parameters. Use only
 * one of Parameters or ParametersLink.
 * 
 * @member {object} [properties.parametersLink] The URI referencing the
 * parameters. Use only one of Parameters or ParametersLink.
 * 
 * @member {string} [properties.parametersLink.uri] URI referencing the
 * template.
 * 
 * @member {string} [properties.parametersLink.contentVersion] If included it
 * must match the ContentVersion in the template.
 * 
 * @member {string} [properties.mode] The deployment mode. Possible values
 * include: 'Incremental', 'Complete'
 * 
 * @member {object} [properties.debugSetting] The debug setting of the
 * deployment.
 * 
 * @member {string} [properties.debugSetting.detailLevel] The debug detail
 * level.
 * 
 */
export interface DeploymentValidateResult {
    error?: ResourceManagementErrorWithDetails;
    properties?: DeploymentPropertiesExtended;
}

/**
 * @class
 * Initializes a new instance of the DeploymentExtended class.
 * @constructor
 * Deployment information.
 *
 * @member {string} [id] The ID of the deployment.
 * 
 * @member {string} name The name of the deployment.
 * 
 * @member {object} [properties] Deployment properties.
 * 
 * @member {string} [properties.provisioningState] The state of the
 * provisioning.
 * 
 * @member {string} [properties.correlationId] The correlation ID of the
 * deployment.
 * 
 * @member {date} [properties.timestamp] The timestamp of the template
 * deployment.
 * 
 * @member {object} [properties.outputs] Key/value pairs that represent
 * deploymentoutput.
 * 
 * @member {array} [properties.providers] The list of resource providers
 * needed for the deployment.
 * 
 * @member {array} [properties.dependencies] The list of deployment
 * dependencies.
 * 
 * @member {object} [properties.template] The template content. Use only one
 * of Template or TemplateLink.
 * 
 * @member {object} [properties.templateLink] The URI referencing the
 * template. Use only one of Template or TemplateLink.
 * 
 * @member {string} [properties.templateLink.uri] URI referencing the template.
 * 
 * @member {string} [properties.templateLink.contentVersion] If included it
 * must match the ContentVersion in the template.
 * 
 * @member {object} [properties.parameters] Deployment parameters. Use only
 * one of Parameters or ParametersLink.
 * 
 * @member {object} [properties.parametersLink] The URI referencing the
 * parameters. Use only one of Parameters or ParametersLink.
 * 
 * @member {string} [properties.parametersLink.uri] URI referencing the
 * template.
 * 
 * @member {string} [properties.parametersLink.contentVersion] If included it
 * must match the ContentVersion in the template.
 * 
 * @member {string} [properties.mode] The deployment mode. Possible values
 * include: 'Incremental', 'Complete'
 * 
 * @member {object} [properties.debugSetting] The debug setting of the
 * deployment.
 * 
 * @member {string} [properties.debugSetting.detailLevel] The debug detail
 * level.
 * 
 */
export interface DeploymentExtended {
    id?: string;
    name: string;
    properties?: DeploymentPropertiesExtended;
}

/**
 * @class
 * Initializes a new instance of the Resource class.
 * @constructor
 * @member {string} [id] Resource Id
 * 
 * @member {string} [name] Resource name
 * 
 * @member {string} [type] Resource type
 * 
 * @member {string} location Resource location
 * 
 * @member {object} [tags] Resource tags
 * 
 */
export interface Resource extends BaseResource {
    id?: string;
    name?: string;
    type?: string;
    location: string;
    tags?: { [propertyName: string]: string };
}

/**
 * @class
 * Initializes a new instance of the GenericResource class.
 * @constructor
 * Resource information.
 *
 * @member {object} [plan] The plan of the resource.
 * 
 * @member {string} [plan.name] The plan ID.
 * 
 * @member {string} [plan.publisher] The publisher ID.
 * 
 * @member {string} [plan.product] The offer ID.
 * 
 * @member {string} [plan.promotionCode] The promotion code.
 * 
 * @member {object} [properties] The resource properties.
 * 
 * @member {string} [kind] The kind of the resource.
 * 
 * @member {string} [managedBy] The managedBy property of the resource.
 * 
 * @member {object} [sku] The sku of the resource.
 * 
 * @member {string} [sku.name] The sku name.
 * 
 * @member {string} [sku.tier] The sku tier.
 * 
 * @member {string} [sku.size] The sku size.
 * 
 * @member {string} [sku.family] The sku family.
 * 
 * @member {string} [sku.model] The sku model.
 * 
 * @member {number} [sku.capacity] The sku capacity.
 * 
 * @member {object} [identity] The identity of the resource.
 * 
 * @member {string} [identity.principalId] The principal id of resource
 * identity.
 * 
 * @member {string} [identity.tenantId] The tenant id of resource.
 * 
 * @member {string} [identity.type] The identity type. Possible values
 * include: 'SystemAssigned'
 * 
 */
export interface GenericResource extends Resource {
    plan?: Plan;
    properties?: any;
    kind?: string;
    managedBy?: string;
    sku?: Sku;
    identity?: Identity;
}

/**
 * @class
 * Initializes a new instance of the Plan class.
 * @constructor
 * Plan for the resource.
 *
 * @member {string} [name] The plan ID.
 * 
 * @member {string} [publisher] The publisher ID.
 * 
 * @member {string} [product] The offer ID.
 * 
 * @member {string} [promotionCode] The promotion code.
 * 
 */
export interface Plan {
    name?: string;
    publisher?: string;
    product?: string;
    promotionCode?: string;
}

/**
 * @class
 * Initializes a new instance of the Sku class.
 * @constructor
 * Sku for the resource.
 *
 * @member {string} [name] The sku name.
 * 
 * @member {string} [tier] The sku tier.
 * 
 * @member {string} [size] The sku size.
 * 
 * @member {string} [family] The sku family.
 * 
 * @member {string} [model] The sku model.
 * 
 * @member {number} [capacity] The sku capacity.
 * 
 */
export interface Sku {
    name?: string;
    tier?: string;
    size?: string;
    family?: string;
    model?: string;
    capacity?: number;
}

/**
 * @class
 * Initializes a new instance of the Identity class.
 * @constructor
 * Identity for the resource.
 *
 * @member {string} [principalId] The principal id of resource identity.
 * 
 * @member {string} [tenantId] The tenant id of resource.
 * 
 * @member {string} [type] The identity type. Possible values include:
 * 'SystemAssigned'
 * 
 */
export interface Identity {
    principalId?: string;
    tenantId?: string;
    type?: string;
}

/**
 * @class
 * Initializes a new instance of the ResourceGroup class.
 * @constructor
 * Resource group information.
 *
 * @member {string} [id] The ID of the resource group.
 * 
 * @member {string} [name] The Name of the resource group.
 * 
 * @member {object} [properties]
 * 
 * @member {string} [properties.provisioningState] Gets resource group
 * provisioning state.
 * 
 * @member {string} location The location of the resource group. It cannot be
 * changed after the resource group has been created. Has to be one of the
 * supported Azure Locations, such as West US, East US, West Europe, East
 * Asia, etc.
 * 
 * @member {object} [tags] The tags attached to the resource group.
 * 
 */
export interface ResourceGroup {
    id?: string;
    name?: string;
    properties?: ResourceGroupProperties;
    location: string;
    tags?: { [propertyName: string]: string };
}

/**
 * @class
 * Initializes a new instance of the ResourceGroupProperties class.
 * @constructor
 * The resource group properties.
 *
 * @member {string} [provisioningState] Gets resource group provisioning state.
 * 
 */
export interface ResourceGroupProperties {
    provisioningState?: string;
}

/**
 * @class
 * Initializes a new instance of the ResourcesMoveInfo class.
 * @constructor
 * Parameters of move resources.
 *
 * @member {array} [resources] The ids of the resources.
 * 
 * @member {string} [targetResourceGroup] The target resource group.
 * 
 */
export interface ResourcesMoveInfo {
    resources?: string[];
    targetResourceGroup?: string;
}

/**
 * @class
 * Initializes a new instance of the ExportTemplateRequest class.
 * @constructor
 * Export resource group template request parameters.
 *
 * @member {array} [resources] The ids of the resources. The only supported
 * string currently is '*' (all resources). Future api updates will support
 * exporting specific resources.
 * 
 * @member {string} [options] The export template options. Supported values
 * include 'IncludeParameterDefaultValue', 'IncludeComments' or
 * 'IncludeParameterDefaultValue, IncludeComments
 * 
 */
export interface ExportTemplateRequest {
    resources?: string[];
    options?: string;
}

/**
 * @class
 * Initializes a new instance of the TagCount class.
 * @constructor
 * Tag count.
 *
 * @member {string} [type] Type of count.
 * 
 * @member {string} [value] Value of count.
 * 
 */
export interface TagCount {
    type?: string;
    value?: string;
}

/**
 * @class
 * Initializes a new instance of the TagValue class.
 * @constructor
 * Tag information.
 *
 * @member {string} [id] The tag ID.
 * 
 * @member {string} [tagValueProperty] The tag value.
 * 
 * @member {object} [count] The tag value count.
 * 
 * @member {string} [count.type] Type of count.
 * 
 * @member {string} [count.value] Value of count.
 * 
 */
export interface TagValue {
    id?: string;
    tagValueProperty?: string;
    count?: TagCount;
}

/**
 * @class
 * Initializes a new instance of the TagDetails class.
 * @constructor
 * Tag details.
 *
 * @member {string} [id] The tag ID.
 * 
 * @member {string} [tagName] The tag name.
 * 
 * @member {object} [count] The tag count.
 * 
 * @member {string} [count.type] Type of count.
 * 
 * @member {string} [count.value] Value of count.
 * 
 * @member {array} [values] The list of tag values.
 * 
 */
export interface TagDetails {
    id?: string;
    tagName?: string;
    count?: TagCount;
    values?: TagValue[];
}

/**
 * @class
 * Initializes a new instance of the TargetResource class.
 * @constructor
 * Target resource.
 *
 * @member {string} [id] The ID of the resource.
 * 
 * @member {string} [resourceName] The name of the resource.
 * 
 * @member {string} [resourceType] The type of the resource.
 * 
 */
export interface TargetResource {
    id?: string;
    resourceName?: string;
    resourceType?: string;
}

/**
 * @class
 * Initializes a new instance of the HttpMessage class.
 * @constructor
 * @member {object} [content] HTTP message content.
 * 
 */
export interface HttpMessage {
    content?: any;
}

/**
 * @class
 * Initializes a new instance of the DeploymentOperationProperties class.
 * @constructor
 * Deployment operation properties.
 *
 * @member {string} [provisioningState] The state of the provisioning.
 * 
 * @member {date} [timestamp] The date and time of the operation.
 * 
 * @member {string} [serviceRequestId] Deployment operation service request id.
 * 
 * @member {string} [statusCode] Operation status code.
 * 
 * @member {object} [statusMessage] Operation status message.
 * 
 * @member {object} [targetResource] The target resource.
 * 
 * @member {string} [targetResource.id] The ID of the resource.
 * 
 * @member {string} [targetResource.resourceName] The name of the resource.
 * 
 * @member {string} [targetResource.resourceType] The type of the resource.
 * 
 * @member {object} [request] The HTTP request message.
 * 
 * @member {object} [request.content] HTTP message content.
 * 
 * @member {object} [response] The HTTP response message.
 * 
 * @member {object} [response.content] HTTP message content.
 * 
 */
export interface DeploymentOperationProperties {
    provisioningState?: string;
    timestamp?: Date;
    serviceRequestId?: string;
    statusCode?: string;
    statusMessage?: any;
    targetResource?: TargetResource;
    request?: HttpMessage;
    response?: HttpMessage;
}

/**
 * @class
 * Initializes a new instance of the DeploymentOperation class.
 * @constructor
 * Deployment operation information.
 *
 * @member {string} [id] Full deployment operation id.
 * 
 * @member {string} [operationId] Deployment operation id.
 * 
 * @member {object} [properties] Deployment properties.
 * 
 * @member {string} [properties.provisioningState] The state of the
 * provisioning.
 * 
 * @member {date} [properties.timestamp] The date and time of the operation.
 * 
 * @member {string} [properties.serviceRequestId] Deployment operation service
 * request id.
 * 
 * @member {string} [properties.statusCode] Operation status code.
 * 
 * @member {object} [properties.statusMessage] Operation status message.
 * 
 * @member {object} [properties.targetResource] The target resource.
 * 
 * @member {string} [properties.targetResource.id] The ID of the resource.
 * 
 * @member {string} [properties.targetResource.resourceName] The name of the
 * resource.
 * 
 * @member {string} [properties.targetResource.resourceType] The type of the
 * resource.
 * 
 * @member {object} [properties.request] The HTTP request message.
 * 
 * @member {object} [properties.request.content] HTTP message content.
 * 
 * @member {object} [properties.response] The HTTP response message.
 * 
 * @member {object} [properties.response.content] HTTP message content.
 * 
 */
export interface DeploymentOperation {
    id?: string;
    operationId?: string;
    properties?: DeploymentOperationProperties;
}

/**
 * @class
 * Initializes a new instance of the ResourceProviderOperationDisplayProperties class.
 * @constructor
 * Resource provider operation's display properties.
 *
 * @member {string} [publisher] Operation description.
 * 
 * @member {string} [provider] Operation provider.
 * 
 * @member {string} [resource] Operation resource.
 * 
 * @member {string} [operation] Operation.
 * 
 * @member {string} [description] Operation description.
 * 
 */
export interface ResourceProviderOperationDisplayProperties {
    publisher?: string;
    provider?: string;
    resource?: string;
    operation?: string;
    description?: string;
}

/**
 * @class
 * Initializes a new instance of the SubResource class.
 * @constructor
 * @member {string} [id] Resource Id
 * 
 */
export interface SubResource extends BaseResource {
    id?: string;
}

/**
 * @class
 * Initializes a new instance of the ResourceGroupExportResult class.
 * @constructor
 * @member {object} [template] The template content.
 * 
 * @member {object} [error] The error.
 * 
 * @member {string} [error.code] The error code returned from the server.
 * 
 * @member {string} [error.message] The error message returned from the server.
 * 
 * @member {string} [error.target] The target of the error.
 * 
 * @member {array} [error.details] Validation error.
 * 
 */
export interface ResourceGroupExportResult {
    template?: any;
    error?: ResourceManagementErrorWithDetails;
}
