/*
 * Copyright (c) Microsoft Corporation. All rights 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.
 */

import { BaseResource, CloudError, AzureServiceClientOptions } from "@azure/ms-rest-azure-js";
import * as msRest from "@azure/ms-rest-js";

export { BaseResource, CloudError };

/**
 * The account SKU.
 */
export interface Sku {
  /**
   * Gets or sets the SKU name of the account. Possible values include: 'Free', 'Basic'
   */
  name: SkuNameEnum;
  /**
   * Gets or sets the SKU family.
   */
  family?: string;
  /**
   * Gets or sets the SKU capacity.
   */
  capacity?: number;
}

/**
 * The core properties of ARM resources
 */
export interface Resource extends BaseResource {
  /**
   * Fully qualified resource Id for the resource
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * The name of the resource
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * The type of the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly type?: string;
}

/**
 * The resource model definition for a ARM tracked top level resource
 */
export interface TrackedResource extends Resource {
  /**
   * Resource tags.
   */
  tags?: { [propertyName: string]: string };
  /**
   * The Azure Region where the resource lives
   */
  location?: string;
}

/**
 * Definition of the automation account type.
 */
export interface AutomationAccount extends TrackedResource {
  /**
   * Gets or sets the SKU of account.
   */
  sku?: Sku;
  /**
   * Gets or sets the last modified by.
   */
  lastModifiedBy?: string;
  /**
   * Gets status of account. Possible values include: 'Ok', 'Unavailable', 'Suspended'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly state?: AutomationAccountState;
  /**
   * Gets the creation time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * Gets the last modified time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
  /**
   * Gets or sets the etag of the resource.
   */
  etag?: string;
}

/**
 * The parameters supplied to the create or update automation account operation.
 */
export interface AutomationAccountCreateOrUpdateParameters {
  /**
   * Gets or sets account SKU.
   */
  sku?: Sku;
  /**
   * Gets or sets name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the location of the resource.
   */
  location?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * Provider, Resource and Operation values
 */
export interface OperationDisplay {
  /**
   * Service provider: Microsoft.Automation
   */
  provider?: string;
  /**
   * Resource on which the operation is performed: Runbooks, Jobs etc.
   */
  resource?: string;
  /**
   * Operation type: Read, write, delete, etc.
   */
  operation?: string;
}

/**
 * Automation REST API operation
 */
export interface Operation {
  /**
   * Operation name: {provider}/{resource}/{operation}
   */
  name?: string;
  /**
   * Provider, Resource and Operation values
   */
  display?: OperationDisplay;
}

/**
 * Definition of the statistic.
 */
export interface Statistics {
  /**
   * Gets the property value of the statistic.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly counterProperty?: string;
  /**
   * Gets the value of the statistic.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly counterValue?: number;
  /**
   * Gets the startTime of the statistic.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTime?: Date;
  /**
   * Gets the endTime of the statistic.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly endTime?: Date;
  /**
   * Gets the id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
}

/**
 * Definition of usage counter name.
 */
export interface UsageCounterName {
  /**
   * Gets or sets the usage counter name.
   */
  value?: string;
  /**
   * Gets or sets the localized usage counter name.
   */
  localizedValue?: string;
}

/**
 * Definition of Usage.
 */
export interface Usage {
  /**
   * Gets or sets the id of the resource.
   */
  id?: string;
  /**
   * Gets or sets the usage counter name.
   */
  name?: UsageCounterName;
  /**
   * Gets or sets the usage unit name.
   */
  unit?: string;
  /**
   * Gets or sets the current usage value.
   */
  currentValue?: number;
  /**
   * Gets or sets max limit. -1 for unlimited
   */
  limit?: number;
  /**
   * Gets or sets the throttle status.
   */
  throttleStatus?: string;
}

/**
 * Automation key which is used to register a DSC Node
 */
export interface Key {
  /**
   * Automation key name. Possible values include: 'Primary', 'Secondary'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly keyName?: AutomationKeyName;
  /**
   * Automation key permissions. Possible values include: 'Read', 'Full'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly permissions?: AutomationKeyPermissions;
  /**
   * Value of the Automation Key used for registration.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly value?: string;
}

/**
 * An interface representing KeyListResult.
 */
export interface KeyListResult {
  /**
   * Lists the automation keys.
   */
  keys?: Key[];
}

/**
 * The parameters supplied to the update automation account operation.
 */
export interface AutomationAccountUpdateParameters {
  /**
   * Gets or sets account SKU.
   */
  sku?: Sku;
  /**
   * Gets or sets the name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the location of the resource.
   */
  location?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * ARM proxy resource.
 */
export interface ProxyResource extends Resource {
}

/**
 * Error response of an operation failure
 */
export interface ErrorResponse {
  /**
   * Error code
   */
  code?: string;
  /**
   * Error message indicating why the operation failed.
   */
  message?: string;
}

/**
 * The parameters supplied to the create or update or replace certificate operation.
 */
export interface CertificateCreateOrUpdateParameters {
  /**
   * Gets or sets the name of the certificate.
   */
  name: string;
  /**
   * Gets or sets the base64 encoded value of the certificate.
   */
  base64Value: string;
  /**
   * Gets or sets the description of the certificate.
   */
  description?: string;
  /**
   * Gets or sets the thumbprint of the certificate.
   */
  thumbprint?: string;
  /**
   * Gets or sets the is exportable flag of the certificate.
   */
  isExportable?: boolean;
}

/**
 * Definition of the certificate.
 */
export interface Certificate extends ProxyResource {
  /**
   * Gets the thumbprint of the certificate.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly thumbprint?: string;
  /**
   * Gets the expiry time of the certificate.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly expiryTime?: Date;
  /**
   * Gets the is exportable flag of the certificate.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly isExportable?: boolean;
  /**
   * Gets the creation time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * Gets the last modified time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * The parameters supplied to the update certificate operation.
 */
export interface CertificateUpdateParameters {
  /**
   * Gets or sets the name of the certificate.
   */
  name?: string;
  /**
   * Gets or sets the description of the certificate.
   */
  description?: string;
}

/**
 * The connection type property associated with the entity.
 */
export interface ConnectionTypeAssociationProperty {
  /**
   * Gets or sets the name of the connection type.
   */
  name?: string;
}

/**
 * The parameters supplied to the create or update connection operation.
 */
export interface ConnectionCreateOrUpdateParameters {
  /**
   * Gets or sets the name of the connection.
   */
  name: string;
  /**
   * Gets or sets the description of the connection.
   */
  description?: string;
  /**
   * Gets or sets the connectionType of the connection.
   */
  connectionType: ConnectionTypeAssociationProperty;
  /**
   * Gets or sets the field definition properties of the connection.
   */
  fieldDefinitionValues?: { [propertyName: string]: string };
}

/**
 * Definition of the connection.
 */
export interface Connection extends ProxyResource {
  /**
   * Gets or sets the connectionType of the connection.
   */
  connectionType?: ConnectionTypeAssociationProperty;
  /**
   * Gets the field definition values of the connection.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly fieldDefinitionValues?: { [propertyName: string]: string };
  /**
   * Gets the creation time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * Gets the last modified time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * The parameters supplied to the update connection operation.
 */
export interface ConnectionUpdateParameters {
  /**
   * Gets or sets the name of the connection.
   */
  name?: string;
  /**
   * Gets or sets the description of the connection.
   */
  description?: string;
  /**
   * Gets or sets the field definition values of the connection.
   */
  fieldDefinitionValues?: { [propertyName: string]: string };
}

/**
 * Definition of the connection fields.
 */
export interface FieldDefinition {
  /**
   * Gets or sets the isEncrypted flag of the connection field definition.
   */
  isEncrypted?: boolean;
  /**
   * Gets or sets the isOptional flag of the connection field definition.
   */
  isOptional?: boolean;
  /**
   * Gets or sets the type of the connection field definition.
   */
  type: string;
}

/**
 * Definition of the connection type.
 */
export interface ConnectionType {
  /**
   * Gets the id of the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Gets the name of the connection type.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Resource type
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly type?: string;
  /**
   * Gets or sets a Boolean value to indicate if the connection type is global.
   */
  isGlobal?: boolean;
  /**
   * Gets the field definitions of the connection type.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly fieldDefinitions?: { [propertyName: string]: FieldDefinition };
  /**
   * Gets the creation time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * The parameters supplied to the create or update connection type operation.
 */
export interface ConnectionTypeCreateOrUpdateParameters {
  /**
   * Gets or sets the name of the connection type.
   */
  name: string;
  /**
   * Gets or sets a Boolean value to indicate if the connection type is global.
   */
  isGlobal?: boolean;
  /**
   * Gets or sets the field definitions of the connection type.
   */
  fieldDefinitions: { [propertyName: string]: FieldDefinition };
}

/**
 * The parameters supplied to the create or update credential operation.
 */
export interface CredentialCreateOrUpdateParameters {
  /**
   * Gets or sets the name of the credential.
   */
  name: string;
  /**
   * Gets or sets the user name of the credential.
   */
  userName: string;
  /**
   * Gets or sets the password of the credential.
   */
  password: string;
  /**
   * Gets or sets the description of the credential.
   */
  description?: string;
}

/**
 * Definition of the credential.
 */
export interface Credential extends ProxyResource {
  /**
   * Gets the user name of the credential.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly userName?: string;
  /**
   * Gets the creation time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * Gets the last modified time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * The parameters supplied to the Update credential operation.
 */
export interface CredentialUpdateParameters {
  /**
   * Gets or sets the name of the credential.
   */
  name?: string;
  /**
   * Gets or sets the user name of the credential.
   */
  userName?: string;
  /**
   * Gets or sets the password of the credential.
   */
  password?: string;
  /**
   * Gets or sets the description of the credential.
   */
  description?: string;
}

/**
 * Definition of the runbook property type.
 */
export interface ContentHash {
  /**
   * Gets or sets the content hash algorithm used to hash the content.
   */
  algorithm: string;
  /**
   * Gets or sets expected hash value of the content.
   */
  value: string;
}

/**
 * Definition of the content source.
 */
export interface ContentSource {
  /**
   * Gets or sets the hash.
   */
  hash?: ContentHash;
  /**
   * Gets or sets the content source type. Possible values include: 'embeddedContent', 'uri'
   */
  type?: ContentSourceType;
  /**
   * Gets or sets the value of the content. This is based on the content source type.
   */
  value?: string;
  /**
   * Gets or sets the version of the content.
   */
  version?: string;
}

/**
 * Definition of the configuration parameter type.
 */
export interface DscConfigurationParameter {
  /**
   * Gets or sets the type of the parameter.
   */
  type?: string;
  /**
   * Gets or sets a Boolean value to indicate whether the parameter is mandatory or not.
   */
  isMandatory?: boolean;
  /**
   * Get or sets the position of the parameter.
   */
  position?: number;
  /**
   * Gets or sets the default value of parameter.
   */
  defaultValue?: string;
}

/**
 * The parameters supplied to the create or update configuration operation.
 */
export interface DscConfigurationCreateOrUpdateParameters {
  /**
   * Gets or sets verbose log option.
   */
  logVerbose?: boolean;
  /**
   * Gets or sets progress log option.
   */
  logProgress?: boolean;
  /**
   * Gets or sets the source.
   */
  source: ContentSource;
  /**
   * Gets or sets the configuration parameters.
   */
  parameters?: { [propertyName: string]: DscConfigurationParameter };
  /**
   * Gets or sets the description of the configuration.
   */
  description?: string;
  /**
   * Gets or sets name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the location of the resource.
   */
  location?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * Definition of the configuration type.
 */
export interface DscConfiguration extends TrackedResource {
  /**
   * Gets or sets the provisioning state of the configuration. Possible values include: 'Succeeded'
   */
  provisioningState?: DscConfigurationProvisioningState;
  /**
   * Gets or sets the job count of the configuration.
   */
  jobCount?: number;
  /**
   * Gets or sets the configuration parameters.
   */
  parameters?: { [propertyName: string]: DscConfigurationParameter };
  /**
   * Gets or sets the source.
   */
  source?: ContentSource;
  /**
   * Gets or sets the state of the configuration. Possible values include: 'New', 'Edit',
   * 'Published'
   */
  state?: DscConfigurationState;
  /**
   * Gets or sets verbose log option.
   */
  logVerbose?: boolean;
  /**
   * Gets or sets the creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets the number of compiled node configurations.
   */
  nodeConfigurationCount?: number;
  /**
   * Gets or sets the description.
   */
  description?: string;
  /**
   * Gets or sets the etag of the resource.
   */
  etag?: string;
}

/**
 * The parameters supplied to the create or update configuration operation.
 */
export interface DscConfigurationUpdateParameters {
  /**
   * Gets or sets verbose log option.
   */
  logVerbose?: boolean;
  /**
   * Gets or sets progress log option.
   */
  logProgress?: boolean;
  /**
   * Gets or sets the source.
   */
  source: ContentSource;
  /**
   * Gets or sets the configuration parameters.
   */
  parameters?: { [propertyName: string]: DscConfigurationParameter };
  /**
   * Gets or sets the description of the configuration.
   */
  description?: string;
  /**
   * Gets or sets name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * Definition of RunAs credential to use for hybrid worker.
 */
export interface RunAsCredentialAssociationProperty {
  /**
   * Gets or sets the name of the credential.
   */
  name?: string;
}

/**
 * Definition of hybrid runbook worker.
 */
export interface HybridRunbookWorker {
  /**
   * Gets or sets the worker machine name.
   */
  name?: string;
  /**
   * Gets or sets the assigned machine IP address.
   */
  ip?: string;
  /**
   * Gets or sets the registration time of the worker machine.
   */
  registrationTime?: Date;
  /**
   * Last Heartbeat from the Worker
   */
  lastSeenDateTime?: Date;
}

/**
 * Definition of hybrid runbook worker group.
 */
export interface HybridRunbookWorkerGroup {
  /**
   * Gets or sets the id of the resource.
   */
  id?: string;
  /**
   * Gets or sets the name of the group.
   */
  name?: string;
  /**
   * Gets or sets the list of hybrid runbook workers.
   */
  hybridRunbookWorkers?: HybridRunbookWorker[];
  /**
   * Sets the credential of a worker group.
   */
  credential?: RunAsCredentialAssociationProperty;
  /**
   * Type of the HybridWorkerGroup. Possible values include: 'User', 'System'
   */
  groupType?: GroupTypeEnum;
}

/**
 * Parameters supplied to the update operation.
 */
export interface HybridRunbookWorkerGroupUpdateParameters {
  /**
   * Sets the credential of a worker group.
   */
  credential?: RunAsCredentialAssociationProperty;
}

/**
 * The schedule property associated with the entity.
 */
export interface ScheduleAssociationProperty {
  /**
   * Gets or sets the name of the Schedule.
   */
  name?: string;
}

/**
 * The runbook property associated with the entity.
 */
export interface RunbookAssociationProperty {
  /**
   * Gets or sets the name of the runbook.
   */
  name?: string;
}

/**
 * Definition of the job schedule.
 */
export interface JobSchedule {
  /**
   * Gets the id of the resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Gets the name of the variable.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Resource type
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly type?: string;
  /**
   * Gets or sets the id of job schedule.
   */
  jobScheduleId?: string;
  /**
   * Gets or sets the schedule.
   */
  schedule?: ScheduleAssociationProperty;
  /**
   * Gets or sets the runbook.
   */
  runbook?: RunbookAssociationProperty;
  /**
   * Gets or sets the hybrid worker group that the scheduled job should run on.
   */
  runOn?: string;
  /**
   * Gets or sets the parameters of the job schedule.
   */
  parameters?: { [propertyName: string]: string };
}

/**
 * The parameters supplied to the create job schedule operation.
 */
export interface JobScheduleCreateParameters {
  /**
   * Gets or sets the schedule.
   */
  schedule: ScheduleAssociationProperty;
  /**
   * Gets or sets the runbook.
   */
  runbook: RunbookAssociationProperty;
  /**
   * Gets or sets the hybrid worker group that the scheduled job should run on.
   */
  runOn?: string;
  /**
   * Gets or sets a list of job properties.
   */
  parameters?: { [propertyName: string]: string };
}

/**
 * Definition of the linked workspace.
 */
export interface LinkedWorkspace {
  /**
   * Gets the id of the linked workspace.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
}

/**
 * Definition of the activity parameter validation set.
 */
export interface ActivityParameterValidationSet {
  /**
   * Gets or sets the name of the activity parameter validation set member.
   */
  memberValue?: string;
}

/**
 * Definition of the activity parameter.
 */
export interface ActivityParameter {
  /**
   * Gets or sets the name of the activity parameter.
   */
  name?: string;
  /**
   * Gets or sets the type of the activity parameter.
   */
  type?: string;
  /**
   * Gets or sets a Boolean value that indicates true if the parameter is required. If the value is
   * false, the parameter is optional.
   */
  isMandatory?: boolean;
  /**
   * Gets or sets a Boolean value that indicates true if the parameter is dynamic.
   */
  isDynamic?: boolean;
  /**
   * Gets or sets the position of the activity parameter.
   */
  position?: number;
  /**
   * Gets or sets a Boolean value that indicates true if the parameter can take values from the
   * incoming pipeline objects. This setting is used if the cmdlet must access the complete input
   * object. false indicates that the parameter cannot take values from the complete input object.
   */
  valueFromPipeline?: boolean;
  /**
   * Gets or sets a Boolean value that indicates true if the parameter can be filled from a
   * property of the incoming pipeline object that has the same name as this parameter. false
   * indicates that the parameter cannot be filled from the incoming pipeline object property with
   * the same name.
   */
  valueFromPipelineByPropertyName?: boolean;
  /**
   * Gets or sets a Boolean value that indicates true if the cmdlet parameter accepts all the
   * remaining command-line arguments that are associated with this parameter in the form of an
   * array. false if the cmdlet parameter does not accept all the remaining argument values.
   */
  valueFromRemainingArguments?: boolean;
  /**
   * Gets or sets the description of the activity parameter.
   */
  description?: string;
  /**
   * Gets or sets the validation set of activity parameter.
   */
  validationSet?: ActivityParameterValidationSet[];
}

/**
 * Definition of the activity parameter set.
 */
export interface ActivityParameterSet {
  /**
   * Gets or sets the name of the activity parameter set.
   */
  name?: string;
  /**
   * Gets or sets the parameters of the activity parameter set.
   */
  parameters?: ActivityParameter[];
}

/**
 * Definition of the activity output type.
 */
export interface ActivityOutputType {
  /**
   * Gets or sets the name of the activity output type.
   */
  name?: string;
  /**
   * Gets or sets the type of the activity output type.
   */
  type?: string;
}

/**
 * Definition of the activity.
 */
export interface Activity {
  /**
   * Gets or sets the id of the resource.
   */
  id?: string;
  /**
   * Gets the name of the activity.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Gets or sets the user name of the activity.
   */
  definition?: string;
  /**
   * Gets or sets the parameter sets of the activity.
   */
  parameterSets?: ActivityParameterSet[];
  /**
   * Gets or sets the output types of the activity.
   */
  outputTypes?: ActivityOutputType[];
  /**
   * Gets or sets the creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * Definition of the module error info type.
 */
export interface ModuleErrorInfo {
  /**
   * Gets or sets the error code.
   */
  code?: string;
  /**
   * Gets or sets the error message.
   */
  message?: string;
}

/**
 * Definition of the content link.
 */
export interface ContentLink {
  /**
   * Gets or sets the uri of the runbook content.
   */
  uri?: string;
  /**
   * Gets or sets the hash.
   */
  contentHash?: ContentHash;
  /**
   * Gets or sets the version of the content.
   */
  version?: string;
}

/**
 * Definition of the module type.
 */
export interface Module extends TrackedResource {
  /**
   * Gets or sets the isGlobal flag of the module.
   */
  isGlobal?: boolean;
  /**
   * Gets or sets the version of the module.
   */
  version?: string;
  /**
   * Gets or sets the size in bytes of the module.
   */
  sizeInBytes?: number;
  /**
   * Gets or sets the activity count of the module.
   */
  activityCount?: number;
  /**
   * Gets or sets the provisioning state of the module. Possible values include: 'Created',
   * 'Creating', 'StartingImportModuleRunbook', 'RunningImportModuleRunbook', 'ContentRetrieved',
   * 'ContentDownloaded', 'ContentValidated', 'ConnectionTypeImported', 'ContentStored',
   * 'ModuleDataStored', 'ActivitiesStored', 'ModuleImportRunbookComplete', 'Succeeded', 'Failed',
   * 'Cancelled', 'Updating'
   */
  provisioningState?: ModuleProvisioningState;
  /**
   * Gets or sets the contentLink of the module.
   */
  contentLink?: ContentLink;
  /**
   * Gets or sets the error info of the module.
   */
  error?: ModuleErrorInfo;
  /**
   * Gets or sets the creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
  /**
   * Gets or sets type of module, if its composite or not.
   */
  isComposite?: boolean;
  /**
   * Gets or sets the etag of the resource.
   */
  etag?: string;
}

/**
 * The parameters supplied to the create or update module operation.
 */
export interface ModuleCreateOrUpdateParameters {
  /**
   * Gets or sets the module content link.
   */
  contentLink: ContentLink;
  /**
   * Gets or sets name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the location of the resource.
   */
  location?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * The parameters supplied to the update module operation.
 */
export interface ModuleUpdateParameters {
  /**
   * Gets or sets the module content link.
   */
  contentLink?: ContentLink;
  /**
   * Gets or sets name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the location of the resource.
   */
  location?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * Information about a field of a type.
 */
export interface TypeField {
  /**
   * Gets or sets the name of the field.
   */
  name?: string;
  /**
   * Gets or sets the type of the field.
   */
  type?: string;
}

/**
 * The properties of the create advanced schedule monthly occurrence.
 */
export interface AdvancedScheduleMonthlyOccurrence {
  /**
   * Occurrence of the week within the month. Must be between 1 and 5
   */
  occurrence?: number;
  /**
   * Day of the occurrence. Must be one of monday, tuesday, wednesday, thursday, friday, saturday,
   * sunday. Possible values include: 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday',
   * 'Saturday', 'Sunday'
   */
  day?: ScheduleDay;
}

/**
 * The properties of the create Advanced Schedule.
 */
export interface AdvancedSchedule {
  /**
   * Days of the week that the job should execute on.
   */
  weekDays?: string[];
  /**
   * Days of the month that the job should execute on. Must be between 1 and 31.
   */
  monthDays?: number[];
  /**
   * Occurrences of days within a month.
   */
  monthlyOccurrences?: AdvancedScheduleMonthlyOccurrence[];
}

/**
 * The parameters supplied to the create or update schedule operation.
 */
export interface ScheduleCreateOrUpdateParameters {
  /**
   * Gets or sets the name of the Schedule.
   */
  name: string;
  /**
   * Gets or sets the description of the schedule.
   */
  description?: string;
  /**
   * Gets or sets the start time of the schedule.
   */
  startTime: Date;
  /**
   * Gets or sets the end time of the schedule.
   */
  expiryTime?: Date;
  /**
   * Gets or sets the interval of the schedule.
   */
  interval?: any;
  /**
   * Possible values include: 'OneTime', 'Day', 'Hour', 'Week', 'Month'
   */
  frequency: ScheduleFrequency;
  /**
   * Gets or sets the time zone of the schedule.
   */
  timeZone?: string;
  /**
   * Gets or sets the AdvancedSchedule.
   */
  advancedSchedule?: AdvancedSchedule;
}

/**
 * Definition of schedule parameters.
 */
export interface ScheduleProperties {
  /**
   * Gets or sets the start time of the schedule.
   */
  startTime?: Date;
  /**
   * Gets the start time's offset in minutes.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTimeOffsetMinutes?: number;
  /**
   * Gets or sets the end time of the schedule.
   */
  expiryTime?: Date;
  /**
   * Gets or sets the expiry time's offset in minutes.
   */
  expiryTimeOffsetMinutes?: number;
  /**
   * Gets or sets a value indicating whether this schedule is enabled. Default value: false.
   */
  isEnabled?: boolean;
  /**
   * Gets or sets the next run time of the schedule.
   */
  nextRun?: Date;
  /**
   * Gets or sets the next run time's offset in minutes.
   */
  nextRunOffsetMinutes?: number;
  /**
   * Gets or sets the interval of the schedule.
   */
  interval?: number;
  /**
   * Gets or sets the frequency of the schedule. Possible values include: 'OneTime', 'Day', 'Hour',
   * 'Week', 'Month'
   */
  frequency?: ScheduleFrequency;
  /**
   * Gets or sets the time zone of the schedule.
   */
  timeZone?: string;
  /**
   * Gets or sets the advanced schedule.
   */
  advancedSchedule?: AdvancedSchedule;
  /**
   * Gets or sets the creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * Definition of the schedule.
 */
export interface Schedule extends ProxyResource {
  /**
   * Gets or sets the start time of the schedule.
   */
  startTime?: Date;
  /**
   * Gets the start time's offset in minutes.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTimeOffsetMinutes?: number;
  /**
   * Gets or sets the end time of the schedule.
   */
  expiryTime?: Date;
  /**
   * Gets or sets the expiry time's offset in minutes.
   */
  expiryTimeOffsetMinutes?: number;
  /**
   * Gets or sets a value indicating whether this schedule is enabled. Default value: false.
   */
  isEnabled?: boolean;
  /**
   * Gets or sets the next run time of the schedule.
   */
  nextRun?: Date;
  /**
   * Gets or sets the next run time's offset in minutes.
   */
  nextRunOffsetMinutes?: number;
  /**
   * Gets or sets the interval of the schedule.
   */
  interval?: number;
  /**
   * Gets or sets the frequency of the schedule. Possible values include: 'OneTime', 'Day', 'Hour',
   * 'Week', 'Month'
   */
  frequency?: ScheduleFrequency;
  /**
   * Gets or sets the time zone of the schedule.
   */
  timeZone?: string;
  /**
   * Gets or sets the advanced schedule.
   */
  advancedSchedule?: AdvancedSchedule;
  /**
   * Gets or sets the creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * The parameters supplied to the update schedule operation.
 */
export interface ScheduleUpdateParameters {
  /**
   * Gets or sets the name of the Schedule.
   */
  name?: string;
  /**
   * Gets or sets the description of the schedule.
   */
  description?: string;
  /**
   * Gets or sets a value indicating whether this schedule is enabled.
   */
  isEnabled?: boolean;
}

/**
 * The parameters supplied to the create or update variable operation.
 */
export interface VariableCreateOrUpdateParameters {
  /**
   * Gets or sets the name of the variable.
   */
  name: string;
  /**
   * Gets or sets the value of the variable.
   */
  value?: string;
  /**
   * Gets or sets the description of the variable.
   */
  description?: string;
  /**
   * Gets or sets the encrypted flag of the variable.
   */
  isEncrypted?: boolean;
}

/**
 * Definition of the variable.
 */
export interface Variable extends ProxyResource {
  /**
   * Gets or sets the value of the variable.
   */
  value?: string;
  /**
   * Gets or sets the encrypted flag of the variable.
   */
  isEncrypted?: boolean;
  /**
   * Gets or sets the creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * The parameters supplied to the update variable operation.
 */
export interface VariableUpdateParameters {
  /**
   * Gets or sets the name of the variable.
   */
  name?: string;
  /**
   * Gets or sets the value of the variable.
   */
  value?: string;
  /**
   * Gets or sets the description of the variable.
   */
  description?: string;
}

/**
 * Definition of the webhook type.
 */
export interface Webhook extends ProxyResource {
  /**
   * Gets or sets the value of the enabled flag of the webhook. Default value: false.
   */
  isEnabled?: boolean;
  /**
   * Gets or sets the webhook uri.
   */
  uri?: string;
  /**
   * Gets or sets the expiry time.
   */
  expiryTime?: Date;
  /**
   * Gets or sets the last invoked time.
   */
  lastInvokedTime?: Date;
  /**
   * Gets or sets the parameters of the job that is created when the webhook calls the runbook it
   * is associated with.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * Gets or sets the runbook the webhook is associated with.
   */
  runbook?: RunbookAssociationProperty;
  /**
   * Gets or sets the name of the hybrid worker group the webhook job will run on.
   */
  runOn?: string;
  /**
   * Gets or sets the creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Details of the user who last modified the Webhook
   */
  lastModifiedBy?: string;
  /**
   * Gets or sets the description.
   */
  description?: string;
}

/**
 * The parameters supplied to the update webhook operation.
 */
export interface WebhookUpdateParameters {
  /**
   * Gets or sets the name of the webhook.
   */
  name?: string;
  /**
   * Gets or sets the value of the enabled flag of webhook.
   */
  isEnabled?: boolean;
  /**
   * Gets or sets the name of the hybrid worker group the webhook job will run on.
   */
  runOn?: string;
  /**
   * Gets or sets the parameters of the job.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * Gets or sets the description of the webhook.
   */
  description?: string;
}

/**
 * The parameters supplied to the create or update webhook operation.
 */
export interface WebhookCreateOrUpdateParameters {
  /**
   * Gets or sets the name of the webhook.
   */
  name: string;
  /**
   * Gets or sets the value of the enabled flag of webhook.
   */
  isEnabled?: boolean;
  /**
   * Gets or sets the uri.
   */
  uri?: string;
  /**
   * Gets or sets the expiry time.
   */
  expiryTime?: Date;
  /**
   * Gets or sets the parameters of the job.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * Gets or sets the runbook.
   */
  runbook?: RunbookAssociationProperty;
  /**
   * Gets or sets the name of the hybrid worker group the webhook job will run on.
   */
  runOn?: string;
}

/**
 * Definition of the watcher type.
 */
export interface Watcher extends TrackedResource {
  /**
   * Gets or sets the frequency at which the watcher is invoked.
   */
  executionFrequencyInSeconds?: number;
  /**
   * Gets or sets the name of the script the watcher is attached to, i.e. the name of an existing
   * runbook.
   */
  scriptName?: string;
  /**
   * Gets or sets the parameters of the script.
   */
  scriptParameters?: { [propertyName: string]: string };
  /**
   * Gets or sets the name of the hybrid worker group the watcher will run on.
   */
  scriptRunOn?: string;
  /**
   * Gets the current status of the watcher.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly status?: string;
  /**
   * Gets or sets the creation time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * Details of the user who last modified the watcher.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedBy?: string;
  /**
   * Gets or sets the description.
   */
  description?: string;
  /**
   * Gets or sets the etag of the resource.
   */
  etag?: string;
}

/**
 * An interface representing WatcherUpdateParameters.
 */
export interface WatcherUpdateParameters {
  /**
   * Gets or sets the frequency at which the watcher is invoked.
   */
  executionFrequencyInSeconds?: number;
  /**
   * Gets or sets the name of the resource.
   */
  name?: string;
}

/**
 * Windows specific update configuration.
 */
export interface WindowsProperties {
  /**
   * Update classification included in the software update configuration. A comma separated string
   * with required values. Possible values include: 'Unclassified', 'Critical', 'Security',
   * 'UpdateRollup', 'FeaturePack', 'ServicePack', 'Definition', 'Tools', 'Updates'
   */
  includedUpdateClassifications?: WindowsUpdateClasses;
  /**
   * KB numbers excluded from the software update configuration.
   */
  excludedKbNumbers?: string[];
  /**
   * KB numbers included from the software update configuration.
   */
  includedKbNumbers?: string[];
  /**
   * Reboot setting for the software update configuration.
   */
  rebootSetting?: string;
}

/**
 * Linux specific update configuration.
 */
export interface LinuxProperties {
  /**
   * Update classifications included in the software update configuration. Possible values include:
   * 'Unclassified', 'Critical', 'Security', 'Other'
   */
  includedPackageClassifications?: LinuxUpdateClasses;
  /**
   * packages excluded from the software update configuration.
   */
  excludedPackageNameMasks?: string[];
  /**
   * packages included from the software update configuration.
   */
  includedPackageNameMasks?: string[];
  /**
   * Reboot setting for the software update configuration.
   */
  rebootSetting?: string;
}

/**
 * Tag filter information for the VM.
 */
export interface TagSettingsProperties {
  /**
   * Dictionary of tags with its list of values.
   */
  tags?: { [propertyName: string]: string[] };
  /**
   * Filter VMs by Any or All specified tags. Possible values include: 'All', 'Any'
   */
  filterOperator?: TagOperators;
}

/**
 * Azure query for the update configuration.
 */
export interface AzureQueryProperties {
  /**
   * List of Subscription or Resource Group ARM Ids.
   */
  scope?: string[];
  /**
   * List of locations to scope the query to.
   */
  locations?: string[];
  /**
   * Tag settings for the VM.
   */
  tagSettings?: TagSettingsProperties;
}

/**
 * Non Azure query for the update configuration.
 */
export interface NonAzureQueryProperties {
  /**
   * Log Analytics Saved Search name.
   */
  functionAlias?: string;
  /**
   * Workspace Id for Log Analytics in which the saved Search is resided.
   */
  workspaceId?: string;
}

/**
 * Group specific to the update configuration.
 */
export interface TargetProperties {
  /**
   * List of Azure queries in the software update configuration.
   */
  azureQueries?: AzureQueryProperties[];
  /**
   * List of non Azure queries in the software update configuration.
   */
  nonAzureQueries?: NonAzureQueryProperties[];
}

/**
 * Update specific properties of the software update configuration.
 */
export interface UpdateConfiguration {
  /**
   * operating system of target machines. Possible values include: 'Windows', 'Linux'
   */
  operatingSystem: OperatingSystemType;
  /**
   * Windows specific update configuration.
   */
  windows?: WindowsProperties;
  /**
   * Linux specific update configuration.
   */
  linux?: LinuxProperties;
  /**
   * Maximum time allowed for the software update configuration run. Duration needs to be specified
   * using the format PT[n]H[n]M[n]S as per ISO8601
   */
  duration?: string;
  /**
   * List of azure resource Ids for azure virtual machines targeted by the software update
   * configuration.
   */
  azureVirtualMachines?: string[];
  /**
   * List of names of non-azure machines targeted by the software update configuration.
   */
  nonAzureComputerNames?: string[];
  /**
   * Group targets for the software update configuration.
   */
  targets?: TargetProperties;
}

/**
 * Task properties of the software update configuration.
 */
export interface TaskProperties {
  /**
   * Gets or sets the parameters of the task.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * Gets or sets the name of the runbook.
   */
  source?: string;
}

/**
 * Task properties of the software update configuration.
 */
export interface SoftwareUpdateConfigurationTasks {
  /**
   * Pre task properties.
   */
  preTask?: TaskProperties;
  /**
   * Post task properties.
   */
  postTask?: TaskProperties;
}

/**
 * Software update configuration properties.
 */
export interface SoftwareUpdateConfiguration extends BaseResource {
  /**
   * Resource name.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Resource Id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Resource type
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly type?: string;
  /**
   * update specific properties for the Software update configuration
   */
  updateConfiguration: UpdateConfiguration;
  /**
   * Schedule information for the Software update configuration
   */
  scheduleInfo: ScheduleProperties;
  /**
   * Provisioning state for the software update configuration, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly provisioningState?: string;
  /**
   * Details of provisioning error
   */
  error?: ErrorResponse;
  /**
   * Creation time of the resource, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * CreatedBy property, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly createdBy?: string;
  /**
   * Last time resource was modified, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * LastModifiedBy property, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedBy?: string;
  /**
   * Tasks information for the Software update configuration.
   */
  tasks?: SoftwareUpdateConfigurationTasks;
}

/**
 * object returned when requesting a collection of software update configuration
 */
export interface CollectionItemUpdateConfiguration {
  /**
   * List of azure resource Ids for azure virtual machines targeted by the software update
   * configuration.
   */
  azureVirtualMachines?: string[];
  /**
   * Maximum time allowed for the software update configuration run. Duration needs to be specified
   * using the format PT[n]H[n]M[n]S as per ISO8601
   */
  duration?: string;
}

/**
 * Software update configuration collection item properties.
 */
export interface SoftwareUpdateConfigurationCollectionItem {
  /**
   * Name of the software update configuration.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Resource Id of the software update configuration
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * Update specific properties of the software update configuration.
   */
  updateConfiguration?: CollectionItemUpdateConfiguration;
  /**
   * execution frequency of the schedule associated with the software update configuration.
   * Possible values include: 'OneTime', 'Day', 'Hour', 'Week', 'Month'
   */
  frequency?: ScheduleFrequency;
  /**
   * the start time of the update.
   */
  startTime?: Date;
  /**
   * Creation time of the software update configuration, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * Last time software update configuration was modified, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * Provisioning state for the software update configuration, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly provisioningState?: string;
  /**
   * ext run time of the update.
   */
  nextRun?: Date;
}

/**
 * result of listing all software update configuration
 */
export interface SoftwareUpdateConfigurationListResult {
  /**
   * outer object returned when listing all software update configurations
   */
  value?: SoftwareUpdateConfigurationCollectionItem[];
}

/**
 * Software update configuration Run Navigation model.
 */
export interface UpdateConfigurationNavigation {
  /**
   * Name of the software update configuration triggered the software update configuration run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
}

/**
 * Task properties of the software update configuration.
 */
export interface SoftareUpdateConfigurationRunTaskProperties {
  /**
   * The status of the task.
   */
  status?: string;
  /**
   * The name of the source of the task.
   */
  source?: string;
  /**
   * The job id of the task.
   */
  jobId?: string;
}

/**
 * Software update configuration run tasks model.
 */
export interface SoftareUpdateConfigurationRunTasks {
  /**
   * Pre task properties.
   */
  preTask?: SoftareUpdateConfigurationRunTaskProperties;
  /**
   * Post task properties.
   */
  postTask?: SoftareUpdateConfigurationRunTaskProperties;
}

/**
 * Software update configuration Run properties.
 */
export interface SoftwareUpdateConfigurationRun {
  /**
   * Name of the software update configuration run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Resource Id of the software update configuration run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * software update configuration triggered this run
   */
  softwareUpdateConfiguration?: UpdateConfigurationNavigation;
  /**
   * Status of the software update configuration run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly status?: string;
  /**
   * Configured duration for the software update configuration run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly configuredDuration?: string;
  /**
   * Operating system target of the software update configuration triggered this run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly osType?: string;
  /**
   * Start time of the software update configuration run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTime?: Date;
  /**
   * End time of the software update configuration run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly endTime?: Date;
  /**
   * Number of computers in the software update configuration run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly computerCount?: number;
  /**
   * Number of computers with failed status.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly failedCount?: number;
  /**
   * Creation time of the resource, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * CreatedBy property, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly createdBy?: string;
  /**
   * Last time resource was modified, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * LastModifiedBy property, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedBy?: string;
  /**
   * Software update configuration tasks triggered in this run
   */
  tasks?: SoftareUpdateConfigurationRunTasks;
}

/**
 * result of listing all software update configuration runs
 */
export interface SoftwareUpdateConfigurationRunListResult {
  /**
   * outer object returned when listing all software update configuration runs
   */
  value?: SoftwareUpdateConfigurationRun[];
  /**
   * link to next page of results.
   */
  nextLink?: string;
}

/**
 * Software update configuration machine run job navigation properties.
 */
export interface JobNavigation {
  /**
   * Id of the job associated with the software update configuration run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
}

/**
 * Software update configuration machine run model.
 */
export interface SoftwareUpdateConfigurationMachineRun {
  /**
   * Name of the software update configuration machine run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Resource Id of the software update configuration machine run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * name of the updated computer
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly targetComputer?: string;
  /**
   * type of the updated computer.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly targetComputerType?: string;
  /**
   * software update configuration triggered this run
   */
  softwareUpdateConfiguration?: UpdateConfigurationNavigation;
  /**
   * Status of the software update configuration machine run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly status?: string;
  /**
   * Operating system target of the software update configuration triggered this run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly osType?: string;
  /**
   * correlation id of the software update configuration machine run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly correlationId?: string;
  /**
   * source computer id of the software update configuration machine run
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly sourceComputerId?: string;
  /**
   * Start time of the software update configuration machine run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTime?: Date;
  /**
   * End time of the software update configuration machine run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly endTime?: Date;
  /**
   * configured duration for the software update configuration run.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly configuredDuration?: string;
  /**
   * Job associated with the software update configuration machine run
   */
  job?: JobNavigation;
  /**
   * Creation time of the resource, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * createdBy property, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly createdBy?: string;
  /**
   * Last time resource was modified, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * lastModifiedBy property, which only appears in the response.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedBy?: string;
  /**
   * Details of provisioning error
   */
  error?: ErrorResponse;
}

/**
 * result of listing all software update configuration machine runs
 */
export interface SoftwareUpdateConfigurationMachineRunListResult {
  /**
   * outer object returned when listing all software update configuration machine runs
   */
  value?: SoftwareUpdateConfigurationMachineRun[];
  /**
   * link to next page of results.
   */
  nextLink?: string;
}

/**
 * Definition of the source control.
 */
export interface SourceControl extends ProxyResource {
  /**
   * The repo url of the source control.
   */
  repoUrl?: string;
  /**
   * The repo branch of the source control. Include branch as empty string for VsoTfvc.
   */
  branch?: string;
  /**
   * The folder path of the source control.
   */
  folderPath?: string;
  /**
   * The auto sync of the source control. Default is false.
   */
  autoSync?: boolean;
  /**
   * The auto publish of the source control. Default is true.
   */
  publishRunbook?: boolean;
  /**
   * The source type. Must be one of VsoGit, VsoTfvc, GitHub. Possible values include: 'VsoGit',
   * 'VsoTfvc', 'GitHub'
   */
  sourceType?: SourceType;
  /**
   * The description.
   */
  description?: string;
  /**
   * The creation time.
   */
  creationTime?: Date;
  /**
   * The last modified time.
   */
  lastModifiedTime?: Date;
}

/**
 * An interface representing SourceControlSecurityTokenProperties.
 */
export interface SourceControlSecurityTokenProperties {
  /**
   * The access token.
   */
  accessToken?: string;
  /**
   * The refresh token.
   */
  refreshToken?: string;
  /**
   * The token type. Must be either PersonalAccessToken or Oauth. Possible values include:
   * 'PersonalAccessToken', 'Oauth'
   */
  tokenType?: TokenType;
}

/**
 * The parameters supplied to the update source control operation.
 */
export interface SourceControlUpdateParameters {
  /**
   * The repo branch of the source control.
   */
  branch?: string;
  /**
   * The folder path of the source control. Path must be relative.
   */
  folderPath?: string;
  /**
   * The auto sync of the source control. Default is false.
   */
  autoSync?: boolean;
  /**
   * The auto publish of the source control. Default is true.
   */
  publishRunbook?: boolean;
  /**
   * The authorization token for the repo of the source control.
   */
  securityToken?: SourceControlSecurityTokenProperties;
  /**
   * The user description of the source control.
   */
  description?: string;
}

/**
 * The parameters supplied to the create or update source control operation.
 */
export interface SourceControlCreateOrUpdateParameters {
  /**
   * The repo url of the source control.
   */
  repoUrl?: string;
  /**
   * The repo branch of the source control. Include branch as empty string for VsoTfvc.
   */
  branch?: string;
  /**
   * The folder path of the source control. Path must be relative.
   */
  folderPath?: string;
  /**
   * The auto async of the source control. Default is false.
   */
  autoSync?: boolean;
  /**
   * The auto publish of the source control. Default is true.
   */
  publishRunbook?: boolean;
  /**
   * The source type. Must be one of VsoGit, VsoTfvc, GitHub, case sensitive. Possible values
   * include: 'VsoGit', 'VsoTfvc', 'GitHub'
   */
  sourceType?: SourceType;
  /**
   * The authorization token for the repo of the source control.
   */
  securityToken?: SourceControlSecurityTokenProperties;
  /**
   * The user description of the source control.
   */
  description?: string;
}

/**
 * Definition of the source control sync job.
 */
export interface SourceControlSyncJob {
  /**
   * Resource name.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly name?: string;
  /**
   * Resource type.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly type?: string;
  /**
   * Resource id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * The source control sync job id.
   */
  sourceControlSyncJobId?: string;
  /**
   * The creation time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * The provisioning state of the job. Possible values include: 'Completed', 'Failed', 'Running'
   */
  provisioningState?: ProvisioningState;
  /**
   * The start time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTime?: Date;
  /**
   * The end time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly endTime?: Date;
  /**
   * The sync type. Possible values include: 'PartialSync', 'FullSync'
   */
  syncType?: SyncType;
}

/**
 * The parameters supplied to the create source control sync job operation.
 */
export interface SourceControlSyncJobCreateParameters {
  /**
   * The commit id of the source control sync job. If not syncing to a commitId, enter an empty
   * string.
   */
  commitId: string;
}

/**
 * Definition of the source control sync job.
 */
export interface SourceControlSyncJobById {
  /**
   * The id of the job.
   */
  id?: string;
  /**
   * The source control sync job id.
   */
  sourceControlSyncJobId?: string;
  /**
   * The creation time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * The provisioning state of the job. Possible values include: 'Completed', 'Failed', 'Running'
   */
  provisioningState?: ProvisioningState;
  /**
   * The start time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTime?: Date;
  /**
   * The end time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly endTime?: Date;
  /**
   * The sync type. Possible values include: 'PartialSync', 'FullSync'
   */
  syncType?: SyncType;
  /**
   * The exceptions that occurred while running the sync job.
   */
  exception?: string;
}

/**
 * Definition of the source control sync job stream.
 */
export interface SourceControlSyncJobStream {
  /**
   * Resource id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * The sync job stream id.
   */
  sourceControlSyncJobStreamId?: string;
  /**
   * The summary of the sync job stream.
   */
  summary?: string;
  /**
   * The time of the sync job stream.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly time?: Date;
  /**
   * The type of the sync job stream. Possible values include: 'Error', 'Output'
   */
  streamType?: StreamType;
}

/**
 * Definition of the source control sync job stream by id.
 */
export interface SourceControlSyncJobStreamById {
  /**
   * Resource id.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly id?: string;
  /**
   * The sync job stream id.
   */
  sourceControlSyncJobStreamId?: string;
  /**
   * The summary of the sync job stream.
   */
  summary?: string;
  /**
   * The time of the sync job stream.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly time?: Date;
  /**
   * The type of the sync job stream. Possible values include: 'Error', 'Output'
   */
  streamType?: StreamType;
  /**
   * The text of the sync job stream.
   */
  streamText?: string;
  /**
   * The values of the job stream.
   */
  value?: { [propertyName: string]: any };
}

/**
 * Definition of the job stream.
 */
export interface JobStream {
  /**
   * Gets or sets the id of the resource.
   */
  id?: string;
  /**
   * Gets or sets the id of the job stream.
   */
  jobStreamId?: string;
  /**
   * Gets or sets the creation time of the job.
   */
  time?: Date;
  /**
   * Gets or sets the stream type. Possible values include: 'Progress', 'Output', 'Warning',
   * 'Error', 'Debug', 'Verbose', 'Any'
   */
  streamType?: JobStreamType;
  /**
   * Gets or sets the stream text.
   */
  streamText?: string;
  /**
   * Gets or sets the summary.
   */
  summary?: string;
  /**
   * Gets or sets the values of the job stream.
   */
  value?: { [propertyName: string]: any };
}

/**
 * Definition of the job.
 */
export interface Job extends ProxyResource {
  /**
   * Gets or sets the runbook.
   */
  runbook?: RunbookAssociationProperty;
  /**
   * Gets or sets the job started by.
   */
  startedBy?: string;
  /**
   * Gets or sets the runOn which specifies the group name where the job is to be executed.
   */
  runOn?: string;
  /**
   * Gets or sets the id of the job.
   */
  jobId?: string;
  /**
   * Gets or sets the creation time of the job.
   */
  creationTime?: Date;
  /**
   * Gets or sets the status of the job. Possible values include: 'New', 'Activating', 'Running',
   * 'Completed', 'Failed', 'Stopped', 'Blocked', 'Suspended', 'Disconnected', 'Suspending',
   * 'Stopping', 'Resuming', 'Removing'
   */
  status?: JobStatus;
  /**
   * Gets or sets the status details of the job.
   */
  statusDetails?: string;
  /**
   * Gets or sets the start time of the job.
   */
  startTime?: Date;
  /**
   * Gets or sets the end time of the job.
   */
  endTime?: Date;
  /**
   * Gets or sets the exception of the job.
   */
  exception?: string;
  /**
   * Gets or sets the last modified time of the job.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the last status modified time of the job.
   */
  lastStatusModifiedTime?: Date;
  /**
   * Gets or sets the parameters of the job.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * The current provisioning state of the job. Possible values include: 'Failed', 'Succeeded',
   * 'Suspended', 'Processing'
   */
  provisioningState?: JobProvisioningState;
}

/**
 * Job collection item properties.
 */
export interface JobCollectionItem extends ProxyResource {
  /**
   * The runbook association.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly runbook?: RunbookAssociationProperty;
  /**
   * The id of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly jobId?: string;
  /**
   * The creation time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * The status of the job. Possible values include: 'New', 'Activating', 'Running', 'Completed',
   * 'Failed', 'Stopped', 'Blocked', 'Suspended', 'Disconnected', 'Suspending', 'Stopping',
   * 'Resuming', 'Removing'
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly status?: JobStatus;
  /**
   * The start time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTime?: Date;
  /**
   * The end time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly endTime?: Date;
  /**
   * The last modified time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * The provisioning state of a resource.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly provisioningState?: string;
  /**
   * Specifies the runOn group name where the job was executed.
   */
  runOn?: string;
}

/**
 * The parameters supplied to the create job operation.
 */
export interface JobCreateParameters {
  /**
   * Gets or sets the runbook.
   */
  runbook?: RunbookAssociationProperty;
  /**
   * Gets or sets the parameters of the job.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * Gets or sets the runOn which specifies the group name where the job is to be executed.
   */
  runOn?: string;
}

/**
 * Definition of the dsc node report error type.
 */
export interface DscReportError {
  /**
   * Gets or sets the source of the error.
   */
  errorSource?: string;
  /**
   * Gets or sets the resource ID which generated the error.
   */
  resourceId?: string;
  /**
   * Gets or sets the error code.
   */
  errorCode?: string;
  /**
   * Gets or sets the error message.
   */
  errorMessage?: string;
  /**
   * Gets or sets the locale of the error.
   */
  locale?: string;
  /**
   * Gets or sets the error details.
   */
  errorDetails?: string;
}

/**
 * Navigation for DSC Report Resource.
 */
export interface DscReportResourceNavigation {
  /**
   * Gets or sets the ID of the resource to navigate to.
   */
  resourceId?: string;
}

/**
 * Definition of the DSC Report Resource.
 */
export interface DscReportResource {
  /**
   * Gets or sets the ID of the resource.
   */
  resourceId?: string;
  /**
   * Gets or sets the source info of the resource.
   */
  sourceInfo?: string;
  /**
   * Gets or sets the Resource Navigation values for resources the resource depends on.
   */
  dependsOn?: DscReportResourceNavigation[];
  /**
   * Gets or sets the module name of the resource.
   */
  moduleName?: string;
  /**
   * Gets or sets the module version of the resource.
   */
  moduleVersion?: string;
  /**
   * Gets or sets the name of the resource.
   */
  resourceName?: string;
  /**
   * Gets or sets the error of the resource.
   */
  error?: string;
  /**
   * Gets or sets the status of the resource.
   */
  status?: string;
  /**
   * Gets or sets the duration in seconds for the resource.
   */
  durationInSeconds?: number;
  /**
   * Gets or sets the start date of the resource.
   */
  startDate?: Date;
}

/**
 * Definition of the DSC Meta Configuration.
 */
export interface DscMetaConfiguration {
  /**
   * Gets or sets the ConfigurationModeFrequencyMins value of the meta configuration.
   */
  configurationModeFrequencyMins?: number;
  /**
   * Gets or sets the RebootNodeIfNeeded value of the meta configuration.
   */
  rebootNodeIfNeeded?: boolean;
  /**
   * Gets or sets the ConfigurationMode value of the meta configuration.
   */
  configurationMode?: string;
  /**
   * Gets or sets the ActionAfterReboot value of the meta configuration.
   */
  actionAfterReboot?: string;
  /**
   * Gets or sets the CertificateId value of the meta configuration.
   */
  certificateId?: string;
  /**
   * Gets or sets the RefreshFrequencyMins value of the meta configuration.
   */
  refreshFrequencyMins?: number;
  /**
   * Gets or sets the AllowModuleOverwrite value of the meta configuration.
   */
  allowModuleOverwrite?: boolean;
}

/**
 * Definition of the dsc node report type.
 */
export interface DscNodeReport {
  /**
   * Gets or sets the end time of the node report.
   */
  endTime?: Date;
  /**
   * Gets or sets the lastModifiedTime of the node report.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the start time of the node report.
   */
  startTime?: Date;
  /**
   * Gets or sets the type of the node report.
   */
  type?: string;
  /**
   * Gets or sets the id of the node report.
   */
  reportId?: string;
  /**
   * Gets or sets the status of the node report.
   */
  status?: string;
  /**
   * Gets or sets the refreshMode of the node report.
   */
  refreshMode?: string;
  /**
   * Gets or sets the rebootRequested of the node report.
   */
  rebootRequested?: string;
  /**
   * Gets or sets the reportFormatVersion of the node report.
   */
  reportFormatVersion?: string;
  /**
   * Gets or sets the configurationVersion of the node report.
   */
  configurationVersion?: string;
  /**
   * Gets or sets the id.
   */
  id?: string;
  /**
   * Gets or sets the errors for the node report.
   */
  errors?: DscReportError[];
  /**
   * Gets or sets the resource for the node report.
   */
  resources?: DscReportResource[];
  /**
   * Gets or sets the metaConfiguration of the node at the time of the report.
   */
  metaConfiguration?: DscMetaConfiguration;
  /**
   * Gets or sets the hostname of the node that sent the report.
   */
  hostName?: string;
  /**
   * Gets or sets the IPv4 address of the node that sent the report.
   */
  iPV4Addresses?: string[];
  /**
   * Gets or sets the IPv6 address of the node that sent the report.
   */
  iPV6Addresses?: string[];
  /**
   * Gets or sets the number of resource in the node report.
   */
  numberOfResources?: number;
  /**
   * Gets or sets the unparsed errors for the node report.
   */
  rawErrors?: string;
}

/**
 * Definition of the agent registration keys.
 */
export interface AgentRegistrationKeys {
  /**
   * Gets or sets the primary key.
   */
  primary?: string;
  /**
   * Gets or sets the secondary key.
   */
  secondary?: string;
}

/**
 * Definition of the agent registration information type.
 */
export interface AgentRegistration {
  /**
   * Gets or sets the dsc meta configuration.
   */
  dscMetaConfiguration?: string;
  /**
   * Gets or sets the dsc server endpoint.
   */
  endpoint?: string;
  /**
   * Gets or sets the agent registration keys.
   */
  keys?: AgentRegistrationKeys;
  /**
   * Gets or sets the id.
   */
  id?: string;
}

/**
 * The dsc extensionHandler property associated with the node
 */
export interface DscNodeExtensionHandlerAssociationProperty {
  /**
   * Gets or sets the name of the extension handler.
   */
  name?: string;
  /**
   * Gets or sets the version of the extension handler.
   */
  version?: string;
}

/**
 * Definition of a DscNode
 */
export interface DscNode extends ProxyResource {
  /**
   * Gets or sets the last seen time of the node.
   */
  lastSeen?: Date;
  /**
   * Gets or sets the registration time of the node.
   */
  registrationTime?: Date;
  /**
   * Gets or sets the ip of the node.
   */
  ip?: string;
  /**
   * Gets or sets the account id of the node.
   */
  accountId?: string;
  /**
   * Gets or sets the name of the dsc node configuration.
   */
  dscNodeName?: string;
  /**
   * Gets or sets the status of the node.
   */
  status?: string;
  /**
   * Gets or sets the node id.
   */
  nodeId?: string;
  /**
   * Gets or sets the etag of the resource.
   */
  etag?: string;
  /**
   * Gets the total number of records matching filter criteria.
   */
  totalCount?: number;
  /**
   * Gets or sets the list of extensionHandler properties for a Node.
   */
  extensionHandler?: DscNodeExtensionHandlerAssociationProperty[];
}

/**
 * The parameters supplied to the regenerate keys operation.
 */
export interface AgentRegistrationRegenerateKeyParameter {
  /**
   * Gets or sets the agent registration key name - primary or secondary. Possible values include:
   * 'primary', 'secondary'
   */
  keyName: AgentRegistrationKeyName;
}

/**
 * An interface representing DscNodeUpdateParametersProperties.
 */
export interface DscNodeUpdateParametersProperties {
  /**
   * Gets or sets the name of the dsc node configuration.
   */
  name?: string;
}

/**
 * The parameters supplied to the update dsc node operation.
 */
export interface DscNodeUpdateParameters {
  /**
   * Gets or sets the id of the dsc node.
   */
  nodeId?: string;
  properties?: DscNodeUpdateParametersProperties;
}

/**
 * The Dsc configuration property associated with the entity.
 */
export interface DscConfigurationAssociationProperty {
  /**
   * Gets or sets the name of the Dsc configuration.
   */
  name?: string;
}

/**
 * Definition of the Dsc Compilation job.
 */
export interface DscCompilationJob extends ProxyResource {
  /**
   * Gets or sets the configuration.
   */
  configuration?: DscConfigurationAssociationProperty;
  /**
   * Gets the compilation job started by.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startedBy?: string;
  /**
   * Gets the id of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly jobId?: string;
  /**
   * Gets the creation time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly creationTime?: Date;
  /**
   * The current provisioning state of the job. Possible values include: 'Failed', 'Succeeded',
   * 'Suspended', 'Processing'
   */
  provisioningState?: JobProvisioningState;
  /**
   * Gets or sets the runOn which specifies the group name where the job is to be executed.
   */
  runOn?: string;
  /**
   * Gets or sets the status of the job. Possible values include: 'New', 'Activating', 'Running',
   * 'Completed', 'Failed', 'Stopped', 'Blocked', 'Suspended', 'Disconnected', 'Suspending',
   * 'Stopping', 'Resuming', 'Removing'
   */
  status?: JobStatus;
  /**
   * Gets or sets the status details of the job.
   */
  statusDetails?: string;
  /**
   * Gets the start time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly startTime?: Date;
  /**
   * Gets the end time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly endTime?: Date;
  /**
   * Gets the exception of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly exception?: string;
  /**
   * Gets the last modified time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastModifiedTime?: Date;
  /**
   * Gets the last status modified time of the job.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly lastStatusModifiedTime?: Date;
  /**
   * Gets or sets the parameters of the job.
   */
  parameters?: { [propertyName: string]: string };
}

/**
 * The parameters supplied to the create compilation job operation.
 */
export interface DscCompilationJobCreateParameters {
  /**
   * Gets or sets the configuration.
   */
  configuration: DscConfigurationAssociationProperty;
  /**
   * Gets or sets the parameters of the job.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * If a new build version of NodeConfiguration is required.
   */
  incrementNodeConfigurationBuild?: boolean;
  /**
   * Gets or sets name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the location of the resource.
   */
  location?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * Definition of the dsc node configuration.
 */
export interface DscNodeConfiguration extends ProxyResource {
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the configuration of the node.
   */
  configuration?: DscConfigurationAssociationProperty;
  /**
   * Source of node configuration.
   */
  source?: string;
  /**
   * Number of nodes with this node configuration assigned
   */
  nodeCount?: number;
  /**
   * If a new build version of NodeConfiguration is required.
   */
  incrementNodeConfigurationBuild?: boolean;
}

/**
 * The parameters supplied to the create or update node configuration operation.
 */
export interface DscNodeConfigurationCreateOrUpdateParameters {
  /**
   * Gets or sets the source.
   */
  source: ContentSource;
  /**
   * Gets or sets the configuration of the node.
   */
  configuration: DscConfigurationAssociationProperty;
  /**
   * If a new build version of NodeConfiguration is required.
   */
  incrementNodeConfigurationBuild?: boolean;
  /**
   * Name of the node configuration.
   */
  name?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * An interface representing NodeCountProperties.
 */
export interface NodeCountProperties {
  /**
   * Gets the count for the name
   */
  count?: number;
}

/**
 * Number of nodes based on the Filter
 */
export interface NodeCount {
  /**
   * Gets the name of a count type
   */
  name?: string;
  properties?: NodeCountProperties;
}

/**
 * Gets the count of nodes by count type
 */
export interface NodeCounts {
  /**
   * Gets an array of counts
   */
  value?: NodeCount[];
  /**
   * Gets the total number of records matching countType criteria.
   */
  totalCount?: number;
}

/**
 * Definition of the runbook parameter type.
 */
export interface RunbookParameter {
  /**
   * Gets or sets the type of the parameter.
   */
  type?: string;
  /**
   * Gets or sets a Boolean value to indicate whether the parameter is mandatory or not.
   */
  isMandatory?: boolean;
  /**
   * Get or sets the position of the parameter.
   */
  position?: number;
  /**
   * Gets or sets the default value of parameter.
   */
  defaultValue?: string;
}

/**
 * An interface representing RunbookDraft.
 */
export interface RunbookDraft {
  /**
   * Gets or sets whether runbook is in edit mode.
   */
  inEdit?: boolean;
  /**
   * Gets or sets the draft runbook content link.
   */
  draftContentLink?: ContentLink;
  /**
   * Gets or sets the creation time of the runbook draft.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time of the runbook draft.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the runbook draft parameters.
   */
  parameters?: { [propertyName: string]: RunbookParameter };
  /**
   * Gets or sets the runbook output types.
   */
  outputTypes?: string[];
}

/**
 * Definition of the runbook type.
 */
export interface Runbook extends TrackedResource {
  /**
   * Gets or sets the type of the runbook. Possible values include: 'Script', 'Graph',
   * 'PowerShellWorkflow', 'PowerShell', 'GraphPowerShellWorkflow', 'GraphPowerShell'
   */
  runbookType?: RunbookTypeEnum;
  /**
   * Gets or sets the published runbook content link.
   */
  publishContentLink?: ContentLink;
  /**
   * Gets or sets the state of the runbook. Possible values include: 'New', 'Edit', 'Published'
   */
  state?: RunbookState;
  /**
   * Gets or sets verbose log option.
   */
  logVerbose?: boolean;
  /**
   * Gets or sets progress log option.
   */
  logProgress?: boolean;
  /**
   * Gets or sets the option to log activity trace of the runbook.
   */
  logActivityTrace?: number;
  /**
   * Gets or sets the job count of the runbook.
   */
  jobCount?: number;
  /**
   * Gets or sets the runbook parameters.
   */
  parameters?: { [propertyName: string]: RunbookParameter };
  /**
   * Gets or sets the runbook output types.
   */
  outputTypes?: string[];
  /**
   * Gets or sets the draft runbook properties.
   */
  draft?: RunbookDraft;
  /**
   * Gets or sets the provisioning state of the runbook. Possible values include: 'Succeeded'
   */
  provisioningState?: RunbookProvisioningState;
  /**
   * Gets or sets the last modified by.
   */
  lastModifiedBy?: string;
  /**
   * Gets or sets the creation time.
   */
  creationTime?: Date;
  /**
   * Gets or sets the last modified time.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the description.
   */
  description?: string;
  /**
   * Gets or sets the etag of the resource.
   */
  etag?: string;
}

/**
 * The parameters supplied to the create or update runbook operation.
 */
export interface RunbookCreateOrUpdateParameters {
  /**
   * Gets or sets verbose log option.
   */
  logVerbose?: boolean;
  /**
   * Gets or sets progress log option.
   */
  logProgress?: boolean;
  /**
   * Gets or sets the type of the runbook. Possible values include: 'Script', 'Graph',
   * 'PowerShellWorkflow', 'PowerShell', 'GraphPowerShellWorkflow', 'GraphPowerShell'
   */
  runbookType: RunbookTypeEnum;
  /**
   * Gets or sets the draft runbook properties.
   */
  draft?: RunbookDraft;
  /**
   * Gets or sets the published runbook content link.
   */
  publishContentLink?: ContentLink;
  /**
   * Gets or sets the description of the runbook.
   */
  description?: string;
  /**
   * Gets or sets the activity-level tracing options of the runbook.
   */
  logActivityTrace?: number;
  /**
   * Gets or sets the name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the location of the resource.
   */
  location?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * The parameters supplied to the update runbook operation.
 */
export interface RunbookUpdateParameters {
  /**
   * Gets or sets the description of the runbook.
   */
  description?: string;
  /**
   * Gets or sets verbose log option.
   */
  logVerbose?: boolean;
  /**
   * Gets or sets progress log option.
   */
  logProgress?: boolean;
  /**
   * Gets or sets the activity-level tracing options of the runbook.
   */
  logActivityTrace?: number;
  /**
   * Gets or sets the name of the resource.
   */
  name?: string;
  /**
   * Gets or sets the location of the resource.
   */
  location?: string;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * The response model for the undo edit runbook operation.
 */
export interface RunbookDraftUndoEditResult {
  /**
   * Possible values include: 'Continue', 'SwitchingProtocols', 'OK', 'Created', 'Accepted',
   * 'NonAuthoritativeInformation', 'NoContent', 'ResetContent', 'PartialContent',
   * 'MultipleChoices', 'Ambiguous', 'MovedPermanently', 'Moved', 'Found', 'Redirect', 'SeeOther',
   * 'RedirectMethod', 'NotModified', 'UseProxy', 'Unused', 'TemporaryRedirect',
   * 'RedirectKeepVerb', 'BadRequest', 'Unauthorized', 'PaymentRequired', 'Forbidden', 'NotFound',
   * 'MethodNotAllowed', 'NotAcceptable', 'ProxyAuthenticationRequired', 'RequestTimeout',
   * 'Conflict', 'Gone', 'LengthRequired', 'PreconditionFailed', 'RequestEntityTooLarge',
   * 'RequestUriTooLong', 'UnsupportedMediaType', 'RequestedRangeNotSatisfiable',
   * 'ExpectationFailed', 'UpgradeRequired', 'InternalServerError', 'NotImplemented', 'BadGateway',
   * 'ServiceUnavailable', 'GatewayTimeout', 'HttpVersionNotSupported'
   */
  statusCode?: HttpStatusCode;
  requestId?: string;
}

/**
 * The parameters supplied to the create test job operation.
 */
export interface TestJobCreateParameters {
  /**
   * Gets or sets the parameters of the test job.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * Gets or sets the runOn which specifies the group name where the job is to be executed.
   */
  runOn?: string;
}

/**
 * Definition of the test job.
 */
export interface TestJob {
  /**
   * Gets or sets the creation time of the test job.
   */
  creationTime?: Date;
  /**
   * Gets or sets the status of the test job.
   */
  status?: string;
  /**
   * Gets or sets the status details of the test job.
   */
  statusDetails?: string;
  /**
   * Gets or sets the runOn which specifies the group name where the job is to be executed.
   */
  runOn?: string;
  /**
   * Gets or sets the start time of the test job.
   */
  startTime?: Date;
  /**
   * Gets or sets the end time of the test job.
   */
  endTime?: Date;
  /**
   * Gets or sets the exception of the test job.
   */
  exception?: string;
  /**
   * Gets or sets the last modified time of the test job.
   */
  lastModifiedTime?: Date;
  /**
   * Gets or sets the last status modified time of the test job.
   */
  lastStatusModifiedTime?: Date;
  /**
   * Gets or sets the parameters of the test job.
   */
  parameters?: { [propertyName: string]: string };
  /**
   * The activity-level tracing options of the runbook.
   */
  logActivityTrace?: number;
}

/**
 * The parameters supplied to the create or update draft runbook properties.
 */
export interface RunbookCreateOrUpdateDraftProperties {
  /**
   * Gets or sets verbose log option.
   */
  logVerbose?: boolean;
  /**
   * Gets or sets progress log option.
   */
  logProgress?: boolean;
  /**
   * Gets or sets the type of the runbook. Possible values include: 'Script', 'Graph',
   * 'PowerShellWorkflow', 'PowerShell', 'GraphPowerShellWorkflow', 'GraphPowerShell'
   */
  runbookType: RunbookTypeEnum;
  /**
   * Gets or sets the draft runbook properties.
   */
  draft: RunbookDraft;
  /**
   * Gets or sets the description of the runbook.
   */
  description?: string;
  /**
   * Gets or sets the activity-level tracing options of the runbook.
   */
  logActivityTrace?: number;
}

/**
 * The parameters supplied to the create or update runbook operation.
 */
export interface RunbookCreateOrUpdateDraftParameters {
  /**
   * Content of the Runbook.
   */
  runbookContent: string;
}

/**
 * The parameters supplied to the create or update module operation.
 */
export interface PythonPackageCreateParameters {
  /**
   * Gets or sets the module content link.
   */
  contentLink: ContentLink;
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * The parameters supplied to the update module operation.
 */
export interface PythonPackageUpdateParameters {
  /**
   * Gets or sets the tags attached to the resource.
   */
  tags?: { [propertyName: string]: string };
}

/**
 * Optional Parameters.
 */
export interface StatisticsListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface DscConfigurationUpdateOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The create or update parameters for configuration.
   */
  parameters?: DscConfigurationUpdateParameters;
}

/**
 * Optional Parameters.
 */
export interface DscConfigurationListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
  /**
   * The number of rows to skip.
   */
  skip?: number;
  /**
   * The the number of rows to take.
   */
  top?: number;
  /**
   * Return total rows.
   */
  inlinecount?: string;
}

/**
 * Optional Parameters.
 */
export interface HybridRunbookWorkerGroupListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface JobScheduleListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface WebhookListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface WatcherListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface SoftwareUpdateConfigurationsCreateOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface SoftwareUpdateConfigurationsGetByNameOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface SoftwareUpdateConfigurationsDeleteMethodOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface SoftwareUpdateConfigurationsListOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface SoftwareUpdateConfigurationRunsGetByIdOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface SoftwareUpdateConfigurationRunsListOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
  /**
   * The filter to apply on the operation. You can use the following filters: 'properties/osType',
   * 'properties/status', 'properties/startTime', and 'properties/softwareUpdateConfiguration/name'
   */
  filter?: string;
  /**
   * Number of entries you skip before returning results
   */
  skip?: string;
  /**
   * Maximum number of entries returned in the results collection
   */
  top?: string;
}

/**
 * Optional Parameters.
 */
export interface SoftwareUpdateConfigurationMachineRunsGetByIdOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface SoftwareUpdateConfigurationMachineRunsListOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
  /**
   * The filter to apply on the operation. You can use the following filters: 'properties/osType',
   * 'properties/status', 'properties/startTime', and 'properties/softwareUpdateConfiguration/name'
   */
  filter?: string;
  /**
   * number of entries you skip before returning results
   */
  skip?: string;
  /**
   * Maximum number of entries returned in the results collection
   */
  top?: string;
}

/**
 * Optional Parameters.
 */
export interface SourceControlListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface SourceControlSyncJobListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface SourceControlSyncJobStreamsListBySyncJobOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface JobGetOutputOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobGetRunbookContentOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobSuspendOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobStopOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobGetOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobCreateOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobResumeOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobListByAutomationAccountNextOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobStreamGetOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobStreamListByJobOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface JobStreamListByJobNextOptionalParams extends msRest.RequestOptionsBase {
  /**
   * Identifies this specific client request.
   */
  clientRequestId?: string;
}

/**
 * Optional Parameters.
 */
export interface DscNodeListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
  /**
   * The number of rows to skip.
   */
  skip?: number;
  /**
   * The the number of rows to take.
   */
  top?: number;
  /**
   * Return total rows.
   */
  inlinecount?: string;
}

/**
 * Optional Parameters.
 */
export interface NodeReportsListByNodeOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface DscCompilationJobListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * Optional Parameters.
 */
export interface DscNodeConfigurationListByAutomationAccountOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
  /**
   * The number of rows to skip.
   */
  skip?: number;
  /**
   * The the number of rows to take.
   */
  top?: number;
  /**
   * Return total rows.
   */
  inlinecount?: string;
}

/**
 * Optional Parameters.
 */
export interface TestJobStreamsListByTestJobOptionalParams extends msRest.RequestOptionsBase {
  /**
   * The filter to apply on the operation.
   */
  filter?: string;
}

/**
 * An interface representing AutomationClientOptions.
 */
export interface AutomationClientOptions extends AzureServiceClientOptions {
  baseUri?: string;
}

/**
 * Defines headers for ReplaceContent operation.
 */
export interface RunbookDraftReplaceContentHeaders {
  /**
   * URL to query for status of the operation.
   */
  location: string;
}

/**
 * Defines headers for Publish operation.
 */
export interface RunbookPublishHeaders {
  /**
   * URL to query for status of the operation.
   */
  location: string;
}

/**
 * @interface
 * The response model for the list account operation.
 * @extends Array<AutomationAccount>
 */
export interface AutomationAccountListResult extends Array<AutomationAccount> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list of Automation operations
 * @extends Array<Operation>
 */
export interface OperationListResult extends Array<Operation> {
}

/**
 * @interface
 * The response model for the list statistics operation.
 * @extends Array<Statistics>
 */
export interface StatisticsListResult extends Array<Statistics> {
}

/**
 * @interface
 * The response model for the get usage operation.
 * @extends Array<Usage>
 */
export interface UsageListResult extends Array<Usage> {
}

/**
 * @interface
 * The response model for the list certificate operation.
 * @extends Array<Certificate>
 */
export interface CertificateListResult extends Array<Certificate> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list connection operation.
 * @extends Array<Connection>
 */
export interface ConnectionListResult extends Array<Connection> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list connection type operation.
 * @extends Array<ConnectionType>
 */
export interface ConnectionTypeListResult extends Array<ConnectionType> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list credential operation.
 * @extends Array<Credential>
 */
export interface CredentialListResult extends Array<Credential> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list configuration operation.
 * @extends Array<DscConfiguration>
 */
export interface DscConfigurationListResult extends Array<DscConfiguration> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
  /**
   * Gets the total number of configurations matching filter criteria.
   */
  totalCount?: number;
}

/**
 * @interface
 * The response model for the list hybrid runbook worker groups.
 * @extends Array<HybridRunbookWorkerGroup>
 */
export interface HybridRunbookWorkerGroupsListResult extends Array<HybridRunbookWorkerGroup> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list job schedule operation.
 * @extends Array<JobSchedule>
 */
export interface JobScheduleListResult extends Array<JobSchedule> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list activity operation.
 * @extends Array<Activity>
 */
export interface ActivityListResult extends Array<Activity> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list module operation.
 * @extends Array<Module>
 */
export interface ModuleListResult extends Array<Module> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list fields operation.
 * @extends Array<TypeField>
 */
export interface TypeFieldListResult extends Array<TypeField> {
}

/**
 * @interface
 * The response model for the list schedule operation.
 * @extends Array<Schedule>
 */
export interface ScheduleListResult extends Array<Schedule> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list variables operation.
 * @extends Array<Variable>
 */
export interface VariableListResult extends Array<Variable> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list webhook operation.
 * @extends Array<Webhook>
 */
export interface WebhookListResult extends Array<Webhook> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list watcher operation.
 * @extends Array<Watcher>
 */
export interface WatcherListResult extends Array<Watcher> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list source controls operation.
 * @extends Array<SourceControl>
 */
export interface SourceControlListResult extends Array<SourceControl> {
  /**
   * The next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list source control sync jobs operation.
 * @extends Array<SourceControlSyncJob>
 */
export interface SourceControlSyncJobListResult extends Array<SourceControlSyncJob> {
  /**
   * The next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list source control sync job streams operation.
 * @extends Array<SourceControlSyncJobStream>
 */
export interface SourceControlSyncJobStreamsListBySyncJob extends Array<SourceControlSyncJobStream> {
  /**
   * The next link.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly nextLink?: string;
}

/**
 * @interface
 * The response model for the list job operation.
 * @extends Array<JobCollectionItem>
 */
export interface JobListResultV2 extends Array<JobCollectionItem> {
  /**
   * The  link to the next page.
   * **NOTE: This property will not be serialized. It can only be populated by the server.**
   */
  readonly nextLink?: string;
}

/**
 * @interface
 * The response model for the list job stream operation.
 * @extends Array<JobStream>
 */
export interface JobStreamListResult extends Array<JobStream> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list dsc nodes operation.
 * @extends Array<DscNode>
 */
export interface DscNodeListResult extends Array<DscNode> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
  /**
   * Gets the total number of nodes matching filter criteria.
   */
  totalCount?: number;
}

/**
 * @interface
 * The response model for the list dsc nodes operation.
 * @extends Array<DscNodeReport>
 */
export interface DscNodeReportListResult extends Array<DscNodeReport> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list job operation.
 * @extends Array<DscCompilationJob>
 */
export interface DscCompilationJobListResult extends Array<DscCompilationJob> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * @interface
 * The response model for the list job operation.
 * @extends Array<DscNodeConfiguration>
 */
export interface DscNodeConfigurationListResult extends Array<DscNodeConfiguration> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
  /**
   * Gets or sets the total rows in query.
   */
  totalCount?: number;
}

/**
 * @interface
 * The response model for the list runbook operation.
 * @extends Array<Runbook>
 */
export interface RunbookListResult extends Array<Runbook> {
  /**
   * Gets or sets the next link.
   */
  nextLink?: string;
}

/**
 * Defines values for SkuNameEnum.
 * Possible values include: 'Free', 'Basic'
 * @readonly
 * @enum {string}
 */
export type SkuNameEnum = 'Free' | 'Basic';

/**
 * Defines values for AutomationAccountState.
 * Possible values include: 'Ok', 'Unavailable', 'Suspended'
 * @readonly
 * @enum {string}
 */
export type AutomationAccountState = 'Ok' | 'Unavailable' | 'Suspended';

/**
 * Defines values for AutomationKeyName.
 * Possible values include: 'Primary', 'Secondary'
 * @readonly
 * @enum {string}
 */
export type AutomationKeyName = 'Primary' | 'Secondary';

/**
 * Defines values for AutomationKeyPermissions.
 * Possible values include: 'Read', 'Full'
 * @readonly
 * @enum {string}
 */
export type AutomationKeyPermissions = 'Read' | 'Full';

/**
 * Defines values for ContentSourceType.
 * Possible values include: 'embeddedContent', 'uri'
 * @readonly
 * @enum {string}
 */
export type ContentSourceType = 'embeddedContent' | 'uri';

/**
 * Defines values for DscConfigurationProvisioningState.
 * Possible values include: 'Succeeded'
 * @readonly
 * @enum {string}
 */
export type DscConfigurationProvisioningState = 'Succeeded';

/**
 * Defines values for DscConfigurationState.
 * Possible values include: 'New', 'Edit', 'Published'
 * @readonly
 * @enum {string}
 */
export type DscConfigurationState = 'New' | 'Edit' | 'Published';

/**
 * Defines values for GroupTypeEnum.
 * Possible values include: 'User', 'System'
 * @readonly
 * @enum {string}
 */
export type GroupTypeEnum = 'User' | 'System';

/**
 * Defines values for ModuleProvisioningState.
 * Possible values include: 'Created', 'Creating', 'StartingImportModuleRunbook',
 * 'RunningImportModuleRunbook', 'ContentRetrieved', 'ContentDownloaded', 'ContentValidated',
 * 'ConnectionTypeImported', 'ContentStored', 'ModuleDataStored', 'ActivitiesStored',
 * 'ModuleImportRunbookComplete', 'Succeeded', 'Failed', 'Cancelled', 'Updating'
 * @readonly
 * @enum {string}
 */
export type ModuleProvisioningState = 'Created' | 'Creating' | 'StartingImportModuleRunbook' | 'RunningImportModuleRunbook' | 'ContentRetrieved' | 'ContentDownloaded' | 'ContentValidated' | 'ConnectionTypeImported' | 'ContentStored' | 'ModuleDataStored' | 'ActivitiesStored' | 'ModuleImportRunbookComplete' | 'Succeeded' | 'Failed' | 'Cancelled' | 'Updating';

/**
 * Defines values for ScheduleDay.
 * Possible values include: 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',
 * 'Sunday'
 * @readonly
 * @enum {string}
 */
export type ScheduleDay = 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday';

/**
 * Defines values for ScheduleFrequency.
 * Possible values include: 'OneTime', 'Day', 'Hour', 'Week', 'Month'
 * @readonly
 * @enum {string}
 */
export type ScheduleFrequency = 'OneTime' | 'Day' | 'Hour' | 'Week' | 'Month';

/**
 * Defines values for OperatingSystemType.
 * Possible values include: 'Windows', 'Linux'
 * @readonly
 * @enum {string}
 */
export type OperatingSystemType = 'Windows' | 'Linux';

/**
 * Defines values for WindowsUpdateClasses.
 * Possible values include: 'Unclassified', 'Critical', 'Security', 'UpdateRollup', 'FeaturePack',
 * 'ServicePack', 'Definition', 'Tools', 'Updates'
 * @readonly
 * @enum {string}
 */
export type WindowsUpdateClasses = 'Unclassified' | 'Critical' | 'Security' | 'UpdateRollup' | 'FeaturePack' | 'ServicePack' | 'Definition' | 'Tools' | 'Updates';

/**
 * Defines values for LinuxUpdateClasses.
 * Possible values include: 'Unclassified', 'Critical', 'Security', 'Other'
 * @readonly
 * @enum {string}
 */
export type LinuxUpdateClasses = 'Unclassified' | 'Critical' | 'Security' | 'Other';

/**
 * Defines values for TagOperators.
 * Possible values include: 'All', 'Any'
 * @readonly
 * @enum {string}
 */
export type TagOperators = 'All' | 'Any';

/**
 * Defines values for SourceType.
 * Possible values include: 'VsoGit', 'VsoTfvc', 'GitHub'
 * @readonly
 * @enum {string}
 */
export type SourceType = 'VsoGit' | 'VsoTfvc' | 'GitHub';

/**
 * Defines values for TokenType.
 * Possible values include: 'PersonalAccessToken', 'Oauth'
 * @readonly
 * @enum {string}
 */
export type TokenType = 'PersonalAccessToken' | 'Oauth';

/**
 * Defines values for ProvisioningState.
 * Possible values include: 'Completed', 'Failed', 'Running'
 * @readonly
 * @enum {string}
 */
export type ProvisioningState = 'Completed' | 'Failed' | 'Running';

/**
 * Defines values for SyncType.
 * Possible values include: 'PartialSync', 'FullSync'
 * @readonly
 * @enum {string}
 */
export type SyncType = 'PartialSync' | 'FullSync';

/**
 * Defines values for StreamType.
 * Possible values include: 'Error', 'Output'
 * @readonly
 * @enum {string}
 */
export type StreamType = 'Error' | 'Output';

/**
 * Defines values for JobStreamType.
 * Possible values include: 'Progress', 'Output', 'Warning', 'Error', 'Debug', 'Verbose', 'Any'
 * @readonly
 * @enum {string}
 */
export type JobStreamType = 'Progress' | 'Output' | 'Warning' | 'Error' | 'Debug' | 'Verbose' | 'Any';

/**
 * Defines values for JobStatus.
 * Possible values include: 'New', 'Activating', 'Running', 'Completed', 'Failed', 'Stopped',
 * 'Blocked', 'Suspended', 'Disconnected', 'Suspending', 'Stopping', 'Resuming', 'Removing'
 * @readonly
 * @enum {string}
 */
export type JobStatus = 'New' | 'Activating' | 'Running' | 'Completed' | 'Failed' | 'Stopped' | 'Blocked' | 'Suspended' | 'Disconnected' | 'Suspending' | 'Stopping' | 'Resuming' | 'Removing';

/**
 * Defines values for JobProvisioningState.
 * Possible values include: 'Failed', 'Succeeded', 'Suspended', 'Processing'
 * @readonly
 * @enum {string}
 */
export type JobProvisioningState = 'Failed' | 'Succeeded' | 'Suspended' | 'Processing';

/**
 * Defines values for AgentRegistrationKeyName.
 * Possible values include: 'primary', 'secondary'
 * @readonly
 * @enum {string}
 */
export type AgentRegistrationKeyName = 'primary' | 'secondary';

/**
 * Defines values for RunbookTypeEnum.
 * Possible values include: 'Script', 'Graph', 'PowerShellWorkflow', 'PowerShell',
 * 'GraphPowerShellWorkflow', 'GraphPowerShell'
 * @readonly
 * @enum {string}
 */
export type RunbookTypeEnum = 'Script' | 'Graph' | 'PowerShellWorkflow' | 'PowerShell' | 'GraphPowerShellWorkflow' | 'GraphPowerShell';

/**
 * Defines values for RunbookState.
 * Possible values include: 'New', 'Edit', 'Published'
 * @readonly
 * @enum {string}
 */
export type RunbookState = 'New' | 'Edit' | 'Published';

/**
 * Defines values for RunbookProvisioningState.
 * Possible values include: 'Succeeded'
 * @readonly
 * @enum {string}
 */
export type RunbookProvisioningState = 'Succeeded';

/**
 * Defines values for HttpStatusCode.
 * Possible values include: 'Continue', 'SwitchingProtocols', 'OK', 'Created', 'Accepted',
 * 'NonAuthoritativeInformation', 'NoContent', 'ResetContent', 'PartialContent', 'MultipleChoices',
 * 'Ambiguous', 'MovedPermanently', 'Moved', 'Found', 'Redirect', 'SeeOther', 'RedirectMethod',
 * 'NotModified', 'UseProxy', 'Unused', 'TemporaryRedirect', 'RedirectKeepVerb', 'BadRequest',
 * 'Unauthorized', 'PaymentRequired', 'Forbidden', 'NotFound', 'MethodNotAllowed', 'NotAcceptable',
 * 'ProxyAuthenticationRequired', 'RequestTimeout', 'Conflict', 'Gone', 'LengthRequired',
 * 'PreconditionFailed', 'RequestEntityTooLarge', 'RequestUriTooLong', 'UnsupportedMediaType',
 * 'RequestedRangeNotSatisfiable', 'ExpectationFailed', 'UpgradeRequired', 'InternalServerError',
 * 'NotImplemented', 'BadGateway', 'ServiceUnavailable', 'GatewayTimeout',
 * 'HttpVersionNotSupported'
 * @readonly
 * @enum {string}
 */
export type HttpStatusCode = 'Continue' | 'SwitchingProtocols' | 'OK' | 'Created' | 'Accepted' | 'NonAuthoritativeInformation' | 'NoContent' | 'ResetContent' | 'PartialContent' | 'MultipleChoices' | 'Ambiguous' | 'MovedPermanently' | 'Moved' | 'Found' | 'Redirect' | 'SeeOther' | 'RedirectMethod' | 'NotModified' | 'UseProxy' | 'Unused' | 'TemporaryRedirect' | 'RedirectKeepVerb' | 'BadRequest' | 'Unauthorized' | 'PaymentRequired' | 'Forbidden' | 'NotFound' | 'MethodNotAllowed' | 'NotAcceptable' | 'ProxyAuthenticationRequired' | 'RequestTimeout' | 'Conflict' | 'Gone' | 'LengthRequired' | 'PreconditionFailed' | 'RequestEntityTooLarge' | 'RequestUriTooLong' | 'UnsupportedMediaType' | 'RequestedRangeNotSatisfiable' | 'ExpectationFailed' | 'UpgradeRequired' | 'InternalServerError' | 'NotImplemented' | 'BadGateway' | 'ServiceUnavailable' | 'GatewayTimeout' | 'HttpVersionNotSupported';

/**
 * Defines values for CountType.
 * Possible values include: 'status', 'nodeconfiguration'
 * @readonly
 * @enum {string}
 */
export type CountType = 'status' | 'nodeconfiguration';

/**
 * Contains response data for the update operation.
 */
export type AutomationAccountUpdateResponse = AutomationAccount & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AutomationAccount;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type AutomationAccountCreateOrUpdateResponse = AutomationAccount & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AutomationAccount;
    };
};

/**
 * Contains response data for the get operation.
 */
export type AutomationAccountGetResponse = AutomationAccount & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AutomationAccount;
    };
};

/**
 * Contains response data for the listByResourceGroup operation.
 */
export type AutomationAccountListByResourceGroupResponse = AutomationAccountListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AutomationAccountListResult;
    };
};

/**
 * Contains response data for the list operation.
 */
export type AutomationAccountListResponse = AutomationAccountListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AutomationAccountListResult;
    };
};

/**
 * Contains response data for the listByResourceGroupNext operation.
 */
export type AutomationAccountListByResourceGroupNextResponse = AutomationAccountListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AutomationAccountListResult;
    };
};

/**
 * Contains response data for the listNext operation.
 */
export type AutomationAccountListNextResponse = AutomationAccountListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AutomationAccountListResult;
    };
};

/**
 * Contains response data for the list operation.
 */
export type OperationsListResponse = OperationListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: OperationListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type StatisticsListByAutomationAccountResponse = StatisticsListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: StatisticsListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type UsagesListByAutomationAccountResponse = UsageListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: UsageListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type KeysListByAutomationAccountResponse = KeyListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: KeyListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type CertificateGetResponse = Certificate & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Certificate;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type CertificateCreateOrUpdateResponse = Certificate & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Certificate;
    };
};

/**
 * Contains response data for the update operation.
 */
export type CertificateUpdateResponse = Certificate & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Certificate;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type CertificateListByAutomationAccountResponse = CertificateListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: CertificateListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type CertificateListByAutomationAccountNextResponse = CertificateListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: CertificateListResult;
    };
};

/**
 * Contains response data for the deleteMethod operation.
 */
export type ConnectionDeleteMethodResponse = Connection & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Connection;
    };
};

/**
 * Contains response data for the get operation.
 */
export type ConnectionGetResponse = Connection & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Connection;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type ConnectionCreateOrUpdateResponse = Connection & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Connection;
    };
};

/**
 * Contains response data for the update operation.
 */
export type ConnectionUpdateResponse = Connection & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Connection;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type ConnectionListByAutomationAccountResponse = ConnectionListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ConnectionListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type ConnectionListByAutomationAccountNextResponse = ConnectionListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ConnectionListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type ConnectionTypeGetResponse = ConnectionType & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ConnectionType;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type ConnectionTypeCreateOrUpdateResponse = ConnectionType & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ConnectionType;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type ConnectionTypeListByAutomationAccountResponse = ConnectionTypeListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ConnectionTypeListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type ConnectionTypeListByAutomationAccountNextResponse = ConnectionTypeListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ConnectionTypeListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type CredentialGetResponse = Credential & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Credential;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type CredentialCreateOrUpdateResponse = Credential & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Credential;
    };
};

/**
 * Contains response data for the update operation.
 */
export type CredentialUpdateResponse = Credential & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Credential;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type CredentialListByAutomationAccountResponse = CredentialListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: CredentialListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type CredentialListByAutomationAccountNextResponse = CredentialListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: CredentialListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type DscConfigurationGetResponse = DscConfiguration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscConfiguration;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type DscConfigurationCreateOrUpdateResponse = DscConfiguration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscConfiguration;
    };
};

/**
 * Contains response data for the update operation.
 */
export type DscConfigurationUpdateResponse = DscConfiguration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscConfiguration;
    };
};

/**
 * Contains response data for the getContent operation.
 */
export type DscConfigurationGetContentResponse = {
  /**
   * BROWSER ONLY
   *
   * The response body as a browser Blob.
   * Always undefined in node.js.
   */
  blobBody?: Promise<Blob>;

  /**
   * NODEJS ONLY
   *
   * The response body as a node.js Readable stream.
   * Always undefined in the browser.
   */
  readableStreamBody?: NodeJS.ReadableStream;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse;
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type DscConfigurationListByAutomationAccountResponse = DscConfigurationListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscConfigurationListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type DscConfigurationListByAutomationAccountNextResponse = DscConfigurationListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscConfigurationListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type HybridRunbookWorkerGroupGetResponse = HybridRunbookWorkerGroup & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: HybridRunbookWorkerGroup;
    };
};

/**
 * Contains response data for the update operation.
 */
export type HybridRunbookWorkerGroupUpdateResponse = HybridRunbookWorkerGroup & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: HybridRunbookWorkerGroup;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type HybridRunbookWorkerGroupListByAutomationAccountResponse = HybridRunbookWorkerGroupsListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: HybridRunbookWorkerGroupsListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type HybridRunbookWorkerGroupListByAutomationAccountNextResponse = HybridRunbookWorkerGroupsListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: HybridRunbookWorkerGroupsListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type JobScheduleGetResponse = JobSchedule & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobSchedule;
    };
};

/**
 * Contains response data for the create operation.
 */
export type JobScheduleCreateResponse = JobSchedule & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobSchedule;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type JobScheduleListByAutomationAccountResponse = JobScheduleListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobScheduleListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type JobScheduleListByAutomationAccountNextResponse = JobScheduleListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobScheduleListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type LinkedWorkspaceGetResponse = LinkedWorkspace & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: LinkedWorkspace;
    };
};

/**
 * Contains response data for the get operation.
 */
export type ActivityGetResponse = Activity & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Activity;
    };
};

/**
 * Contains response data for the listByModule operation.
 */
export type ActivityListByModuleResponse = ActivityListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ActivityListResult;
    };
};

/**
 * Contains response data for the listByModuleNext operation.
 */
export type ActivityListByModuleNextResponse = ActivityListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ActivityListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type ModuleGetResponse = Module & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Module;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type ModuleCreateOrUpdateResponse = Module & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Module;
    };
};

/**
 * Contains response data for the update operation.
 */
export type ModuleUpdateResponse = Module & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Module;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type ModuleListByAutomationAccountResponse = ModuleListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ModuleListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type ModuleListByAutomationAccountNextResponse = ModuleListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ModuleListResult;
    };
};

/**
 * Contains response data for the listFieldsByModuleAndType operation.
 */
export type ObjectDataTypesListFieldsByModuleAndTypeResponse = TypeFieldListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: TypeFieldListResult;
    };
};

/**
 * Contains response data for the listFieldsByType operation.
 */
export type ObjectDataTypesListFieldsByTypeResponse = TypeFieldListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: TypeFieldListResult;
    };
};

/**
 * Contains response data for the listByType operation.
 */
export type FieldsListByTypeResponse = TypeFieldListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: TypeFieldListResult;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type ScheduleCreateOrUpdateResponse = Schedule & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Schedule;
    };
};

/**
 * Contains response data for the update operation.
 */
export type ScheduleUpdateResponse = Schedule & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Schedule;
    };
};

/**
 * Contains response data for the get operation.
 */
export type ScheduleGetResponse = Schedule & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Schedule;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type ScheduleListByAutomationAccountResponse = ScheduleListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ScheduleListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type ScheduleListByAutomationAccountNextResponse = ScheduleListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ScheduleListResult;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type VariableCreateOrUpdateResponse = Variable & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Variable;
    };
};

/**
 * Contains response data for the update operation.
 */
export type VariableUpdateResponse = Variable & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Variable;
    };
};

/**
 * Contains response data for the get operation.
 */
export type VariableGetResponse = Variable & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Variable;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type VariableListByAutomationAccountResponse = VariableListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: VariableListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type VariableListByAutomationAccountNextResponse = VariableListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: VariableListResult;
    };
};

/**
 * Contains response data for the generateUri operation.
 */
export type WebhookGenerateUriResponse = {
  /**
   * The parsed response body.
   */
  body: string;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: string;
    };
};

/**
 * Contains response data for the get operation.
 */
export type WebhookGetResponse = Webhook & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Webhook;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type WebhookCreateOrUpdateResponse = Webhook & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Webhook;
    };
};

/**
 * Contains response data for the update operation.
 */
export type WebhookUpdateResponse = Webhook & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Webhook;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type WebhookListByAutomationAccountResponse = WebhookListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: WebhookListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type WebhookListByAutomationAccountNextResponse = WebhookListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: WebhookListResult;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type WatcherCreateOrUpdateResponse = Watcher & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Watcher;
    };
};

/**
 * Contains response data for the get operation.
 */
export type WatcherGetResponse = Watcher & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Watcher;
    };
};

/**
 * Contains response data for the update operation.
 */
export type WatcherUpdateResponse = Watcher & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Watcher;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type WatcherListByAutomationAccountResponse = WatcherListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: WatcherListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type WatcherListByAutomationAccountNextResponse = WatcherListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: WatcherListResult;
    };
};

/**
 * Contains response data for the create operation.
 */
export type SoftwareUpdateConfigurationsCreateResponse = SoftwareUpdateConfiguration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SoftwareUpdateConfiguration;
    };
};

/**
 * Contains response data for the getByName operation.
 */
export type SoftwareUpdateConfigurationsGetByNameResponse = SoftwareUpdateConfiguration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SoftwareUpdateConfiguration;
    };
};

/**
 * Contains response data for the list operation.
 */
export type SoftwareUpdateConfigurationsListResponse = SoftwareUpdateConfigurationListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SoftwareUpdateConfigurationListResult;
    };
};

/**
 * Contains response data for the getById operation.
 */
export type SoftwareUpdateConfigurationRunsGetByIdResponse = SoftwareUpdateConfigurationRun & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SoftwareUpdateConfigurationRun;
    };
};

/**
 * Contains response data for the list operation.
 */
export type SoftwareUpdateConfigurationRunsListResponse = SoftwareUpdateConfigurationRunListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SoftwareUpdateConfigurationRunListResult;
    };
};

/**
 * Contains response data for the getById operation.
 */
export type SoftwareUpdateConfigurationMachineRunsGetByIdResponse = SoftwareUpdateConfigurationMachineRun & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SoftwareUpdateConfigurationMachineRun;
    };
};

/**
 * Contains response data for the list operation.
 */
export type SoftwareUpdateConfigurationMachineRunsListResponse = SoftwareUpdateConfigurationMachineRunListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SoftwareUpdateConfigurationMachineRunListResult;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type SourceControlCreateOrUpdateResponse = SourceControl & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControl;
    };
};

/**
 * Contains response data for the update operation.
 */
export type SourceControlUpdateResponse = SourceControl & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControl;
    };
};

/**
 * Contains response data for the get operation.
 */
export type SourceControlGetResponse = SourceControl & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControl;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type SourceControlListByAutomationAccountResponse = SourceControlListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type SourceControlListByAutomationAccountNextResponse = SourceControlListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlListResult;
    };
};

/**
 * Contains response data for the create operation.
 */
export type SourceControlSyncJobCreateResponse = SourceControlSyncJob & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlSyncJob;
    };
};

/**
 * Contains response data for the get operation.
 */
export type SourceControlSyncJobGetResponse = SourceControlSyncJobById & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlSyncJobById;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type SourceControlSyncJobListByAutomationAccountResponse = SourceControlSyncJobListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlSyncJobListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type SourceControlSyncJobListByAutomationAccountNextResponse = SourceControlSyncJobListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlSyncJobListResult;
    };
};

/**
 * Contains response data for the listBySyncJob operation.
 */
export type SourceControlSyncJobStreamsListBySyncJobResponse = SourceControlSyncJobStreamsListBySyncJob & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlSyncJobStreamsListBySyncJob;
    };
};

/**
 * Contains response data for the get operation.
 */
export type SourceControlSyncJobStreamsGetResponse = SourceControlSyncJobStreamById & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlSyncJobStreamById;
    };
};

/**
 * Contains response data for the listBySyncJobNext operation.
 */
export type SourceControlSyncJobStreamsListBySyncJobNextResponse = SourceControlSyncJobStreamsListBySyncJob & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: SourceControlSyncJobStreamsListBySyncJob;
    };
};

/**
 * Contains response data for the getOutput operation.
 */
export type JobGetOutputResponse = {
  /**
   * BROWSER ONLY
   *
   * The response body as a browser Blob.
   * Always undefined in node.js.
   */
  blobBody?: Promise<Blob>;

  /**
   * NODEJS ONLY
   *
   * The response body as a node.js Readable stream.
   * Always undefined in the browser.
   */
  readableStreamBody?: NodeJS.ReadableStream;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse;
};

/**
 * Contains response data for the getRunbookContent operation.
 */
export type JobGetRunbookContentResponse = {
  /**
   * BROWSER ONLY
   *
   * The response body as a browser Blob.
   * Always undefined in node.js.
   */
  blobBody?: Promise<Blob>;

  /**
   * NODEJS ONLY
   *
   * The response body as a node.js Readable stream.
   * Always undefined in the browser.
   */
  readableStreamBody?: NodeJS.ReadableStream;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse;
};

/**
 * Contains response data for the get operation.
 */
export type JobGetResponse = Job & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Job;
    };
};

/**
 * Contains response data for the create operation.
 */
export type JobCreateResponse = Job & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Job;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type JobListByAutomationAccountResponse = JobListResultV2 & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobListResultV2;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type JobListByAutomationAccountNextResponse = JobListResultV2 & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobListResultV2;
    };
};

/**
 * Contains response data for the get operation.
 */
export type JobStreamGetResponse = JobStream & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobStream;
    };
};

/**
 * Contains response data for the listByJob operation.
 */
export type JobStreamListByJobResponse = JobStreamListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobStreamListResult;
    };
};

/**
 * Contains response data for the listByJobNext operation.
 */
export type JobStreamListByJobNextResponse = JobStreamListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobStreamListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type AgentRegistrationInformationGetResponse = AgentRegistration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AgentRegistration;
    };
};

/**
 * Contains response data for the regenerateKey operation.
 */
export type AgentRegistrationInformationRegenerateKeyResponse = AgentRegistration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: AgentRegistration;
    };
};

/**
 * Contains response data for the deleteMethod operation.
 */
export type DscNodeDeleteMethodResponse = DscNode & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNode;
    };
};

/**
 * Contains response data for the get operation.
 */
export type DscNodeGetResponse = DscNode & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNode;
    };
};

/**
 * Contains response data for the update operation.
 */
export type DscNodeUpdateResponse = DscNode & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNode;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type DscNodeListByAutomationAccountResponse = DscNodeListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type DscNodeListByAutomationAccountNextResponse = DscNodeListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeListResult;
    };
};

/**
 * Contains response data for the listByNode operation.
 */
export type NodeReportsListByNodeResponse = DscNodeReportListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeReportListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type NodeReportsGetResponse = DscNodeReport & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeReport;
    };
};

/**
 * Contains response data for the getContent operation.
 */
export type NodeReportsGetContentResponse = {
  /**
   * The parsed response body.
   */
  body: any;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: any;
    };
};

/**
 * Contains response data for the listByNodeNext operation.
 */
export type NodeReportsListByNodeNextResponse = DscNodeReportListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeReportListResult;
    };
};

/**
 * Contains response data for the create operation.
 */
export type DscCompilationJobCreateResponse = DscCompilationJob & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscCompilationJob;
    };
};

/**
 * Contains response data for the get operation.
 */
export type DscCompilationJobGetResponse = DscCompilationJob & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscCompilationJob;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type DscCompilationJobListByAutomationAccountResponse = DscCompilationJobListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscCompilationJobListResult;
    };
};

/**
 * Contains response data for the getStream operation.
 */
export type DscCompilationJobGetStreamResponse = JobStream & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobStream;
    };
};

/**
 * Contains response data for the beginCreate operation.
 */
export type DscCompilationJobBeginCreateResponse = DscCompilationJob & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscCompilationJob;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type DscCompilationJobListByAutomationAccountNextResponse = DscCompilationJobListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscCompilationJobListResult;
    };
};

/**
 * Contains response data for the listByJob operation.
 */
export type DscCompilationJobStreamListByJobResponse = JobStreamListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobStreamListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type DscNodeConfigurationGetResponse = DscNodeConfiguration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeConfiguration;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type DscNodeConfigurationCreateOrUpdateResponse = DscNodeConfiguration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeConfiguration;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type DscNodeConfigurationListByAutomationAccountResponse = DscNodeConfigurationListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeConfigurationListResult;
    };
};

/**
 * Contains response data for the beginCreateOrUpdate operation.
 */
export type DscNodeConfigurationBeginCreateOrUpdateResponse = DscNodeConfiguration & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeConfiguration;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type DscNodeConfigurationListByAutomationAccountNextResponse = DscNodeConfigurationListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: DscNodeConfigurationListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type NodeCountInformationGetResponse = NodeCounts & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: NodeCounts;
    };
};

/**
 * Contains response data for the getContent operation.
 */
export type RunbookDraftGetContentResponse = {
  /**
   * BROWSER ONLY
   *
   * The response body as a browser Blob.
   * Always undefined in node.js.
   */
  blobBody?: Promise<Blob>;

  /**
   * NODEJS ONLY
   *
   * The response body as a node.js Readable stream.
   * Always undefined in the browser.
   */
  readableStreamBody?: NodeJS.ReadableStream;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse;
};

/**
 * Contains response data for the replaceContent operation.
 */
export type RunbookDraftReplaceContentResponse = RunbookDraftReplaceContentHeaders & {
  /**
   * BROWSER ONLY
   *
   * The response body as a browser Blob.
   * Always undefined in node.js.
   */
  blobBody?: Promise<Blob>;

  /**
   * NODEJS ONLY
   *
   * The response body as a node.js Readable stream.
   * Always undefined in the browser.
   */
  readableStreamBody?: NodeJS.ReadableStream;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The parsed HTTP response headers.
       */
      parsedHeaders: RunbookDraftReplaceContentHeaders;
    };
};

/**
 * Contains response data for the get operation.
 */
export type RunbookDraftGetResponse = RunbookDraft & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: RunbookDraft;
    };
};

/**
 * Contains response data for the undoEdit operation.
 */
export type RunbookDraftUndoEditResponse = RunbookDraftUndoEditResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: RunbookDraftUndoEditResult;
    };
};

/**
 * Contains response data for the publish operation.
 */
export type RunbookPublishResponse = RunbookPublishHeaders & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The parsed HTTP response headers.
       */
      parsedHeaders: RunbookPublishHeaders;
    };
};

/**
 * Contains response data for the getContent operation.
 */
export type RunbookGetContentResponse = {
  /**
   * BROWSER ONLY
   *
   * The response body as a browser Blob.
   * Always undefined in node.js.
   */
  blobBody?: Promise<Blob>;

  /**
   * NODEJS ONLY
   *
   * The response body as a node.js Readable stream.
   * Always undefined in the browser.
   */
  readableStreamBody?: NodeJS.ReadableStream;

  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse;
};

/**
 * Contains response data for the get operation.
 */
export type RunbookGetResponse = Runbook & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Runbook;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type RunbookCreateOrUpdateResponse = Runbook & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Runbook;
    };
};

/**
 * Contains response data for the update operation.
 */
export type RunbookUpdateResponse = Runbook & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Runbook;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type RunbookListByAutomationAccountResponse = RunbookListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: RunbookListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type RunbookListByAutomationAccountNextResponse = RunbookListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: RunbookListResult;
    };
};

/**
 * Contains response data for the get operation.
 */
export type TestJobStreamsGetResponse = JobStream & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobStream;
    };
};

/**
 * Contains response data for the listByTestJob operation.
 */
export type TestJobStreamsListByTestJobResponse = JobStreamListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobStreamListResult;
    };
};

/**
 * Contains response data for the listByTestJobNext operation.
 */
export type TestJobStreamsListByTestJobNextResponse = JobStreamListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: JobStreamListResult;
    };
};

/**
 * Contains response data for the create operation.
 */
export type TestJobCreateResponse = TestJob & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: TestJob;
    };
};

/**
 * Contains response data for the get operation.
 */
export type TestJobGetResponse = TestJob & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: TestJob;
    };
};

/**
 * Contains response data for the get operation.
 */
export type Python2PackageGetResponse = Module & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Module;
    };
};

/**
 * Contains response data for the createOrUpdate operation.
 */
export type Python2PackageCreateOrUpdateResponse = Module & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Module;
    };
};

/**
 * Contains response data for the update operation.
 */
export type Python2PackageUpdateResponse = Module & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: Module;
    };
};

/**
 * Contains response data for the listByAutomationAccount operation.
 */
export type Python2PackageListByAutomationAccountResponse = ModuleListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ModuleListResult;
    };
};

/**
 * Contains response data for the listByAutomationAccountNext operation.
 */
export type Python2PackageListByAutomationAccountNextResponse = ModuleListResult & {
  /**
   * The underlying HTTP response.
   */
  _response: msRest.HttpResponse & {
      /**
       * The response body as text (string format)
       */
      bodyAsText: string;

      /**
       * The response body as parsed JSON or XML
       */
      parsedBody: ModuleListResult;
    };
};
