UNPKG

@aws-sdk/client-ssm

Version:

AWS SDK for JavaScript Ssm Client for Node.js, Browser and React Native

10,824 lines 390 kB
import type { AccessRequestStatus, AccessType, AssociationComplianceSeverity, AssociationExecutionFilterKey, AssociationExecutionTargetsFilterKey, AssociationFilterOperatorType, AssociationStatusName, AssociationSyncCompliance, AttachmentHashType, AttachmentsSourceKey, AutomationExecutionFilterKey, AutomationExecutionStatus, AutomationSubtype, AutomationType, CalendarState, CommandInvocationStatus, ConnectionStatus, DescribeActivationsFilterKeys, DocumentFormat, DocumentHashType, DocumentParameterType, DocumentPermissionType, DocumentStatus, DocumentType, ExecutionMode, ExecutionPreviewStatus, ExternalAlarmState, Fault, ImpactType, InstanceInformationFilterKey, InstancePatchStateOperatorType, InstancePropertyFilterKey, InstancePropertyFilterOperator, InventoryAttributeDataType, InventoryDeletionStatus, InventoryQueryOperatorType, InventorySchemaDeleteOption, MaintenanceWindowExecutionStatus, MaintenanceWindowResourceType, MaintenanceWindowTaskCutoffBehavior, MaintenanceWindowTaskType, NotificationEvent, NotificationType, OperatingSystem, OpsFilterOperatorType, OpsItemDataType, OpsItemFilterKey, OpsItemFilterOperator, OpsItemStatus, ParametersFilterKey, ParameterTier, ParameterType, PatchAction, PatchComplianceDataState, PatchComplianceLevel, PatchComplianceStatus, PatchDeploymentStatus, PatchFilterKey, PatchOperationType, PatchProperty, PatchSet, PingStatus, PlatformType, RebootOption, ResourceDataSyncS3Format, ResourceType, ResourceTypeForTagging, ReviewStatus, SessionFilterKey, SessionState, SessionStatus, SourceType, StepExecutionFilterKey } from "./enums";
/**
 * <p>Information includes the Amazon Web Services account ID where the current document is shared and the
 *    version shared with that account.</p>
 * @public
 */
export interface AccountSharingInfo {
    /**
     * <p>The Amazon Web Services account ID where the current document is shared.</p>
     * @public
     */
    AccountId?: string | undefined;
    /**
     * <p>The version of the current document shared with the account.</p>
     * @public
     */
    SharedDocumentVersion?: string | undefined;
}
/**
 * <p>Metadata that you assign to your Amazon Web Services resources. Tags enable you to categorize your
 *    resources in different ways, for example, by purpose, owner, or environment. In Amazon Web Services Systems Manager, you
 *    can apply tags to Systems Manager documents (SSM documents), managed nodes, maintenance windows,
 *    parameters, patch baselines, OpsItems, and OpsMetadata.</p>
 * @public
 */
export interface Tag {
    /**
     * <p>The name of the tag.</p>
     * @public
     */
    Key: string | undefined;
    /**
     * <p>The value of the tag.</p>
     * @public
     */
    Value: string | undefined;
}
/**
 * <p>An activation registers one or more on-premises servers or virtual machines (VMs) with Amazon Web Services
 *    so that you can configure those servers or VMs using Run Command. A server or VM that has been
 *    registered with Amazon Web Services Systems Manager is called a managed node.</p>
 * @public
 */
export interface Activation {
    /**
     * <p>The ID created by Systems Manager when you submitted the activation.</p>
     * @public
     */
    ActivationId?: string | undefined;
    /**
     * <p>A user defined description of the activation.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>A name for the managed node when it is created.</p>
     * @public
     */
    DefaultInstanceName?: string | undefined;
    /**
     * <p>The Identity and Access Management (IAM) role to assign to the managed node.</p>
     * @public
     */
    IamRole?: string | undefined;
    /**
     * <p>The maximum number of managed nodes that can be registered using this activation.</p>
     * @public
     */
    RegistrationLimit?: number | undefined;
    /**
     * <p>The number of managed nodes already registered with this activation.</p>
     * @public
     */
    RegistrationsCount?: number | undefined;
    /**
     * <p>The date when this activation can no longer be used to register managed nodes.</p>
     * @public
     */
    ExpirationDate?: Date | undefined;
    /**
     * <p>Whether or not the activation is expired.</p>
     * @public
     */
    Expired?: boolean | undefined;
    /**
     * <p>The date the activation was created.</p>
     * @public
     */
    CreatedDate?: Date | undefined;
    /**
     * <p>Tags assigned to the activation.</p>
     * @public
     */
    Tags?: Tag[] | undefined;
}
/**
 * @public
 */
export interface AddTagsToResourceRequest {
    /**
     * <p>Specifies the type of resource you are tagging.</p>
     *          <note>
     *             <p>The <code>ManagedInstance</code> type for this API operation is for on-premises managed
     *     nodes. You must specify the name of the managed node in the following format:
     *       <code>mi-<i>ID_number</i>
     *                </code>. For example,
     *     <code>mi-1a2b3c4d5e6f</code>.</p>
     *          </note>
     * @public
     */
    ResourceType: ResourceTypeForTagging | undefined;
    /**
     * <p>The resource ID you want to tag.</p>
     *          <p>Use the ID of the resource. Here are some examples:</p>
     *          <p>
     *             <code>MaintenanceWindow</code>: <code>mw-012345abcde</code>
     *          </p>
     *          <p>
     *             <code>PatchBaseline</code>: <code>pb-012345abcde</code>
     *          </p>
     *          <p>
     *             <code>Automation</code>: <code>example-c160-4567-8519-012345abcde</code>
     *          </p>
     *          <p>
     *             <code>OpsMetadata</code> object: <code>ResourceID</code> for tagging is created from the
     *    Amazon Resource Name (ARN) for the object. Specifically, <code>ResourceID</code> is created from
     *    the strings that come after the word <code>opsmetadata</code> in the ARN. For example, an
     *    OpsMetadata object with an ARN of
     *     <code>arn:aws:ssm:us-east-2:1234567890:opsmetadata/aws/ssm/MyGroup/appmanager</code> has a
     *     <code>ResourceID</code> of either <code>aws/ssm/MyGroup/appmanager</code> or
     *     <code>/aws/ssm/MyGroup/appmanager</code>.</p>
     *          <p>For the <code>Document</code> and <code>Parameter</code> values, use the name of the
     *    resource. If you're tagging a shared document, you must use the full ARN of the document.</p>
     *          <p>
     *             <code>ManagedInstance</code>: <code>mi-012345abcde</code>
     *          </p>
     *          <note>
     *             <p>The <code>ManagedInstance</code> type for this API operation is only for on-premises
     *     managed nodes. You must specify the name of the managed node in the following format:
     *       <code>mi-<i>ID_number</i>
     *                </code>. For example,
     *     <code>mi-1a2b3c4d5e6f</code>.</p>
     *          </note>
     * @public
     */
    ResourceId: string | undefined;
    /**
     * <p>One or more tags. The value parameter is required.</p>
     *          <important>
     *             <p>Don't enter personally identifiable information in this field.</p>
     *          </important>
     * @public
     */
    Tags: Tag[] | undefined;
}
/**
 * @public
 */
export interface AddTagsToResourceResult {
}
/**
 * <p>A CloudWatch alarm you apply to an automation or command.</p>
 * @public
 */
export interface Alarm {
    /**
     * <p>The name of your CloudWatch alarm.</p>
     * @public
     */
    Name: string | undefined;
}
/**
 * <p>The details for the CloudWatch alarm you want to apply to an automation or
 *    command.</p>
 * @public
 */
export interface AlarmConfiguration {
    /**
     * <p>When this value is <i>true</i>, your automation or command continues to run in
     *    cases where we can’t retrieve alarm status information from CloudWatch. In cases
     *    where we successfully retrieve an alarm status of OK or INSUFFICIENT_DATA, the automation or
     *    command continues to run, regardless of this value. Default is <i>false</i>.</p>
     * @public
     */
    IgnorePollAlarmFailure?: boolean | undefined;
    /**
     * <p>The name of the CloudWatch alarm specified in the configuration.</p>
     * @public
     */
    Alarms: Alarm[] | undefined;
}
/**
 * <p>The details about the state of your CloudWatch alarm.</p>
 * @public
 */
export interface AlarmStateInformation {
    /**
     * <p>The name of your CloudWatch alarm.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The state of your CloudWatch alarm.</p>
     * @public
     */
    State: ExternalAlarmState | undefined;
}
/**
 * @public
 */
export interface AssociateOpsItemRelatedItemRequest {
    /**
     * <p>The ID of the OpsItem to which you want to associate a resource as a related item.</p>
     * @public
     */
    OpsItemId: string | undefined;
    /**
     * <p>The type of association that you want to create between an OpsItem and a resource. OpsCenter
     *    supports <code>IsParentOf</code> and <code>RelatesTo</code> association types.</p>
     * @public
     */
    AssociationType: string | undefined;
    /**
     * <p>The type of resource that you want to associate with an OpsItem. OpsCenter supports the
     *    following types:</p>
     *          <p>
     *             <code>AWS::SSMIncidents::IncidentRecord</code>: an Incident Manager incident. </p>
     *          <p>
     *             <code>AWS::SSM::Document</code>: a Systems Manager (SSM) document.</p>
     * @public
     */
    ResourceType: string | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the Amazon Web Services resource that you want to associate with the
     *    OpsItem.</p>
     * @public
     */
    ResourceUri: string | undefined;
}
/**
 * @public
 */
export interface AssociateOpsItemRelatedItemResponse {
    /**
     * <p>The association ID.</p>
     * @public
     */
    AssociationId?: string | undefined;
}
/**
 * <p></p>
 * @public
 */
export interface CancelCommandRequest {
    /**
     * <p>The ID of the command you want to cancel.</p>
     * @public
     */
    CommandId: string | undefined;
    /**
     * <p>(Optional) A list of managed node IDs on which you want to cancel the command. If not
     *    provided, the command is canceled on every node on which it was requested.</p>
     * @public
     */
    InstanceIds?: string[] | undefined;
}
/**
 * <p>Whether or not the command was successfully canceled. There is no guarantee that a request
 *    can be canceled.</p>
 * @public
 */
export interface CancelCommandResult {
}
/**
 * @public
 */
export interface CancelMaintenanceWindowExecutionRequest {
    /**
     * <p>The ID of the maintenance window execution to stop.</p>
     * @public
     */
    WindowExecutionId: string | undefined;
}
/**
 * @public
 */
export interface CancelMaintenanceWindowExecutionResult {
    /**
     * <p>The ID of the maintenance window execution that has been stopped.</p>
     * @public
     */
    WindowExecutionId?: string | undefined;
}
/**
 * <p>Reserved for internal use.</p>
 * @public
 */
export interface RegistrationMetadataItem {
    /**
     * <p>Reserved for internal use.</p>
     * @public
     */
    Key: string | undefined;
    /**
     * <p>Reserved for internal use.</p>
     * @public
     */
    Value: string | undefined;
}
/**
 * @public
 */
export interface CreateActivationRequest {
    /**
     * <p>A user-defined description of the resource that you want to register with Systems Manager. </p>
     *          <important>
     *             <p>Don't enter personally identifiable information in this field.</p>
     *          </important>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The name of the registered, managed node as it will appear in the Amazon Web Services Systems Manager console or when
     *    you use the Amazon Web Services command line tools to list Systems Manager resources.</p>
     *          <important>
     *             <p>Don't enter personally identifiable information in this field.</p>
     *          </important>
     * @public
     */
    DefaultInstanceName?: string | undefined;
    /**
     * <p>The name of the Identity and Access Management (IAM) role that you want to assign to
     *    the managed node. This IAM role must provide AssumeRole permissions for the
     *    Amazon Web Services Systems Manager service principal <code>ssm.amazonaws.com</code>. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-multicloud-service-role.html">Create the IAM service role required for Systems Manager in a hybrid and multicloud
     *     environments</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *          <note>
     *             <p>You can't specify an IAM service-linked role for this parameter. You must
     *     create a unique role.</p>
     *          </note>
     * @public
     */
    IamRole: string | undefined;
    /**
     * <p>Specify the maximum number of managed nodes you want to register. The default value is
     *     <code>1</code>.</p>
     * @public
     */
    RegistrationLimit?: number | undefined;
    /**
     * <p>The date by which this activation request should expire, in timestamp format, such as
     *    "2024-07-07T00:00:00". You can specify a date up to 30 days in advance. If you don't provide an
     *    expiration date, the activation code expires in 24 hours.</p>
     * @public
     */
    ExpirationDate?: Date | undefined;
    /**
     * <p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in
     *    different ways, such as by purpose, owner, or environment. For example, you might want to tag an
     *    activation to identify which servers or virtual machines (VMs) in your on-premises environment
     *    you intend to activate. In this case, you could specify the following key-value pairs:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>Key=OS,Value=Windows</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Key=Environment,Value=Production</code>
     *                </p>
     *             </li>
     *          </ul>
     *          <important>
     *             <p>When you install SSM Agent on your on-premises servers and VMs, you specify an activation ID
     *     and code. When you specify the activation ID and code, tags assigned to the activation are
     *     automatically applied to the on-premises servers or VMs.</p>
     *          </important>
     *          <p>You can't add tags to or delete tags from an existing activation. You can tag your
     *    on-premises servers, edge devices, and VMs after they connect to Systems Manager for the first time and are
     *    assigned a managed node ID. This means they are listed in the Amazon Web Services Systems Manager console with an ID that
     *    is prefixed with "mi-". For information about how to add tags to your managed nodes, see <a>AddTagsToResource</a>. For information about how to remove tags from your managed nodes,
     *    see <a>RemoveTagsFromResource</a>.</p>
     * @public
     */
    Tags?: Tag[] | undefined;
    /**
     * <p>Reserved for internal use.</p>
     * @public
     */
    RegistrationMetadata?: RegistrationMetadataItem[] | undefined;
}
/**
 * @public
 */
export interface CreateActivationResult {
    /**
     * <p>The ID number generated by the system when it processed the activation. The activation ID
     *    functions like a user name.</p>
     * @public
     */
    ActivationId?: string | undefined;
    /**
     * <p>The code the system generates when it processes the activation. The activation code
     *    functions like a password to validate the activation ID. </p>
     * @public
     */
    ActivationCode?: string | undefined;
}
/**
 * <p>An S3 bucket where you want to store the results of this request.</p>
 * @public
 */
export interface S3OutputLocation {
    /**
     * <p>The Amazon Web Services Region of the S3 bucket.</p>
     * @public
     */
    OutputS3Region?: string | undefined;
    /**
     * <p>The name of the S3 bucket.</p>
     * @public
     */
    OutputS3BucketName?: string | undefined;
    /**
     * <p>The S3 bucket subfolder.</p>
     * @public
     */
    OutputS3KeyPrefix?: string | undefined;
}
/**
 * <p>An S3 bucket where you want to store the results of this request.</p>
 *          <p>For the minimal permissions required to enable Amazon S3 output for an association,
 *    see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-associations-creating.html#state-manager-associations-console">Create an association (console)</a> in the <i>Systems Manager User Guide</i>. </p>
 * @public
 */
export interface InstanceAssociationOutputLocation {
    /**
     * <p>An S3 bucket where you want to store the results of this request.</p>
     * @public
     */
    S3Location?: S3OutputLocation | undefined;
}
/**
 * <p>An array of search criteria that targets managed nodes using a key-value pair that you
 *    specify.</p>
 *          <note>
 *             <p> One or more targets must be specified for maintenance window Run Command-type tasks.
 *     Depending on the task, targets are optional for other maintenance window task types (Automation,
 *      Lambda, and Step Functions). For more information about running tasks
 *     that don't specify targets, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html">Registering
 *      maintenance window tasks without targets</a> in the
 *     <i>Amazon Web Services Systems Manager User Guide</i>.</p>
 *          </note>
 *          <p>Supported formats include the following.</p>
 *          <p>
 *             <b>For all Systems Manager tools:</b>
 *          </p>
 *          <ul>
 *             <li>
 *                <p>
 *                   <code>Key=tag-key,Values=tag-value-1,tag-value-2</code>
 *                </p>
 *             </li>
 *          </ul>
 *          <p>
 *             <b>For Automation and Change Manager:</b>
 *          </p>
 *          <ul>
 *             <li>
 *                <p>
 *                   <code>Key=tag:tag-key,Values=tag-value</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <code>Key=ResourceGroup,Values=resource-group-name</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <code>Key=ParameterValues,Values=value-1,value-2,value-3</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>To target all instances in the Amazon Web Services Region:</p>
 *                <ul>
 *                   <li>
 *                      <p>
 *                         <code>Key=AWS::EC2::Instance,Values=*</code>
 *                      </p>
 *                   </li>
 *                   <li>
 *                      <p>
 *                         <code>Key=InstanceIds,Values=*</code>
 *                      </p>
 *                   </li>
 *                </ul>
 *             </li>
 *          </ul>
 *          <p>
 *             <b>For Run Command and Maintenance Windows:</b>
 *          </p>
 *          <ul>
 *             <li>
 *                <p>
 *                   <code>Key=InstanceIds,Values=instance-id-1,instance-id-2,instance-id-3</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <code>Key=tag:tag-key,Values=tag-value-1,tag-value-2</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <code>Key=resource-groups:Name,Values=resource-group-name</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>Additionally, Maintenance Windows support targeting resource types:</p>
 *                <ul>
 *                   <li>
 *                      <p>
 *                         <code>Key=resource-groups:ResourceTypeFilters,Values=resource-type-1,resource-type-2</code>
 *                      </p>
 *                   </li>
 *                </ul>
 *             </li>
 *          </ul>
 *          <p>
 *             <b>For State Manager:</b>
 *          </p>
 *          <ul>
 *             <li>
 *                <p>
 *                   <code>Key=InstanceIds,Values=instance-id-1,instance-id-2,instance-id-3</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <code>Key=tag:tag-key,Values=tag-value-1,tag-value-2</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>To target all instances in the Amazon Web Services Region:</p>
 *                <ul>
 *                   <li>
 *                      <p>
 *                         <code>Key=InstanceIds,Values=*</code>
 *                      </p>
 *                   </li>
 *                </ul>
 *             </li>
 *          </ul>
 *          <p>For more information about how to send commands that target managed nodes using
 *     <code>Key,Value</code> parameters, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html#send-commands-targeting">Targeting multiple managed nodes</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
 * @public
 */
export interface Target {
    /**
     * <p>User-defined criteria for sending commands that target managed nodes that meet the
     *    criteria.</p>
     * @public
     */
    Key?: string | undefined;
    /**
     * <p>User-defined criteria that maps to <code>Key</code>. For example, if you specified
     *     <code>tag:ServerRole</code>, you could specify <code>value:WebServer</code> to run a command on
     *    instances that include EC2 tags of <code>ServerRole,WebServer</code>. </p>
     *          <p>Depending on the type of target, the maximum number of values for a key might be lower than
     *    the global maximum of 50.</p>
     * @public
     */
    Values?: string[] | undefined;
}
/**
 * <p>The combination of Amazon Web Services Regions and Amazon Web Services accounts targeted by the current Automation
 *    execution.</p>
 * @public
 */
export interface TargetLocation {
    /**
     * <p>The Amazon Web Services accounts targeted by the current Automation execution.</p>
     * @public
     */
    Accounts?: string[] | undefined;
    /**
     * <p>The Amazon Web Services Regions targeted by the current Automation execution.</p>
     * @public
     */
    Regions?: string[] | undefined;
    /**
     * <p>The maximum number of Amazon Web Services Regions and Amazon Web Services accounts allowed to run the Automation
     *    concurrently. <code>TargetLocationMaxConcurrency</code> has a default value of 1.</p>
     * @public
     */
    TargetLocationMaxConcurrency?: string | undefined;
    /**
     * <p>The maximum number of errors allowed before the system stops queueing additional Automation
     *    executions for the currently running Automation. <code>TargetLocationMaxErrors</code> has a
     *    default value of 0.</p>
     * @public
     */
    TargetLocationMaxErrors?: string | undefined;
    /**
     * <p>The Automation execution role used by the currently running Automation. If not specified,
     *    the default value is <code>AWS-SystemsManager-AutomationExecutionRole</code>.</p>
     * @public
     */
    ExecutionRoleName?: string | undefined;
    /**
     * <p>The details for the CloudWatch alarm you want to apply to an automation or
     *    command.</p>
     * @public
     */
    TargetLocationAlarmConfiguration?: AlarmConfiguration | undefined;
    /**
     * <p>Indicates whether to include child organizational units (OUs) that are children of the
     *    targeted OUs. The default is <code>false</code>.</p>
     * @public
     */
    IncludeChildOrganizationUnits?: boolean | undefined;
    /**
     * <p>Amazon Web Services accounts or organizational units to exclude as expanded targets.</p>
     * @public
     */
    ExcludeAccounts?: string[] | undefined;
    /**
     * <p>A list of key-value mappings to target resources. If you specify values for this data type,
     *    you must also specify a value for <code>TargetParameterName</code>.</p>
     *          <p>This <code>Targets</code> parameter takes precedence over the
     *     <code>StartAutomationExecution:Targets</code> parameter if both are supplied.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>The maximum number of targets allowed to run this task in parallel. This
     *     <code>TargetsMaxConcurrency</code> takes precedence over the
     *     <code>StartAutomationExecution:MaxConcurrency</code> parameter if both are supplied.</p>
     * @public
     */
    TargetsMaxConcurrency?: string | undefined;
    /**
     * <p>The maximum number of errors that are allowed before the system stops running the automation
     *    on additional targets. This <code>TargetsMaxErrors</code> parameter takes precedence over the
     *     <code>StartAutomationExecution:MaxErrors</code> parameter if both are supplied.</p>
     * @public
     */
    TargetsMaxErrors?: string | undefined;
}
/**
 * @public
 */
export interface CreateAssociationRequest {
    /**
     * <p>The name of the SSM Command document or Automation runbook that contains the configuration
     *    information for the managed node.</p>
     *          <p>You can specify Amazon Web Services-predefined documents, documents you created, or a document that is
     *    shared with you from another Amazon Web Services account.</p>
     *          <p>For Systems Manager documents (SSM documents) that are shared with you from other Amazon Web Services accounts, you
     *    must specify the complete SSM document ARN, in the following format:</p>
     *          <p>
     *             <code>arn:<i>partition</i>:ssm:<i>region</i>:<i>account-id</i>:document/<i>document-name</i>
     *             </code>
     *          </p>
     *          <p>For example:</p>
     *          <p>
     *             <code>arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document</code>
     *          </p>
     *          <p>For Amazon Web Services-predefined documents and SSM documents you created in your account, you only need
     *    to specify the document name. For example, <code>AWS-ApplyPatchBaseline</code> or
     *     <code>My-Document</code>.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The document version you want to associate with the targets. Can be a specific version or
     *    the default version.</p>
     *          <important>
     *             <p>State Manager doesn't support running associations that use a new version of a document if
     *     that document is shared from another account. State Manager always runs the <code>default</code>
     *     version of a document if shared from another account, even though the Systems Manager console shows that a
     *     new version was processed. If you want to run an association using a new version of a document
     *     shared form another account, you must set the document version to <code>default</code>.</p>
     *          </important>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The managed node ID.</p>
     *          <note>
     *             <p>
     *                <code>InstanceId</code> has been deprecated. To specify a managed node ID for an
     *     association, use the <code>Targets</code> parameter. Requests that
     *     include the parameter <code>InstanceID</code> with Systems Manager documents (SSM documents) that use
     *     schema version 2.0 or later will fail. In addition, if you use the
     *     parameter <code>InstanceId</code>, you can't use the parameters <code>AssociationName</code>,
     *      <code>DocumentVersion</code>, <code>MaxErrors</code>, <code>MaxConcurrency</code>,
     *      <code>OutputLocation</code>, or <code>ScheduleExpression</code>. To use these parameters, you
     *     must use the <code>Targets</code> parameter.</p>
     *          </note>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The parameters for the runtime configuration of the document.</p>
     * @public
     */
    Parameters?: Record<string, string[]> | undefined;
    /**
     * <p>The targets for the association. You can target managed nodes by using tags, Amazon Web Services resource
     *    groups, all managed nodes in an Amazon Web Services account, or individual managed node IDs. You can target all
     *    managed nodes in an Amazon Web Services account by specifying the <code>InstanceIds</code> key with a value of
     *     <code>*</code>. For more information about choosing targets for an association, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-state-manager-targets-and-rate-controls.html">Understanding targets and rate controls in State Manager associations</a> in the
     *     <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>A cron expression when the association will be applied to the targets.</p>
     * @public
     */
    ScheduleExpression?: string | undefined;
    /**
     * <p>An Amazon Simple Storage Service (Amazon S3) bucket where you want to store the output
     *    details of the request.</p>
     * @public
     */
    OutputLocation?: InstanceAssociationOutputLocation | undefined;
    /**
     * <p>Specify a descriptive name for the association.</p>
     * @public
     */
    AssociationName?: string | undefined;
    /**
     * <p>Choose the parameter that will define how your automation will branch out. This target is
     *    required for associations that use an Automation runbook and target resources by using rate
     *    controls. Automation is a tool in Amazon Web Services Systems Manager.</p>
     * @public
     */
    AutomationTargetParameterName?: string | undefined;
    /**
     * <p>The number of errors that are allowed before the system stops sending requests to run the
     *    association on additional targets. You can specify either an absolute number of errors, for
     *    example 10, or a percentage of the target set, for example 10%. If you specify 3, for example,
     *    the system stops sending requests when the fourth error is received. If you specify 0, then the
     *    system stops sending requests after the first error is returned. If you run an association on 50
     *    managed nodes and set <code>MaxError</code> to 10%, then the system stops sending the request
     *    when the sixth error is received.</p>
     *          <p>Executions that are already running an association when <code>MaxErrors</code> is reached
     *    are allowed to complete, but some of these executions may fail as well. If you need to ensure
     *    that there won't be more than max-errors failed executions, set <code>MaxConcurrency</code> to 1
     *    so that executions proceed one at a time.</p>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>The maximum number of targets allowed to run the association at the same time. You can
     *    specify a number, for example 10, or a percentage of the target set, for example 10%. The default
     *    value is 100%, which means all targets run the association at the same time.</p>
     *          <p>If a new managed node starts and attempts to run an association while Systems Manager is running
     *     <code>MaxConcurrency</code> associations, the association is allowed to run. During the next
     *    association interval, the new managed node will process its association within the limit
     *    specified for <code>MaxConcurrency</code>.</p>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The severity level to assign to the association.</p>
     * @public
     */
    ComplianceSeverity?: AssociationComplianceSeverity | undefined;
    /**
     * <p>The mode for generating association compliance. You can specify <code>AUTO</code> or
     *     <code>MANUAL</code>. In <code>AUTO</code> mode, the system uses the status of the association
     *    execution to determine the compliance status. If the association execution runs successfully,
     *    then the association is <code>COMPLIANT</code>. If the association execution doesn't run
     *    successfully, the association is <code>NON-COMPLIANT</code>.</p>
     *          <p>In <code>MANUAL</code> mode, you must specify the <code>AssociationId</code> as a parameter
     *    for the <a>PutComplianceItems</a> API operation. In this case, compliance data isn't
     *    managed by State Manager. It is managed by your direct call to the <a>PutComplianceItems</a> API operation.</p>
     *          <p>By default, all associations use <code>AUTO</code> mode.</p>
     * @public
     */
    SyncCompliance?: AssociationSyncCompliance | undefined;
    /**
     * <p>By default, when you create a new association, the system runs it immediately after it is
     *    created and then according to the schedule you specified and when target changes are detected.
     *    Specify <code>true</code> for <code>ApplyOnlyAtCronInterval</code>if you want the association to
     *    run only according to the schedule you specified.</p>
     *          <p>For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-about.html#state-manager-about-scheduling">Understanding when associations are applied to resources</a> and <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-about.html#runbook-target-updates">>About
     *     target updates with Automation runbooks</a> in the
     *    <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *          <p>This parameter isn't supported for rate expressions.</p>
     * @public
     */
    ApplyOnlyAtCronInterval?: boolean | undefined;
    /**
     * <p>The names of Amazon Resource Names (ARNs) of the Change Calendar type documents you want to
     *    gate your associations under. The associations only run when that change calendar is open. For
     *    more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar">Amazon Web Services Systems Manager Change
     *     Calendar</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    CalendarNames?: string[] | undefined;
    /**
     * <p>A location is a combination of Amazon Web Services Regions and Amazon Web Services accounts where you want to run the
     *    association. Use this action to create an association in multiple Regions and multiple
     *    accounts.</p>
     *          <note>
     *             <p>The <code>TargetLocationAlarmConfiguration</code> parameter is not supported by State
     *     Manager.</p>
     *          </note>
     * @public
     */
    TargetLocations?: TargetLocation[] | undefined;
    /**
     * <p>Number of days to wait after the scheduled day to run an association. For example, if you
     *    specified a cron schedule of <code>cron(0 0 ? * THU#2 *)</code>, you could specify an offset of 3
     *    to run the association each Sunday after the second Thursday of the month. For more information
     *    about cron schedules for associations, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html">Reference: Cron
     *     and rate expressions for Systems Manager</a> in the <i>Amazon Web Services Systems Manager User Guide</i>. </p>
     *          <note>
     *             <p>To use offsets, you must specify the <code>ApplyOnlyAtCronInterval</code> parameter. This
     *     option tells the system not to run an association immediately after you create it. </p>
     *          </note>
     * @public
     */
    ScheduleOffset?: number | undefined;
    /**
     * <p>The number of hours the association can run before it is canceled. Duration applies to
     *    associations that are currently running, and any pending and in progress commands on all targets.
     *    If a target was taken offline for the association to run, it is made available again immediately,
     *    without a reboot. </p>
     *          <p>The <code>Duration</code> parameter applies only when both these conditions are true:</p>
     *          <ul>
     *             <li>
     *                <p>The association for which you specify a duration is cancelable according to the parameters
     *      of the SSM command document or Automation runbook associated with this execution. </p>
     *             </li>
     *             <li>
     *                <p>The command specifies the <code>
     *                      <a href="https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateAssociation.html#systemsmanager-CreateAssociation-request-ApplyOnlyAtCronInterval">ApplyOnlyAtCronInterval</a>
     *                   </code> parameter, which means that the association doesn't
     *      run immediately after it is created, but only according to the specified schedule.</p>
     *             </li>
     *          </ul>
     * @public
     */
    Duration?: number | undefined;
    /**
     * <p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps
     *    can't be specified together.</p>
     * @public
     */
    TargetMaps?: Record<string, string[]>[] | undefined;
    /**
     * <p>Adds or overwrites one or more tags for a State Manager association.
     *     <i>Tags</i> are metadata that you can assign to your Amazon Web Services resources. Tags enable
     *    you to categorize your resources in different ways, for example, by purpose, owner, or
     *    environment. Each tag consists of a key and an optional value, both of which you define. </p>
     * @public
     */
    Tags?: Tag[] | undefined;
    /**
     * <p>The details for the CloudWatch alarm you want to apply to an automation or
     *    command.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
    /**
     * <p>A role used by association to take actions on your behalf.
     *    State Manager will assume this role and call required APIs when dispatching
     *    configurations to nodes. If not specified, <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/using-service-linked-roles.html">
     *    service-linked role for Systems Manager</a> will be used by default.
     *   </p>
     *          <note>
     *             <p>It is recommended that you define a custom IAM role so that you have full control of
     *     the permissions that State Manager has when taking actions on your behalf.</p>
     *             <p>Service-linked role support in State Manager is being phased out. Associations
     *     relying on service-linked role may require updates in the future to continue
     *     functioning properly.</p>
     *          </note>
     * @public
     */
    AssociationDispatchAssumeRole?: string | undefined;
}
/**
 * <p>Information about the association.</p>
 * @public
 */
export interface AssociationOverview {
    /**
     * <p>The status of the association. Status can be: Pending, Success, or Failed.</p>
     * @public
     */
    Status?: string | undefined;
    /**
     * <p>A detailed status of the association.</p>
     * @public
     */
    DetailedStatus?: string | undefined;
    /**
     * <p>Returns the number of targets for the association status. For example, if you created an
     *    association with two managed nodes, and one of them was successful, this would return the count
     *    of managed nodes by status.</p>
     * @public
     */
    AssociationStatusAggregatedCount?: Record<string, number> | undefined;
}
/**
 * <p>Describes an association status.</p>
 * @public
 */
export interface AssociationStatus {
    /**
     * <p>The date when the status changed.</p>
     * @public
     */
    Date: Date | undefined;
    /**
     * <p>The status.</p>
     * @public
     */
    Name: AssociationStatusName | undefined;
    /**
     * <p>The reason for the status.</p>
     * @public
     */
    Message: string | undefined;
    /**
     * <p>A user-defined string.</p>
     * @public
     */
    AdditionalInfo?: string | undefined;
}
/**
 * <p>Describes the parameters for a document.</p>
 * @public
 */
export interface AssociationDescription {
    /**
     * <p>The name of the SSM document.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The managed node ID.</p>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The association version.</p>
     * @public
     */
    AssociationVersion?: string | undefined;
    /**
     * <p>The date when the association was made.</p>
     * @public
     */
    Date?: Date | undefined;
    /**
     * <p>The date when the association was last updated.</p>
     * @public
     */
    LastUpdateAssociationDate?: Date | undefined;
    /**
     * <p>The association status.</p>
     * @public
     */
    Status?: AssociationStatus | undefined;
    /**
     * <p>Information about the association.</p>
     * @public
     */
    Overview?: AssociationOverview | undefined;
    /**
     * <p>The document version.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>Choose the parameter that will define how your automation will branch out. This target is
     *    required for associations that use an Automation runbook and target resources by using rate
     *    controls. Automation is a tool in Amazon Web Services Systems Manager.</p>
     * @public
     */
    AutomationTargetParameterName?: string | undefined;
    /**
     * <p>A description of the parameters for a document. </p>
     * @public
     */
    Parameters?: Record<string, string[]> | undefined;
    /**
     * <p>The association ID.</p>
     * @public
     */
    AssociationId?: string | undefined;
    /**
     * <p>The managed nodes targeted by the request. </p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>A cron expression that specifies a schedule when the association runs.</p>
     * @public
     */
    ScheduleExpression?: string | undefined;
    /**
     * <p>An S3 bucket where you want to store the output details of the request.</p>
     * @public
     */
    OutputLocation?: InstanceAssociationOutputLocation | undefined;
    /**
     * <p>The date on which the association was last run.</p>
     * @public
     */
    LastExecutionDate?: Date | undefined;
    /**
     * <p>The last date on which the association was successfully run.</p>
     * @public
     */
    LastSuccessfulExecutionDate?: Date | undefined;
    /**
     * <p>The association name.</p>
     * @public
     */
    AssociationName?: string | undefined;
    /**
     * <p>The number of errors that are allowed before the system stops sending requests to run the
     *    association on additional targets. You can specify either an absolute number of errors, for
     *    example 10, or a percentage of the target set, for example 10%. If you specify 3, for example,
     *    the system stops sending requests when the fourth error is received. If you specify 0, then the
     *    system stops sending requests after the first error is returned. If you run an association on 50
     *    managed nodes and set <code>MaxError</code> to 10%, then the system stops sending the request
     *    when the sixth error is received.</p>
     *          <p>Executions that are already running an association when <code>MaxErrors</code> is reached
     *    are allowed to complete, but some of these executions may fail as well. If you need to ensure
     *    that there won't be more than max-errors failed executions, set <code>MaxConcurrency</code> to 1
     *    so that executions proceed one at a time.</p>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>The maximum number of targets allowed to run the association at the same time. You can
     *    specify a number, for example 10, or a percentage of the target set, for example 10%. The default
     *    value is 100%, which means all targets run the association at the same time.</p>
     *          <p>If a new managed node starts and attempts to run an association while Systems Manager is running
     *     <code>MaxConcurrency</code> associations, the association is allowed to run. During the next
     *    association interval, the new managed node will process its association within the limit
     *    specified for <code>MaxConcurrency</code>.</p>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The severity level that is assigned to the association.</p>
     * @public
     */
    ComplianceSeverity?: AssociationComplianceSeverity | undefined;
    /**
     * <p>The mode for generating association compliance. You can specify <code>AUTO</code> or
     *     <code>MANUAL</code>. In <code>AUTO</code> mode, the system uses the status of the association
     *    execution to determine the compliance status. If the association execution runs successfully,
     *    then the association is <code>COMPLIANT</code>. If the association execution doesn't run
     *    successfully, the association is <code>NON-COMPLIANT</code>.</p>
     *          <p>In <code>MANUAL</code> mode, you must specify the <code>AssociationId</code> as a parameter
     *    for the <a>PutComplianceItems</a> API operation. In this case, compliance data isn't
     *    managed by State Manager, a tool in Amazon Web Services Systems Manager. It is managed by your direct call to the <a>PutComplianceItems</a> API operation.</p>
     *          <p>By default, all associations use <code>AUTO</code> mode.</p>
     * @public
     */
    SyncCompliance?: AssociationSyncCompliance | undefined;
    /**
     * <p>By default, when you create a new associations, the system runs it immediately after it is
     *    created and then according to the schedule you specified. Specify this option if you don't want
     *    an association to run immediately after you create it. This parameter isn't supported for rate
     *    expressions.</p>
     * @public
     */
    ApplyOnlyAtCronInterval?: boolean | undefined;
    /**
     * <p>The names or Amazon Resource Names (ARNs) of the Change Calendar type documents your
     *    associations are gated under. The associations only run when that change calendar is open. For
     *    more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar">Amazon Web Services Systems Manager Change
     *     Calendar</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    CalendarNames?: string[] | undefined;
    /**
     * <p>The combination of Amazon Web Services Regions and Amazon Web Services accounts where you want to run the
     *    association.</p>
     * @public
     */
    TargetLocations?: TargetLocation[] | undefined;
    /**
     * <p>Number of days to wait after the scheduled day to run an association.</p>
     * @public
     */
    ScheduleOffset?: number | undefined;
    /**
     * <p>The number of hours that an association can run on specified targets. After the resulting
     *    cutoff time passes, associations that are currently running are cancelled, and no pending
     *    executions are started on remaining targets.</p>
     * @public
     */
    Duration?: number | undefined;
    /**
     * <p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps
     *    can't be specified together.</p>
     * @public
     */
    TargetMaps?: Record<string, string[]>[] | undefined;
    /**
     * <p>The details for the CloudWatch alarm you want to apply to an automation or
     *    command.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
    /**
     * <p>The CloudWatch alarm that was invoked during the association.</p>
     * @public
     */
    TriggeredAlarms?: AlarmStateInformation[] | undefined;
    /**
     * <p>A role used by association to take actions on your behalf.
     *    State Manager will assume this role and call required APIs when dispatching
     *    configurations to nodes. If not specified, <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/using-service-linked-roles.html">
     *    service-linked role for Systems Manager</a> will be used by default.
     *   </p>
     * @public
     */
    AssociationDispatchAssumeRole?: string | undefined;
}
/**
 * @public
 */
export interface CreateAssociationResult {
    /**
     * <p>Information about the association.</p>
     * @public
     */
    AssociationDescription?: AssociationDescription | undefined;
}
/**
 * <p>Describes the association of a Amazon Web Services Systems Manager document (SSM document) and a managed node.</p>
 * @public
 */
export interface CreateAssociationBatchRequestEntry {
    /**
     * <p>The name of the SSM document that contains the configuration information for the managed
     *    node. You can specify Command or Automation runbooks.</p>
     *          <p>You can specify Amazon Web Services-predefined documents, documents you created, or a document that is
     *    shared with you from another account.</p>
     *          <p>For SSM documents that are shared with you from other Amazon Web Services accounts, you must specify the
     *    complete SSM document ARN, in the following format:</p>
     *          <p>
     *             <code>arn:aws:ssm:<i>region</i>:<i>account-id</i>:document/<i>document-name</i>
     *             </code>
     *          </p>
     *          <p>For example:</p>
     *          <p>
     *             <code>arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document</code>
     *          </p>
     *          <p>For Amazon Web Services-predefined documents and SSM documents you created in your account, you only need
     *    to specify the document name. For example, <code>AWS-ApplyPatchBaseline</code> or
     *     <code>My-Document</code>.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The managed node ID.</p>
     *          <note>
     *             <p>
     *                <code>InstanceId</code> has been deprecated. To specify a managed node ID for an
     *     association, use the <code>Targets</code> parameter. Requests that
     *     include the parameter <code>InstanceID</code> with Systems Manager documents (SSM documents) that use
     *     schema version 2.0 or later will fail. In addition, if you use the
     *     parameter <code>InstanceId</code>, you can't use the parameters <code>AssociationName</code>,
     *      <code>DocumentVersion</code>, <code>MaxErrors</code>, <code>MaxConcurrency</code>,
     *      <code>OutputLocation</code>, or <code>ScheduleExpression</code>. To use these parameters, you
     *     must use the <code>Targets</code> parameter.</p>
     *          </note>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>A description of the parameters for a document. </p>
     * @public
     */
    Parameters?: Record<string, string[]> | undefined;
    /**
     * <p>Specify the target for the association. This target is required for associations that use an
     *    Automation runbook and target resources by using rate controls. Automation is a tool in
     *    Amazon Web Services Systems Manager.</p>
     * @public
     */
    AutomationTargetParameterName?: string | undefined;
    /**
     * <p>The document version.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The managed nodes targeted by the request.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>A cron expression that specifies a schedule when the association runs.</p>
     * @public
     */
    ScheduleExpression?: string | undefined;
    /**
     * <p>An S3 bucket where you want to store the results of this request.</p>
     * @public
     */
    OutputLocation?: InstanceAssociationOutputLocation | undefined;
    /**
     * <p>Specify a descriptive name for the association.</p>
     * @public
     */
    AssociationName?: string | undefined;
    /**
     * <p>The number of errors that are allowed before the system stops sending requests to run the
     *    association on additional targets. You can specify either an absolute number of errors, for
     *    example 10, or a percentage of the target set, for example 10%. If you specify 3, for example,
     *    the system stops sending requests when the fourth error is received. If you specify 0, then the
     *    system stops sending requests after the first error is returned. If you run an association on 50
     *    managed nodes and set <code>MaxError</code> to 10%, then the system stops sending the request
     *    when the sixth error is received.</p>
     *          <p>Executions that are already running an association when <code>MaxErrors</code> is reached
     *    are allowed to complete, but some of these executions may fail as well. If you need to ensure
     *    that there won't be more than max-errors failed executions, set <code>MaxConcurrency</code> to 1
     *    so that executions proceed one at a time.</p>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>The maximum number of targets allowed to run the association at the same time. You can
     *    specify a number, for example 10, or a percentage of the target set, for example 10%. The default
     *    value is 100%, which means all targets run the association at the same time.</p>
     *          <p>If a new managed node starts and attempts to run an association while Systems Manager is running
     *     <code>MaxConcurrency</code> associations, the association is allowed to run. During the next
     *    association interval, the new managed node will process its association within the limit
     *    specified for <code>MaxConcurrency</code>.</p>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The severity level to assign to the association.</p>
     * @public
     */
    ComplianceSeverity?: AssociationComplianceSeverity | undefined;
    /**
     * <p>The mode for generating association compliance. You can specify <code>AUTO</code> or
     *     <code>MANUAL</code>. In <code>AUTO</code> mode, the system uses the status of the association
     *    execution to determine the compliance status. If the association execution runs successfully,
     *    then the association is <code>COMPLIANT</code>. If the association execution doesn't run
     *    successfully, the association is <code>NON-COMPLIANT</code>. </p>
     *          <p>In <code>MANUAL</code> mode, you must specify the <code>AssociationId</code> as a parameter
     *    for the <a>PutComplianceItems</a> API operation. In this case, compliance data isn't
     *    managed by State Manager, a tool in Amazon Web Services Systems Manager. It is managed by your direct call to the <a>PutComplianceItems</a> API operation.</p>
     *          <p>By default, all associations use <code>AUTO</code> mode.</p>
     * @public
     */
    SyncCompliance?: AssociationSyncCompliance | undefined;
    /**
     * <p>By default, when you create a new association, the system runs it immediately after it is
     *    created and then according to the schedule you specified and when target changes are detected.
     *    Specify <code>true</code> for <code>ApplyOnlyAtCronInterval</code> if you want the association to
     *    run only according to the schedule you specified.</p>
     *          <p>For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-about.html#state-manager-about-scheduling">Understanding when associations are applied to resources</a> and <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/state-manager-about.html#runbook-target-updates">>About
     *     target updates with Automation runbooks</a> in the
     *    <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *          <p>This parameter isn't supported for rate expressions.</p>
     * @public
     */
    ApplyOnlyAtCronInterval?: boolean | undefined;
    /**
     * <p>The names or Amazon Resource Names (ARNs) of the Change Calendar type documents your
     *    associations are gated under. The associations only run when that Change Calendar is open. For
     *    more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar">Amazon Web Services Systems Manager Change
     *     Calendar</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    CalendarNames?: string[] | undefined;
    /**
     * <p>Use this action to create an association in multiple Regions and multiple accounts.</p>
     * @public
     */
    TargetLocations?: TargetLocation[] | undefined;
    /**
     * <p>Number of days to wait after the scheduled day to run an association.</p>
     * @public
     */
    ScheduleOffset?: number | undefined;
    /**
     * <p>The number of hours the association can run before it is canceled. Duration applies to
     *    associations that are currently running, and any pending and in progress commands on all targets.
     *    If a target was taken offline for the association to run, it is made available again immediately,
     *    without a reboot. </p>
     *          <p>The <code>Duration</code> parameter applies only when both these conditions are true:</p>
     *          <ul>
     *             <li>
     *                <p>The association for which you specify a duration is cancelable according to the parameters
     *      of the SSM command document or Automation runbook associated with this execution. </p>
     *             </li>
     *             <li>
     *                <p>The command specifies the <code>
     *                      <a href="https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_CreateAssociationBatchRequestEntry.html#systemsmanager-Type-CreateAssociationBatchRequestEntry-ApplyOnlyAtCronInterval">ApplyOnlyAtCronInterval</a>
     *                   </code> parameter, which means that the association doesn't
     *      run immediately after it is created, but only according to the specified schedule.</p>
     *             </li>
     *          </ul>
     * @public
     */
    Duration?: number | undefined;
    /**
     * <p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps
     *    can't be specified together.</p>
     * @public
     */
    TargetMaps?: Record<string, string[]>[] | undefined;
    /**
     * <p>The details for the CloudWatch alarm you want to apply to an automation or
     *    command.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
}
/**
 * @public
 */
export interface CreateAssociationBatchRequest {
    /**
     * <p>One or more associations.</p>
     * @public
     */
    Entries: CreateAssociationBatchRequestEntry[] | undefined;
    /**
     * <p>A role used by association to take actions on your behalf.
     *    State Manager will assume this role and call required APIs when dispatching
     *    configurations to nodes. If not specified, <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/using-service-linked-roles.html">
     *    service-linked role for Systems Manager</a> will be used by default.
     *   </p>
     *          <note>
     *             <p>It is recommended that you define a custom IAM role so that you have full control of
     *     the permissions that State Manager has when taking actions on your behalf.</p>
     *             <p>Service-linked role support in State Manager is being phased out. Associations
     *     relying on service-linked role may require updates in the future to continue
     *     functioning properly.</p>
     *          </note>
     * @public
     */
    AssociationDispatchAssumeRole?: string | undefined;
}
/**
 * <p>Describes a failed association.</p>
 * @public
 */
export interface FailedCreateAssociation {
    /**
     * <p>The association.</p>
     * @public
     */
    Entry?: CreateAssociationBatchRequestEntry | undefined;
    /**
     * <p>A description of the failure.</p>
     * @public
     */
    Message?: string | undefined;
    /**
     * <p>The source of the failure.</p>
     * @public
     */
    Fault?: Fault | undefined;
}
/**
 * @public
 */
export interface CreateAssociationBatchResult {
    /**
     * <p>Information about the associations that succeeded.</p>
     * @public
     */
    Successful?: AssociationDescription[] | undefined;
    /**
     * <p>Information about the associations that failed.</p>
     * @public
     */
    Failed?: FailedCreateAssociation[] | undefined;
}
/**
 * <p>Information about an Azure subscription targeted by the cloud connector.</p>
 * @public
 */
export interface AzureSubscription {
    /**
     * <p>The ID of the Azure subscription.</p>
     * @public
     */
    Id: string | undefined;
    /**
     * <p>The display name of the Azure subscription.</p>
     * @public
     */
    DisplayName?: string | undefined;
}
/**
 * <p>The target resources in the third-party cloud environment.</p>
 * @public
 */
export type ConfigurationTargets = ConfigurationTargets.SubscriptionsMember | ConfigurationTargets.$UnknownMember;
/**
 * @public
 */
export declare namespace ConfigurationTargets {
    /**
     * <p>A list of Azure subscriptions to target.</p>
     * @public
     */
    interface SubscriptionsMember {
        Subscriptions: AzureSubscription[];
        $unknown?: never;
    }
    /**
     * @public
     */
    interface $UnknownMember {
        Subscriptions?: never;
        $unknown: [string, any];
    }
    /**
     * @deprecated unused in schema-serde mode.
     *
     */
    interface Visitor<T> {
        Subscriptions: (value: AzureSubscription[]) => T;
        _: (name: string, value: any) => T;
    }
}
/**
 * <p>The access details and targets for connecting to a Microsoft Azure tenant, including
 *    the application registration used for authentication and the subscriptions to target.</p>
 * @public
 */
export interface AzureConfiguration {
    /**
     * <p>The ID of the Azure tenant.</p>
     * @public
     */
    TenantId: string | undefined;
    /**
     * <p>The display name of the Azure tenant.</p>
     * @public
     */
    TenantDisplayName?: string | undefined;
    /**
     * <p>The ID of the Azure application registration used for authentication.</p>
     * @public
     */
    ApplicationId: string | undefined;
    /**
     * <p>The display name of the Azure application registration.</p>
     * @public
     */
    ApplicationDisplayName?: string | undefined;
    /**
     * <p>The target Azure subscriptions for the cloud connector.</p>
     * @public
     */
    Targets?: ConfigurationTargets | undefined;
}
/**
 * <p>The configuration that provides access details and targets for connecting to a third-party
 *    cloud environment.</p>
 * @public
 */
export type CloudConnectorConfiguration = CloudConnectorConfiguration.AzureConfigurationMember | CloudConnectorConfiguration.$UnknownMember;
/**
 * @public
 */
export declare namespace CloudConnectorConfiguration {
    /**
     * <p>The access details and targets for connecting to a Microsoft Azure environment.</p>
     * @public
     */
    interface AzureConfigurationMember {
        AzureConfiguration: AzureConfiguration;
        $unknown?: never;
    }
    /**
     * @public
     */
    interface $UnknownMember {
        AzureConfiguration?: never;
        $unknown: [string, any];
    }
    /**
     * @deprecated unused in schema-serde mode.
     *
     */
    interface Visitor<T> {
        AzureConfiguration: (value: AzureConfiguration) => T;
        _: (name: string, value: any) => T;
    }
}
/**
 * @public
 */
export interface CreateCloudConnectorRequest {
    /**
     * <p>A friendly name for the cloud connector.</p>
     * @public
     */
    DisplayName: string | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the IAM role that the cloud connector
     *    uses to communicate with the third-party cloud environment.</p>
     * @public
     */
    RoleArn: string | undefined;
    /**
     * <p>A description for the cloud connector.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The configuration details for connecting to the third-party cloud environment.</p>
     * @public
     */
    Configuration: CloudConnectorConfiguration | undefined;
    /**
     * <p>The ARN of the Amazon Web Services Config connector associated with this cloud connector.</p>
     * @public
     */
    ConfigConnectorArn: string | undefined;
    /**
     * <p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource
     *    in different ways, such as by purpose, owner, or environment.</p>
     * @public
     */
    Tags?: Tag[] | undefined;
}
/**
 * @public
 */
export interface CreateCloudConnectorResult {
    /**
     * <p>The ID of the cloud connector that was created.</p>
     * @public
     */
    CloudConnectorId?: string | undefined;
}
/**
 * <p>Identifying information about a document attachment, including the file name and a key-value
 *    pair that identifies the location of an attachment to a document.</p>
 * @public
 */
export interface AttachmentsSource {
    /**
     * <p>The key of a key-value pair that identifies the location of an attachment to a
     *    document.</p>
     * @public
     */
    Key?: AttachmentsSourceKey | undefined;
    /**
     * <p>The value of a key-value pair that identifies the location of an attachment to a document.
     *    The format for <b>Value</b> depends on the type of key you
     *    specify.</p>
     *          <ul>
     *             <li>
     *                <p>For the key <i>SourceUrl</i>, the value is an S3 bucket location. For
     *      example:</p>
     *                <p>
     *                   <code>"Values": [ "s3://amzn-s3-demo-bucket/my-prefix" ]</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>For the key <i>S3FileUrl</i>, the value is a file in an S3 bucket. For
     *      example:</p>
     *                <p>
     *                   <code>"Values": [ "s3://amzn-s3-demo-bucket/my-prefix/my-file.py" ]</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>For the key <i>AttachmentReference</i>, the value is constructed from the
     *      name of another SSM document in your account, a version number of that document, and a file
     *      attached to that document version that you want to reuse. For example:</p>
     *                <p>
     *                   <code>"Values": [ "MyOtherDocument/3/my-other-file.py" ]</code>
     *                </p>
     *                <p>However, if the SSM document is shared with you from another account, the full SSM
     *      document ARN must be specified instead of the document name only. For example:</p>
     *                <p>
     *                   <code>"Values": [
     *       "arn:aws:ssm:us-east-2:111122223333:document/OtherAccountDocument/3/their-file.py"
     *       ]</code>
     *                </p>
     *             </li>
     *          </ul>
     * @public
     */
    Values?: string[] | undefined;
    /**
     * <p>The name of the document attachment file.</p>
     * @public
     */
    Name?: string | undefined;
}
/**
 * <p>An SSM document required by the current document.</p>
 * @public
 */
export interface DocumentRequires {
    /**
     * <p>The name of the required SSM document. The name can be an Amazon Resource Name (ARN).</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The document version required by the current document.</p>
     * @public
     */
    Version?: string | undefined;
    /**
     * <p>The document type of the required SSM document.</p>
     * @public
     */
    RequireType?: string | undefined;
    /**
     * <p>An optional field specifying the version of the artifact associated with the document. For
     *    example, 12.6. This value is unique across all versions of a document, and can't be
     *    changed.</p>
     * @public
     */
    VersionName?: string | undefined;
}
/**
 * @public
 */
export interface CreateDocumentRequest {
    /**
     * <p>The content for the new SSM document in JSON or YAML format. The content of the document
     *    must not exceed 64KB. This quota also includes the content specified for input parameters at
     *    runtime. We recommend storing the contents for your new document in an external JSON or YAML file
     *    and referencing the file in a command.</p>
     *          <p>For examples, see the following topics in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-using.html#create-ssm-console">Create an SSM
     *       document (console)</a>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-using.html#create-ssm-document-cli">Create an
     *       SSM document (command line)</a>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-using.html#create-ssm-document-api">Create an
     *       SSM document (API)</a>
     *                </p>
     *             </li>
     *          </ul>
     * @public
     */
    Content: string | undefined;
    /**
     * <p>A list of SSM documents required by a document. This parameter is used exclusively by
     *    AppConfig. When a user creates an AppConfig configuration in an SSM document, the user must also
     *    specify a required document for validation purposes. In this case, an
     *     <code>ApplicationConfiguration</code> document requires an
     *     <code>ApplicationConfigurationSchema</code> document for validation purposes. For more
     *    information, see <a href="https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html">What is AppConfig?</a> in the
     *     <i>AppConfig User Guide</i>.</p>
     * @public
     */
    Requires?: DocumentRequires[] | undefined;
    /**
     * <p>A list of key-value pairs that describe attachments to a version of a document.</p>
     * @public
     */
    Attachments?: AttachmentsSource[] | undefined;
    /**
     * <p>A name for the SSM document.</p>
     *          <important>
     *             <p>You can't use the following strings as document name prefixes. These are reserved by Amazon Web Services
     *     for use as document name prefixes:</p>
     *             <ul>
     *                <li>
     *                   <p>
     *                      <code>aws</code>
     *                   </p>
     *                </li>
     *                <li>
     *                   <p>
     *                      <code>amazon</code>
     *                   </p>
     *                </li>
     *                <li>
     *                   <p>
     *                      <code>amzn</code>
     *                   </p>
     *                </li>
     *                <li>
     *                   <p>
     *                      <code>AWSEC2</code>
     *                   </p>
     *                </li>
     *                <li>
     *                   <p>
     *                      <code>AWSConfigRemediation</code>
     *                   </p>
     *                </li>
     *                <li>
     *                   <p>
     *                      <code>AWSSupport</code>
     *                   </p>
     *                </li>
     *             </ul>
     *          </important>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>An optional field where you can specify a friendly name for the SSM document. This value can
     *    differ for each version of the document. You can update this value at a later time using the
     *     <a>UpdateDocument</a> operation.</p>
     * @public
     */
    DisplayName?: string | undefined;
    /**
     * <p>An optional field specifying the version of the artifact you are creating with the document.
     *    For example, <code>Release12.1</code>. This value is unique across all versions of a document,
     *    and can't be changed.</p>
     * @public
     */
    VersionName?: string | undefined;
    /**
     * <p>The type of document to create.</p>
     *          <note>
     *             <p>The <code>DeploymentStrategy</code> document type is an internal-use-only document type
     *     reserved for AppConfig.</p>
     *          </note>
     * @public
     */
    DocumentType?: DocumentType | undefined;
    /**
     * <p>Specify the document format for the request. The document format can be JSON, YAML, or TEXT.
     *    JSON is the default format.</p>
     * @public
     */
    DocumentFormat?: DocumentFormat | undefined;
    /**
     * <p>Specify a target type to define the kinds of resources the document can run on. For example,
     *    to run a document on EC2 instances, specify the following value:
     *    <code>/AWS::EC2::Instance</code>. If you specify a value of '/' the document can run on all types
     *    of resources. If you don't specify a value, the document can't run on any resources. For a list
     *    of valid resource types, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html">Amazon Web Services resource and
     *     property types reference</a> in the <i>CloudFormation User Guide</i>. </p>
     * @public
     */
    TargetType?: string | undefined;
    /**
     * <p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in
     *    different ways, such as by purpose, owner, or environment. For example, you might want to tag an
     *    SSM document to identify the types of targets or the environment where it will run. In this case,
     *    you could specify the following key-value pairs:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>Key=OS,Value=Windows</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Key=Environment,Value=Production</code>
     *                </p>
     *             </li>
     *          </ul>
     *          <note>
     *             <p>To add tags to an existing SSM document, use the <a>AddTagsToResource</a>
     *     operation.</p>
     *          </note>
     * @public
     */
    Tags?: Tag[] | undefined;
}
/**
 * <p>An attribute of an attachment, such as the attachment name.</p>
 * @public
 */
export interface AttachmentInformation {
    /**
     * <p>The name of the attachment.</p>
     * @public
     */
    Name?: string | undefined;
}
/**
 * <p>Parameters specified in a Systems Manager document that run on the server when the command is run.
 *   </p>
 * @public
 */
export interface DocumentParameter {
    /**
     * <p>The name of the parameter.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The type of parameter. The type can be either String or StringList.</p>
     * @public
     */
    Type?: DocumentParameterType | undefined;
    /**
     * <p>A description of what the parameter does, how to use it, the default value, and whether or
     *    not the parameter is optional.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>If specified, the default values for the parameters. Parameters without a default value are
     *    required. Parameters with a default value are optional.</p>
     * @public
     */
    DefaultValue?: string | undefined;
}
/**
 * <p>Information about the result of a document review request.</p>
 * @public
 */
export interface ReviewInformation {
    /**
     * <p>The time that the reviewer took action on the document review request.</p>
     * @public
     */
    ReviewedTime?: Date | undefined;
    /**
     * <p>The current status of the document review request.</p>
     * @public
     */
    Status?: ReviewStatus | undefined;
    /**
     * <p>The reviewer assigned to take action on the document review request.</p>
     * @public
     */
    Reviewer?: string | undefined;
}
/**
 * <p>Describes an Amazon Web Services Systems Manager document (SSM document). </p>
 * @public
 */
export interface DocumentDescription {
    /**
     * <p>The SHA1 hash of the document, which you can use for verification.</p>
     * @public
     */
    Sha1?: string | undefined;
    /**
     * <p>The Sha256 or Sha1 hash created by the system when the document was created. </p>
     *          <note>
     *             <p>Sha1 hashes have been deprecated.</p>
     *          </note>
     * @public
     */
    Hash?: string | undefined;
    /**
     * <p>The hash type of the document. Valid values include <code>Sha256</code> or
     *    <code>Sha1</code>.</p>
     *          <note>
     *             <p>Sha1 hashes have been deprecated.</p>
     *          </note>
     * @public
     */
    HashType?: DocumentHashType | undefined;
    /**
     * <p>The name of the SSM document.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The friendly name of the SSM document. This value can differ for each version of the
     *    document. If you want to update this value, see <a>UpdateDocument</a>.</p>
     * @public
     */
    DisplayName?: string | undefined;
    /**
     * <p>The version of the artifact associated with the document.</p>
     * @public
     */
    VersionName?: string | undefined;
    /**
     * <p>The Amazon Web Services user that created the document.</p>
     * @public
     */
    Owner?: string | undefined;
    /**
     * <p>The date when the document was created.</p>
     * @public
     */
    CreatedDate?: Date | undefined;
    /**
     * <p>The status of the SSM document.</p>
     * @public
     */
    Status?: DocumentStatus | undefined;
    /**
     * <p>A message returned by Amazon Web Services Systems Manager that explains the <code>Status</code> value. For example, a
     *     <code>Failed</code> status might be explained by the <code>StatusInformation</code> message,
     *    "The specified S3 bucket doesn't exist. Verify that the URL of the S3 bucket is correct."</p>
     * @public
     */
    StatusInformation?: string | undefined;
    /**
     * <p>The document version.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>A description of the document. </p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>A description of the parameters for a document.</p>
     * @public
     */
    Parameters?: DocumentParameter[] | undefined;
    /**
     * <p>The list of operating system (OS) platforms compatible with this SSM document. </p>
     * @public
     */
    PlatformTypes?: PlatformType[] | undefined;
    /**
     * <p>The type of document.</p>
     * @public
     */
    DocumentType?: DocumentType | undefined;
    /**
     * <p>The schema version.</p>
     * @public
     */
    SchemaVersion?: string | undefined;
    /**
     * <p>The latest version of the document.</p>
     * @public
     */
    LatestVersion?: string | undefined;
    /**
     * <p>The default version.</p>
     * @public
     */
    DefaultVersion?: string | undefined;
    /**
     * <p>The document format, either JSON or YAML.</p>
     * @public
     */
    DocumentFormat?: DocumentFormat | undefined;
    /**
     * <p>The target type which defines the kinds of resources the document can run on. For example,
     *     <code>/AWS::EC2::Instance</code>. For a list of valid resource types, see <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html">Amazon Web Services resource and
     *     property types reference</a> in the <i>CloudFormation User Guide</i>. </p>
     * @public
     */
    TargetType?: string | undefined;
    /**
     * <p>The tags, or metadata, that have been applied to the document.</p>
     * @public
     */
    Tags?: Tag[] | undefined;
    /**
     * <p>Details about the document attachments, including names, locations, sizes, and so on.</p>
     * @public
     */
    AttachmentsInformation?: AttachmentInformation[] | undefined;
    /**
     * <p>A list of SSM documents required by a document. For example, an
     *     <code>ApplicationConfiguration</code> document requires an
     *     <code>ApplicationConfigurationSchema</code> document.</p>
     * @public
     */
    Requires?: DocumentRequires[] | undefined;
    /**
     * <p>The user in your organization who created the document.</p>
     * @public
     */
    Author?: string | undefined;
    /**
     * <p>Details about the review of a document.</p>
     * @public
     */
    ReviewInformation?: ReviewInformation[] | undefined;
    /**
     * <p>The version of the document currently approved for use in the organization.</p>
     * @public
     */
    ApprovedVersion?: string | undefined;
    /**
     * <p>The version of the document that is currently under review.</p>
     * @public
     */
    PendingReviewVersion?: string | undefined;
    /**
     * <p>The current status of the review.</p>
     * @public
     */
    ReviewStatus?: ReviewStatus | undefined;
    /**
     * <p>The classification of a document to help you identify and categorize its use.</p>
     * @public
     */
    Category?: string[] | undefined;
    /**
     * <p>The value that identifies a document's category.</p>
     * @public
     */
    CategoryEnum?: string[] | undefined;
}
/**
 * @public
 */
export interface CreateDocumentResult {
    /**
     * <p>Information about the SSM document.</p>
     * @public
     */
    DocumentDescription?: DocumentDescription | undefined;
}
/**
 * @public
 */
export interface CreateMaintenanceWindowRequest {
    /**
     * <p>The name of the maintenance window.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>An optional description for the maintenance window. We recommend specifying a description to
     *    help you organize your maintenance windows. </p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The date and time, in ISO-8601 Extended format, for when you want the maintenance window to
     *    become active. <code>StartDate</code> allows you to delay activation of the maintenance window
     *    until the specified future date.</p>
     *          <note>
     *             <p>When using a rate schedule, if you provide a start date that occurs in the past, the
     *     current date and time are used as the start date. </p>
     *          </note>
     * @public
     */
    StartDate?: string | undefined;
    /**
     * <p>The date and time, in ISO-8601 Extended format, for when you want the maintenance window to
     *    become inactive. <code>EndDate</code> allows you to set a date and time in the future when the
     *    maintenance window will no longer run.</p>
     * @public
     */
    EndDate?: string | undefined;
    /**
     * <p>The schedule of the maintenance window in the form of a cron or rate expression.</p>
     * @public
     */
    Schedule: string | undefined;
    /**
     * <p>The time zone that the scheduled maintenance window executions are based on, in Internet
     *    Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", "UTC", or
     *    "Asia/Seoul". For more information, see the <a href="https://www.iana.org/time-zones">Time
     *     Zone Database</a> on the IANA website.</p>
     * @public
     */
    ScheduleTimezone?: string | undefined;
    /**
     * <p>The number of days to wait after the date and time specified by a cron expression before
     *    running the maintenance window.</p>
     *          <p>For example, the following cron expression schedules a maintenance window to run on the
     *    third Tuesday of every month at 11:30 PM.</p>
     *          <p>
     *             <code>cron(30 23 ? * TUE#3 *)</code>
     *          </p>
     *          <p>If the schedule offset is <code>2</code>, the maintenance window won't run until two days
     *    later.</p>
     * @public
     */
    ScheduleOffset?: number | undefined;
    /**
     * <p>The duration of the maintenance window in hours.</p>
     * @public
     */
    Duration: number | undefined;
    /**
     * <p>The number of hours before the end of the maintenance window that Amazon Web Services Systems Manager stops scheduling
     *    new tasks for execution.</p>
     * @public
     */
    Cutoff: number | undefined;
    /**
     * <p>Enables a maintenance window task to run on managed nodes, even if you haven't registered
     *    those nodes as targets. If enabled, then you must specify the unregistered managed nodes (by node
     *    ID) when you register a task with the maintenance window.</p>
     *          <p>If you don't enable this option, then you must specify previously-registered targets when
     *    you register a task with the maintenance window.</p>
     * @public
     */
    AllowUnassociatedTargets: boolean | undefined;
    /**
     * <p>User-provided idempotency token.</p>
     * @public
     */
    ClientToken?: string | undefined;
    /**
     * <p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in
     *    different ways, such as by purpose, owner, or environment. For example, you might want to tag a
     *    maintenance window to identify the type of tasks it will run, the types of targets, and the
     *    environment it will run in. In this case, you could specify the following key-value pairs:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>Key=TaskType,Value=AgentUpdate</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Key=OS,Value=Windows</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Key=Environment,Value=Production</code>
     *                </p>
     *             </li>
     *          </ul>
     *          <note>
     *             <p>To add tags to an existing maintenance window, use the <a>AddTagsToResource</a>
     *     operation.</p>
     *          </note>
     * @public
     */
    Tags?: Tag[] | undefined;
}
/**
 * @public
 */
export interface CreateMaintenanceWindowResult {
    /**
     * <p>The ID of the created maintenance window.</p>
     * @public
     */
    WindowId?: string | undefined;
}
/**
 * <p>A notification about the OpsItem.</p>
 * @public
 */
export interface OpsItemNotification {
    /**
     * <p>The Amazon Resource Name (ARN) of an Amazon Simple Notification Service (Amazon SNS) topic where
     *    notifications are sent when this OpsItem is edited or changed.</p>
     * @public
     */
    Arn?: string | undefined;
}
/**
 * <p>An object that defines the value of the key and its type in the OperationalData map.</p>
 * @public
 */
export interface OpsItemDataValue {
    /**
     * <p>The value of the OperationalData key.</p>
     * @public
     */
    Value?: string | undefined;
    /**
     * <p>The type of key-value pair. Valid types include <code>SearchableString</code> and
     *     <code>String</code>.</p>
     * @public
     */
    Type?: OpsItemDataType | undefined;
}
/**
 * <p>An OpsItems that shares something in common with the current OpsItem. For example, related
 *    OpsItems can include OpsItems with similar error messages, impacted resources, or statuses for
 *    the impacted resource.</p>
 * @public
 */
export interface RelatedOpsItem {
    /**
     * <p>The ID of an OpsItem related to the current OpsItem.</p>
     * @public
     */
    OpsItemId: string | undefined;
}
/**
 * @public
 */
export interface CreateOpsItemRequest {
    /**
     * <p>User-defined text that contains information about the OpsItem, in Markdown format. </p>
     *          <note>
     *             <p>Provide enough information so that users viewing this OpsItem for the first time understand
     *     the issue. </p>
     *          </note>
     * @public
     */
    Description: string | undefined;
    /**
     * <p>The type of OpsItem to create. Systems Manager supports the following types of OpsItems:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>/aws/issue</code>
     *                </p>
     *                <p>This type of OpsItem is used for default OpsItems created by OpsCenter. </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>/aws/insight</code>
     *                </p>
     *                <p>This type of OpsItem is used by OpsCenter for aggregating and reporting on duplicate
     *      OpsItems. </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>/aws/changerequest</code>
     *                </p>
     *                <p>This type of OpsItem is used by Change Manager for reviewing and approving or rejecting change
     *      requests. </p>
     *                <important>
     *                   <p>Amazon Web Services Systems Manager Change Manager is no longer open to new customers. Existing customers can
     *   continue to use the service as normal. For more information, see
     * <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/change-manager-availability-change.html">Amazon Web Services Systems Manager Change Manager availability change</a>.</p>
     *                </important>
     *             </li>
     *          </ul>
     * @public
     */
    OpsItemType?: string | undefined;
    /**
     * <p>Operational data is custom data that provides useful reference details about the OpsItem.
     *    For example, you can specify log files, error strings, license keys, troubleshooting tips, or
     *    other relevant data. You enter operational data as key-value pairs. The key has a maximum length
     *    of 128 characters. The value has a maximum size of 20 KB.</p>
     *          <important>
     *             <p>Operational data keys <i>can't</i> begin with the following:
     *      <code>amazon</code>, <code>aws</code>, <code>amzn</code>, <code>ssm</code>,
     *      <code>/amazon</code>, <code>/aws</code>, <code>/amzn</code>, <code>/ssm</code>.</p>
     *          </important>
     *          <p>You can choose to make the data searchable by other users in the account or you can restrict
     *    search access. Searchable data means that all users with access to the OpsItem Overview page (as
     *    provided by the <a>DescribeOpsItems</a> API operation) can view and search on the
     *    specified data. Operational data that isn't searchable is only viewable by users who have access
     *    to the OpsItem (as provided by the <a>GetOpsItem</a> API operation).</p>
     *          <p>Use the <code>/aws/resources</code> key in OperationalData to specify a related resource in
     *    the request. Use the <code>/aws/automations</code> key in OperationalData to associate an
     *    Automation runbook with the OpsItem. To view Amazon Web Services CLI example commands that use these keys, see
     *     <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-manually-create-OpsItems.html">Create OpsItems
     *     manually</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    OperationalData?: Record<string, OpsItemDataValue> | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of an SNS topic where notifications are sent when this
     *    OpsItem is edited or changed.</p>
     * @public
     */
    Notifications?: OpsItemNotification[] | undefined;
    /**
     * <p>The importance of this OpsItem in relation to other OpsItems in the system.</p>
     * @public
     */
    Priority?: number | undefined;
    /**
     * <p>One or more OpsItems that share something in common with the current OpsItems. For example,
     *    related OpsItems can include OpsItems with similar error messages, impacted resources, or
     *    statuses for the impacted resource.</p>
     * @public
     */
    RelatedOpsItems?: RelatedOpsItem[] | undefined;
    /**
     * <p>The origin of the OpsItem, such as Amazon EC2 or Systems Manager.</p>
     *          <note>
     *             <p>The source name can't contain the following strings: <code>aws</code>, <code>amazon</code>,
     *     and <code>amzn</code>. </p>
     *          </note>
     * @public
     */
    Source: string | undefined;
    /**
     * <p>A short heading that describes the nature of the OpsItem and the impacted resource.</p>
     * @public
     */
    Title: string | undefined;
    /**
     * <p>Optional metadata that you assign to a resource.</p>
     *          <p>Tags use a key-value pair. For example:</p>
     *          <p>
     *             <code>Key=Department,Value=Finance</code>
     *          </p>
     *          <important>
     *             <p>To add tags to a new OpsItem, a user must have IAM permissions for both the
     *      <code>ssm:CreateOpsItems</code> operation and the <code>ssm:AddTagsToResource</code> operation.
     *     To add tags to an existing OpsItem, use the <a>AddTagsToResource</a>
     *     operation.</p>
     *          </important>
     * @public
     */
    Tags?: Tag[] | undefined;
    /**
     * <p>Specify a category to assign to an OpsItem. </p>
     * @public
     */
    Category?: string | undefined;
    /**
     * <p>Specify a severity to assign to an OpsItem.</p>
     * @public
     */
    Severity?: string | undefined;
    /**
     * <p>The time a runbook workflow started. Currently reported only for the OpsItem type
     *     <code>/aws/changerequest</code>.</p>
     * @public
     */
    ActualStartTime?: Date | undefined;
    /**
     * <p>The time a runbook workflow ended. Currently reported only for the OpsItem type
     *     <code>/aws/changerequest</code>.</p>
     * @public
     */
    ActualEndTime?: Date | undefined;
    /**
     * <p>The time specified in a change request for a runbook workflow to start. Currently supported
     *    only for the OpsItem type <code>/aws/changerequest</code>.</p>
     * @public
     */
    PlannedStartTime?: Date | undefined;
    /**
     * <p>The time specified in a change request for a runbook workflow to end. Currently supported
     *    only for the OpsItem type <code>/aws/changerequest</code>.</p>
     * @public
     */
    PlannedEndTime?: Date | undefined;
    /**
     * <p>The target Amazon Web Services account where you want to create an OpsItem. To make this call, your account
     *    must be configured to work with OpsItems across accounts. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-setup.html">Set up
     *     OpsCenter</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    AccountId?: string | undefined;
}
/**
 * @public
 */
export interface CreateOpsItemResponse {
    /**
     * <p>The ID of the OpsItem.</p>
     * @public
     */
    OpsItemId?: string | undefined;
    /**
     * <p>The OpsItem Amazon Resource Name (ARN).</p>
     * @public
     */
    OpsItemArn?: string | undefined;
}
/**
 * <p>Metadata to assign to an Application Manager application.</p>
 * @public
 */
export interface MetadataValue {
    /**
     * <p>Metadata value to assign to an Application Manager application.</p>
     * @public
     */
    Value?: string | undefined;
}
/**
 * @public
 */
export interface CreateOpsMetadataRequest {
    /**
     * <p>A resource ID for a new Application Manager application.</p>
     * @public
     */
    ResourceId: string | undefined;
    /**
     * <p>Metadata for a new Application Manager application. </p>
     * @public
     */
    Metadata?: Record<string, MetadataValue> | undefined;
    /**
     * <p>Optional metadata that you assign to a resource. You can specify a maximum of five tags for
     *    an OpsMetadata object. Tags enable you to categorize a resource in different ways, such as by
     *    purpose, owner, or environment. For example, you might want to tag an OpsMetadata object to
     *    identify an environment or target Amazon Web Services Region. In this case, you could specify the following
     *    key-value pairs:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>Key=Environment,Value=Production</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Key=Region,Value=us-east-2</code>
     *                </p>
     *             </li>
     *          </ul>
     * @public
     */
    Tags?: Tag[] | undefined;
}
/**
 * @public
 */
export interface CreateOpsMetadataResult {
    /**
     * <p>The Amazon Resource Name (ARN) of the OpsMetadata Object or blob created by the call.</p>
     * @public
     */
    OpsMetadataArn?: string | undefined;
}
/**
 * <p> Defines which patches should be included in a patch baseline.</p>
 *          <p>A patch filter consists of a key and a set of values. The filter key is a patch property.
 *    For example, the available filter keys for <code>WINDOWS</code> are <code>PATCH_SET</code>,
 *     <code>PRODUCT</code>, <code>PRODUCT_FAMILY</code>, <code>CLASSIFICATION</code>, and
 *     <code>MSRC_SEVERITY</code>.</p>
 *          <p>The filter values define a matching criterion for the patch property indicated by the key.
 *    For example, if the filter key is <code>PRODUCT</code> and the filter values are <code>["Office
 *     2013", "Office 2016"]</code>, then the filter accepts all patches where product name is either
 *    "Office 2013" or "Office 2016". The filter values can be exact values for the patch property
 *    given as a key, or a wildcard (*), which matches all values.</p>
 *          <p>You can view lists of valid values for the patch properties by running the
 *     <code>DescribePatchProperties</code> command. For information about which patch properties can
 *    be used with each major operating system, see <a>DescribePatchProperties</a>.</p>
 * @public
 */
export interface PatchFilter {
    /**
     * <p>The key for the filter.</p>
     *          <p>Run the <a>DescribePatchProperties</a> command to view lists of valid keys for
     *    each operating system type.</p>
     * @public
     */
    Key: PatchFilterKey | undefined;
    /**
     * <p>The value for the filter key.</p>
     *          <p>Run the <a>DescribePatchProperties</a> command to view lists of valid values for
     *    each key based on operating system type.</p>
     * @public
     */
    Values: string[] | undefined;
}
/**
 * <p>A set of patch filters, typically used for approval rules.</p>
 * @public
 */
export interface PatchFilterGroup {
    /**
     * <p>The set of patch filters that make up the group.</p>
     * @public
     */
    PatchFilters: PatchFilter[] | undefined;
}
/**
 * <p>Defines an approval rule for a patch baseline.</p>
 * @public
 */
export interface PatchRule {
    /**
     * <p>The patch filter group that defines the criteria for the rule.</p>
     * @public
     */
    PatchFilterGroup: PatchFilterGroup | undefined;
    /**
     * <p>A compliance severity level for all approved patches in a patch baseline.</p>
     * @public
     */
    ComplianceLevel?: PatchComplianceLevel | undefined;
    /**
     * <p>The number of days after the release date of each patch matched by the rule that the patch
     *    is marked as approved in the patch baseline. For example, a value of <code>7</code> means that
     *    patches are approved seven days after they are released.</p>
     *          <p>Patch Manager evaluates patch release dates using Coordinated Universal Time (UTC). If a
     *    patch is released at <code>2025-11-09T18:00:00Z</code> and <code>ApproveAfterDays</code> is set to
     *     <code>7</code>, the patch will be approved after <code>2025-11-16T18:00:00Z</code>.</p>
     *          <p>This parameter is marked as <code>Required: No</code>, but your request must include a value
     *    for either <code>ApproveAfterDays</code> or <code>ApproveUntilDate</code>.</p>
     *          <p>Not supported for Debian Server or Ubuntu Server.</p>
     *          <important>
     *             <p>Use caution when setting this value for Windows Server patch baselines. Because patch
     *     updates that are replaced by later updates are removed, setting too broad a value for this
     *     parameter can result in crucial patches not being installed. For more information, see the
     *      <b>Windows Server</b> tab in the topic <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-selecting-patches.html">How security
     *      patches are selected</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *          </important>
     * @public
     */
    ApproveAfterDays?: number | undefined;
    /**
     * <p>The cutoff date for auto approval of released patches. Any patches released on or before
     *    this date are installed automatically.</p>
     *          <p>Enter dates in the format <code>YYYY-MM-DD</code>. For example,
     *    <code>2025-11-16</code>.</p>
     *          <p>Patch Manager evaluates patch release dates using Coordinated Universal Time (UTC). If you
     *    enter the date <code>2025-11-16</code>, patches released between
     *     <code>2025-11-16T00:00:00Z</code> and <code>2025-11-16T23:59:59Z</code> will be included in the
     *    approval.</p>
     *          <p>This parameter is marked as <code>Required: No</code>, but your request must include a value
     *    for either <code>ApproveUntilDate</code> or <code>ApproveAfterDays</code>.</p>
     *          <p>Not supported for Debian Server or Ubuntu Server.</p>
     *          <important>
     *             <p>Use caution when setting this value for Windows Server patch baselines. Because patch
     *     updates that are replaced by later updates are removed, setting too broad a value for this
     *     parameter can result in crucial patches not being installed. For more information, see the
     *      <b>Windows Server</b> tab in the topic <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-selecting-patches.html">How security
     *      patches are selected</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *          </important>
     * @public
     */
    ApproveUntilDate?: string | undefined;
    /**
     * <p>For managed nodes identified by the approval rule filters, enables a patch baseline to apply
     *    non-security updates available in the specified repository. The default value is
     *     <code>false</code>. Applies to Linux managed nodes only.</p>
     * @public
     */
    EnableNonSecurity?: boolean | undefined;
}
/**
 * <p>A set of rules defining the approval rules for a patch baseline.</p>
 * @public
 */
export interface PatchRuleGroup {
    /**
     * <p>The rules that make up the rule group.</p>
     * @public
     */
    PatchRules: PatchRule[] | undefined;
}
/**
 * <p>Information about the patches to use to update the managed nodes, including target operating
 *    systems and source repository. Applies to Linux managed nodes only.</p>
 * @public
 */
export interface PatchSource {
    /**
     * <p>The name specified to identify the patch source.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The specific operating system versions a patch repository applies to, such as "Ubuntu16.04",
     *    "AmazonLinux2016.09", "RedhatEnterpriseLinux7.2" or "Suse12.7". For lists of supported product
     *    values, see <a>PatchFilter</a>.</p>
     * @public
     */
    Products: string[] | undefined;
    /**
     * <p>The value of the repo configuration.</p>
     *          <p>
     *             <b>Example for yum repositories</b>
     *          </p>
     *          <p>
     *             <code>[main]</code>
     *          </p>
     *          <p>
     *             <code>name=MyCustomRepository</code>
     *          </p>
     *          <p>
     *             <code>baseurl=https://my-custom-repository</code>
     *          </p>
     *          <p>
     *             <code>enabled=1</code>
     *          </p>
     *          <p>For information about other options available for your yum repository configuration, see
     *     <a href="https://man7.org/linux/man-pages/man5/dnf.conf.5.html">dnf.conf(5)</a> on the
     *     <i>man7.org</i> website.</p>
     *          <p>
     *             <b>Examples for Ubuntu Server and Debian Server</b>
     *          </p>
     *          <p>
     *             <code>deb http://security.ubuntu.com/ubuntu jammy main</code>
     *          </p>
     *          <p>
     *             <code>deb https://site.example.com/debian distribution component1 component2 component3</code>
     *          </p>
     *          <p>Repo information for Ubuntu Server repositories must be specifed in a single line. For more
     *    examples and information, see <a href="https://manpages.ubuntu.com/manpages/jammy/man5/sources.list.5.html">jammy (5)
     *     sources.list.5.gz</a> on the <i>Ubuntu Server Manuals</i> website and <a href="https://wiki.debian.org/SourcesList#sources.list_format">sources.list format</a> on the
     *     <i>Debian Wiki</i>.</p>
     * @public
     */
    Configuration: string | undefined;
}
/**
 * @public
 */
export interface CreatePatchBaselineRequest {
    /**
     * <p>Defines the operating system the patch baseline applies to. The default value is
     *     <code>WINDOWS</code>.</p>
     * @public
     */
    OperatingSystem?: OperatingSystem | undefined;
    /**
     * <p>The name of the patch baseline.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>A set of global filters used to include patches in the baseline.</p>
     *          <important>
     *             <p>The <code>GlobalFilters</code> parameter can be configured only by using the CLI or an Amazon Web Services SDK. It can't be configured from the Patch Manager
     *     console, and its value isn't displayed in the console.</p>
     *          </important>
     * @public
     */
    GlobalFilters?: PatchFilterGroup | undefined;
    /**
     * <p>A set of rules used to include patches in the baseline.</p>
     * @public
     */
    ApprovalRules?: PatchRuleGroup | undefined;
    /**
     * <p>A list of explicitly approved patches for the baseline.</p>
     *          <p>For information about accepted formats for lists of approved patches and rejected patches,
     *                         see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html">Package
     *                         name formats for approved and rejected patch lists</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    ApprovedPatches?: string[] | undefined;
    /**
     * <p>Defines the compliance level for approved patches. When an approved patch is reported as
     *    missing, this value describes the severity of the compliance violation. The default value is
     *     <code>UNSPECIFIED</code>.</p>
     * @public
     */
    ApprovedPatchesComplianceLevel?: PatchComplianceLevel | undefined;
    /**
     * <p>Indicates whether the list of approved patches includes non-security updates that should be
     *    applied to the managed nodes. The default value is <code>false</code>. Applies to Linux managed
     *    nodes only.</p>
     * @public
     */
    ApprovedPatchesEnableNonSecurity?: boolean | undefined;
    /**
     * <p>A list of explicitly rejected patches for the baseline.</p>
     *          <p>For information about accepted formats for lists of approved patches and rejected patches,
     *                         see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html">Package
     *                         name formats for approved and rejected patch lists</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    RejectedPatches?: string[] | undefined;
    /**
     * <p>The action for Patch Manager to take on patches included in the
     *     <code>RejectedPackages</code> list.</p>
     *          <dl>
     *             <dt>ALLOW_AS_DEPENDENCY</dt>
     *             <dd>
     *                <p>
     *                   <b>Linux and macOS</b>: A package in the rejected patches list
     *       is installed only if it is a dependency of another package. It is considered compliant with
     *       the patch baseline, and its status is reported as <code>INSTALLED_OTHER</code>. This is the
     *       default action if no option is specified.</p>
     *                <p>
     *                   <b>Windows Server</b>: Windows Server doesn't support the
     *       concept of package dependencies. If a package in the rejected patches list and already
     *       installed on the node, its status is reported as <code>INSTALLED_OTHER</code>. Any package not
     *       already installed on the node is skipped. This is the default action if no option is
     *       specified.</p>
     *             </dd>
     *             <dt>BLOCK</dt>
     *             <dd>
     *                <p>
     *                   <b>All OSs</b>: Packages in the rejected patches list, and
     *       packages that include them as dependencies, aren't installed by Patch Manager under any
     *       circumstances. </p>
     *                <p>State value assignment for patch compliance:</p>
     *                <ul>
     *                   <li>
     *                      <p>If a package was installed before it was added to the rejected patches list, or is
     *         installed outside of Patch Manager afterward, it's considered noncompliant with the patch
     *         baseline and its status is reported as <code>INSTALLED_REJECTED</code>.</p>
     *                   </li>
     *                   <li>
     *                      <p>If an update attempts to install a dependency package that is now rejected by the
     *         baseline, when previous versions of the package were not rejected, the package being updated
     *         is reported as <code>MISSING</code> for <code>SCAN</code> operations and as
     *          <code>FAILED</code> for <code>INSTALL</code> operations.</p>
     *                   </li>
     *                </ul>
     *             </dd>
     *          </dl>
     * @public
     */
    RejectedPatchesAction?: PatchAction | undefined;
    /**
     * <p>A description of the patch baseline.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>Information about the patches to use to update the managed nodes, including target operating
     *    systems and source repositories. Applies to Linux managed nodes only.</p>
     * @public
     */
    Sources?: PatchSource[] | undefined;
    /**
     * <p>Indicates the status you want to assign to security patches that are available but not
     *    approved because they don't meet the installation criteria specified in the patch
     *    baseline.</p>
     *          <p>Example scenario: Security patches that you might want installed can be skipped if you have
     *    specified a long period to wait after a patch is released before installation. If an update to
     *    the patch is released during your specified waiting period, the waiting period for installing the
     *    patch starts over. If the waiting period is too long, multiple versions of the patch could be
     *    released but never installed.</p>
     *          <p>Supported for Windows Server managed nodes only.</p>
     * @public
     */
    AvailableSecurityUpdatesComplianceStatus?: PatchComplianceStatus | undefined;
    /**
     * <p>User-provided idempotency token.</p>
     * @public
     */
    ClientToken?: string | undefined;
    /**
     * <p>Optional metadata that you assign to a resource. Tags enable you to categorize a resource in
     *    different ways, such as by purpose, owner, or environment. For example, you might want to tag a
     *    patch baseline to identify the severity level of patches it specifies and the operating system
     *    family it applies to. In this case, you could specify the following key-value pairs:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>Key=PatchSeverity,Value=Critical</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Key=OS,Value=Windows</code>
     *                </p>
     *             </li>
     *          </ul>
     *          <note>
     *             <p>To add tags to an existing patch baseline, use the <a>AddTagsToResource</a>
     *     operation.</p>
     *          </note>
     * @public
     */
    Tags?: Tag[] | undefined;
}
/**
 * @public
 */
export interface CreatePatchBaselineResult {
    /**
     * <p>The ID of the created patch baseline.</p>
     * @public
     */
    BaselineId?: string | undefined;
}
/**
 * <p>Synchronize Amazon Web Services Systems Manager Inventory data from multiple Amazon Web Services accounts defined in Organizations to a
 *    centralized Amazon S3 bucket. Data is synchronized to individual key prefixes in the
 *    central bucket. Each key prefix represents a different Amazon Web Services account ID.</p>
 * @public
 */
export interface ResourceDataSyncDestinationDataSharing {
    /**
     * <p>The sharing data type. Only <code>Organization</code> is supported.</p>
     * @public
     */
    DestinationDataSharingType?: string | undefined;
}
/**
 * <p>Information about the target S3 bucket for the resource data sync.</p>
 * @public
 */
export interface ResourceDataSyncS3Destination {
    /**
     * <p>The name of the S3 bucket where the aggregated data is stored.</p>
     * @public
     */
    BucketName: string | undefined;
    /**
     * <p>An Amazon S3 prefix for the bucket.</p>
     * @public
     */
    Prefix?: string | undefined;
    /**
     * <p>A supported sync format. The following format is currently supported: JsonSerDe</p>
     * @public
     */
    SyncFormat: ResourceDataSyncS3Format | undefined;
    /**
     * <p>The Amazon Web Services Region with the S3 bucket targeted by the resource data sync.</p>
     * @public
     */
    Region: string | undefined;
    /**
     * <p>The ARN of an encryption key for a destination in Amazon S3. Must belong to the same
     *    Region as the destination S3 bucket.</p>
     * @public
     */
    AWSKMSKeyARN?: string | undefined;
    /**
     * <p>Enables destination data sharing. By default, this field is <code>null</code>.</p>
     * @public
     */
    DestinationDataSharing?: ResourceDataSyncDestinationDataSharing | undefined;
}
/**
 * <p>The Organizations organizational unit data source for the sync.</p>
 * @public
 */
export interface ResourceDataSyncOrganizationalUnit {
    /**
     * <p>The Organizations unit ID data source for the sync.</p>
     * @public
     */
    OrganizationalUnitId?: string | undefined;
}
/**
 * <p>Information about the <code>AwsOrganizationsSource</code> resource data sync source. A sync
 *    source of this type can synchronize data from Organizations or, if an Amazon Web Services organization isn't
 *    present, from multiple Amazon Web Services Regions.</p>
 * @public
 */
export interface ResourceDataSyncAwsOrganizationsSource {
    /**
     * <p>If an Amazon Web Services organization is present, this is either <code>OrganizationalUnits</code> or
     *     <code>EntireOrganization</code>. For <code>OrganizationalUnits</code>, the data is aggregated
     *    from a set of organization units. For <code>EntireOrganization</code>, the data is aggregated
     *    from the entire Amazon Web Services organization.</p>
     * @public
     */
    OrganizationSourceType: string | undefined;
    /**
     * <p>The Organizations organization units included in the sync.</p>
     * @public
     */
    OrganizationalUnits?: ResourceDataSyncOrganizationalUnit[] | undefined;
}
/**
 * <p>Information about the source of the data included in the resource data sync.</p>
 * @public
 */
export interface ResourceDataSyncSource {
    /**
     * <p>The type of data source for the resource data sync. <code>SourceType</code> is either
     *     <code>AwsOrganizations</code> (if an organization is present in Organizations) or
     *     <code>SingleAccountMultiRegions</code>.</p>
     * @public
     */
    SourceType: string | undefined;
    /**
     * <p>Information about the <code>AwsOrganizationsSource</code> resource data sync source. A sync
     *    source of this type can synchronize data from Organizations.</p>
     * @public
     */
    AwsOrganizationsSource?: ResourceDataSyncAwsOrganizationsSource | undefined;
    /**
     * <p>The <code>SyncSource</code> Amazon Web Services Regions included in the resource data sync.</p>
     * @public
     */
    SourceRegions: string[] | undefined;
    /**
     * <p>Whether to automatically synchronize and aggregate data from new Amazon Web Services Regions when those
     *    Regions come online.</p>
     * @public
     */
    IncludeFutureRegions?: boolean | undefined;
    /**
     * <p>When you create a resource data sync, if you choose one of the Organizations options, then Systems Manager
     *    automatically enables all OpsData sources in the selected Amazon Web Services Regions for all Amazon Web Services accounts in
     *    your organization (or in the selected organization units). For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/Explorer-resource-data-sync.html">Setting up Systems Manager Explorer to display data from multiple accounts and Regions</a> in
     *    the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    EnableAllOpsDataSources?: boolean | undefined;
}
/**
 * @public
 */
export interface CreateResourceDataSyncRequest {
    /**
     * <p>A name for the configuration.</p>
     * @public
     */
    SyncName: string | undefined;
    /**
     * <p>Amazon S3 configuration details for the sync. This parameter is required if the
     *     <code>SyncType</code> value is SyncToDestination.</p>
     * @public
     */
    S3Destination?: ResourceDataSyncS3Destination | undefined;
    /**
     * <p>Specify <code>SyncToDestination</code> to create a resource data sync that synchronizes data
     *    to an S3 bucket for Inventory. If you specify <code>SyncToDestination</code>, you must provide a
     *    value for <code>S3Destination</code>. Specify <code>SyncFromSource</code> to synchronize data
     *    from a single account and multiple Regions, or multiple Amazon Web Services accounts and Amazon Web Services Regions, as
     *    listed in Organizations for Explorer. If you specify <code>SyncFromSource</code>, you must provide a
     *    value for <code>SyncSource</code>. The default value is <code>SyncToDestination</code>.</p>
     * @public
     */
    SyncType?: string | undefined;
    /**
     * <p>Specify information about the data sources to synchronize. This parameter is required if the
     *     <code>SyncType</code> value is SyncFromSource.</p>
     * @public
     */
    SyncSource?: ResourceDataSyncSource | undefined;
}
/**
 * @public
 */
export interface CreateResourceDataSyncResult {
}
/**
 * @public
 */
export interface DeleteActivationRequest {
    /**
     * <p>The ID of the activation that you want to delete.</p>
     * @public
     */
    ActivationId: string | undefined;
}
/**
 * @public
 */
export interface DeleteActivationResult {
}
/**
 * @public
 */
export interface DeleteAssociationRequest {
    /**
     * <p>The name of the SSM document.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The managed node ID.</p>
     *          <note>
     *             <p>
     *                <code>InstanceId</code> has been deprecated. To specify a managed node ID for an
     *     association, use the <code>Targets</code> parameter. Requests that include the parameter
     *      <code>InstanceID</code> with Systems Manager documents (SSM documents) that use schema version 2.0 or
     *     later will fail. In addition, if you use the parameter <code>InstanceId</code>, you can't use
     *     the parameters <code>AssociationName</code>, <code>DocumentVersion</code>,
     *      <code>MaxErrors</code>, <code>MaxConcurrency</code>, <code>OutputLocation</code>, or
     *      <code>ScheduleExpression</code>. To use these parameters, you must use the <code>Targets</code>
     *     parameter.</p>
     *          </note>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The association ID that you want to delete.</p>
     * @public
     */
    AssociationId?: string | undefined;
}
/**
 * @public
 */
export interface DeleteAssociationResult {
}
/**
 * @public
 */
export interface DeleteCloudConnectorRequest {
    /**
     * <p>The ID of the cloud connector to delete.</p>
     * @public
     */
    CloudConnectorId: string | undefined;
}
/**
 * @public
 */
export interface DeleteCloudConnectorResult {
    /**
     * <p>The ID of the cloud connector that was deleted.</p>
     * @public
     */
    CloudConnectorId?: string | undefined;
}
/**
 * @public
 */
export interface DeleteDocumentRequest {
    /**
     * <p>The name of the document.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The version of the document that you want to delete. If not provided, all versions of the
     *    document are deleted.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The version name of the document that you want to delete. If not provided, all versions of
     *    the document are deleted.</p>
     * @public
     */
    VersionName?: string | undefined;
    /**
     * <p>Some SSM document types require that you specify a <code>Force</code> flag before you can
     *    delete the document. For example, you must specify a <code>Force</code> flag to delete a document
     *    of type <code>ApplicationConfigurationSchema</code>. You can restrict access to the
     *     <code>Force</code> flag in an Identity and Access Management (IAM) policy.</p>
     * @public
     */
    Force?: boolean | undefined;
}
/**
 * @public
 */
export interface DeleteDocumentResult {
}
/**
 * @public
 */
export interface DeleteInventoryRequest {
    /**
     * <p>The name of the custom inventory type for which you want to delete either all previously
     *    collected data or the inventory type itself. </p>
     * @public
     */
    TypeName: string | undefined;
    /**
     * <p>Use the <code>SchemaDeleteOption</code> to delete a custom inventory type (schema). If you
     *    don't choose this option, the system only deletes existing inventory data associated with the
     *    custom inventory type. Choose one of the following options:</p>
     *          <p>DisableSchema: If you choose this option, the system ignores all inventory data for the
     *    specified version, and any earlier versions. To enable this schema again, you must call the
     *     <code>PutInventory</code> operation for a version greater than the disabled version.</p>
     *          <p>DeleteSchema: This option deletes the specified custom type from the Inventory service. You
     *    can recreate the schema later, if you want.</p>
     * @public
     */
    SchemaDeleteOption?: InventorySchemaDeleteOption | undefined;
    /**
     * <p>Use this option to view a summary of the deletion request without deleting any data or the
     *    data type. This option is useful when you only want to understand what will be deleted. Once you
     *    validate that the data to be deleted is what you intend to delete, you can run the same command
     *    without specifying the <code>DryRun</code> option.</p>
     * @public
     */
    DryRun?: boolean | undefined;
    /**
     * <p>User-provided idempotency token.</p>
     * @public
     */
    ClientToken?: string | undefined;
}
/**
 * <p>Either a count, remaining count, or a version number in a delete inventory summary.</p>
 * @public
 */
export interface InventoryDeletionSummaryItem {
    /**
     * <p>The inventory type version.</p>
     * @public
     */
    Version?: string | undefined;
    /**
     * <p>A count of the number of deleted items.</p>
     * @public
     */
    Count?: number | undefined;
    /**
     * <p>The remaining number of items to delete.</p>
     * @public
     */
    RemainingCount?: number | undefined;
}
/**
 * <p>Information about the delete operation.</p>
 * @public
 */
export interface InventoryDeletionSummary {
    /**
     * <p>The total number of items to delete. This count doesn't change during the delete
     *    operation.</p>
     * @public
     */
    TotalCount?: number | undefined;
    /**
     * <p>Remaining number of items to delete.</p>
     * @public
     */
    RemainingCount?: number | undefined;
    /**
     * <p>A list of counts and versions for deleted items.</p>
     * @public
     */
    SummaryItems?: InventoryDeletionSummaryItem[] | undefined;
}
/**
 * @public
 */
export interface DeleteInventoryResult {
    /**
     * <p>Every <code>DeleteInventory</code> operation is assigned a unique ID. This option returns a
     *    unique ID. You can use this ID to query the status of a delete operation. This option is useful
     *    for ensuring that a delete operation has completed before you begin other operations. </p>
     * @public
     */
    DeletionId?: string | undefined;
    /**
     * <p>The name of the inventory data type specified in the request.</p>
     * @public
     */
    TypeName?: string | undefined;
    /**
     * <p>A summary of the delete operation. For more information about this summary, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/inventory-custom.html#delete-custom-inventory-summary">Deleting custom inventory</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    DeletionSummary?: InventoryDeletionSummary | undefined;
}
/**
 * @public
 */
export interface DeleteMaintenanceWindowRequest {
    /**
     * <p>The ID of the maintenance window to delete.</p>
     * @public
     */
    WindowId: string | undefined;
}
/**
 * @public
 */
export interface DeleteMaintenanceWindowResult {
    /**
     * <p>The ID of the deleted maintenance window.</p>
     * @public
     */
    WindowId?: string | undefined;
}
/**
 * @public
 */
export interface DeleteOpsItemRequest {
    /**
     * <p>The ID of the OpsItem that you want to delete.</p>
     * @public
     */
    OpsItemId: string | undefined;
}
/**
 * @public
 */
export interface DeleteOpsItemResponse {
}
/**
 * @public
 */
export interface DeleteOpsMetadataRequest {
    /**
     * <p>The Amazon Resource Name (ARN) of an OpsMetadata Object to delete.</p>
     * @public
     */
    OpsMetadataArn: string | undefined;
}
/**
 * @public
 */
export interface DeleteOpsMetadataResult {
}
/**
 * @public
 */
export interface DeleteParameterRequest {
    /**
     * <p>The name of the parameter to delete.</p>
     *          <note>
     *             <p>You can't enter the Amazon Resource Name (ARN) for a parameter, only the parameter name
     *     itself.</p>
     *          </note>
     * @public
     */
    Name: string | undefined;
}
/**
 * @public
 */
export interface DeleteParameterResult {
}
/**
 * @public
 */
export interface DeleteParametersRequest {
    /**
     * <p>The names of the parameters to delete. After deleting a parameter, wait for at least 30
     *    seconds to create a parameter with the same name.</p>
     *          <note>
     *             <p>You can't enter the Amazon Resource Name (ARN) for a parameter, only the parameter name
     *     itself.</p>
     *          </note>
     * @public
     */
    Names: string[] | undefined;
}
/**
 * @public
 */
export interface DeleteParametersResult {
    /**
     * <p>The names of the deleted parameters.</p>
     * @public
     */
    DeletedParameters?: string[] | undefined;
    /**
     * <p>The names of parameters that weren't deleted because the parameters aren't valid.</p>
     * @public
     */
    InvalidParameters?: string[] | undefined;
}
/**
 * @public
 */
export interface DeletePatchBaselineRequest {
    /**
     * <p>The ID of the patch baseline to delete.</p>
     * @public
     */
    BaselineId: string | undefined;
}
/**
 * @public
 */
export interface DeletePatchBaselineResult {
    /**
     * <p>The ID of the deleted patch baseline.</p>
     * @public
     */
    BaselineId?: string | undefined;
}
/**
 * @public
 */
export interface DeleteResourceDataSyncRequest {
    /**
     * <p>The name of the configuration to delete.</p>
     * @public
     */
    SyncName: string | undefined;
    /**
     * <p>Specify the type of resource data sync to delete.</p>
     * @public
     */
    SyncType?: string | undefined;
}
/**
 * @public
 */
export interface DeleteResourceDataSyncResult {
}
/**
 * @public
 */
export interface DeleteResourcePolicyRequest {
    /**
     * <p>Amazon Resource Name (ARN) of the resource to which the policies are attached.</p>
     * @public
     */
    ResourceArn: string | undefined;
    /**
     * <p>The policy ID.</p>
     * @public
     */
    PolicyId: string | undefined;
    /**
     * <p>ID of the current policy version. The hash helps to prevent multiple calls from attempting
     *    to overwrite a policy.</p>
     * @public
     */
    PolicyHash: string | undefined;
}
/**
 * @public
 */
export interface DeleteResourcePolicyResponse {
}
/**
 * @public
 */
export interface DeregisterManagedInstanceRequest {
    /**
     * <p>The ID assigned to the managed node when you registered it using the activation process.
     *   </p>
     * @public
     */
    InstanceId: string | undefined;
}
/**
 * @public
 */
export interface DeregisterManagedInstanceResult {
}
/**
 * @public
 */
export interface DeregisterPatchBaselineForPatchGroupRequest {
    /**
     * <p>The ID of the patch baseline to deregister the patch group from.</p>
     * @public
     */
    BaselineId: string | undefined;
    /**
     * <p>The name of the patch group that should be deregistered from the patch baseline.</p>
     * @public
     */
    PatchGroup: string | undefined;
}
/**
 * @public
 */
export interface DeregisterPatchBaselineForPatchGroupResult {
    /**
     * <p>The ID of the patch baseline the patch group was deregistered from.</p>
     * @public
     */
    BaselineId?: string | undefined;
    /**
     * <p>The name of the patch group deregistered from the patch baseline.</p>
     * @public
     */
    PatchGroup?: string | undefined;
}
/**
 * @public
 */
export interface DeregisterTargetFromMaintenanceWindowRequest {
    /**
     * <p>The ID of the maintenance window the target should be removed from.</p>
     * @public
     */
    WindowId: string | undefined;
    /**
     * <p>The ID of the target definition to remove.</p>
     * @public
     */
    WindowTargetId: string | undefined;
    /**
     * <p>The system checks if the target is being referenced by a task. If the target is being
     *    referenced, the system returns an error and doesn't deregister the target from the maintenance
     *    window.</p>
     * @public
     */
    Safe?: boolean | undefined;
}
/**
 * @public
 */
export interface DeregisterTargetFromMaintenanceWindowResult {
    /**
     * <p>The ID of the maintenance window the target was removed from.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The ID of the removed target definition.</p>
     * @public
     */
    WindowTargetId?: string | undefined;
}
/**
 * @public
 */
export interface DeregisterTaskFromMaintenanceWindowRequest {
    /**
     * <p>The ID of the maintenance window the task should be removed from.</p>
     * @public
     */
    WindowId: string | undefined;
    /**
     * <p>The ID of the task to remove from the maintenance window.</p>
     * @public
     */
    WindowTaskId: string | undefined;
}
/**
 * @public
 */
export interface DeregisterTaskFromMaintenanceWindowResult {
    /**
     * <p>The ID of the maintenance window the task was removed from.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The ID of the task removed from the maintenance window.</p>
     * @public
     */
    WindowTaskId?: string | undefined;
}
/**
 * <p>Filter for the DescribeActivation API.</p>
 * @public
 */
export interface DescribeActivationsFilter {
    /**
     * <p>The name of the filter.</p>
     * @public
     */
    FilterKey?: DescribeActivationsFilterKeys | undefined;
    /**
     * <p>The filter values.</p>
     * @public
     */
    FilterValues?: string[] | undefined;
}
/**
 * @public
 */
export interface DescribeActivationsRequest {
    /**
     * <p>A filter to view information about your activations.</p>
     * @public
     */
    Filters?: DescribeActivationsFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>A token to start the list. Use this token to get the next set of results. </p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeActivationsResult {
    /**
     * <p>A list of activations for your Amazon Web Services account.</p>
     * @public
     */
    ActivationList?: Activation[] | undefined;
    /**
     * <p>The token for the next set of items to return. Use this token to get the next set of
     *    results. </p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeAssociationRequest {
    /**
     * <p>The name of the SSM document.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The managed node ID.</p>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The association ID for which you want information.</p>
     * @public
     */
    AssociationId?: string | undefined;
    /**
     * <p>Specify the association version to retrieve. To view the latest version, either specify
     *     <code>$LATEST</code> for this parameter, or omit this parameter. To view a list of all
     *    associations for a managed node, use <a>ListAssociations</a>. To get a list of
     *    versions for a specific association, use <a>ListAssociationVersions</a>. </p>
     * @public
     */
    AssociationVersion?: string | undefined;
}
/**
 * @public
 */
export interface DescribeAssociationResult {
    /**
     * <p>Information about the association.</p>
     * @public
     */
    AssociationDescription?: AssociationDescription | undefined;
}
/**
 * <p>Filters used in the request.</p>
 * @public
 */
export interface AssociationExecutionFilter {
    /**
     * <p>The key value used in the request.</p>
     * @public
     */
    Key: AssociationExecutionFilterKey | undefined;
    /**
     * <p>The value specified for the key.</p>
     * @public
     */
    Value: string | undefined;
    /**
     * <p>The filter type specified in the request.</p>
     * @public
     */
    Type: AssociationFilterOperatorType | undefined;
}
/**
 * @public
 */
export interface DescribeAssociationExecutionsRequest {
    /**
     * <p>The association ID for which you want to view execution history details.</p>
     * @public
     */
    AssociationId: string | undefined;
    /**
     * <p>Filters for the request. You can specify the following filters and values.</p>
     *          <p>ExecutionId (EQUAL)</p>
     *          <p>Status (EQUAL)</p>
     *          <p>CreatedTime (EQUAL, GREATER_THAN, LESS_THAN)</p>
     * @public
     */
    Filters?: AssociationExecutionFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>A token to start the list. Use this token to get the next set of results. </p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Includes information about the specified association.</p>
 * @public
 */
export interface AssociationExecution {
    /**
     * <p>The association ID.</p>
     * @public
     */
    AssociationId?: string | undefined;
    /**
     * <p>The association version.</p>
     * @public
     */
    AssociationVersion?: string | undefined;
    /**
     * <p>The execution ID for the association.</p>
     * @public
     */
    ExecutionId?: string | undefined;
    /**
     * <p>The status of the association execution.</p>
     * @public
     */
    Status?: string | undefined;
    /**
     * <p>Detailed status information about the execution.</p>
     * @public
     */
    DetailedStatus?: string | undefined;
    /**
     * <p>The time the execution started.</p>
     * @public
     */
    CreatedTime?: Date | undefined;
    /**
     * <p>The date of the last execution.</p>
     * @public
     */
    LastExecutionDate?: Date | undefined;
    /**
     * <p>An aggregate status of the resources in the execution based on the status type.</p>
     * @public
     */
    ResourceCountByStatus?: string | undefined;
    /**
     * <p>The details for the CloudWatch alarm you want to apply to an automation or
     *    command.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
    /**
     * <p>The CloudWatch alarms that were invoked by the association.</p>
     * @public
     */
    TriggeredAlarms?: AlarmStateInformation[] | undefined;
}
/**
 * @public
 */
export interface DescribeAssociationExecutionsResult {
    /**
     * <p>A list of the executions for the specified association ID.</p>
     * @public
     */
    AssociationExecutions?: AssociationExecution[] | undefined;
    /**
     * <p>The token for the next set of items to return. Use this token to get the next set of
     *    results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Filters for the association execution.</p>
 * @public
 */
export interface AssociationExecutionTargetsFilter {
    /**
     * <p>The key value used in the request.</p>
     * @public
     */
    Key: AssociationExecutionTargetsFilterKey | undefined;
    /**
     * <p>The value specified for the key.</p>
     * @public
     */
    Value: string | undefined;
}
/**
 * @public
 */
export interface DescribeAssociationExecutionTargetsRequest {
    /**
     * <p>The association ID that includes the execution for which you want to view details.</p>
     * @public
     */
    AssociationId: string | undefined;
    /**
     * <p>The execution ID for which you want to view details.</p>
     * @public
     */
    ExecutionId: string | undefined;
    /**
     * <p>Filters for the request. You can specify the following filters and values.</p>
     *          <p>Status (EQUAL)</p>
     *          <p>ResourceId (EQUAL)</p>
     *          <p>ResourceType (EQUAL)</p>
     * @public
     */
    Filters?: AssociationExecutionTargetsFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>A token to start the list. Use this token to get the next set of results. </p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Information about the source where the association execution details are stored.</p>
 * @public
 */
export interface OutputSource {
    /**
     * <p>The ID of the output source, for example the URL of an S3 bucket.</p>
     * @public
     */
    OutputSourceId?: string | undefined;
    /**
     * <p>The type of source where the association execution details are stored, for example, Amazon S3.</p>
     * @public
     */
    OutputSourceType?: string | undefined;
}
/**
 * <p>Includes information about the specified association execution.</p>
 * @public
 */
export interface AssociationExecutionTarget {
    /**
     * <p>The association ID.</p>
     * @public
     */
    AssociationId?: string | undefined;
    /**
     * <p>The association version.</p>
     * @public
     */
    AssociationVersion?: string | undefined;
    /**
     * <p>The execution ID.</p>
     * @public
     */
    ExecutionId?: string | undefined;
    /**
     * <p>The resource ID, for example, the managed node ID where the association ran.</p>
     * @public
     */
    ResourceId?: string | undefined;
    /**
     * <p>The resource type, for example, EC2.</p>
     * @public
     */
    ResourceType?: string | undefined;
    /**
     * <p>The association execution status.</p>
     * @public
     */
    Status?: string | undefined;
    /**
     * <p>Detailed information about the execution status.</p>
     * @public
     */
    DetailedStatus?: string | undefined;
    /**
     * <p>The date of the last execution.</p>
     * @public
     */
    LastExecutionDate?: Date | undefined;
    /**
     * <p>The location where the association details are saved.</p>
     * @public
     */
    OutputSource?: OutputSource | undefined;
}
/**
 * @public
 */
export interface DescribeAssociationExecutionTargetsResult {
    /**
     * <p>Information about the execution.</p>
     * @public
     */
    AssociationExecutionTargets?: AssociationExecutionTarget[] | undefined;
    /**
     * <p>The token for the next set of items to return. Use this token to get the next set of
     *    results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>A filter used to match specific automation executions. This is used to limit the scope of
 *    Automation execution information returned.</p>
 * @public
 */
export interface AutomationExecutionFilter {
    /**
     * <p>One or more keys to limit the results.</p>
     * @public
     */
    Key: AutomationExecutionFilterKey | undefined;
    /**
     * <p>The values used to limit the execution information associated with the filter's key.</p>
     * @public
     */
    Values: string[] | undefined;
}
/**
 * @public
 */
export interface DescribeAutomationExecutionsRequest {
    /**
     * <p>Filters used to limit the scope of executions that are requested.</p>
     * @public
     */
    Filters?: AutomationExecutionFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Information about targets that resolved during the Automation execution.</p>
 * @public
 */
export interface ResolvedTargets {
    /**
     * <p>A list of parameter values sent to targets that resolved during the Automation
     *    execution.</p>
     * @public
     */
    ParameterValues?: string[] | undefined;
    /**
     * <p>A boolean value indicating whether the resolved target list is truncated.</p>
     * @public
     */
    Truncated?: boolean | undefined;
}
/**
 * <p>Information about an Automation runbook used in a runbook workflow in Change Manager.</p>
 *          <note>
 *             <p>The Automation runbooks specified for the runbook workflow can't run until all required
 *     approvals for the change request have been received.</p>
 *          </note>
 * @public
 */
export interface Runbook {
    /**
     * <p>The name of the Automation runbook used in a runbook workflow.</p>
     * @public
     */
    DocumentName: string | undefined;
    /**
     * <p>The version of the Automation runbook used in a runbook workflow.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The key-value map of execution parameters, which were supplied when calling
     *     <code>StartChangeRequestExecution</code>.</p>
     * @public
     */
    Parameters?: Record<string, string[]> | undefined;
    /**
     * <p>The name of the parameter used as the target resource for the rate-controlled
     *    runbook workflow. Required if you specify <code>Targets</code>. </p>
     * @public
     */
    TargetParameterName?: string | undefined;
    /**
     * <p>A key-value mapping to target resources that the runbook operation performs tasks on.
     *    Required if you specify <code>TargetParameterName</code>.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>A key-value mapping of runbook parameters to target resources. Both Targets and TargetMaps
     *    can't be specified together.</p>
     * @public
     */
    TargetMaps?: Record<string, string[]>[] | undefined;
    /**
     * <p>The <code>MaxConcurrency</code> value specified by the user when the operation started,
     *    indicating the maximum number of resources that the runbook operation can run on at the same
     *    time.</p>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The <code>MaxErrors</code> value specified by the user when the execution started,
     *    indicating the maximum number of errors that can occur during the operation before the updates
     *    are stopped or rolled back.</p>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>Information about the Amazon Web Services Regions and Amazon Web Services accounts targeted by the current Runbook
     *    operation.</p>
     * @public
     */
    TargetLocations?: TargetLocation[] | undefined;
}
/**
 * <p>Details about a specific Automation execution.</p>
 * @public
 */
export interface AutomationExecutionMetadata {
    /**
     * <p>The execution ID.</p>
     * @public
     */
    AutomationExecutionId?: string | undefined;
    /**
     * <p>The name of the Automation runbook used during execution.</p>
     * @public
     */
    DocumentName?: string | undefined;
    /**
     * <p>The document version used during the execution.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The status of the execution.</p>
     * @public
     */
    AutomationExecutionStatus?: AutomationExecutionStatus | undefined;
    /**
     * <p>The time the execution started.</p>
     * @public
     */
    ExecutionStartTime?: Date | undefined;
    /**
     * <p>The time the execution finished. This isn't populated if the execution is still in
     *    progress.</p>
     * @public
     */
    ExecutionEndTime?: Date | undefined;
    /**
     * <p>The IAM role ARN of the user who ran the automation.</p>
     * @public
     */
    ExecutedBy?: string | undefined;
    /**
     * <p>An S3 bucket where execution information is stored.</p>
     * @public
     */
    LogFile?: string | undefined;
    /**
     * <p>The list of execution outputs as defined in the Automation runbook.</p>
     * @public
     */
    Outputs?: Record<string, string[]> | undefined;
    /**
     * <p>The Automation execution mode.</p>
     * @public
     */
    Mode?: ExecutionMode | undefined;
    /**
     * <p>The execution ID of the parent automation.</p>
     * @public
     */
    ParentAutomationExecutionId?: string | undefined;
    /**
     * <p>The name of the step that is currently running.</p>
     * @public
     */
    CurrentStepName?: string | undefined;
    /**
     * <p>The action of the step that is currently running.</p>
     * @public
     */
    CurrentAction?: string | undefined;
    /**
     * <p>A message that describes a failure that occurred during the automation execution.</p>
     * @public
     */
    FailureMessage?: string | undefined;
    /**
     * <p>A message that describes a non-critical issue that occurred during the automation execution.</p>
     * @public
     */
    WarningMessage?: string | undefined;
    /**
     * <p>The list of execution outputs as defined in the Automation runbook.</p>
     * @public
     */
    TargetParameterName?: string | undefined;
    /**
     * <p>The targets defined by the user when starting the automation.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>The specified key-value mapping of document parameters to target resources.</p>
     * @public
     */
    TargetMaps?: Record<string, string[]>[] | undefined;
    /**
     * <p>A list of targets that resolved during the execution.</p>
     * @public
     */
    ResolvedTargets?: ResolvedTargets | undefined;
    /**
     * <p>The <code>MaxConcurrency</code> value specified by the user when starting the
     *    automation.</p>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The <code>MaxErrors</code> value specified by the user when starting the automation.</p>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>The list of execution outputs as defined in the Automation runbook.</p>
     * @public
     */
    Target?: string | undefined;
    /**
     * <p>Use this filter with <a>DescribeAutomationExecutions</a>. Specify either Local or
     *    CrossAccount. CrossAccount is an Automation that runs in multiple Amazon Web Services Regions and
     *    Amazon Web Services accounts. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation-multiple-accounts-and-regions.html">Running automations in multiple Amazon Web Services Regions and accounts</a> in the
     *     <i>Amazon Web Services Systems Manager User Guide</i>. </p>
     * @public
     */
    AutomationType?: AutomationType | undefined;
    /**
     * <p>The details for the CloudWatch alarm applied to your automation.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
    /**
     * <p>The CloudWatch alarm that was invoked by the automation.</p>
     * @public
     */
    TriggeredAlarms?: AlarmStateInformation[] | undefined;
    /**
     * <p>A publicly accessible URL for a file that contains the <code>TargetLocations</code> body.
     *    Currently, only files in presigned Amazon S3 buckets are supported</p>
     * @public
     */
    TargetLocationsURL?: string | undefined;
    /**
     * <p>The subtype of the Automation operation. Currently, the only supported value is
     *     <code>ChangeRequest</code>.</p>
     * @public
     */
    AutomationSubtype?: AutomationSubtype | undefined;
    /**
     * <p>The date and time the Automation operation is scheduled to start.</p>
     * @public
     */
    ScheduledTime?: Date | undefined;
    /**
     * <p>Information about the Automation runbooks that are run during a runbook workflow in
     *    Change Manager.</p>
     *          <note>
     *             <p>The Automation runbooks specified for the runbook workflow can't run until all required
     *     approvals for the change request have been received.</p>
     *          </note>
     * @public
     */
    Runbooks?: Runbook[] | undefined;
    /**
     * <p>The ID of an OpsItem that is created to represent a Change Manager change request.</p>
     * @public
     */
    OpsItemId?: string | undefined;
    /**
     * <p>The ID of a State Manager association used in the Automation operation.</p>
     * @public
     */
    AssociationId?: string | undefined;
    /**
     * <p>The name of the Change Manager change request.</p>
     * @public
     */
    ChangeRequestName?: string | undefined;
}
/**
 * @public
 */
export interface DescribeAutomationExecutionsResult {
    /**
     * <p>The list of details about each automation execution which has occurred which matches the
     *    filter specification, if any.</p>
     * @public
     */
    AutomationExecutionMetadataList?: AutomationExecutionMetadata[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>A filter to limit the amount of step execution information returned by the call.</p>
 * @public
 */
export interface StepExecutionFilter {
    /**
     * <p>One or more keys to limit the results.</p>
     * @public
     */
    Key: StepExecutionFilterKey | undefined;
    /**
     * <p>The values of the filter key.</p>
     * @public
     */
    Values: string[] | undefined;
}
/**
 * @public
 */
export interface DescribeAutomationStepExecutionsRequest {
    /**
     * <p>The Automation execution ID for which you want step execution descriptions.</p>
     * @public
     */
    AutomationExecutionId: string | undefined;
    /**
     * <p>One or more filters to limit the number of step executions returned by the request.</p>
     * @public
     */
    Filters?: StepExecutionFilter[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>Indicates whether to list step executions in reverse order by start time. The default value
     *    is 'false'.</p>
     * @public
     */
    ReverseOrder?: boolean | undefined;
}
/**
 * <p>Information about an Automation failure.</p>
 * @public
 */
export interface FailureDetails {
    /**
     * <p>The stage of the Automation execution when the failure occurred. The stages include the
     *    following: InputValidation, PreVerification, Invocation, PostVerification.</p>
     * @public
     */
    FailureStage?: string | undefined;
    /**
     * <p>The type of Automation failure. Failure types include the following: Action, Permission,
     *    Throttling, Verification, Internal.</p>
     * @public
     */
    FailureType?: string | undefined;
    /**
     * <p>Detailed information about the Automation step failure.</p>
     * @public
     */
    Details?: Record<string, string[]> | undefined;
}
/**
 * <p>A detailed status of the parent step.</p>
 * @public
 */
export interface ParentStepDetails {
    /**
     * <p>The unique ID of a step execution.</p>
     * @public
     */
    StepExecutionId?: string | undefined;
    /**
     * <p>The name of the step.</p>
     * @public
     */
    StepName?: string | undefined;
    /**
     * <p>The name of the automation action.</p>
     * @public
     */
    Action?: string | undefined;
    /**
     * <p>The current repetition of the loop represented by an integer.</p>
     * @public
     */
    Iteration?: number | undefined;
    /**
     * <p>The current value of the specified iterator in the loop.</p>
     * @public
     */
    IteratorValue?: string | undefined;
}
/**
 * <p>Detailed information about an the execution state of an Automation step.</p>
 * @public
 */
export interface StepExecution {
    /**
     * <p>The name of this execution step.</p>
     * @public
     */
    StepName?: string | undefined;
    /**
     * <p>The action this step performs. The action determines the behavior of the step.</p>
     * @public
     */
    Action?: string | undefined;
    /**
     * <p>The timeout seconds of the step.</p>
     * @public
     */
    TimeoutSeconds?: number | undefined;
    /**
     * <p>The action to take if the step fails. The default value is <code>Abort</code>.</p>
     * @public
     */
    OnFailure?: string | undefined;
    /**
     * <p>The maximum number of tries to run the action of the step. The default value is
     *     <code>1</code>.</p>
     * @public
     */
    MaxAttempts?: number | undefined;
    /**
     * <p>If a step has begun execution, this contains the time the step started. If the step is in
     *    Pending status, this field isn't populated.</p>
     * @public
     */
    ExecutionStartTime?: Date | undefined;
    /**
     * <p>If a step has finished execution, this contains the time the execution ended. If the step
     *    hasn't yet concluded, this field isn't populated.</p>
     * @public
     */
    ExecutionEndTime?: Date | undefined;
    /**
     * <p>The execution status for this step.</p>
     * @public
     */
    StepStatus?: AutomationExecutionStatus | undefined;
    /**
     * <p>The response code returned by the execution of the step.</p>
     * @public
     */
    ResponseCode?: string | undefined;
    /**
     * <p>Fully-resolved values passed into the step before execution.</p>
     * @public
     */
    Inputs?: Record<string, string> | undefined;
    /**
     * <p>Returned values from the execution of the step.</p>
     * @public
     */
    Outputs?: Record<string, string[]> | undefined;
    /**
     * <p>A message associated with the response code for an execution.</p>
     * @public
     */
    Response?: string | undefined;
    /**
     * <p>If a step failed, this message explains why the execution failed.</p>
     * @public
     */
    FailureMessage?: string | undefined;
    /**
     * <p>A message that describes a non-critical issue that occurred during the step execution. Present only if the step status includes a warning.</p>
     * @public
     */
    WarningMessage?: string | undefined;
    /**
     * <p>Information about the Automation failure.</p>
     * @public
     */
    FailureDetails?: FailureDetails | undefined;
    /**
     * <p>The unique ID of a step execution.</p>
     * @public
     */
    StepExecutionId?: string | undefined;
    /**
     * <p>A user-specified list of parameters to override when running a step.</p>
     * @public
     */
    OverriddenParameters?: Record<string, string[]> | undefined;
    /**
     * <p>The flag which can be used to end automation no matter whether the step succeeds or
     *    fails.</p>
     * @public
     */
    IsEnd?: boolean | undefined;
    /**
     * <p>The next step after the step succeeds.</p>
     * @public
     */
    NextStep?: string | undefined;
    /**
     * <p>The flag which can be used to help decide whether the failure of current step leads to the
     *    Automation failure.</p>
     * @public
     */
    IsCritical?: boolean | undefined;
    /**
     * <p>Strategies used when step fails, we support Continue and Abort. Abort will fail the
     *    automation when the step fails. Continue will ignore the failure of current step and allow
     *    automation to run the next step. With conditional branching, we add step:stepName to support the
     *    automation to go to another specific step.</p>
     * @public
     */
    ValidNextSteps?: string[] | undefined;
    /**
     * <p>The targets for the step execution.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>The combination of Amazon Web Services Regions and Amazon Web Services accounts targeted by the current Automation
     *    execution.</p>
     * @public
     */
    TargetLocation?: TargetLocation | undefined;
    /**
     * <p>The CloudWatch alarms that were invoked by the automation.</p>
     * @public
     */
    TriggeredAlarms?: AlarmStateInformation[] | undefined;
    /**
     * <p>Information about the parent step.</p>
     * @public
     */
    ParentStepDetails?: ParentStepDetails | undefined;
}
/**
 * @public
 */
export interface DescribeAutomationStepExecutionsResult {
    /**
     * <p>A list of details about the current state of all steps that make up an execution.</p>
     * @public
     */
    StepExecutions?: StepExecution[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Defines a filter used in Patch Manager APIs. Supported filter keys depend on the API
 *    operation that includes the filter. Patch Manager API operations that use
 *     <code>PatchOrchestratorFilter</code> include the following:</p>
 *          <ul>
 *             <li>
 *                <p>
 *                   <a>DescribeAvailablePatches</a>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <a>DescribeInstancePatches</a>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <a>DescribePatchBaselines</a>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <a>DescribePatchGroups</a>
 *                </p>
 *             </li>
 *          </ul>
 * @public
 */
export interface PatchOrchestratorFilter {
    /**
     * <p>The key for the filter.</p>
     * @public
     */
    Key?: string | undefined;
    /**
     * <p>The value for the filter.</p>
     * @public
     */
    Values?: string[] | undefined;
}
/**
 * @public
 */
export interface DescribeAvailablePatchesRequest {
    /**
     * <p>Each element in the array is a structure containing a key-value pair.</p>
     *          <p>
     *             <b>Windows Server</b>
     *          </p>
     *          <p>Supported keys for Windows Server managed node patches include the following:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>PATCH_SET</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>OS</code> | <code>APPLICATION</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>PRODUCT</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>WindowsServer2012</code> | <code>Office 2010</code> |
     *       <code>MicrosoftDefenderAntivirus</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>PRODUCT_FAMILY</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>Windows</code> | <code>Office</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>MSRC_SEVERITY</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>ServicePacks</code> | <code>Important</code> | <code>Moderate</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>CLASSIFICATION</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>ServicePacks</code> | <code>SecurityUpdates</code> |
     *       <code>DefinitionUpdates</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>PATCH_ID</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>KB123456</code> | <code>KB4516046</code>
     *                </p>
     *             </li>
     *          </ul>
     *          <p>
     *             <b>Linux</b>
     *          </p>
     *          <important>
     *             <p>When specifying filters for Linux patches, you must specify a key-pair for
     *      <code>PRODUCT</code>. For example, using the Command Line Interface (CLI), the
     *     following command fails:</p>
     *             <p>
     *                <code>aws ssm describe-available-patches --filters Key=CVE_ID,Values=CVE-2018-3615</code>
     *             </p>
     *             <p>However, the following command succeeds:</p>
     *             <p>
     *                <code>aws ssm describe-available-patches --filters Key=PRODUCT,Values=AmazonLinux2018.03
     *      Key=CVE_ID,Values=CVE-2018-3615</code>
     *             </p>
     *          </important>
     *          <p>Supported keys for Linux managed node patches include the following:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>PRODUCT</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>AmazonLinux2018.03</code> | <code>AmazonLinux2.0</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>NAME</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>kernel-headers</code> | <code>samba-python</code> | <code>php</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>SEVERITY</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>Critical</code> | <code>Important</code> | <code>Medium</code> |
     *       <code>Low</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>EPOCH</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>0</code> | <code>1</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>VERSION</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>78.6.1</code> | <code>4.10.16</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>RELEASE</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>9.56.amzn1</code> | <code>1.amzn2</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>ARCH</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>i686</code> | <code>x86_64</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>REPOSITORY</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>Core</code> | <code>Updates</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>ADVISORY_ID</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>ALAS-2018-1058</code> | <code>ALAS2-2021-1594</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>CVE_ID</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>CVE-2018-3615</code> | <code>CVE-2020-1472</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>BUGZILLA_ID</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>1463241</code>
     *                </p>
     *             </li>
     *          </ul>
     * @public
     */
    Filters?: PatchOrchestratorFilter[] | undefined;
    /**
     * <p>The maximum number of patches to return (per page).</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Represents metadata about a patch.</p>
 * @public
 */
export interface Patch {
    /**
     * <p>The ID of the patch. Applies to Windows patches only.</p>
     *          <note>
     *             <p>This ID isn't the same as the Microsoft Knowledge Base ID.</p>
     *          </note>
     * @public
     */
    Id?: string | undefined;
    /**
     * <p>The date the patch was released.</p>
     * @public
     */
    ReleaseDate?: Date | undefined;
    /**
     * <p>The title of the patch.</p>
     * @public
     */
    Title?: string | undefined;
    /**
     * <p>The description of the patch.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The URL where more information can be obtained about the patch.</p>
     * @public
     */
    ContentUrl?: string | undefined;
    /**
     * <p>The name of the vendor providing the patch.</p>
     * @public
     */
    Vendor?: string | undefined;
    /**
     * <p>The product family the patch is applicable for. For example, <code>Windows</code> or
     *     <code>Amazon Linux 2</code>.</p>
     * @public
     */
    ProductFamily?: string | undefined;
    /**
     * <p>The specific product the patch is applicable for. For example,
     *     <code>WindowsServer2016</code> or <code>AmazonLinux2018.03</code>.</p>
     * @public
     */
    Product?: string | undefined;
    /**
     * <p>The classification of the patch. For example, <code>SecurityUpdates</code>,
     *     <code>Updates</code>, or <code>CriticalUpdates</code>.</p>
     * @public
     */
    Classification?: string | undefined;
    /**
     * <p>The severity of the patch, such as <code>Critical</code>, <code>Important</code>, or
     *     <code>Moderate</code>. Applies to Windows patches only.</p>
     * @public
     */
    MsrcSeverity?: string | undefined;
    /**
     * <p>The Microsoft Knowledge Base ID of the patch. Applies to Windows patches only.</p>
     * @public
     */
    KbNumber?: string | undefined;
    /**
     * <p>The ID of the Microsoft Security Response Center (MSRC) bulletin the patch is related to.
     *    For example, <code>MS14-045</code>. Applies to Windows patches only.</p>
     * @public
     */
    MsrcNumber?: string | undefined;
    /**
     * <p>The language of the patch if it's language-specific.</p>
     * @public
     */
    Language?: string | undefined;
    /**
     * <p>The Advisory ID of the patch. For example, <code>RHSA-2020:3779</code>. Applies to
     *    Linux-based managed nodes only.</p>
     * @public
     */
    AdvisoryIds?: string[] | undefined;
    /**
     * <p>The Bugzilla ID of the patch. For example, <code>1600646</code>. Applies to Linux-based
     *    managed nodes only.</p>
     * @public
     */
    BugzillaIds?: string[] | undefined;
    /**
     * <p>The Common Vulnerabilities and Exposures (CVE) ID of the patch. For example,
     *     <code>CVE-2011-3192</code>. Applies to Linux-based managed nodes only.</p>
     * @public
     */
    CVEIds?: string[] | undefined;
    /**
     * <p>The name of the patch. Applies to Linux-based managed nodes only.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The epoch of the patch. For example in
     *    <code>pkg-example-EE-20180914-2.2.amzn1.noarch</code>, the epoch value is
     *    <code>20180914-2</code>. Applies to Linux-based managed nodes only.</p>
     * @public
     */
    Epoch?: number | undefined;
    /**
     * <p>The version number of the patch. For example, in
     *     <code>example-pkg-1.710.10-2.7.abcd.x86_64</code>, the version number is indicated by
     *     <code>-1</code>. Applies to Linux-based managed nodes only.</p>
     * @public
     */
    Version?: string | undefined;
    /**
     * <p>The particular release of a patch. For example, in
     *     <code>pkg-example-EE-20180914-2.2.amzn1.noarch</code>, the release is <code>2.amaz1</code>.
     *    Applies to Linux-based managed nodes only.</p>
     * @public
     */
    Release?: string | undefined;
    /**
     * <p>The architecture of the patch. For example, in
     *     <code>example-pkg-0.710.10-2.7.abcd.x86_64</code>, the architecture is indicated by
     *     <code>x86_64</code>. Applies to Linux-based managed nodes only.</p>
     * @public
     */
    Arch?: string | undefined;
    /**
     * <p>The severity level of the patch. For example, <code>CRITICAL</code> or
     *    <code>MODERATE</code>.</p>
     * @public
     */
    Severity?: string | undefined;
    /**
     * <p>The source patch repository for the operating system and version, such as
     *     <code>trusty-security</code> for Ubuntu Server 14.04 LTE and <code>focal-security</code> for
     *    Ubuntu Server 20.04 LTE. Applies to Linux-based managed nodes only.</p>
     * @public
     */
    Repository?: string | undefined;
}
/**
 * @public
 */
export interface DescribeAvailablePatchesResult {
    /**
     * <p>An array of patches. Each entry in the array is a patch structure.</p>
     * @public
     */
    Patches?: Patch[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeDocumentRequest {
    /**
     * <p>The name of the SSM document.</p>
     *          <note>
     *             <p>If you're calling a shared SSM document from a different Amazon Web Services account,
     *      <code>Name</code> is the full Amazon Resource Name (ARN) of the document.</p>
     *          </note>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The document version for which you want information. Can be a specific version or the
     *    default version.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>An optional field specifying the version of the artifact associated with the document. For
     *    example, 12.6. This value is unique across all versions of a document, and can't be
     *    changed.</p>
     * @public
     */
    VersionName?: string | undefined;
}
/**
 * @public
 */
export interface DescribeDocumentResult {
    /**
     * <p>Information about the SSM document.</p>
     * @public
     */
    Document?: DocumentDescription | undefined;
}
/**
 * @public
 */
export interface DescribeDocumentPermissionRequest {
    /**
     * <p>The name of the document for which you are the owner. </p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The permission type for the document. The permission type can be
     *    <i>Share</i>.</p>
     * @public
     */
    PermissionType: DocumentPermissionType | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeDocumentPermissionResponse {
    /**
     * <p>The account IDs that have permission to use this document. The ID can be either an
     *    Amazon Web Services account number or <code>all</code>.</p>
     * @public
     */
    AccountIds?: string[] | undefined;
    /**
     * <p>A list of Amazon Web Services accounts where the current document is shared and the version shared with
     *    each account.</p>
     * @public
     */
    AccountSharingInfoList?: AccountSharingInfo[] | undefined;
    /**
     * <p>The token for the next set of items to return. Use this token to get the next set of
     *    results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeEffectiveInstanceAssociationsRequest {
    /**
     * <p>The managed node ID for which you want to view all associations.</p>
     * @public
     */
    InstanceId: string | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>One or more association documents on the managed node. </p>
 * @public
 */
export interface InstanceAssociation {
    /**
     * <p>The association ID.</p>
     * @public
     */
    AssociationId?: string | undefined;
    /**
     * <p>The managed node ID.</p>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The content of the association document for the managed nodes.</p>
     * @public
     */
    Content?: string | undefined;
    /**
     * <p>Version information for the association on the managed node.</p>
     * @public
     */
    AssociationVersion?: string | undefined;
}
/**
 * @public
 */
export interface DescribeEffectiveInstanceAssociationsResult {
    /**
     * <p>The associations for the requested managed node.</p>
     * @public
     */
    Associations?: InstanceAssociation[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeEffectivePatchesForPatchBaselineRequest {
    /**
     * <p>The ID of the patch baseline to retrieve the effective patches for.</p>
     * @public
     */
    BaselineId: string | undefined;
    /**
     * <p>The maximum number of patches to return (per page).</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Information about the approval status of a patch.</p>
 * @public
 */
export interface PatchStatus {
    /**
     * <p>The approval status of a patch.</p>
     * @public
     */
    DeploymentStatus?: PatchDeploymentStatus | undefined;
    /**
     * <p>The compliance severity level for a patch.</p>
     * @public
     */
    ComplianceLevel?: PatchComplianceLevel | undefined;
    /**
     * <p>The date the patch was approved (or will be approved if the status is
     *     <code>PENDING_APPROVAL</code>).</p>
     * @public
     */
    ApprovalDate?: Date | undefined;
}
/**
 * <p>The <code>EffectivePatch</code> structure defines metadata about a patch along with the
 *    approval state of the patch in a particular patch baseline. The approval state includes
 *    information about whether the patch is currently approved, due to be approved by a rule,
 *    explicitly approved, or explicitly rejected and the date the patch was or will be
 *    approved.</p>
 * @public
 */
export interface EffectivePatch {
    /**
     * <p>Provides metadata for a patch, including information such as the KB ID, severity,
     *    classification and a URL for where more information can be obtained about the patch.</p>
     * @public
     */
    Patch?: Patch | undefined;
    /**
     * <p>The status of the patch in a patch baseline. This includes information about whether the
     *    patch is currently approved, due to be approved by a rule, explicitly approved, or explicitly
     *    rejected and the date the patch was or will be approved.</p>
     * @public
     */
    PatchStatus?: PatchStatus | undefined;
}
/**
 * @public
 */
export interface DescribeEffectivePatchesForPatchBaselineResult {
    /**
     * <p>An array of patches and patch status.</p>
     * @public
     */
    EffectivePatches?: EffectivePatch[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeInstanceAssociationsStatusRequest {
    /**
     * <p>The managed node IDs for which you want association status information.</p>
     * @public
     */
    InstanceId: string | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>A URL for the Amazon Web Services Systems Manager (Systems Manager) bucket where you want to store the
 *    results of this request.</p>
 * @public
 */
export interface S3OutputUrl {
    /**
     * <p>A URL for an S3 bucket where you want to store the results of this request.</p>
     * @public
     */
    OutputUrl?: string | undefined;
}
/**
 * <p>The URL of S3 bucket where you want to store the results of this request.</p>
 * @public
 */
export interface InstanceAssociationOutputUrl {
    /**
     * <p>The URL of S3 bucket where you want to store the results of this request.</p>
     * @public
     */
    S3OutputUrl?: S3OutputUrl | undefined;
}
/**
 * <p>Status information about the association.</p>
 * @public
 */
export interface InstanceAssociationStatusInfo {
    /**
     * <p>The association ID.</p>
     * @public
     */
    AssociationId?: string | undefined;
    /**
     * <p>The name of the association.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The association document versions.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The version of the association applied to the managed node.</p>
     * @public
     */
    AssociationVersion?: string | undefined;
    /**
     * <p>The managed node ID where the association was created.</p>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The date the association ran. </p>
     * @public
     */
    ExecutionDate?: Date | undefined;
    /**
     * <p>Status information about the association.</p>
     * @public
     */
    Status?: string | undefined;
    /**
     * <p>Detailed status information about the association.</p>
     * @public
     */
    DetailedStatus?: string | undefined;
    /**
     * <p>Summary information about association execution.</p>
     * @public
     */
    ExecutionSummary?: string | undefined;
    /**
     * <p>An error code returned by the request to create the association.</p>
     * @public
     */
    ErrorCode?: string | undefined;
    /**
     * <p>A URL for an S3 bucket where you want to store the results of this request.</p>
     * @public
     */
    OutputUrl?: InstanceAssociationOutputUrl | undefined;
    /**
     * <p>The name of the association applied to the managed node.</p>
     * @public
     */
    AssociationName?: string | undefined;
}
/**
 * @public
 */
export interface DescribeInstanceAssociationsStatusResult {
    /**
     * <p>Status information about the association.</p>
     * @public
     */
    InstanceAssociationStatusInfos?: InstanceAssociationStatusInfo[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>The filters to describe or get information about your managed nodes.</p>
 * @public
 */
export interface InstanceInformationStringFilter {
    /**
     * <p>The filter key name to describe your managed nodes.</p>
     *          <p>Valid filter key values: ActivationIds | AgentVersion | AssociationStatus | IamRole |
     *    InstanceIds | PingStatus | PlatformTypes | ResourceType | SourceIds | SourceTypes | "tag-key" |
     *     "tag:<code>\{keyname\}</code>
     *          </p>
     *          <ul>
     *             <li>
     *                <p>Valid values for the <code>AssociationStatus</code> filter key: Success | Pending |
     *      Failed</p>
     *             </li>
     *             <li>
     *                <p>Valid values for the <code>PingStatus</code> filter key: Online | ConnectionLost |
     *      Inactive (deprecated)</p>
     *             </li>
     *             <li>
     *                <p>Valid values for the <code>PlatformTypes</code> filter key: Windows | Linux | MacOS</p>
     *             </li>
     *             <li>
     *                <p>Valid values for the <code>ResourceType</code> filter key: EC2Instance |
     *      ManagedInstance</p>
     *             </li>
     *             <li>
     *                <p>Valid values for the <code>SourceType</code> filter key: AWS::EC2::Instance |
     *      AWS::SSM::ManagedInstance | AWS::IoT::Thing | Microsoft.Compute/virtualMachines</p>
     *             </li>
     *             <li>
     *                <p>Valid tag examples: <code>Key=tag-key,Values=Purpose</code> |
     *       <code>Key=tag:Purpose,Values=Test</code>.</p>
     *             </li>
     *          </ul>
     * @public
     */
    Key: string | undefined;
    /**
     * <p>The filter values.</p>
     * @public
     */
    Values: string[] | undefined;
}
/**
 * <p>Describes a filter for a specific list of managed nodes. You can filter node information by
 *    using tags. You specify tags by using a key-value mapping.</p>
 *          <p>Use this operation instead of the <a>DescribeInstanceInformationRequest$InstanceInformationFilterList</a> method. The
 *     <code>InstanceInformationFilterList</code> method is a legacy method and doesn't support tags.
 *   </p>
 * @public
 */
export interface InstanceInformationFilter {
    /**
     * <p>The name of the filter. </p>
     * @public
     */
    key: InstanceInformationFilterKey | undefined;
    /**
     * <p>The filter values.</p>
     * @public
     */
    valueSet: string[] | undefined;
}
/**
 * @public
 */
export interface DescribeInstanceInformationRequest {
    /**
     * <p>This is a legacy method. We recommend that you don't use this method. Instead, use the
     *     <code>Filters</code> data type. <code>Filters</code> enables you to return node information by
     *    filtering based on tags applied to managed nodes.</p>
     *          <note>
     *             <p>Attempting to use <code>InstanceInformationFilterList</code> and <code>Filters</code> leads
     *     to an exception error. </p>
     *          </note>
     * @public
     */
    InstanceInformationFilterList?: InstanceInformationFilter[] | undefined;
    /**
     * <p>One or more filters. Use a filter to return a more specific list of managed nodes. You can
     *    filter based on tags applied to your managed nodes. Tag filters can't be combined with other
     *    filter types. Use this <code>Filters</code> data type instead of
     *     <code>InstanceInformationFilterList</code>, which is deprecated.</p>
     * @public
     */
    Filters?: InstanceInformationStringFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results. The default value is 10 items.
     *   </p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Status information about the aggregated associations.</p>
 * @public
 */
export interface InstanceAggregatedAssociationOverview {
    /**
     * <p>Detailed status information about the aggregated associations.</p>
     * @public
     */
    DetailedStatus?: string | undefined;
    /**
     * <p>The number of associations for the managed nodes.</p>
     * @public
     */
    InstanceAssociationStatusAggregatedCount?: Record<string, number> | undefined;
}
/**
 * <p>Describes a filter for a specific list of managed nodes. </p>
 * @public
 */
export interface InstanceInformation {
    /**
     * <p>The managed node ID. </p>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>Connection status of SSM Agent. </p>
     *          <note>
     *             <p>The status <code>Inactive</code> has been deprecated and is no longer in use.</p>
     *          </note>
     * @public
     */
    PingStatus?: PingStatus | undefined;
    /**
     * <p>The date and time when the agent last pinged the Systems Manager service. </p>
     * @public
     */
    LastPingDateTime?: Date | undefined;
    /**
     * <p>The version of SSM Agent running on your Linux managed node. </p>
     * @public
     */
    AgentVersion?: string | undefined;
    /**
     * <p>Indicates whether the latest version of SSM Agent is running on your Linux managed node. This
     *    field doesn't indicate whether or not the latest version is installed on Windows managed nodes,
     *    because some older versions of Windows Server use the EC2Config service to process Systems Manager
     *    requests.</p>
     * @public
     */
    IsLatestVersion?: boolean | undefined;
    /**
     * <p>The operating system platform type.</p>
     * @public
     */
    PlatformType?: PlatformType | undefined;
    /**
     * <p>The name of the operating system platform running on your managed node. </p>
     * @public
     */
    PlatformName?: string | undefined;
    /**
     * <p>The version of the OS platform running on your managed node. </p>
     * @public
     */
    PlatformVersion?: string | undefined;
    /**
     * <p>The activation ID created by Amazon Web Services Systems Manager when the server or virtual machine (VM) was
     *    registered.</p>
     * @public
     */
    ActivationId?: string | undefined;
    /**
     * <p>The role assigned to an Amazon EC2 instance configured with a Systems Manager
     *    Quick Setup host management configuration or the role assigned to an on-premises managed
     *    node.</p>
     *          <p> This call doesn't return the IAM role for <i>unmanaged</i>
     *    Amazon EC2 instances (instances not configured for Systems Manager). To retrieve the
     *    role for an unmanaged instance, use the Amazon EC2 <code>DescribeInstances</code> operation. For
     *    information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html">DescribeInstances</a> in the
     *     <i>Amazon EC2 API Reference</i> or <a href="https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html">describe-instances</a> in the
     *     <i>Amazon Web Services CLI Command Reference</i>.</p>
     * @public
     */
    IamRole?: string | undefined;
    /**
     * <p>The date the server or VM was registered with Amazon Web Services as a managed node.</p>
     * @public
     */
    RegistrationDate?: Date | undefined;
    /**
     * <p>The type of instance. Instances are either EC2 instances or managed instances. </p>
     * @public
     */
    ResourceType?: ResourceType | undefined;
    /**
     * <p>The name assigned to an on-premises server, edge device, or virtual machine (VM) when it is
     *    activated as a Systems Manager managed node. The name is specified as the <code>DefaultInstanceName</code>
     *    property using the <a>CreateActivation</a> command. It is applied to the managed node
     *    by specifying the Activation Code and Activation ID when you install SSM Agent on the node, as
     *    explained in <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-multicloud-ssm-agent-install-linux.html">How to
     *     install SSM Agent on hybrid Linux nodes</a> and <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-multicloud-ssm-agent-install-windows.html">How to
     *     install SSM Agent on hybrid Windows Server nodes</a>. To retrieve the <code>Name</code> tag
     *    of an EC2 instance, use the Amazon EC2 <code>DescribeInstances</code> operation. For information, see
     *     <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html">DescribeInstances</a> in the <i>Amazon EC2 API Reference</i> or <a href="https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html">describe-instances</a> in the <i>Amazon Web Services CLI Command Reference</i>.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The IP address of the managed node.</p>
     * @public
     */
    IPAddress?: string | undefined;
    /**
     * <p>The fully qualified host name of the managed node.</p>
     * @public
     */
    ComputerName?: string | undefined;
    /**
     * <p>The status of the association.</p>
     * @public
     */
    AssociationStatus?: string | undefined;
    /**
     * <p>The date the association was last run.</p>
     * @public
     */
    LastAssociationExecutionDate?: Date | undefined;
    /**
     * <p>The last date the association was successfully run.</p>
     * @public
     */
    LastSuccessfulAssociationExecutionDate?: Date | undefined;
    /**
     * <p>Information about the association.</p>
     * @public
     */
    AssociationOverview?: InstanceAggregatedAssociationOverview | undefined;
    /**
     * <p>The ID of the source resource. For IoT Greengrass devices, <code>SourceId</code> is
     *    the Thing name. </p>
     * @public
     */
    SourceId?: string | undefined;
    /**
     * <p>The type of the source resource. For IoT Greengrass devices, <code>SourceType</code>
     *    is <code>AWS::IoT::Thing</code>. For Azure Virtual Machines, <code>SourceType</code> is
     *     <code>Microsoft.Compute/virtualMachines</code>.</p>
     * @public
     */
    SourceType?: SourceType | undefined;
    /**
     * <p>The location of the source resource in the third-party cloud environment.</p>
     * @public
     */
    SourceLocation?: string | undefined;
}
/**
 * @public
 */
export interface DescribeInstanceInformationResult {
    /**
     * <p>The managed node information list.</p>
     * @public
     */
    InstanceInformationList?: InstanceInformation[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty. </p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeInstancePatchesRequest {
    /**
     * <p>The ID of the managed node whose patch state information should be retrieved.</p>
     * @public
     */
    InstanceId: string | undefined;
    /**
     * <p>Each element in the array is a structure containing a key-value pair.</p>
     *          <p>Supported keys for <code>DescribeInstancePatches</code>include the following:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>Classification</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>Security</code> | <code>SecurityUpdates</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>KBId</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>KB4480056</code> | <code>java-1.7.0-openjdk.x86_64</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>Severity</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>Important</code> | <code>Medium</code> | <code>Low</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>State</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>Installed</code> | <code>InstalledOther</code> |
     *       <code>InstalledPendingReboot</code>
     *                </p>
     *                <p>For lists of all <code>State</code> values, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-compliance-states.html">Patch compliance
     *       state values</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *             </li>
     *          </ul>
     * @public
     */
    Filters?: PatchOrchestratorFilter[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>The maximum number of patches to return (per page).</p>
     * @public
     */
    MaxResults?: number | undefined;
}
/**
 * <p>Information about the state of a patch on a particular managed node as it relates to the
 *    patch baseline used to patch the node.</p>
 * @public
 */
export interface PatchComplianceData {
    /**
     * <p>The title of the patch.</p>
     * @public
     */
    Title: string | undefined;
    /**
     * <p>The operating system-specific ID of the patch.</p>
     * @public
     */
    KBId: string | undefined;
    /**
     * <p>The classification of the patch, such as <code>SecurityUpdates</code>, <code>Updates</code>,
     *    and <code>CriticalUpdates</code>.</p>
     * @public
     */
    Classification: string | undefined;
    /**
     * <p>The severity of the patch such as <code>Critical</code>, <code>Important</code>, and
     *     <code>Moderate</code>.</p>
     * @public
     */
    Severity: string | undefined;
    /**
     * <p>The state of the patch on the managed node, such as INSTALLED or FAILED.</p>
     *          <p>For descriptions of each patch state, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/compliance-about.html#compliance-monitor-patch">About
     *     patch compliance</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    State: PatchComplianceDataState | undefined;
    /**
     * <p>The date/time the patch was installed on the managed node. Not all operating systems provide
     *    this level of information.</p>
     * @public
     */
    InstalledTime: Date | undefined;
    /**
     * <p>The IDs of one or more Common Vulnerabilities and Exposure (CVE) issues that are resolved by
     *    the patch.</p>
     *          <note>
     *             <p>Currently, CVE ID values are reported only for patches with a status of
     *      <code>Missing</code> or <code>Failed</code>.</p>
     *          </note>
     * @public
     */
    CVEIds?: string | undefined;
}
/**
 * @public
 */
export interface DescribeInstancePatchesResult {
    /**
     * <p>Each entry in the array is a structure containing:</p>
     *          <ul>
     *             <li>
     *                <p>Title (string)</p>
     *             </li>
     *             <li>
     *                <p>KBId (string)</p>
     *             </li>
     *             <li>
     *                <p>Classification (string)</p>
     *             </li>
     *             <li>
     *                <p>Severity (string)</p>
     *             </li>
     *             <li>
     *                <p>State (string, such as "INSTALLED" or "FAILED")</p>
     *             </li>
     *             <li>
     *                <p>InstalledTime (DateTime)</p>
     *             </li>
     *             <li>
     *                <p>InstalledBy (string)</p>
     *             </li>
     *          </ul>
     * @public
     */
    Patches?: PatchComplianceData[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeInstancePatchStatesRequest {
    /**
     * <p>The ID of the managed node for which patch state information should be retrieved.</p>
     * @public
     */
    InstanceIds: string[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>The maximum number of managed nodes to return (per page).</p>
     * @public
     */
    MaxResults?: number | undefined;
}
/**
 * <p>Defines the high-level patch compliance state for a managed node, providing information
 *    about the number of installed, missing, not applicable, and failed patches along with metadata
 *    about the operation when this information was gathered for the managed node.</p>
 * @public
 */
export interface InstancePatchState {
    /**
     * <p>The ID of the managed node the high-level patch compliance information was collected
     *    for.</p>
     * @public
     */
    InstanceId: string | undefined;
    /**
     * <p>The name of the patch group the managed node belongs to.</p>
     * @public
     */
    PatchGroup: string | undefined;
    /**
     * <p>The ID of the patch baseline used to patch the managed node.</p>
     * @public
     */
    BaselineId: string | undefined;
    /**
     * <p>The ID of the patch baseline snapshot used during the patching operation when this
     *    compliance data was collected.</p>
     * @public
     */
    SnapshotId?: string | undefined;
    /**
     * <p>An https URL or an Amazon Simple Storage Service (Amazon S3) path-style URL to a list of
     *    patches to be installed. This patch installation list, which you maintain in an S3 bucket in YAML
     *    format and specify in the SSM document <code>AWS-RunPatchBaseline</code>, overrides the patches
     *    specified by the default patch baseline.</p>
     *          <p>For more information about the <code>InstallOverrideList</code> parameter, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-about-aws-runpatchbaseline.html">SSM Command
     *     document for patching: <code>AWS-RunPatchBaseline</code>
     *             </a> in the
     *     <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    InstallOverrideList?: string | undefined;
    /**
     * <p>Placeholder information. This field will always be empty in the current release of the
     *    service.</p>
     * @public
     */
    OwnerInformation?: string | undefined;
    /**
     * <p>The number of patches from the patch baseline that are installed on the managed node.</p>
     * @public
     */
    InstalledCount?: number | undefined;
    /**
     * <p>The number of patches not specified in the patch baseline that are installed on the managed
     *    node.</p>
     * @public
     */
    InstalledOtherCount?: number | undefined;
    /**
     * <p>The number of patches installed by Patch Manager since the last time the managed node was
     *    rebooted.</p>
     * @public
     */
    InstalledPendingRebootCount?: number | undefined;
    /**
     * <p>The number of patches installed on a managed node that are specified in a
     *     <code>RejectedPatches</code> list. Patches with a status of <code>InstalledRejected</code> were
     *    typically installed before they were added to a <code>RejectedPatches</code> list.</p>
     *          <note>
     *             <p>If <code>ALLOW_AS_DEPENDENCY</code> is the specified option for
     *      <code>RejectedPatchesAction</code>, the value of <code>InstalledRejectedCount</code> will
     *     always be <code>0</code> (zero).</p>
     *          </note>
     * @public
     */
    InstalledRejectedCount?: number | undefined;
    /**
     * <p>The number of patches from the patch baseline that are applicable for the managed node but
     *    aren't currently installed.</p>
     * @public
     */
    MissingCount?: number | undefined;
    /**
     * <p>The number of patches from the patch baseline that were attempted to be installed during the
     *    last patching operation, but failed to install.</p>
     * @public
     */
    FailedCount?: number | undefined;
    /**
     * <p>The number of patches beyond the supported limit of <code>NotApplicableCount</code> that
     *    aren't reported by name to Inventory. Inventory is a tool in Amazon Web Services Systems Manager.</p>
     * @public
     */
    UnreportedNotApplicableCount?: number | undefined;
    /**
     * <p>The number of patches from the patch baseline that aren't applicable for the managed node
     *    and therefore aren't installed on the node. This number may be truncated if the list of patch
     *    names is very large. The number of patches beyond this limit are reported in
     *     <code>UnreportedNotApplicableCount</code>.</p>
     * @public
     */
    NotApplicableCount?: number | undefined;
    /**
     * <p>The number of security-related patches that are available but not approved because they
     *    didn't meet the patch baseline requirements. For example, an updated version of a patch might
     *    have been released before the specified auto-approval period was over.</p>
     *          <p>Applies to Windows Server managed nodes only.</p>
     * @public
     */
    AvailableSecurityUpdateCount?: number | undefined;
    /**
     * <p>The time the most recent patching operation was started on the managed node.</p>
     * @public
     */
    OperationStartTime: Date | undefined;
    /**
     * <p>The time the most recent patching operation completed on the managed node.</p>
     * @public
     */
    OperationEndTime: Date | undefined;
    /**
     * <p>The type of patching operation that was performed: or </p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>SCAN</code> assesses the patch compliance state.</p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>INSTALL</code> installs missing patches.</p>
     *             </li>
     *          </ul>
     * @public
     */
    Operation: PatchOperationType | undefined;
    /**
     * <p>The time of the last attempt to patch the managed node with <code>NoReboot</code> specified
     *    as the reboot option.</p>
     * @public
     */
    LastNoRebootInstallOperationTime?: Date | undefined;
    /**
     * <p>Indicates the reboot option specified in the patch baseline.</p>
     *          <note>
     *             <p>Reboot options apply to <code>Install</code> operations only. Reboots aren't attempted for
     *     Patch Manager <code>Scan</code> operations.</p>
     *          </note>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>RebootIfNeeded</code>: Patch Manager tries to reboot the managed node if it
     *      installed any patches, or if any patches are detected with a status of
     *       <code>InstalledPendingReboot</code>.</p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>NoReboot</code>: Patch Manager attempts to install missing packages without trying
     *      to reboot the system. Patches installed with this option are assigned a status of
     *       <code>InstalledPendingReboot</code>. These patches might not be in effect until a reboot is
     *      performed.</p>
     *             </li>
     *          </ul>
     * @public
     */
    RebootOption?: RebootOption | undefined;
    /**
     * <p>The number of patches per node that are specified as <code>Critical</code> for compliance
     *    reporting in the patch baseline aren't installed. These patches might be missing, have failed
     *    installation, were rejected, or were installed but awaiting a required managed node reboot. The
     *    status of these managed nodes is <code>NON_COMPLIANT</code>.</p>
     * @public
     */
    CriticalNonCompliantCount?: number | undefined;
    /**
     * <p>The number of patches per node that are specified as <code>Security</code> in a patch
     *    advisory aren't installed. These patches might be missing, have failed installation, were
     *    rejected, or were installed but awaiting a required managed node reboot. The status of these
     *    managed nodes is <code>NON_COMPLIANT</code>.</p>
     * @public
     */
    SecurityNonCompliantCount?: number | undefined;
    /**
     * <p>The number of patches per node that are specified as other than <code>Critical</code> or
     *     <code>Security</code> but aren't compliant with the patch baseline. The status of these managed
     *    nodes is <code>NON_COMPLIANT</code>.</p>
     * @public
     */
    OtherNonCompliantCount?: number | undefined;
}
/**
 * @public
 */
export interface DescribeInstancePatchStatesResult {
    /**
     * <p>The high-level patch state for the requested managed nodes.</p>
     * @public
     */
    InstancePatchStates?: InstancePatchState[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Defines a filter used in <a>DescribeInstancePatchStatesForPatchGroup</a> to scope
 *    down the information returned by the API.</p>
 *          <p>
 *             <b>Example</b>: To filter for all managed nodes in a patch group
 *    having more than three patches with a <code>FailedCount</code> status, use the following for the
 *    filter:</p>
 *          <ul>
 *             <li>
 *                <p>Value for <code>Key</code>: <code>FailedCount</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>Value for <code>Type</code>: <code>GreaterThan</code>
 *                </p>
 *             </li>
 *             <li>
 *                <p>Value for <code>Values</code>: <code>3</code>
 *                </p>
 *             </li>
 *          </ul>
 * @public
 */
export interface InstancePatchStateFilter {
    /**
     * <p>The key for the filter. Supported values include the following:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>InstalledCount</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>InstalledOtherCount</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>InstalledPendingRebootCount</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>InstalledRejectedCount</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>MissingCount</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>FailedCount</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>UnreportedNotApplicableCount</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>NotApplicableCount</code>
     *                </p>
     *             </li>
     *          </ul>
     * @public
     */
    Key: string | undefined;
    /**
     * <p>The value for the filter. Must be an integer greater than or equal to 0.</p>
     * @public
     */
    Values: string[] | undefined;
    /**
     * <p>The type of comparison that should be performed for the value.</p>
     * @public
     */
    Type: InstancePatchStateOperatorType | undefined;
}
/**
 * @public
 */
export interface DescribeInstancePatchStatesForPatchGroupRequest {
    /**
     * <p>The name of the patch group for which the patch state information should be
     *    retrieved.</p>
     * @public
     */
    PatchGroup: string | undefined;
    /**
     * <p>Each entry in the array is a structure containing:</p>
     *          <ul>
     *             <li>
     *                <p>Key (string between 1 and 200 characters)</p>
     *             </li>
     *             <li>
     *                <p>Values (array containing a single string)</p>
     *             </li>
     *             <li>
     *                <p>Type (string "Equal", "NotEqual", "LessThan", "GreaterThan")</p>
     *             </li>
     *          </ul>
     * @public
     */
    Filters?: InstancePatchStateFilter[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>The maximum number of patches to return (per page).</p>
     * @public
     */
    MaxResults?: number | undefined;
}
/**
 * @public
 */
export interface DescribeInstancePatchStatesForPatchGroupResult {
    /**
     * <p>The high-level patch state for the requested managed nodes. </p>
     * @public
     */
    InstancePatchStates?: InstancePatchState[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>The filters to describe or get information about your managed nodes.</p>
 * @public
 */
export interface InstancePropertyStringFilter {
    /**
     * <p>The filter key name to describe your managed nodes.</p>
     * @public
     */
    Key: string | undefined;
    /**
     * <p>The filter key name to describe your managed nodes.</p>
     * @public
     */
    Values: string[] | undefined;
    /**
     * <p>The operator used by the filter call.</p>
     * @public
     */
    Operator?: InstancePropertyFilterOperator | undefined;
}
/**
 * <p>Describes a filter for a specific list of managed nodes. You can filter node information by
 *    using tags. You specify tags by using a key-value mapping.</p>
 * @public
 */
export interface InstancePropertyFilter {
    /**
     * <p>The name of the filter.</p>
     * @public
     */
    key: InstancePropertyFilterKey | undefined;
    /**
     * <p>The filter values.</p>
     * @public
     */
    valueSet: string[] | undefined;
}
/**
 * @public
 */
export interface DescribeInstancePropertiesRequest {
    /**
     * <p>An array of instance property filters.</p>
     * @public
     */
    InstancePropertyFilterList?: InstancePropertyFilter[] | undefined;
    /**
     * <p>The request filters to use with the operator.</p>
     * @public
     */
    FiltersWithOperator?: InstancePropertyStringFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for the call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token provided by a previous request to use to return the next set of properties.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>An object containing various properties of a managed node.</p>
 * @public
 */
export interface InstanceProperty {
    /**
     * <p>The value of the EC2 <code>Name</code> tag associated with the node. If a <code>Name</code>
     *    tag hasn't been applied to the node, this value is blank.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The ID of the managed node.</p>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The instance type of the managed node. For example, t3.large.</p>
     * @public
     */
    InstanceType?: string | undefined;
    /**
     * <p>The instance profile attached to the node. If an instance profile isn't attached to the
     *    node, this value is blank.</p>
     * @public
     */
    InstanceRole?: string | undefined;
    /**
     * <p>The name of the key pair associated with the node. If a key pair isnt't associated with the
     *    node, this value is blank.</p>
     * @public
     */
    KeyName?: string | undefined;
    /**
     * <p>The current state of the node.</p>
     * @public
     */
    InstanceState?: string | undefined;
    /**
     * <p>The CPU architecture of the node. For example, <code>x86_64</code>.</p>
     * @public
     */
    Architecture?: string | undefined;
    /**
     * <p>The public IPv4 address assigned to the node. If a public IPv4 address isn't assigned to the
     *    node, this value is blank.</p>
     * @public
     */
    IPAddress?: string | undefined;
    /**
     * <p>The timestamp for when the node was launched.</p>
     * @public
     */
    LaunchTime?: Date | undefined;
    /**
     * <p>Connection status of the SSM Agent on the managed node.</p>
     * @public
     */
    PingStatus?: PingStatus | undefined;
    /**
     * <p>The date and time when the SSM Agent last pinged the Systems Manager service.</p>
     * @public
     */
    LastPingDateTime?: Date | undefined;
    /**
     * <p>The version of SSM Agent running on your managed node.</p>
     * @public
     */
    AgentVersion?: string | undefined;
    /**
     * <p>The operating system platform type of the managed node. For example, Windows Server or
     *     Amazon Linux 2.</p>
     * @public
     */
    PlatformType?: PlatformType | undefined;
    /**
     * <p>The name of the operating system platform running on your managed node.</p>
     * @public
     */
    PlatformName?: string | undefined;
    /**
     * <p>The version of the OS platform running on your managed node.</p>
     * @public
     */
    PlatformVersion?: string | undefined;
    /**
     * <p>The activation ID created by Systems Manager when the server or virtual machine (VM) was
     *    registered</p>
     * @public
     */
    ActivationId?: string | undefined;
    /**
     * <p>The IAM role used in the hybrid activation to register the node with
     *    Systems Manager.</p>
     * @public
     */
    IamRole?: string | undefined;
    /**
     * <p>The date the node was registered with Systems Manager.</p>
     * @public
     */
    RegistrationDate?: Date | undefined;
    /**
     * <p>The type of managed node.</p>
     * @public
     */
    ResourceType?: string | undefined;
    /**
     * <p>The fully qualified host name of the managed node.</p>
     * @public
     */
    ComputerName?: string | undefined;
    /**
     * <p>The status of the State Manager association applied to the managed node.</p>
     * @public
     */
    AssociationStatus?: string | undefined;
    /**
     * <p>The date the association was last run.</p>
     * @public
     */
    LastAssociationExecutionDate?: Date | undefined;
    /**
     * <p>The last date the association was successfully run.</p>
     * @public
     */
    LastSuccessfulAssociationExecutionDate?: Date | undefined;
    /**
     * <p>Status information about the aggregated associations.</p>
     * @public
     */
    AssociationOverview?: InstanceAggregatedAssociationOverview | undefined;
    /**
     * <p>The ID of the source resource.</p>
     * @public
     */
    SourceId?: string | undefined;
    /**
     * <p>The type of the source resource. Valid values: <code>AWS::EC2::Instance</code> |
     *     <code>AWS::SSM::ManagedInstance</code> | <code>AWS::IoT::Thing</code> |
     *     <code>Microsoft.Compute/virtualMachines</code>.</p>
     * @public
     */
    SourceType?: SourceType | undefined;
    /**
     * <p>The location of the source resource in the third-party cloud environment.</p>
     * @public
     */
    SourceLocation?: string | undefined;
    /**
     * <p>The Availability Zone where the managed node is located.</p>
     * @public
     */
    AvailabilityZone?: string | undefined;
}
/**
 * @public
 */
export interface DescribeInstancePropertiesResult {
    /**
     * <p>Properties for the managed instances.</p>
     * @public
     */
    InstanceProperties?: InstanceProperty[] | undefined;
    /**
     * <p>The token for the next set of properties to return. Use this token to get the next set of
     *    results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeInventoryDeletionsRequest {
    /**
     * <p>Specify the delete inventory ID for which you want information. This ID was returned by the
     *     <code>DeleteInventory</code> operation.</p>
     * @public
     */
    DeletionId?: string | undefined;
    /**
     * <p>A token to start the list. Use this token to get the next set of results. </p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
}
/**
 * <p>Status information returned by the <code>DeleteInventory</code> operation.</p>
 * @public
 */
export interface InventoryDeletionStatusItem {
    /**
     * <p>The deletion ID returned by the <code>DeleteInventory</code> operation.</p>
     * @public
     */
    DeletionId?: string | undefined;
    /**
     * <p>The name of the inventory data type.</p>
     * @public
     */
    TypeName?: string | undefined;
    /**
     * <p>The UTC timestamp when the delete operation started.</p>
     * @public
     */
    DeletionStartTime?: Date | undefined;
    /**
     * <p>The status of the operation. Possible values are InProgress and Complete.</p>
     * @public
     */
    LastStatus?: InventoryDeletionStatus | undefined;
    /**
     * <p>Information about the status.</p>
     * @public
     */
    LastStatusMessage?: string | undefined;
    /**
     * <p>Information about the delete operation. For more information about this summary, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/inventory-custom.html#delete-custom-inventory">Understanding the delete inventory summary</a> in the
     *    <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    DeletionSummary?: InventoryDeletionSummary | undefined;
    /**
     * <p>The UTC timestamp of when the last status report.</p>
     * @public
     */
    LastStatusUpdateTime?: Date | undefined;
}
/**
 * @public
 */
export interface DescribeInventoryDeletionsResult {
    /**
     * <p>A list of status items for deleted inventory.</p>
     * @public
     */
    InventoryDeletions?: InventoryDeletionStatusItem[] | undefined;
    /**
     * <p>The token for the next set of items to return. Use this token to get the next set of
     *    results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Filter used in the request. Supported filter keys depend on the API operation that includes
 *    the filter. API operations that use <code>MaintenanceWindowFilter></code> include the
 *    following:</p>
 *          <ul>
 *             <li>
 *                <p>
 *                   <a>DescribeMaintenanceWindowExecutions</a>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <a>DescribeMaintenanceWindowExecutionTaskInvocations</a>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <a>DescribeMaintenanceWindowExecutionTasks</a>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <a>DescribeMaintenanceWindows</a>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <a>DescribeMaintenanceWindowTargets</a>
 *                </p>
 *             </li>
 *             <li>
 *                <p>
 *                   <a>DescribeMaintenanceWindowTasks</a>
 *                </p>
 *             </li>
 *          </ul>
 * @public
 */
export interface MaintenanceWindowFilter {
    /**
     * <p>The name of the filter.</p>
     * @public
     */
    Key?: string | undefined;
    /**
     * <p>The filter values.</p>
     * @public
     */
    Values?: string[] | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowExecutionsRequest {
    /**
     * <p>The ID of the maintenance window whose executions should be retrieved.</p>
     * @public
     */
    WindowId: string | undefined;
    /**
     * <p>Each entry in the array is a structure containing:</p>
     *          <ul>
     *             <li>
     *                <p>Key. A string between 1 and 128 characters. Supported keys include
     *       <code>ExecutedBefore</code> and <code>ExecutedAfter</code>.</p>
     *             </li>
     *             <li>
     *                <p>Values. An array of strings, each between 1 and 256 characters. Supported values are
     *      date/time strings in a valid ISO 8601 date/time format, such as
     *       <code>2024-11-04T05:00:00Z</code>.</p>
     *             </li>
     *          </ul>
     * @public
     */
    Filters?: MaintenanceWindowFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Describes the information about an execution of a maintenance window. </p>
 * @public
 */
export interface MaintenanceWindowExecution {
    /**
     * <p>The ID of the maintenance window.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The ID of the maintenance window execution.</p>
     * @public
     */
    WindowExecutionId?: string | undefined;
    /**
     * <p>The status of the execution.</p>
     * @public
     */
    Status?: MaintenanceWindowExecutionStatus | undefined;
    /**
     * <p>The details explaining the status. Not available for all status values.</p>
     * @public
     */
    StatusDetails?: string | undefined;
    /**
     * <p>The time the execution started.</p>
     * @public
     */
    StartTime?: Date | undefined;
    /**
     * <p>The time the execution finished.</p>
     * @public
     */
    EndTime?: Date | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowExecutionsResult {
    /**
     * <p>Information about the maintenance window executions.</p>
     * @public
     */
    WindowExecutions?: MaintenanceWindowExecution[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowExecutionTaskInvocationsRequest {
    /**
     * <p>The ID of the maintenance window execution the task is part of.</p>
     * @public
     */
    WindowExecutionId: string | undefined;
    /**
     * <p>The ID of the specific task in the maintenance window task that should be retrieved.</p>
     * @public
     */
    TaskId: string | undefined;
    /**
     * <p>Optional filters used to scope down the returned task invocations. The supported filter key
     *    is <code>STATUS</code> with the corresponding values <code>PENDING</code>,
     *     <code>IN_PROGRESS</code>, <code>SUCCESS</code>, <code>FAILED</code>, <code>TIMED_OUT</code>,
     *     <code>CANCELLING</code>, and <code>CANCELLED</code>.</p>
     * @public
     */
    Filters?: MaintenanceWindowFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Describes the information about a task invocation for a particular target as part of a task
 *    execution performed as part of a maintenance window execution.</p>
 * @public
 */
export interface MaintenanceWindowExecutionTaskInvocationIdentity {
    /**
     * <p>The ID of the maintenance window execution that ran the task.</p>
     * @public
     */
    WindowExecutionId?: string | undefined;
    /**
     * <p>The ID of the specific task execution in the maintenance window execution.</p>
     * @public
     */
    TaskExecutionId?: string | undefined;
    /**
     * <p>The ID of the task invocation.</p>
     * @public
     */
    InvocationId?: string | undefined;
    /**
     * <p>The ID of the action performed in the service that actually handled the task invocation. If
     *    the task type is <code>RUN_COMMAND</code>, this value is the command ID.</p>
     * @public
     */
    ExecutionId?: string | undefined;
    /**
     * <p>The task type.</p>
     * @public
     */
    TaskType?: MaintenanceWindowTaskType | undefined;
    /**
     * <p>The parameters that were provided for the invocation when it was run.</p>
     * @public
     */
    Parameters?: string | undefined;
    /**
     * <p>The status of the task invocation.</p>
     * @public
     */
    Status?: MaintenanceWindowExecutionStatus | undefined;
    /**
     * <p>The details explaining the status of the task invocation. Not available for all status
     *    values. </p>
     * @public
     */
    StatusDetails?: string | undefined;
    /**
     * <p>The time the invocation started.</p>
     * @public
     */
    StartTime?: Date | undefined;
    /**
     * <p>The time the invocation finished.</p>
     * @public
     */
    EndTime?: Date | undefined;
    /**
     * <p>User-provided value that was specified when the target was registered with the maintenance
     *    window. This was also included in any Amazon CloudWatch Events events raised during the task
     *    invocation.</p>
     * @public
     */
    OwnerInformation?: string | undefined;
    /**
     * <p>The ID of the target definition in this maintenance window the invocation was performed
     *    for.</p>
     * @public
     */
    WindowTargetId?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowExecutionTaskInvocationsResult {
    /**
     * <p>Information about the task invocation results per invocation.</p>
     * @public
     */
    WindowExecutionTaskInvocationIdentities?: MaintenanceWindowExecutionTaskInvocationIdentity[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowExecutionTasksRequest {
    /**
     * <p>The ID of the maintenance window execution whose task executions should be retrieved.</p>
     * @public
     */
    WindowExecutionId: string | undefined;
    /**
     * <p>Optional filters used to scope down the returned tasks. The supported filter key is
     *     <code>STATUS</code> with the corresponding values <code>PENDING</code>,
     *    <code>IN_PROGRESS</code>, <code>SUCCESS</code>, <code>FAILED</code>, <code>TIMED_OUT</code>,
     *     <code>CANCELLING</code>, and <code>CANCELLED</code>.</p>
     * @public
     */
    Filters?: MaintenanceWindowFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Information about a task execution performed as part of a maintenance window
 *    execution.</p>
 * @public
 */
export interface MaintenanceWindowExecutionTaskIdentity {
    /**
     * <p>The ID of the maintenance window execution that ran the task.</p>
     * @public
     */
    WindowExecutionId?: string | undefined;
    /**
     * <p>The ID of the specific task execution in the maintenance window execution.</p>
     * @public
     */
    TaskExecutionId?: string | undefined;
    /**
     * <p>The status of the task execution.</p>
     * @public
     */
    Status?: MaintenanceWindowExecutionStatus | undefined;
    /**
     * <p>The details explaining the status of the task execution. Not available for all status
     *    values.</p>
     * @public
     */
    StatusDetails?: string | undefined;
    /**
     * <p>The time the task execution started.</p>
     * @public
     */
    StartTime?: Date | undefined;
    /**
     * <p>The time the task execution finished.</p>
     * @public
     */
    EndTime?: Date | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the task that ran.</p>
     * @public
     */
    TaskArn?: string | undefined;
    /**
     * <p>The type of task that ran.</p>
     * @public
     */
    TaskType?: MaintenanceWindowTaskType | undefined;
    /**
     * <p>The details for the CloudWatch alarm applied to your maintenance window task.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
    /**
     * <p>The CloudWatch alarm that was invoked by the maintenance window task.</p>
     * @public
     */
    TriggeredAlarms?: AlarmStateInformation[] | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowExecutionTasksResult {
    /**
     * <p>Information about the task executions.</p>
     * @public
     */
    WindowExecutionTaskIdentities?: MaintenanceWindowExecutionTaskIdentity[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowsRequest {
    /**
     * <p>Optional filters used to narrow down the scope of the returned maintenance windows.
     *    Supported filter keys are <code>Name</code> and <code>Enabled</code>. For example,
     *     <code>Name=MyMaintenanceWindow</code> and <code>Enabled=True</code>.</p>
     * @public
     */
    Filters?: MaintenanceWindowFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Information about the maintenance window.</p>
 * @public
 */
export interface MaintenanceWindowIdentity {
    /**
     * <p>The ID of the maintenance window.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The name of the maintenance window.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>A description of the maintenance window.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>Indicates whether the maintenance window is enabled.</p>
     * @public
     */
    Enabled?: boolean | undefined;
    /**
     * <p>The duration of the maintenance window in hours.</p>
     * @public
     */
    Duration?: number | undefined;
    /**
     * <p>The number of hours before the end of the maintenance window that Amazon Web Services Systems Manager stops scheduling
     *    new tasks for execution.</p>
     * @public
     */
    Cutoff?: number | undefined;
    /**
     * <p>The schedule of the maintenance window in the form of a cron or rate expression.</p>
     * @public
     */
    Schedule?: string | undefined;
    /**
     * <p>The time zone that the scheduled maintenance window executions are based on, in Internet
     *    Assigned Numbers Authority (IANA) format.</p>
     * @public
     */
    ScheduleTimezone?: string | undefined;
    /**
     * <p>The number of days to wait to run a maintenance window after the scheduled cron expression
     *    date and time.</p>
     * @public
     */
    ScheduleOffset?: number | undefined;
    /**
     * <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled
     *    to become inactive.</p>
     * @public
     */
    EndDate?: string | undefined;
    /**
     * <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled
     *    to become active.</p>
     * @public
     */
    StartDate?: string | undefined;
    /**
     * <p>The next time the maintenance window will actually run, taking into account any specified
     *    times for the maintenance window to become active or inactive.</p>
     * @public
     */
    NextExecutionTime?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowsResult {
    /**
     * <p>Information about the maintenance windows.</p>
     * @public
     */
    WindowIdentities?: MaintenanceWindowIdentity[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowScheduleRequest {
    /**
     * <p>The ID of the maintenance window to retrieve information about.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The managed node ID or key-value pair to retrieve information about.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>The type of resource you want to retrieve information about. For example,
     *     <code>INSTANCE</code>.</p>
     * @public
     */
    ResourceType?: MaintenanceWindowResourceType | undefined;
    /**
     * <p>Filters used to limit the range of results. For example, you can limit maintenance window
     *    executions to only those scheduled before or after a certain date and time.</p>
     * @public
     */
    Filters?: PatchOrchestratorFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Information about a scheduled execution for a maintenance window.</p>
 * @public
 */
export interface ScheduledWindowExecution {
    /**
     * <p>The ID of the maintenance window to be run.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The name of the maintenance window to be run.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The time, in ISO-8601 Extended format, that the maintenance window is scheduled to be
     *    run.</p>
     * @public
     */
    ExecutionTime?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowScheduleResult {
    /**
     * <p>Information about maintenance window executions scheduled for the specified time
     *    range.</p>
     * @public
     */
    ScheduledWindowExecutions?: ScheduledWindowExecution[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You use this token in the next call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowsForTargetRequest {
    /**
     * <p>The managed node ID or key-value pair to retrieve information about.</p>
     * @public
     */
    Targets: Target[] | undefined;
    /**
     * <p>The type of resource you want to retrieve information about. For example,
     *     <code>INSTANCE</code>.</p>
     * @public
     */
    ResourceType: MaintenanceWindowResourceType | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>The maintenance window to which the specified target belongs.</p>
 * @public
 */
export interface MaintenanceWindowIdentityForTarget {
    /**
     * <p>The ID of the maintenance window.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The name of the maintenance window.</p>
     * @public
     */
    Name?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowsForTargetResult {
    /**
     * <p>Information about the maintenance window targets and tasks a managed node is associated
     *    with.</p>
     * @public
     */
    WindowIdentities?: MaintenanceWindowIdentityForTarget[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You use this token in the next call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowTargetsRequest {
    /**
     * <p>The ID of the maintenance window whose targets should be retrieved.</p>
     * @public
     */
    WindowId: string | undefined;
    /**
     * <p>Optional filters that can be used to narrow down the scope of the returned window targets.
     *    The supported filter keys are <code>Type</code>, <code>WindowTargetId</code>, and
     *     <code>OwnerInformation</code>.</p>
     * @public
     */
    Filters?: MaintenanceWindowFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>The target registered with the maintenance window.</p>
 * @public
 */
export interface MaintenanceWindowTarget {
    /**
     * <p>The ID of the maintenance window to register the target with.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The ID of the target.</p>
     * @public
     */
    WindowTargetId?: string | undefined;
    /**
     * <p>The type of target that is being registered with the maintenance window.</p>
     * @public
     */
    ResourceType?: MaintenanceWindowResourceType | undefined;
    /**
     * <p>The targets, either managed nodes or tags.</p>
     *          <p>Specify managed nodes using the following format:</p>
     *          <p>
     *             <code>Key=instanceids,Values=<instanceid1>,<instanceid2></code>
     *          </p>
     *          <p>Tags are specified using the following format:</p>
     *          <p>
     *             <code>Key=<tag name>,Values=<tag value></code>.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>A user-provided value that will be included in any Amazon CloudWatch Events events that are
     *    raised while running tasks for these targets in this maintenance window.</p>
     * @public
     */
    OwnerInformation?: string | undefined;
    /**
     * <p>The name for the maintenance window target.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>A description for the target.</p>
     * @public
     */
    Description?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowTargetsResult {
    /**
     * <p>Information about the targets in the maintenance window.</p>
     * @public
     */
    Targets?: MaintenanceWindowTarget[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowTasksRequest {
    /**
     * <p>The ID of the maintenance window whose tasks should be retrieved.</p>
     * @public
     */
    WindowId: string | undefined;
    /**
     * <p>Optional filters used to narrow down the scope of the returned tasks. The supported filter
     *    keys are <code>WindowTaskId</code>, <code>TaskArn</code>, <code>Priority</code>, and
     *     <code>TaskType</code>.</p>
     * @public
     */
    Filters?: MaintenanceWindowFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Information about an Amazon Simple Storage Service (Amazon S3) bucket to write managed
 *    node-level logs to.</p>
 *          <note>
 *             <p>
 *                <code>LoggingInfo</code> has been deprecated. To specify an Amazon Simple Storage Service (Amazon S3) bucket to contain logs, instead use the
 *       <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure.
 *       For information about how Amazon Web Services Systems Manager handles these options for the supported maintenance
 *       window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
 *          </note>
 * @public
 */
export interface LoggingInfo {
    /**
     * <p>The name of an S3 bucket where execution logs are stored.</p>
     * @public
     */
    S3BucketName: string | undefined;
    /**
     * <p>(Optional) The S3 bucket subfolder. </p>
     * @public
     */
    S3KeyPrefix?: string | undefined;
    /**
     * <p>The Amazon Web Services Region where the S3 bucket is located.</p>
     * @public
     */
    S3Region: string | undefined;
}
/**
 * <p>Defines the values for a task parameter.</p>
 * @public
 */
export interface MaintenanceWindowTaskParameterValueExpression {
    /**
     * <p>This field contains an array of 0 or more strings, each 1 to 255 characters in
     *    length.</p>
     * @public
     */
    Values?: string[] | undefined;
}
/**
 * <p>Information about a task defined for a maintenance window.</p>
 * @public
 */
export interface MaintenanceWindowTask {
    /**
     * <p>The ID of the maintenance window where the task is registered.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The task ID.</p>
     * @public
     */
    WindowTaskId?: string | undefined;
    /**
     * <p>The resource that the task uses during execution. For <code>RUN_COMMAND</code> and
     *     <code>AUTOMATION</code> task types, <code>TaskArn</code> is the Amazon Web Services Systems Manager (SSM document) name or
     *    ARN. For <code>LAMBDA</code> tasks, it's the function name or ARN. For
     *     <code>STEP_FUNCTIONS</code> tasks, it's the state machine ARN.</p>
     *          <note>
     *             <p>Maintenance Window does not validate the TaskArn when you register a task.
     *    A successful registration does not guarantee that the TaskArn is valid.</p>
     *          </note>
     * @public
     */
    TaskArn?: string | undefined;
    /**
     * <p>The type of task.</p>
     * @public
     */
    Type?: MaintenanceWindowTaskType | undefined;
    /**
     * <p>The targets (either managed nodes or tags). Managed nodes are specified using
     *     <code>Key=instanceids,Values=<instanceid1>,<instanceid2></code>. Tags are specified
     *    using <code>Key=<tag name>,Values=<tag value></code>.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>The parameters that should be passed to the task when it is run.</p>
     *          <note>
     *             <p>
     *                <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs,
     *       instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information
     *       about how Systems Manager handles these options for the supported maintenance window task
     *       types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
     *          </note>
     * @public
     */
    TaskParameters?: Record<string, MaintenanceWindowTaskParameterValueExpression> | undefined;
    /**
     * <p>The priority of the task in the maintenance window. The lower the number, the higher the
     *    priority. Tasks that have the same priority are scheduled in parallel.</p>
     * @public
     */
    Priority?: number | undefined;
    /**
     * <p>Information about an S3 bucket to write task-level logs to.</p>
     *          <note>
     *             <p>
     *                <code>LoggingInfo</code> has been deprecated. To specify an Amazon Simple Storage Service (Amazon S3) bucket to contain logs, instead use the
     *       <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure.
     *       For information about how Amazon Web Services Systems Manager handles these options for the supported maintenance
     *       window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
     *          </note>
     * @public
     */
    LoggingInfo?: LoggingInfo | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the IAM service role for
     *                 Amazon Web Services Systems Manager to assume when running a maintenance window task. If you do not specify a
     *                 service role ARN, Systems Manager uses a service-linked role in your account. If no
     *                 appropriate service-linked role for Systems Manager exists in your account, it is created when
     *                 you run <code>RegisterTaskWithMaintenanceWindow</code>.</p>
     *          <p>However, for an improved security posture, we strongly recommend creating a custom
     *                 policy and custom service role for running your maintenance window tasks. The policy
     *                 can be crafted to provide only the permissions needed for your particular
     *                 maintenance window tasks. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-permissions.html">Setting up Maintenance Windows</a> in the in the
     *                     <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    ServiceRoleArn?: string | undefined;
    /**
     * <p>The maximum number of targets this task can be run for, in parallel.</p>
     *          <note>
     *             <p>Although this element is listed as "Required: No", a value can be omitted only when you are
     *     registering or updating a <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html">targetless
     *      task</a> You must provide a value in all other cases.</p>
     *             <p>For maintenance window tasks without a target specified, you can't supply a value for this
     *     option. Instead, the system inserts a placeholder value of <code>1</code>. This value doesn't
     *     affect the running of your task.</p>
     *          </note>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The maximum number of errors allowed before this task stops being scheduled.</p>
     *          <note>
     *             <p>Although this element is listed as "Required: No", a value can be omitted only when you are
     *     registering or updating a <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/maintenance-windows-targetless-tasks.html">targetless
     *      task</a> You must provide a value in all other cases.</p>
     *             <p>For maintenance window tasks without a target specified, you can't supply a value for this
     *     option. Instead, the system inserts a placeholder value of <code>1</code>. This value doesn't
     *     affect the running of your task.</p>
     *          </note>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>The task name.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>A description of the task.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The specification for whether tasks should continue to run after the cutoff time specified
     *    in the maintenance windows is reached. </p>
     * @public
     */
    CutoffBehavior?: MaintenanceWindowTaskCutoffBehavior | undefined;
    /**
     * <p>The details for the CloudWatch alarm applied to your maintenance window task.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
}
/**
 * @public
 */
export interface DescribeMaintenanceWindowTasksResult {
    /**
     * <p>Information about the tasks in the maintenance window.</p>
     * @public
     */
    Tasks?: MaintenanceWindowTask[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Describes an OpsItem filter.</p>
 * @public
 */
export interface OpsItemFilter {
    /**
     * <p>The name of the filter.</p>
     * @public
     */
    Key: OpsItemFilterKey | undefined;
    /**
     * <p>The filter value.</p>
     * @public
     */
    Values: string[] | undefined;
    /**
     * <p>The operator used by the filter call.</p>
     * @public
     */
    Operator: OpsItemFilterOperator | undefined;
}
/**
 * @public
 */
export interface DescribeOpsItemsRequest {
    /**
     * <p>One or more filters to limit the response.</p>
     *          <ul>
     *             <li>
     *                <p>Key: CreatedTime</p>
     *                <p>Operations: GreaterThan, LessThan</p>
     *             </li>
     *             <li>
     *                <p>Key: LastModifiedBy</p>
     *                <p>Operations: Contains, Equals</p>
     *             </li>
     *             <li>
     *                <p>Key: LastModifiedTime</p>
     *                <p>Operations: GreaterThan, LessThan</p>
     *             </li>
     *             <li>
     *                <p>Key: Priority</p>
     *                <p>Operations: Equals</p>
     *             </li>
     *             <li>
     *                <p>Key: Source</p>
     *                <p>Operations: Contains, Equals</p>
     *             </li>
     *             <li>
     *                <p>Key: Status</p>
     *                <p>Operations: Equals</p>
     *             </li>
     *             <li>
     *                <p>Key: Title*</p>
     *                <p>Operations: Equals,Contains</p>
     *             </li>
     *             <li>
     *                <p>Key: OperationalData**</p>
     *                <p>Operations: Equals</p>
     *             </li>
     *             <li>
     *                <p>Key: OperationalDataKey</p>
     *                <p>Operations: Equals</p>
     *             </li>
     *             <li>
     *                <p>Key: OperationalDataValue</p>
     *                <p>Operations: Equals, Contains</p>
     *             </li>
     *             <li>
     *                <p>Key: OpsItemId</p>
     *                <p>Operations: Equals</p>
     *             </li>
     *             <li>
     *                <p>Key: ResourceId</p>
     *                <p>Operations: Contains</p>
     *             </li>
     *             <li>
     *                <p>Key: AutomationId</p>
     *                <p>Operations: Equals</p>
     *             </li>
     *             <li>
     *                <p>Key: AccountId</p>
     *                <p>Operations: Equals</p>
     *             </li>
     *          </ul>
     *          <p>*The Equals operator for Title matches the first 100 characters. If you specify more than
     *    100 characters, they system returns an error that the filter value exceeds the length
     *    limit.</p>
     *          <p>**If you filter the response by using the OperationalData operator, specify a key-value pair
     *    by using the following JSON format: \{"key":"key_name","value":"a_value"\}</p>
     * @public
     */
    OpsItemFilters?: OpsItemFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>A token to start the list. Use this token to get the next set of results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>A count of OpsItems.</p>
 * @public
 */
export interface OpsItemSummary {
    /**
     * <p>The Amazon Resource Name (ARN) of the IAM entity that created the
     *    OpsItem.</p>
     * @public
     */
    CreatedBy?: string | undefined;
    /**
     * <p>The date and time the OpsItem was created.</p>
     * @public
     */
    CreatedTime?: Date | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the IAM entity that created the
     *    OpsItem.</p>
     * @public
     */
    LastModifiedBy?: string | undefined;
    /**
     * <p>The date and time the OpsItem was last updated.</p>
     * @public
     */
    LastModifiedTime?: Date | undefined;
    /**
     * <p>The importance of this OpsItem in relation to other OpsItems in the system.</p>
     * @public
     */
    Priority?: number | undefined;
    /**
     * <p>The impacted Amazon Web Services resource.</p>
     * @public
     */
    Source?: string | undefined;
    /**
     * <p>The OpsItem status.</p>
     * @public
     */
    Status?: OpsItemStatus | undefined;
    /**
     * <p>The ID of the OpsItem.</p>
     * @public
     */
    OpsItemId?: string | undefined;
    /**
     * <p>A short heading that describes the nature of the OpsItem and the impacted resource.</p>
     * @public
     */
    Title?: string | undefined;
    /**
     * <p>Operational data is custom data that provides useful reference details about the OpsItem.
     *   </p>
     * @public
     */
    OperationalData?: Record<string, OpsItemDataValue> | undefined;
    /**
     * <p>A list of OpsItems by category.</p>
     * @public
     */
    Category?: string | undefined;
    /**
     * <p>A list of OpsItems by severity.</p>
     * @public
     */
    Severity?: string | undefined;
    /**
     * <p>The type of OpsItem. Systems Manager supports the following types of OpsItems:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>/aws/issue</code>
     *                </p>
     *                <p>This type of OpsItem is used for default OpsItems created by OpsCenter. </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>/aws/changerequest</code>
     *                </p>
     *                <p>This type of OpsItem is used by Change Manager for reviewing and approving or rejecting change
     *      requests. </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>/aws/insight</code>
     *                </p>
     *                <p>This type of OpsItem is used by OpsCenter for aggregating and reporting on duplicate
     *      OpsItems. </p>
     *             </li>
     *          </ul>
     * @public
     */
    OpsItemType?: string | undefined;
    /**
     * <p>The time a runbook workflow started. Currently reported only for the OpsItem type
     *     <code>/aws/changerequest</code>.</p>
     * @public
     */
    ActualStartTime?: Date | undefined;
    /**
     * <p>The time a runbook workflow ended. Currently reported only for the OpsItem type
     *     <code>/aws/changerequest</code>.</p>
     * @public
     */
    ActualEndTime?: Date | undefined;
    /**
     * <p>The time specified in a change request for a runbook workflow to start. Currently supported
     *    only for the OpsItem type <code>/aws/changerequest</code>.</p>
     * @public
     */
    PlannedStartTime?: Date | undefined;
    /**
     * <p>The time specified in a change request for a runbook workflow to end. Currently supported
     *    only for the OpsItem type <code>/aws/changerequest</code>.</p>
     * @public
     */
    PlannedEndTime?: Date | undefined;
}
/**
 * @public
 */
export interface DescribeOpsItemsResponse {
    /**
     * <p>The token for the next set of items to return. Use this token to get the next set of
     *    results.</p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>A list of OpsItems.</p>
     * @public
     */
    OpsItemSummaries?: OpsItemSummary[] | undefined;
}
/**
 * <p>This data type is deprecated. Instead, use <a>ParameterStringFilter</a>.</p>
 * @public
 */
export interface ParametersFilter {
    /**
     * <p>The name of the filter.</p>
     * @public
     */
    Key: ParametersFilterKey | undefined;
    /**
     * <p>The filter values.</p>
     * @public
     */
    Values: string[] | undefined;
}
/**
 * <p>One or more filters. Use a filter to return a more specific list of results.</p>
 * @public
 */
export interface ParameterStringFilter {
    /**
     * <p>The name of the filter.</p>
     *          <p>The <code>ParameterStringFilter</code> object is used by the <a>DescribeParameters</a> and <a>GetParametersByPath</a> API operations.
     *    However, not all of the pattern values listed for <code>Key</code> can be used with both
     *    operations.</p>
     *          <p>For <code>DescribeParameters</code>, all of the listed patterns are valid except
     *     <code>Label</code>.</p>
     *          <p>For <code>GetParametersByPath</code>, the following patterns listed for <code>Key</code>
     *    aren't valid: <code>tag</code>, <code>DataType</code>, <code>Name</code>, <code>Path</code>, and
     *     <code>Tier</code>.</p>
     *          <p>For examples of Amazon Web Services CLI commands demonstrating valid parameter filter constructions, see
     *     <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-search.html">Searching for Systems Manager parameters</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    Key: string | undefined;
    /**
     * <p>For all filters used with <a>DescribeParameters</a>, valid options include
     *     <code>Equals</code> and <code>BeginsWith</code>. The <code>Name</code> filter additionally
     *    supports the <code>Contains</code> option. (Exception: For filters using the key
     *     <code>Path</code>, valid options include <code>Recursive</code> and
     *    <code>OneLevel</code>.)</p>
     *          <p>For filters used with <a>GetParametersByPath</a>, valid options include
     *     <code>Equals</code> and <code>BeginsWith</code>. (Exception: For filters using
     *     <code>Label</code> as the Key name, the only valid option is <code>Equals</code>.)</p>
     * @public
     */
    Option?: string | undefined;
    /**
     * <p>The value you want to search for.</p>
     * @public
     */
    Values?: string[] | undefined;
}
/**
 * @public
 */
export interface DescribeParametersRequest {
    /**
     * <p>This data type is deprecated. Instead, use <code>ParameterFilters</code>.</p>
     * @public
     */
    Filters?: ParametersFilter[] | undefined;
    /**
     * <p>Filters to limit the request results.</p>
     * @public
     */
    ParameterFilters?: ParameterStringFilter[] | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>Lists parameters that are shared with you.</p>
     *          <note>
     *             <p>By default when using this option, the command returns parameters that have been shared
     *     using a standard Resource Access Manager Resource Share. In order for a parameter that was shared
     *     using the <a>PutResourcePolicy</a> command to be returned, the associated
     *       <code>RAM Resource Share Created From Policy</code> must have been promoted to
     *     a standard Resource Share using the RAM
     *     <a href="https://docs.aws.amazon.com/ram/latest/APIReference/API_PromoteResourceShareCreatedFromPolicy.html">PromoteResourceShareCreatedFromPolicy</a> API operation.</p>
     *             <p>For more information about sharing parameters, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html">Working with
     *      shared parameters</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *          </note>
     * @public
     */
    Shared?: boolean | undefined;
}
/**
 * <p>One or more policies assigned to a parameter.</p>
 * @public
 */
export interface ParameterInlinePolicy {
    /**
     * <p>The JSON text of the policy.</p>
     * @public
     */
    PolicyText?: string | undefined;
    /**
     * <p>The type of policy. Parameter Store, a tool in Amazon Web Services Systems Manager, supports the following policy
     *    types: Expiration, ExpirationNotification, and NoChangeNotification. </p>
     * @public
     */
    PolicyType?: string | undefined;
    /**
     * <p>The status of the policy. Policies report the following statuses: Pending (the policy hasn't
     *    been enforced or applied yet), Finished (the policy was applied), Failed (the policy wasn't
     *    applied), or InProgress (the policy is being applied now). </p>
     * @public
     */
    PolicyStatus?: string | undefined;
}
/**
 * <p>Metadata includes information like the Amazon Resource Name (ARN) of the last user to update
 *    the parameter and the date and time the parameter was last used.</p>
 * @public
 */
export interface ParameterMetadata {
    /**
     * <p>The parameter name.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the parameter.</p>
     * @public
     */
    ARN?: string | undefined;
    /**
     * <p>The type of parameter. Valid parameter types include the following: <code>String</code>,
     *     <code>StringList</code>, and <code>SecureString</code>.</p>
     * @public
     */
    Type?: ParameterType | undefined;
    /**
     * <p>The alias of the Key Management Service (KMS) key used to encrypt the
     *    parameter. Applies to <code>SecureString</code> parameters only.</p>
     * @public
     */
    KeyId?: string | undefined;
    /**
     * <p>Date the parameter was last changed or updated.</p>
     * @public
     */
    LastModifiedDate?: Date | undefined;
    /**
     * <p>Amazon Resource Name (ARN) of the Amazon Web Services user who last changed the parameter.</p>
     * @public
     */
    LastModifiedUser?: string | undefined;
    /**
     * <p>Description of the parameter actions.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>A parameter name can include only the following letters and symbols.</p>
     *          <p>a-zA-Z0-9_.-</p>
     * @public
     */
    AllowedPattern?: string | undefined;
    /**
     * <p>The parameter version.</p>
     * @public
     */
    Version?: number | undefined;
    /**
     * <p>The parameter tier.</p>
     * @public
     */
    Tier?: ParameterTier | undefined;
    /**
     * <p>A list of policies associated with a parameter.</p>
     * @public
     */
    Policies?: ParameterInlinePolicy[] | undefined;
    /**
     * <p>The data type of the parameter, such as <code>text</code> or <code>aws:ec2:image</code>. The
     *    default is <code>text</code>.</p>
     * @public
     */
    DataType?: string | undefined;
}
/**
 * @public
 */
export interface DescribeParametersResult {
    /**
     * <p>Parameters returned by the request.</p>
     * @public
     */
    Parameters?: ParameterMetadata[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribePatchBaselinesRequest {
    /**
     * <p>Each element in the array is a structure containing a key-value pair.</p>
     *          <p>Supported keys for <code>DescribePatchBaselines</code> include the following:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>NAME_PREFIX</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>AWS-</code> | <code>My-</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>OWNER</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>AWS</code> | <code>Self</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>OPERATING_SYSTEM</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>AMAZON_LINUX</code> | <code>SUSE</code> | <code>WINDOWS</code>
     *                </p>
     *             </li>
     *          </ul>
     * @public
     */
    Filters?: PatchOrchestratorFilter[] | undefined;
    /**
     * <p>The maximum number of patch baselines to return (per page).</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Defines the basic information about a patch baseline.</p>
 * @public
 */
export interface PatchBaselineIdentity {
    /**
     * <p>The ID of the patch baseline.</p>
     * @public
     */
    BaselineId?: string | undefined;
    /**
     * <p>The name of the patch baseline.</p>
     * @public
     */
    BaselineName?: string | undefined;
    /**
     * <p>Defines the operating system the patch baseline applies to. The default value is
     *     <code>WINDOWS</code>. </p>
     * @public
     */
    OperatingSystem?: OperatingSystem | undefined;
    /**
     * <p>The description of the patch baseline.</p>
     * @public
     */
    BaselineDescription?: string | undefined;
    /**
     * <p>Indicates whether this is the default baseline. Amazon Web Services Systems Manager supports creating multiple default
     *    patch baselines. For example, you can create a default patch baseline for each operating
     *    system.</p>
     * @public
     */
    DefaultBaseline?: boolean | undefined;
}
/**
 * @public
 */
export interface DescribePatchBaselinesResult {
    /**
     * <p>An array of <code>PatchBaselineIdentity</code> elements.</p>
     * @public
     */
    BaselineIdentities?: PatchBaselineIdentity[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribePatchGroupsRequest {
    /**
     * <p>The maximum number of patch groups to return (per page).</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>Each element in the array is a structure containing a key-value pair.</p>
     *          <p>Supported keys for <code>DescribePatchGroups</code> include the following:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>NAME_PREFIX</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>AWS-</code> | <code>My-</code>.</p>
     *             </li>
     *             <li>
     *                <p>
     *                   <b>
     *                      <code>OPERATING_SYSTEM</code>
     *                   </b>
     *                </p>
     *                <p>Sample values: <code>AMAZON_LINUX</code> | <code>SUSE</code> | <code>WINDOWS</code>
     *                </p>
     *             </li>
     *          </ul>
     * @public
     */
    Filters?: PatchOrchestratorFilter[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>The mapping between a patch group and the patch baseline the patch group is registered
 *    with.</p>
 * @public
 */
export interface PatchGroupPatchBaselineMapping {
    /**
     * <p>The name of the patch group registered with the patch baseline.</p>
     * @public
     */
    PatchGroup?: string | undefined;
    /**
     * <p>The patch baseline the patch group is registered with.</p>
     * @public
     */
    BaselineIdentity?: PatchBaselineIdentity | undefined;
}
/**
 * @public
 */
export interface DescribePatchGroupsResult {
    /**
     * <p>Each entry in the array contains:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>PatchGroup</code>: string (between 1 and 256 characters. Regex:
     *       <code>^([\p\{L\}\p\{Z\}\p\{N\}_.:/=+\-@]*)$)</code>
     *                </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>PatchBaselineIdentity</code>: A <code>PatchBaselineIdentity</code> element.</p>
     *             </li>
     *          </ul>
     * @public
     */
    Mappings?: PatchGroupPatchBaselineMapping[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribePatchGroupStateRequest {
    /**
     * <p>The name of the patch group whose patch snapshot should be retrieved.</p>
     * @public
     */
    PatchGroup: string | undefined;
}
/**
 * @public
 */
export interface DescribePatchGroupStateResult {
    /**
     * <p>The number of managed nodes in the patch group.</p>
     * @public
     */
    Instances?: number | undefined;
    /**
     * <p>The number of managed nodes with installed patches.</p>
     * @public
     */
    InstancesWithInstalledPatches?: number | undefined;
    /**
     * <p>The number of managed nodes with patches installed that aren't defined in the patch
     *    baseline.</p>
     * @public
     */
    InstancesWithInstalledOtherPatches?: number | undefined;
    /**
     * <p>The number of managed nodes with patches installed by Patch Manager that haven't been
     *    rebooted after the patch installation. The status of these managed nodes is
     *     <code>NON_COMPLIANT</code>.</p>
     * @public
     */
    InstancesWithInstalledPendingRebootPatches?: number | undefined;
    /**
     * <p>The number of managed nodes with patches installed that are specified in a
     *     <code>RejectedPatches</code> list. Patches with a status of <code>INSTALLED_REJECTED</code> were
     *    typically installed before they were added to a <code>RejectedPatches</code> list.</p>
     *          <note>
     *             <p>If <code>ALLOW_AS_DEPENDENCY</code> is the specified option for
     *      <code>RejectedPatchesAction</code>, the value of
     *      <code>InstancesWithInstalledRejectedPatches</code> will always be <code>0</code> (zero).</p>
     *          </note>
     * @public
     */
    InstancesWithInstalledRejectedPatches?: number | undefined;
    /**
     * <p>The number of managed nodes with missing patches from the patch baseline.</p>
     * @public
     */
    InstancesWithMissingPatches?: number | undefined;
    /**
     * <p>The number of managed nodes with patches from the patch baseline that failed to
     *    install.</p>
     * @public
     */
    InstancesWithFailedPatches?: number | undefined;
    /**
     * <p>The number of managed nodes with patches that aren't applicable.</p>
     * @public
     */
    InstancesWithNotApplicablePatches?: number | undefined;
    /**
     * <p>The number of managed nodes with <code>NotApplicable</code> patches beyond the supported
     *    limit, which aren't reported by name to Inventory. Inventory is a tool in Amazon Web Services Systems Manager.</p>
     * @public
     */
    InstancesWithUnreportedNotApplicablePatches?: number | undefined;
    /**
     * <p>The number of managed nodes where patches that are specified as <code>Critical</code> for
     *    compliance reporting in the patch baseline aren't installed. These patches might be missing, have
     *    failed installation, were rejected, or were installed but awaiting a required managed node
     *    reboot. The status of these managed nodes is <code>NON_COMPLIANT</code>.</p>
     * @public
     */
    InstancesWithCriticalNonCompliantPatches?: number | undefined;
    /**
     * <p>The number of managed nodes where patches that are specified as <code>Security</code> in a
     *    patch advisory aren't installed. These patches might be missing, have failed installation, were
     *    rejected, or were installed but awaiting a required managed node reboot. The status of these
     *    managed nodes is <code>NON_COMPLIANT</code>.</p>
     * @public
     */
    InstancesWithSecurityNonCompliantPatches?: number | undefined;
    /**
     * <p>The number of managed nodes with patches installed that are specified as other than
     *     <code>Critical</code> or <code>Security</code> but aren't compliant with the patch baseline. The
     *    status of these managed nodes is <code>NON_COMPLIANT</code>.</p>
     * @public
     */
    InstancesWithOtherNonCompliantPatches?: number | undefined;
    /**
     * <p>The number of managed nodes for which security-related patches are available but not
     *    approved because because they didn't meet the patch baseline requirements. For example, an
     *    updated version of a patch might have been released before the specified auto-approval period was
     *    over.</p>
     *          <p>Applies to Windows Server managed nodes only.</p>
     * @public
     */
    InstancesWithAvailableSecurityUpdates?: number | undefined;
}
/**
 * @public
 */
export interface DescribePatchPropertiesRequest {
    /**
     * <p>The operating system type for which to list patches.</p>
     * @public
     */
    OperatingSystem: OperatingSystem | undefined;
    /**
     * <p>The patch property for which you want to view patch details. </p>
     * @public
     */
    Property: PatchProperty | undefined;
    /**
     * <p>Indicates whether to list patches for the Windows operating system or for applications
     *    released by Microsoft. Not applicable for the Linux or macOS operating systems.</p>
     * @public
     */
    PatchSet?: PatchSet | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DescribePatchPropertiesResult {
    /**
     * <p>A list of the properties for patches matching the filter request parameters.</p>
     * @public
     */
    Properties?: Record<string, string>[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You use this token in the next call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Describes a filter for Session Manager information.</p>
 * @public
 */
export interface SessionFilter {
    /**
     * <p>The name of the filter.</p>
     * @public
     */
    key: SessionFilterKey | undefined;
    /**
     * <p>The filter value. Valid values for each filter key are as follows:</p>
     *          <ul>
     *             <li>
     *                <p>InvokedAfter: Specify a timestamp to limit your results. For example, specify
     *      2024-08-29T00:00:00Z to see sessions that started August 29, 2024, and later.</p>
     *             </li>
     *             <li>
     *                <p>InvokedBefore: Specify a timestamp to limit your results. For example, specify
     *      2024-08-29T00:00:00Z to see sessions that started before August 29, 2024.</p>
     *             </li>
     *             <li>
     *                <p>Target: Specify a managed node to which session connections have been made.</p>
     *             </li>
     *             <li>
     *                <p>Owner: Specify an Amazon Web Services user to see a list of sessions started by that user.</p>
     *             </li>
     *             <li>
     *                <p>Status: Specify a valid session status to see a list of all sessions with that status.
     *      Status values you can specify include:</p>
     *                <ul>
     *                   <li>
     *                      <p>Connected</p>
     *                   </li>
     *                   <li>
     *                      <p>Connecting</p>
     *                   </li>
     *                   <li>
     *                      <p>Disconnected</p>
     *                   </li>
     *                   <li>
     *                      <p>Terminated</p>
     *                   </li>
     *                   <li>
     *                      <p>Terminating</p>
     *                   </li>
     *                   <li>
     *                      <p>Failed</p>
     *                   </li>
     *                </ul>
     *             </li>
     *             <li>
     *                <p>SessionId: Specify a session ID to return details about the session.</p>
     *             </li>
     *          </ul>
     * @public
     */
    value: string | undefined;
}
/**
 * @public
 */
export interface DescribeSessionsRequest {
    /**
     * <p>The session status to retrieve a list of sessions for. For example, "Active".</p>
     * @public
     */
    State: SessionState | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>One or more filters to limit the type of sessions returned by the request.</p>
     * @public
     */
    Filters?: SessionFilter[] | undefined;
}
/**
 * <p>Reserved for future use.</p>
 * @public
 */
export interface SessionManagerOutputUrl {
    /**
     * <p>Reserved for future use.</p>
     * @public
     */
    S3OutputUrl?: string | undefined;
    /**
     * <p>Reserved for future use.</p>
     * @public
     */
    CloudWatchOutputUrl?: string | undefined;
}
/**
 * <p>Information about a Session Manager connection to a managed node.</p>
 * @public
 */
export interface Session {
    /**
     * <p>The ID of the session.</p>
     * @public
     */
    SessionId?: string | undefined;
    /**
     * <p>The managed node that the Session Manager session connected to.</p>
     * @public
     */
    Target?: string | undefined;
    /**
     * <p>The status of the session. For example, "Connected" or "Terminated".</p>
     * @public
     */
    Status?: SessionStatus | undefined;
    /**
     * <p>The date and time, in ISO-8601 Extended format, when the session began.</p>
     * @public
     */
    StartDate?: Date | undefined;
    /**
     * <p>The date and time, in ISO-8601 Extended format, when the session was terminated.</p>
     * @public
     */
    EndDate?: Date | undefined;
    /**
     * <p>The name of the Session Manager SSM document used to define the parameters and plugin settings for the
     *    session. For example, <code>SSM-SessionManagerRunShell</code>.</p>
     * @public
     */
    DocumentName?: string | undefined;
    /**
     * <p>The ID of the Amazon Web Services user that started the session.</p>
     * @public
     */
    Owner?: string | undefined;
    /**
     * <p>The reason for connecting to the instance.</p>
     * @public
     */
    Reason?: string | undefined;
    /**
     * <p>Reserved for future use.</p>
     * @public
     */
    Details?: string | undefined;
    /**
     * <p>Reserved for future use.</p>
     * @public
     */
    OutputUrl?: SessionManagerOutputUrl | undefined;
    /**
     * <p>The maximum duration of a session before it terminates.</p>
     * @public
     */
    MaxSessionDuration?: string | undefined;
    /**
     * <p>
     *             <code>Standard</code> access type is the default for Session Manager sessions.
     *     <code>JustInTime</code> is the access type for <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-just-in-time-node-access.html">Just-in-time node access</a>.</p>
     * @public
     */
    AccessType?: AccessType | undefined;
}
/**
 * @public
 */
export interface DescribeSessionsResponse {
    /**
     * <p>A list of sessions meeting the request parameters.</p>
     * @public
     */
    Sessions?: Session[] | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface DisassociateOpsItemRelatedItemRequest {
    /**
     * <p>The ID of the OpsItem for which you want to delete an association between the OpsItem and a
     *    related item.</p>
     * @public
     */
    OpsItemId: string | undefined;
    /**
     * <p>The ID of the association for which you want to delete an association between the OpsItem
     *    and a related item.</p>
     * @public
     */
    AssociationId: string | undefined;
}
/**
 * @public
 */
export interface DisassociateOpsItemRelatedItemResponse {
}
/**
 * @public
 */
export interface GetAccessTokenRequest {
    /**
     * <p>The ID of a just-in-time node access request.</p>
     * @public
     */
    AccessRequestId: string | undefined;
}
/**
 * <p>The temporary security credentials, which include an access key ID, a secret access key, and
 *    a security (or session) token.</p>
 * @public
 */
export interface Credentials {
    /**
     * <p>The access key ID that identifies the temporary security credentials.</p>
     * @public
     */
    AccessKeyId: string | undefined;
    /**
     * <p>The secret access key that can be used to sign requests.</p>
     * @public
     */
    SecretAccessKey: string | undefined;
    /**
     * <p>The token that users must pass to the service API to use the temporary credentials.</p>
     * @public
     */
    SessionToken: string | undefined;
    /**
     * <p>The datetime on which the current credentials expire.</p>
     * @public
     */
    ExpirationTime: Date | undefined;
}
/**
 * @public
 */
export interface GetAccessTokenResponse {
    /**
     * <p>The temporary security credentials which can be used to start just-in-time node access
     *    sessions.</p>
     * @public
     */
    Credentials?: Credentials | undefined;
    /**
     * <p>The status of the access request.</p>
     * @public
     */
    AccessRequestStatus?: AccessRequestStatus | undefined;
}
/**
 * @public
 */
export interface GetAutomationExecutionRequest {
    /**
     * <p>The unique identifier for an existing automation execution to examine. The execution ID is
     *    returned by StartAutomationExecution when the execution of an Automation runbook is
     *    initiated.</p>
     * @public
     */
    AutomationExecutionId: string | undefined;
}
/**
 * <p>An aggregate of step execution statuses displayed in the Amazon Web Services Systems Manager console for a
 *    multi-Region and multi-account Automation execution.</p>
 * @public
 */
export interface ProgressCounters {
    /**
     * <p>The total number of steps run in all specified Amazon Web Services Regions and Amazon Web Services accounts for the
     *    current Automation execution.</p>
     * @public
     */
    TotalSteps?: number | undefined;
    /**
     * <p>The total number of steps that successfully completed in all specified Amazon Web Services Regions and
     *    Amazon Web Services accounts for the current Automation execution.</p>
     * @public
     */
    SuccessSteps?: number | undefined;
    /**
     * <p>The total number of steps that failed to run in all specified Amazon Web Services Regions and
     *    Amazon Web Services accounts for the current Automation execution.</p>
     * @public
     */
    FailedSteps?: number | undefined;
    /**
     * <p>The total number of steps that the system cancelled in all specified Amazon Web Services Regions and
     *    Amazon Web Services accounts for the current Automation execution.</p>
     * @public
     */
    CancelledSteps?: number | undefined;
    /**
     * <p>The total number of steps that timed out in all specified Amazon Web Services Regions and Amazon Web Services accounts
     *    for the current Automation execution.</p>
     * @public
     */
    TimedOutSteps?: number | undefined;
}
/**
 * <p>Detailed information about the current state of an individual Automation execution.</p>
 * @public
 */
export interface AutomationExecution {
    /**
     * <p>The execution ID.</p>
     * @public
     */
    AutomationExecutionId?: string | undefined;
    /**
     * <p>The name of the Automation runbook used during the execution.</p>
     * @public
     */
    DocumentName?: string | undefined;
    /**
     * <p>The version of the document to use during execution.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The time the execution started.</p>
     * @public
     */
    ExecutionStartTime?: Date | undefined;
    /**
     * <p>The time the execution finished.</p>
     * @public
     */
    ExecutionEndTime?: Date | undefined;
    /**
     * <p>The execution status of the Automation.</p>
     * @public
     */
    AutomationExecutionStatus?: AutomationExecutionStatus | undefined;
    /**
     * <p>A list of details about the current state of all steps that comprise an execution. An
     *    Automation runbook contains a list of steps that are run in order.</p>
     * @public
     */
    StepExecutions?: StepExecution[] | undefined;
    /**
     * <p>A boolean value that indicates if the response contains the full list of the Automation step
     *    executions. If true, use the DescribeAutomationStepExecutions API operation to get the full list
     *    of step executions.</p>
     * @public
     */
    StepExecutionsTruncated?: boolean | undefined;
    /**
     * <p>The key-value map of execution parameters, which were supplied when calling <a>StartAutomationExecution</a>.</p>
     * @public
     */
    Parameters?: Record<string, string[]> | undefined;
    /**
     * <p>The list of execution outputs as defined in the Automation runbook.</p>
     * @public
     */
    Outputs?: Record<string, string[]> | undefined;
    /**
     * <p>A message describing why an execution has failed, if the status is set to Failed.</p>
     * @public
     */
    FailureMessage?: string | undefined;
    /**
     * <p>A message that describes a non-critical issue that occurred during the automation execution.</p>
     * @public
     */
    WarningMessage?: string | undefined;
    /**
     * <p>The automation execution mode.</p>
     * @public
     */
    Mode?: ExecutionMode | undefined;
    /**
     * <p>The AutomationExecutionId of the parent automation.</p>
     * @public
     */
    ParentAutomationExecutionId?: string | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the user who ran the automation.</p>
     * @public
     */
    ExecutedBy?: string | undefined;
    /**
     * <p>The name of the step that is currently running.</p>
     * @public
     */
    CurrentStepName?: string | undefined;
    /**
     * <p>The action of the step that is currently running.</p>
     * @public
     */
    CurrentAction?: string | undefined;
    /**
     * <p>The parameter name.</p>
     * @public
     */
    TargetParameterName?: string | undefined;
    /**
     * <p>The specified targets.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>The specified key-value mapping of document parameters to target resources.</p>
     * @public
     */
    TargetMaps?: Record<string, string[]>[] | undefined;
    /**
     * <p>A list of resolved targets in the rate control execution.</p>
     * @public
     */
    ResolvedTargets?: ResolvedTargets | undefined;
    /**
     * <p>The <code>MaxConcurrency</code> value specified by the user when the execution
     *    started.</p>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The MaxErrors value specified by the user when the execution started.</p>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>The target of the execution.</p>
     * @public
     */
    Target?: string | undefined;
    /**
     * <p>The combination of Amazon Web Services Regions and/or Amazon Web Services accounts where you want to run the
     *    Automation.</p>
     * @public
     */
    TargetLocations?: TargetLocation[] | undefined;
    /**
     * <p>An aggregate of step execution statuses displayed in the Amazon Web Services Systems Manager console for a
     *    multi-Region and multi-account Automation execution.</p>
     * @public
     */
    ProgressCounters?: ProgressCounters | undefined;
    /**
     * <p>The details for the CloudWatch alarm applied to your automation.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
    /**
     * <p>The CloudWatch alarm that was invoked by the automation.</p>
     * @public
     */
    TriggeredAlarms?: AlarmStateInformation[] | undefined;
    /**
     * <p>A publicly accessible URL for a file that contains the <code>TargetLocations</code> body.
     *    Currently, only files in presigned Amazon S3 buckets are supported</p>
     * @public
     */
    TargetLocationsURL?: string | undefined;
    /**
     * <p>The subtype of the Automation operation. Currently, the only supported value is
     *     <code>ChangeRequest</code>.</p>
     * @public
     */
    AutomationSubtype?: AutomationSubtype | undefined;
    /**
     * <p>The date and time the Automation operation is scheduled to start.</p>
     * @public
     */
    ScheduledTime?: Date | undefined;
    /**
     * <p>Information about the Automation runbooks that are run as part of a runbook workflow.</p>
     *          <note>
     *             <p>The Automation runbooks specified for the runbook workflow can't run until all required
     *     approvals for the change request have been received.</p>
     *          </note>
     * @public
     */
    Runbooks?: Runbook[] | undefined;
    /**
     * <p>The ID of an OpsItem that is created to represent a Change Manager change request.</p>
     * @public
     */
    OpsItemId?: string | undefined;
    /**
     * <p>The ID of a State Manager association used in the Automation operation.</p>
     * @public
     */
    AssociationId?: string | undefined;
    /**
     * <p>The name of the Change Manager change request.</p>
     * @public
     */
    ChangeRequestName?: string | undefined;
    /**
     * <p>Variables defined for the automation.</p>
     * @public
     */
    Variables?: Record<string, string[]> | undefined;
}
/**
 * @public
 */
export interface GetAutomationExecutionResult {
    /**
     * <p>Detailed information about the current state of an automation execution.</p>
     * @public
     */
    AutomationExecution?: AutomationExecution | undefined;
}
/**
 * @public
 */
export interface GetCalendarStateRequest {
    /**
     * <p>The names of Amazon Resource Names (ARNs) of the Systems Manager documents (SSM documents) that
     *    represent the calendar entries for which you want to get the state.</p>
     * @public
     */
    CalendarNames: string[] | undefined;
    /**
     * <p>(Optional) The specific time for which you want to get calendar state information, in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> format. If you don't specify a
     *    value or <code>AtTime</code>, the current time is used.</p>
     * @public
     */
    AtTime?: string | undefined;
}
/**
 * @public
 */
export interface GetCalendarStateResponse {
    /**
     * <p>The state of the calendar. An <code>OPEN</code> calendar indicates that actions are allowed
     *    to proceed, and a <code>CLOSED</code> calendar indicates that actions aren't allowed to
     *    proceed.</p>
     * @public
     */
    State?: CalendarState | undefined;
    /**
     * <p>The time, as an <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> string,
     *    that you specified in your command. If you don't specify a time, <code>GetCalendarState</code>
     *    uses the current time.</p>
     * @public
     */
    AtTime?: string | undefined;
    /**
     * <p>The time, as an <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> string,
     *    that the calendar state will change. If the current calendar state is <code>OPEN</code>,
     *     <code>NextTransitionTime</code> indicates when the calendar state changes to
     *    <code>CLOSED</code>, and vice-versa.</p>
     * @public
     */
    NextTransitionTime?: string | undefined;
}
/**
 * @public
 */
export interface GetCloudConnectorRequest {
    /**
     * <p>The ID of the cloud connector to retrieve information about.</p>
     * @public
     */
    CloudConnectorId: string | undefined;
}
/**
 * @public
 */
export interface GetCloudConnectorResult {
    /**
     * <p>The ARN of the cloud connector.</p>
     * @public
     */
    CloudConnectorArn?: string | undefined;
    /**
     * <p>The friendly name of the cloud connector.</p>
     * @public
     */
    DisplayName?: string | undefined;
    /**
     * <p>The description of the cloud connector.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The ARN of the IAM role used by the cloud connector.</p>
     * @public
     */
    RoleArn?: string | undefined;
    /**
     * <p>The configuration details for the third-party cloud environment connection.</p>
     * @public
     */
    Configuration?: CloudConnectorConfiguration | undefined;
    /**
     * <p>The ARN of the Amazon Web Services Config connector associated with this cloud connector.</p>
     * @public
     */
    ConfigConnectorArn?: string | undefined;
    /**
     * <p>The date and time the cloud connector was created.</p>
     * @public
     */
    CreatedAt?: Date | undefined;
    /**
     * <p>The date and time the cloud connector was last updated.</p>
     * @public
     */
    UpdatedAt?: Date | undefined;
}
/**
 * @public
 */
export interface GetCommandInvocationRequest {
    /**
     * <p>(Required) The parent command ID of the invocation plugin.</p>
     * @public
     */
    CommandId: string | undefined;
    /**
     * <p>(Required) The ID of the managed node targeted by the command. A <i>managed
     *     node</i> can be an Amazon Elastic Compute Cloud (Amazon EC2) instance, edge device, and on-premises server or VM
     *    in your hybrid environment that is configured for Amazon Web Services Systems Manager.</p>
     * @public
     */
    InstanceId: string | undefined;
    /**
     * <p>The name of the step for which you want detailed results. If the document contains only one
     *    step, you can omit the name and details for that step. If the document contains more than one
     *    step, you must specify the name of the step for which you want to view details. Be sure to
     *    specify the name of the step, not the name of a plugin like
     *    <code>aws:RunShellScript</code>.</p>
     *          <p>To find the <code>PluginName</code>, check the document content and find the name of the
     *    step you want details for. Alternatively, use <a>ListCommandInvocations</a> with the
     *     <code>CommandId</code> and <code>Details</code> parameters. The <code>PluginName</code> is the
     *     <code>Name</code> attribute of the <code>CommandPlugin</code> object in the
     *     <code>CommandPlugins</code> list.</p>
     * @public
     */
    PluginName?: string | undefined;
}
/**
 * <p>Configuration options for sending command output to Amazon CloudWatch Logs.</p>
 * @public
 */
export interface CloudWatchOutputConfig {
    /**
     * <p>The name of the CloudWatch Logs log group where you want to send command output. If you
     *    don't specify a group name, Amazon Web Services Systems Manager automatically creates a log group for you. The log group
     *    uses the following naming format:</p>
     *          <p>
     *             <code>aws/ssm/<i>SystemsManagerDocumentName</i>
     *             </code>
     *          </p>
     * @public
     */
    CloudWatchLogGroupName?: string | undefined;
    /**
     * <p>Enables Systems Manager to send command output to CloudWatch Logs.</p>
     * @public
     */
    CloudWatchOutputEnabled?: boolean | undefined;
}
/**
 * @public
 */
export interface GetCommandInvocationResult {
    /**
     * <p>The parent command ID of the invocation plugin.</p>
     * @public
     */
    CommandId?: string | undefined;
    /**
     * <p>The ID of the managed node targeted by the command. A <i>managed node</i> can
     *    be an Amazon Elastic Compute Cloud (Amazon EC2) instance, edge device, or on-premises server or VM in your hybrid
     *    environment that is configured for Amazon Web Services Systems Manager.</p>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The comment text for the command.</p>
     * @public
     */
    Comment?: string | undefined;
    /**
     * <p>The name of the document that was run. For example, <code>AWS-RunShellScript</code>.</p>
     * @public
     */
    DocumentName?: string | undefined;
    /**
     * <p>The Systems Manager document (SSM document) version used in the request.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The name of the plugin, or <i>step name</i>, for which details are reported.
     *    For example, <code>aws:RunShellScript</code> is a plugin.</p>
     * @public
     */
    PluginName?: string | undefined;
    /**
     * <p>The error level response code for the plugin script. If the response code is
     *    <code>-1</code>, then the command hasn't started running on the managed node, or it wasn't
     *    received by the node.</p>
     * @public
     */
    ResponseCode?: number | undefined;
    /**
     * <p>The date and time the plugin started running. Date and time are written in ISO 8601 format.
     *    For example, June 7, 2017 is represented as 2017-06-7. The following sample Amazon Web Services CLI command uses
     *    the <code>InvokedBefore</code> filter.</p>
     *          <p>
     *             <code>aws ssm list-commands --filters key=InvokedBefore,value=2017-06-07T00:00:00Z</code>
     *          </p>
     *          <p>If the plugin hasn't started to run, the string is empty.</p>
     * @public
     */
    ExecutionStartDateTime?: string | undefined;
    /**
     * <p>Duration since <code>ExecutionStartDateTime</code>.</p>
     * @public
     */
    ExecutionElapsedTime?: string | undefined;
    /**
     * <p>The date and time the plugin finished running. Date and time are written in ISO 8601 format.
     *    For example, June 7, 2017 is represented as 2017-06-7. The following sample Amazon Web Services CLI command uses
     *    the <code>InvokedAfter</code> filter.</p>
     *          <p>
     *             <code>aws ssm list-commands --filters key=InvokedAfter,value=2017-06-07T00:00:00Z</code>
     *          </p>
     *          <p>If the plugin hasn't started to run, the string is empty.</p>
     * @public
     */
    ExecutionEndDateTime?: string | undefined;
    /**
     * <p>The status of this invocation plugin. This status can be different than
     *     <code>StatusDetails</code>.</p>
     * @public
     */
    Status?: CommandInvocationStatus | undefined;
    /**
     * <p>A detailed status of the command execution for an invocation. <code>StatusDetails</code>
     *    includes more information than <code>Status</code> because it includes states resulting from
     *    error and concurrency control parameters. <code>StatusDetails</code> can show different results
     *    than <code>Status</code>. For more information about these statuses, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html">Understanding
     *     command statuses</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.
     *     <code>StatusDetails</code> can be one of the following values:</p>
     *          <ul>
     *             <li>
     *                <p>Pending: The command hasn't been sent to the managed node.</p>
     *             </li>
     *             <li>
     *                <p>In Progress: The command has been sent to the managed node but hasn't reached a terminal
     *      state.</p>
     *             </li>
     *             <li>
     *                <p>Delayed: The system attempted to send the command to the target, but the target wasn't
     *      available. The managed node might not be available because of network issues, because the node
     *      was stopped, or for similar reasons. The system will try to send the command again.</p>
     *             </li>
     *             <li>
     *                <p>Success: The command or plugin ran successfully. This is a terminal state.</p>
     *             </li>
     *             <li>
     *                <p>Delivery Timed Out: The command wasn't delivered to the managed node before the delivery
     *      timeout expired. Delivery timeouts don't count against the parent command's
     *       <code>MaxErrors</code> limit, but they do contribute to whether the parent command status is
     *      Success or Incomplete. This is a terminal state.</p>
     *             </li>
     *             <li>
     *                <p>Execution Timed Out: The command started to run on the managed node, but the execution
     *      wasn't complete before the timeout expired. Execution timeouts count against the
     *       <code>MaxErrors</code> limit of the parent command. This is a terminal state.</p>
     *             </li>
     *             <li>
     *                <p>Failed: The command wasn't run successfully on the managed node. For a plugin, this
     *      indicates that the result code wasn't zero. For a command invocation, this indicates that the
     *      result code for one or more plugins wasn't zero. Invocation failures count against the
     *       <code>MaxErrors</code> limit of the parent command. This is a terminal state.</p>
     *             </li>
     *             <li>
     *                <p>Cancelled: The command was terminated before it was completed. This is a terminal
     *      state.</p>
     *             </li>
     *             <li>
     *                <p>Undeliverable: The command can't be delivered to the managed node. The node might not
     *      exist or might not be responding. Undeliverable invocations don't count against the parent
     *      command's <code>MaxErrors</code> limit and don't contribute to whether the parent command
     *      status is Success or Incomplete. This is a terminal state.</p>
     *             </li>
     *             <li>
     *                <p>Terminated: The parent command exceeded its <code>MaxErrors</code> limit and subsequent
     *      command invocations were canceled by the system. This is a terminal state.</p>
     *             </li>
     *          </ul>
     * @public
     */
    StatusDetails?: string | undefined;
    /**
     * <p>The first 24,000 characters written by the plugin to <code>stdout</code>. If the command
     *    hasn't finished running, if <code>ExecutionStatus</code> is neither Succeeded nor Failed, then
     *    this string is empty.</p>
     * @public
     */
    StandardOutputContent?: string | undefined;
    /**
     * <p>The URL for the complete text written by the plugin to <code>stdout</code> in Amazon Simple Storage Service (Amazon S3). If an S3 bucket wasn't specified, then this string is
     *    empty.</p>
     * @public
     */
    StandardOutputUrl?: string | undefined;
    /**
     * <p>The first 8,000 characters written by the plugin to <code>stderr</code>. If the command
     *    hasn't finished running, then this string is empty.</p>
     * @public
     */
    StandardErrorContent?: string | undefined;
    /**
     * <p>The URL for the complete text written by the plugin to <code>stderr</code>. If the command
     *    hasn't finished running, then this string is empty.</p>
     * @public
     */
    StandardErrorUrl?: string | undefined;
    /**
     * <p>Amazon CloudWatch Logs information where Systems Manager sent the command output.</p>
     * @public
     */
    CloudWatchOutputConfig?: CloudWatchOutputConfig | undefined;
}
/**
 * @public
 */
export interface GetConnectionStatusRequest {
    /**
     * <p>The managed node ID.</p>
     * @public
     */
    Target: string | undefined;
}
/**
 * @public
 */
export interface GetConnectionStatusResponse {
    /**
     * <p>The ID of the managed node to check connection status. </p>
     * @public
     */
    Target?: string | undefined;
    /**
     * <p>The status of the connection to the managed node.</p>
     * @public
     */
    Status?: ConnectionStatus | undefined;
}
/**
 * @public
 */
export interface GetDefaultPatchBaselineRequest {
    /**
     * <p>Returns the default patch baseline for the specified operating system.</p>
     * @public
     */
    OperatingSystem?: OperatingSystem | undefined;
}
/**
 * @public
 */
export interface GetDefaultPatchBaselineResult {
    /**
     * <p>The ID of the default patch baseline.</p>
     * @public
     */
    BaselineId?: string | undefined;
    /**
     * <p>The operating system for the returned patch baseline. </p>
     * @public
     */
    OperatingSystem?: OperatingSystem | undefined;
}
/**
 * <p>Defines the basic information about a patch baseline override.</p>
 * @public
 */
export interface BaselineOverride {
    /**
     * <p>The operating system rule used by the patch baseline override.</p>
     * @public
     */
    OperatingSystem?: OperatingSystem | undefined;
    /**
     * <p>A set of patch filters, typically used for approval rules.</p>
     * @public
     */
    GlobalFilters?: PatchFilterGroup | undefined;
    /**
     * <p>A set of rules defining the approval rules for a patch baseline.</p>
     * @public
     */
    ApprovalRules?: PatchRuleGroup | undefined;
    /**
     * <p>A list of explicitly approved patches for the baseline.</p>
     *          <p>For information about accepted formats for lists of approved patches and rejected patches,
     *                         see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html">Package
     *                         name formats for approved and rejected patch lists</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    ApprovedPatches?: string[] | undefined;
    /**
     * <p>Defines the compliance level for approved patches. When an approved patch is reported as
     *    missing, this value describes the severity of the compliance violation.</p>
     * @public
     */
    ApprovedPatchesComplianceLevel?: PatchComplianceLevel | undefined;
    /**
     * <p>A list of explicitly rejected patches for the baseline.</p>
     *          <p>For information about accepted formats for lists of approved patches and rejected patches,
     *                         see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html">Package
     *                         name formats for approved and rejected patch lists</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    RejectedPatches?: string[] | undefined;
    /**
     * <p>The action for Patch Manager to take on patches included in the
     *     <code>RejectedPackages</code> list. A patch can be allowed only if it is a dependency of another
     *    package, or blocked entirely along with packages that include it as a dependency.</p>
     * @public
     */
    RejectedPatchesAction?: PatchAction | undefined;
    /**
     * <p>Indicates whether the list of approved patches includes non-security updates that should be
     *    applied to the managed nodes. The default value is <code>false</code>. Applies to Linux managed
     *    nodes only.</p>
     * @public
     */
    ApprovedPatchesEnableNonSecurity?: boolean | undefined;
    /**
     * <p>Information about the patches to use to update the managed nodes, including target operating
     *    systems and source repositories. Applies to Linux managed nodes only.</p>
     * @public
     */
    Sources?: PatchSource[] | undefined;
    /**
     * <p>Indicates whether managed nodes for which there are available security-related patches that
     *    have not been approved by the baseline are being defined as <code>COMPLIANT</code> or
     *     <code>NON_COMPLIANT</code>. This option is specified when the <code>CreatePatchBaseline</code>
     *    or <code>UpdatePatchBaseline</code> commands are run.</p>
     *          <p>Applies to Windows Server managed nodes only.</p>
     * @public
     */
    AvailableSecurityUpdatesComplianceStatus?: PatchComplianceStatus | undefined;
}
/**
 * @public
 */
export interface GetDeployablePatchSnapshotForInstanceRequest {
    /**
     * <p>The ID of the managed node for which the appropriate patch snapshot should be
     *    retrieved.</p>
     * @public
     */
    InstanceId: string | undefined;
    /**
     * <p>The snapshot ID provided by the user when running <code>AWS-RunPatchBaseline</code>.</p>
     * @public
     */
    SnapshotId: string | undefined;
    /**
     * <p>Defines the basic information about a patch baseline override.</p>
     * @public
     */
    BaselineOverride?: BaselineOverride | undefined;
    /**
     * <p>Specifies whether to use S3 dualstack endpoints for the patch snapshot download URL. Set to
     *     <code>true</code> to receive a presigned URL that supports both IPv4 and IPv6 connectivity. Set
     *    to <code>false</code> to use standard IPv4-only endpoints. Default is <code>false</code>. This
     *    parameter is required for managed nodes in IPv6-only environments. </p>
     * @public
     */
    UseS3DualStackEndpoint?: boolean | undefined;
}
/**
 * @public
 */
export interface GetDeployablePatchSnapshotForInstanceResult {
    /**
     * <p>The managed node ID.</p>
     * @public
     */
    InstanceId?: string | undefined;
    /**
     * <p>The user-defined snapshot ID.</p>
     * @public
     */
    SnapshotId?: string | undefined;
    /**
     * <p>A pre-signed Amazon Simple Storage Service (Amazon S3) URL that can be used to download the
     *    patch snapshot.</p>
     * @public
     */
    SnapshotDownloadUrl?: string | undefined;
    /**
     * <p>Returns the specific operating system (for example Windows Server 2012 or Amazon Linux
     *    2015.09) on the managed node for the specified patch snapshot.</p>
     * @public
     */
    Product?: string | undefined;
}
/**
 * @public
 */
export interface GetDocumentRequest {
    /**
     * <p>The name of the SSM document.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>An optional field specifying the version of the artifact associated with the document. For
     *    example, 12.6. This value is unique across all versions of a document and can't be
     *    changed.</p>
     * @public
     */
    VersionName?: string | undefined;
    /**
     * <p>The document version for which you want information.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>Returns the document in the specified format. The document format can be either JSON or
     *    YAML. JSON is the default format.</p>
     * @public
     */
    DocumentFormat?: DocumentFormat | undefined;
}
/**
 * <p>A structure that includes attributes that describe a document attachment.</p>
 * @public
 */
export interface AttachmentContent {
    /**
     * <p>The name of an attachment.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The size of an attachment in bytes.</p>
     * @public
     */
    Size?: number | undefined;
    /**
     * <p>The cryptographic hash value of the document content.</p>
     * @public
     */
    Hash?: string | undefined;
    /**
     * <p>The hash algorithm used to calculate the hash value.</p>
     * @public
     */
    HashType?: AttachmentHashType | undefined;
    /**
     * <p>The URL location of the attachment content.</p>
     * @public
     */
    Url?: string | undefined;
}
/**
 * @public
 */
export interface GetDocumentResult {
    /**
     * <p>The name of the SSM document.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The date the SSM document was created.</p>
     * @public
     */
    CreatedDate?: Date | undefined;
    /**
     * <p>The friendly name of the SSM document. This value can differ for each version of the
     *    document. If you want to update this value, see <a>UpdateDocument</a>.</p>
     * @public
     */
    DisplayName?: string | undefined;
    /**
     * <p>The version of the artifact associated with the document. For example, 12.6. This value is
     *    unique across all versions of a document, and can't be changed.</p>
     * @public
     */
    VersionName?: string | undefined;
    /**
     * <p>The document version.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The status of the SSM document, such as <code>Creating</code>, <code>Active</code>,
     *     <code>Updating</code>, <code>Failed</code>, and <code>Deleting</code>.</p>
     * @public
     */
    Status?: DocumentStatus | undefined;
    /**
     * <p>A message returned by Amazon Web Services Systems Manager that explains the <code>Status</code> value. For example, a
     *     <code>Failed</code> status might be explained by the <code>StatusInformation</code> message,
     *    "The specified S3 bucket doesn't exist. Verify that the URL of the S3 bucket is correct."</p>
     * @public
     */
    StatusInformation?: string | undefined;
    /**
     * <p>The contents of the SSM document.</p>
     * @public
     */
    Content?: string | undefined;
    /**
     * <p>The document type.</p>
     * @public
     */
    DocumentType?: DocumentType | undefined;
    /**
     * <p>The document format, either JSON or YAML.</p>
     * @public
     */
    DocumentFormat?: DocumentFormat | undefined;
    /**
     * <p>A list of SSM documents required by a document. For example, an
     *     <code>ApplicationConfiguration</code> document requires an
     *     <code>ApplicationConfigurationSchema</code> document.</p>
     * @public
     */
    Requires?: DocumentRequires[] | undefined;
    /**
     * <p>A description of the document attachments, including names, locations, sizes, and so
     *    on.</p>
     * @public
     */
    AttachmentsContent?: AttachmentContent[] | undefined;
    /**
     * <p>The current review status of a new custom Systems Manager document (SSM document) created by a member
     *    of your organization, or of the latest version of an existing SSM document.</p>
     *          <p>Only one version of an SSM document can be in the APPROVED state at a time. When a new
     *    version is approved, the status of the previous version changes to REJECTED.</p>
     *          <p>Only one version of an SSM document can be in review, or PENDING, at a time.</p>
     * @public
     */
    ReviewStatus?: ReviewStatus | undefined;
}
/**
 * @public
 */
export interface GetExecutionPreviewRequest {
    /**
     * <p>The ID of the existing execution preview.</p>
     * @public
     */
    ExecutionPreviewId: string | undefined;
}
/**
 * <p>Information about the resources that would be included in the actual runbook execution, if
 *    it were to be run.</p>
 * @public
 */
export interface TargetPreview {
    /**
     * <p>The number of resources of a certain type included in an execution preview.</p>
     * @public
     */
    Count?: number | undefined;
    /**
     * <p>A type of resource that was included in the execution preview.</p>
     * @public
     */
    TargetType?: string | undefined;
}
/**
 * <p>Information about the results of the execution preview.</p>
 * @public
 */
export interface AutomationExecutionPreview {
    /**
     * <p>Information about the type of impact a runbook step would have on a resource.</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>Mutating</code>: The runbook step would make changes to the targets through actions
     *      that create, modify, or delete resources.</p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Non_Mutating</code>: The runbook step would retrieve data about resources but not
     *      make changes to them. This category generally includes <code>Describe*</code>,
     *       <code>List*</code>, <code>Get*</code>, and similar read-only API actions.</p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Undetermined</code>: An undetermined step invokes executions performed by another
     *      orchestration service like Lambda, Step Functions, or Amazon Web Services Systems Manager Run Command. An undetermined step might also call a third-party API. Systems Manager Automation doesn't know the outcome of the orchestration processes or
     *      third-party API executions, so the results of the steps are undetermined.</p>
     *             </li>
     *          </ul>
     * @public
     */
    StepPreviews?: Partial<Record<ImpactType, number>> | undefined;
    /**
     * <p>Information about the Amazon Web Services Regions targeted by the execution preview.</p>
     * @public
     */
    Regions?: string[] | undefined;
    /**
     * <p>Information that provides a preview of what the impact of running the specified Automation
     *    runbook would be.</p>
     * @public
     */
    TargetPreviews?: TargetPreview[] | undefined;
    /**
     * <p>Information about the Amazon Web Services accounts that were included in the execution
     *    preview.</p>
     * @public
     */
    TotalAccounts?: number | undefined;
}
/**
 * <p>Information about the changes that would be made if an execution were run.</p>
 * @public
 */
export type ExecutionPreview = ExecutionPreview.AutomationMember | ExecutionPreview.$UnknownMember;
/**
 * @public
 */
export declare namespace ExecutionPreview {
    /**
     * <p>Information about the changes that would be made if an Automation workflow were run.</p>
     * @public
     */
    interface AutomationMember {
        Automation: AutomationExecutionPreview;
        $unknown?: never;
    }
    /**
     * @public
     */
    interface $UnknownMember {
        Automation?: never;
        $unknown: [string, any];
    }
    /**
     * @deprecated unused in schema-serde mode.
     *
     */
    interface Visitor<T> {
        Automation: (value: AutomationExecutionPreview) => T;
        _: (name: string, value: any) => T;
    }
}
/**
 * @public
 */
export interface GetExecutionPreviewResponse {
    /**
     * <p>The generated ID for the existing execution preview.</p>
     * @public
     */
    ExecutionPreviewId?: string | undefined;
    /**
     * <p>A UTC timestamp indicating when the execution preview operation ended.</p>
     * @public
     */
    EndedAt?: Date | undefined;
    /**
     * <p>The current status of the execution preview operation.</p>
     * @public
     */
    Status?: ExecutionPreviewStatus | undefined;
    /**
     * <p>Supplemental information about the current status of the execution preview.</p>
     * @public
     */
    StatusMessage?: string | undefined;
    /**
     * <p>Information about the changes that would be made if an execution were run.</p>
     * @public
     */
    ExecutionPreview?: ExecutionPreview | undefined;
}
/**
 * <p>One or more filters. Use a filter to return a more specific list of results.</p>
 *          <p>
 *             <b>Example formats for the <code>aws ssm get-inventory</code>
 *     command:</b>
 *          </p>
 *          <p>
 *             <code>--filters
 *     Key=AWS:InstanceInformation.AgentType,Values=amazon-ssm-agent,Type=Equal</code>
 *          </p>
 *          <p>
 *             <code>--filters
 *    Key=AWS:InstanceInformation.AgentVersion,Values=3.3.2299.0,Type=Equal</code>
 *          </p>
 *          <p>
 *             <code>--filters
 *     Key=AWS:InstanceInformation.ComputerName,Values=ip-192.0.2.0.us-east-2.compute.internal,Type=Equal</code>
 *          </p>
 *          <p>
 *             <code>--filters
 *     Key=AWS:InstanceInformation.InstanceId,Values=i-0a4cd6ceffEXAMPLE,i-1a2b3c4d5e6EXAMPLE,Type=Equal</code>
 *          </p>
 *          <p>
 *             <code>--filters
 *    Key=AWS:InstanceInformation.InstanceStatus,Values=Active,Type=Equal</code>
 *          </p>
 *          <p>
 *             <code>--filters
 *    Key=AWS:InstanceInformation.IpAddress,Values=198.51.100.0,Type=Equal</code>
 *          </p>
 *          <p>
 *             <code>--filters Key=AWS:InstanceInformation.PlatformName,Values="Amazon
 *     Linux",Type=Equal</code>
 *          </p>
 *          <p>
 *             <code>--filters
 *    Key=AWS:InstanceInformation.PlatformType,Values=Linux,Type=Equal</code>
 *          </p>
 *          <p>
 *             <code>--filters
 *     Key=AWS:InstanceInformation.PlatformVersion,Values=2023,Type=BeginWith</code>
 *          </p>
 *          <p>
 *             <code>--filters
 *     Key=AWS:InstanceInformation.ResourceType,Values=EC2Instance,Type=Equal</code>
 *          </p>
 * @public
 */
export interface InventoryFilter {
    /**
     * <p>The name of the filter key.</p>
     * @public
     */
    Key: string | undefined;
    /**
     * <p>Inventory filter values.</p>
     * @public
     */
    Values: string[] | undefined;
    /**
     * <p>The type of filter.</p>
     *          <note>
     *             <p>The <code>Exists</code> filter must be used with aggregators. For more information, see
     *      <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/inventory-aggregate.html">Aggregating inventory data</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     *          </note>
     * @public
     */
    Type?: InventoryQueryOperatorType | undefined;
}
/**
 * <p>A user-defined set of one or more filters on which to aggregate inventory data. Groups
 *    return a count of resources that match and don't match the specified criteria.</p>
 * @public
 */
export interface InventoryGroup {
    /**
     * <p>The name of the group.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>Filters define the criteria for the group. The <code>matchingCount</code> field displays the
     *    number of resources that match the criteria. The <code>notMatchingCount</code> field displays the
     *    number of resources that don't match the criteria. </p>
     * @public
     */
    Filters: InventoryFilter[] | undefined;
}
/**
 * <p>The inventory item result attribute.</p>
 * @public
 */
export interface ResultAttribute {
    /**
     * <p>Name of the inventory item type. Valid value: <code>AWS:InstanceInformation</code>. Default
     *    Value: <code>AWS:InstanceInformation</code>.</p>
     * @public
     */
    TypeName: string | undefined;
}
/**
 * <p>The inventory result item.</p>
 * @public
 */
export interface InventoryResultItem {
    /**
     * <p>The name of the inventory result item type.</p>
     * @public
     */
    TypeName: string | undefined;
    /**
     * <p>The schema version for the inventory result item/</p>
     * @public
     */
    SchemaVersion: string | undefined;
    /**
     * <p>The time inventory item data was captured.</p>
     * @public
     */
    CaptureTime?: string | undefined;
    /**
     * <p>MD5 hash of the inventory item type contents. The content hash is used to determine whether
     *    to update inventory information. The PutInventory API doesn't update the inventory item type
     *    contents if the MD5 hash hasn't changed since last update. </p>
     * @public
     */
    ContentHash?: string | undefined;
    /**
     * <p>Contains all the inventory data of the item type. Results include attribute names and
     *    values. </p>
     * @public
     */
    Content: Record<string, string>[] | undefined;
}
/**
 * <p>Inventory query results.</p>
 * @public
 */
export interface InventoryResultEntity {
    /**
     * <p>ID of the inventory result entity. For example, for managed node inventory the result will
     *    be the managed node ID. For EC2 instance inventory, the result will be the instance ID. </p>
     * @public
     */
    Id?: string | undefined;
    /**
     * <p>The data section in the inventory result entity JSON.</p>
     * @public
     */
    Data?: Record<string, InventoryResultItem> | undefined;
}
/**
 * @public
 */
export interface GetInventoryResult {
    /**
     * <p>Collection of inventory entities such as a collection of managed node inventory. </p>
     * @public
     */
    Entities?: InventoryResultEntity[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface GetInventorySchemaRequest {
    /**
     * <p>The type of inventory item to return.</p>
     * @public
     */
    TypeName?: string | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>Returns inventory schemas that support aggregation. For example, this call returns the
     *     <code>AWS:InstanceInformation</code> type, because it supports aggregation based on the
     *     <code>PlatformName</code>, <code>PlatformType</code>, and <code>PlatformVersion</code>
     *    attributes.</p>
     * @public
     */
    Aggregator?: boolean | undefined;
    /**
     * <p>Returns the sub-type schema for a specified inventory type.</p>
     * @public
     */
    SubType?: boolean | undefined;
}
/**
 * <p>Attributes are the entries within the inventory item content. It contains name and
 *    value.</p>
 * @public
 */
export interface InventoryItemAttribute {
    /**
     * <p>Name of the inventory item attribute.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>The data type of the inventory item attribute. </p>
     * @public
     */
    DataType: InventoryAttributeDataType | undefined;
}
/**
 * <p>The inventory item schema definition. Users can use this to compose inventory query
 *    filters.</p>
 * @public
 */
export interface InventoryItemSchema {
    /**
     * <p>The name of the inventory type. Default inventory item type names start with Amazon Web Services. Custom
     *    inventory type names will start with Custom. Default inventory item types include the following:
     *     <code>AWS:AWSComponent</code>, <code>AWS:Application</code>,
     *     <code>AWS:InstanceInformation</code>, <code>AWS:Network</code>, and
     *     <code>AWS:WindowsUpdate</code>.</p>
     * @public
     */
    TypeName: string | undefined;
    /**
     * <p>The schema version for the inventory item.</p>
     * @public
     */
    Version?: string | undefined;
    /**
     * <p>The schema attributes for inventory. This contains data type and attribute name.</p>
     * @public
     */
    Attributes: InventoryItemAttribute[] | undefined;
    /**
     * <p>The alias name of the inventory type. The alias name is used for display purposes.</p>
     * @public
     */
    DisplayName?: string | undefined;
}
/**
 * @public
 */
export interface GetInventorySchemaResult {
    /**
     * <p>Inventory schemas returned by the request.</p>
     * @public
     */
    Schemas?: InventoryItemSchema[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowRequest {
    /**
     * <p>The ID of the maintenance window for which you want to retrieve information.</p>
     * @public
     */
    WindowId: string | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowResult {
    /**
     * <p>The ID of the created maintenance window.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The name of the maintenance window.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The description of the maintenance window.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled
     *    to become active. The maintenance window won't run before this specified time.</p>
     * @public
     */
    StartDate?: string | undefined;
    /**
     * <p>The date and time, in ISO-8601 Extended format, for when the maintenance window is scheduled
     *    to become inactive. The maintenance window won't run after this specified time.</p>
     * @public
     */
    EndDate?: string | undefined;
    /**
     * <p>The schedule of the maintenance window in the form of a cron or rate expression.</p>
     * @public
     */
    Schedule?: string | undefined;
    /**
     * <p>The time zone that the scheduled maintenance window executions are based on, in Internet
     *    Assigned Numbers Authority (IANA) format. For example: "America/Los_Angeles", "UTC", or
     *    "Asia/Seoul". For more information, see the <a href="https://www.iana.org/time-zones">Time
     *     Zone Database</a> on the IANA website.</p>
     * @public
     */
    ScheduleTimezone?: string | undefined;
    /**
     * <p>The number of days to wait to run a maintenance window after the scheduled cron expression
     *    date and time.</p>
     * @public
     */
    ScheduleOffset?: number | undefined;
    /**
     * <p>The next time the maintenance window will actually run, taking into account any specified
     *    times for the maintenance window to become active or inactive.</p>
     * @public
     */
    NextExecutionTime?: string | undefined;
    /**
     * <p>The duration of the maintenance window in hours.</p>
     * @public
     */
    Duration?: number | undefined;
    /**
     * <p>The number of hours before the end of the maintenance window that Amazon Web Services Systems Manager stops scheduling
     *    new tasks for execution.</p>
     * @public
     */
    Cutoff?: number | undefined;
    /**
     * <p>Whether targets must be registered with the maintenance window before tasks can be defined
     *    for those targets.</p>
     * @public
     */
    AllowUnassociatedTargets?: boolean | undefined;
    /**
     * <p>Indicates whether the maintenance window is enabled.</p>
     * @public
     */
    Enabled?: boolean | undefined;
    /**
     * <p>The date the maintenance window was created.</p>
     * @public
     */
    CreatedDate?: Date | undefined;
    /**
     * <p>The date the maintenance window was last modified.</p>
     * @public
     */
    ModifiedDate?: Date | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowExecutionRequest {
    /**
     * <p>The ID of the maintenance window execution that includes the task.</p>
     * @public
     */
    WindowExecutionId: string | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowExecutionResult {
    /**
     * <p>The ID of the maintenance window execution.</p>
     * @public
     */
    WindowExecutionId?: string | undefined;
    /**
     * <p>The ID of the task executions from the maintenance window execution.</p>
     * @public
     */
    TaskIds?: string[] | undefined;
    /**
     * <p>The status of the maintenance window execution.</p>
     * @public
     */
    Status?: MaintenanceWindowExecutionStatus | undefined;
    /**
     * <p>The details explaining the status. Not available for all status values.</p>
     * @public
     */
    StatusDetails?: string | undefined;
    /**
     * <p>The time the maintenance window started running.</p>
     * @public
     */
    StartTime?: Date | undefined;
    /**
     * <p>The time the maintenance window finished running.</p>
     * @public
     */
    EndTime?: Date | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowExecutionTaskRequest {
    /**
     * <p>The ID of the maintenance window execution that includes the task.</p>
     * @public
     */
    WindowExecutionId: string | undefined;
    /**
     * <p>The ID of the specific task execution in the maintenance window task that should be
     *    retrieved.</p>
     * @public
     */
    TaskId: string | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowExecutionTaskResult {
    /**
     * <p>The ID of the maintenance window execution that includes the task.</p>
     * @public
     */
    WindowExecutionId?: string | undefined;
    /**
     * <p>The ID of the specific task execution in the maintenance window task that was
     *    retrieved.</p>
     * @public
     */
    TaskExecutionId?: string | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the task that ran.</p>
     * @public
     */
    TaskArn?: string | undefined;
    /**
     * <p>The role that was assumed when running the task.</p>
     * @public
     */
    ServiceRole?: string | undefined;
    /**
     * <p>The type of task that was run.</p>
     * @public
     */
    Type?: MaintenanceWindowTaskType | undefined;
    /**
     * <p>The parameters passed to the task when it was run.</p>
     *          <note>
     *             <p>
     *                <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs,
     *       instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information
     *       about how Systems Manager handles these options for the supported maintenance window task
     *       types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
     *          </note>
     *          <p>The map has the following format:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>Key</code>: string, between 1 and 255 characters</p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Value</code>: an array of strings, each between 1 and 255 characters</p>
     *             </li>
     *          </ul>
     * @public
     */
    TaskParameters?: Record<string, MaintenanceWindowTaskParameterValueExpression>[] | undefined;
    /**
     * <p>The priority of the task.</p>
     * @public
     */
    Priority?: number | undefined;
    /**
     * <p>The defined maximum number of task executions that could be run in parallel.</p>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The defined maximum number of task execution errors allowed before scheduling of the task
     *    execution would have been stopped.</p>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>The status of the task.</p>
     * @public
     */
    Status?: MaintenanceWindowExecutionStatus | undefined;
    /**
     * <p>The details explaining the status. Not available for all status values.</p>
     * @public
     */
    StatusDetails?: string | undefined;
    /**
     * <p>The time the task execution started.</p>
     * @public
     */
    StartTime?: Date | undefined;
    /**
     * <p>The time the task execution completed.</p>
     * @public
     */
    EndTime?: Date | undefined;
    /**
     * <p>The details for the CloudWatch alarm you applied to your maintenance window
     *    task.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
    /**
     * <p>The CloudWatch alarms that were invoked by the maintenance window task.</p>
     * @public
     */
    TriggeredAlarms?: AlarmStateInformation[] | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowExecutionTaskInvocationRequest {
    /**
     * <p>The ID of the maintenance window execution for which the task is a part.</p>
     * @public
     */
    WindowExecutionId: string | undefined;
    /**
     * <p>The ID of the specific task in the maintenance window task that should be retrieved. </p>
     * @public
     */
    TaskId: string | undefined;
    /**
     * <p>The invocation ID to retrieve.</p>
     * @public
     */
    InvocationId: string | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowExecutionTaskInvocationResult {
    /**
     * <p>The maintenance window execution ID.</p>
     * @public
     */
    WindowExecutionId?: string | undefined;
    /**
     * <p>The task execution ID.</p>
     * @public
     */
    TaskExecutionId?: string | undefined;
    /**
     * <p>The invocation ID.</p>
     * @public
     */
    InvocationId?: string | undefined;
    /**
     * <p>The execution ID.</p>
     * @public
     */
    ExecutionId?: string | undefined;
    /**
     * <p>Retrieves the task type for a maintenance window.</p>
     * @public
     */
    TaskType?: MaintenanceWindowTaskType | undefined;
    /**
     * <p>The parameters used at the time that the task ran.</p>
     * @public
     */
    Parameters?: string | undefined;
    /**
     * <p>The task status for an invocation.</p>
     * @public
     */
    Status?: MaintenanceWindowExecutionStatus | undefined;
    /**
     * <p>The details explaining the status. Details are only available for certain status
     *    values.</p>
     * @public
     */
    StatusDetails?: string | undefined;
    /**
     * <p>The time that the task started running on the target.</p>
     * @public
     */
    StartTime?: Date | undefined;
    /**
     * <p>The time that the task finished running on the target.</p>
     * @public
     */
    EndTime?: Date | undefined;
    /**
     * <p>User-provided value to be included in any Amazon CloudWatch Events or Amazon EventBridge
     *    events raised while running tasks for these targets in this maintenance window.</p>
     * @public
     */
    OwnerInformation?: string | undefined;
    /**
     * <p>The maintenance window target ID.</p>
     * @public
     */
    WindowTargetId?: string | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowTaskRequest {
    /**
     * <p>The maintenance window ID that includes the task to retrieve.</p>
     * @public
     */
    WindowId: string | undefined;
    /**
     * <p>The maintenance window task ID to retrieve.</p>
     * @public
     */
    WindowTaskId: string | undefined;
}
/**
 * <p>The parameters for an <code>AUTOMATION</code> task type.</p>
 * @public
 */
export interface MaintenanceWindowAutomationParameters {
    /**
     * <p>The version of an Automation runbook to use during task execution.</p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>The parameters for the <code>AUTOMATION</code> task.</p>
     *          <p>For information about specifying and updating task parameters, see <a>RegisterTaskWithMaintenanceWindow</a> and <a>UpdateMaintenanceWindowTask</a>.</p>
     *          <note>
     *             <p>
     *                <code>LoggingInfo</code> has been deprecated. To specify an Amazon Simple Storage Service (Amazon S3) bucket to contain logs, instead use the
     *       <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure.
     *       For information about how Amazon Web Services Systems Manager handles these options for the supported maintenance
     *       window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
     *             <p>
     *                <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs,
     *       instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information
     *       about how Systems Manager handles these options for the supported maintenance window task
     *       types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
     *             <p>For <code>AUTOMATION</code> task types, Amazon Web Services Systems Manager ignores any values specified for these
     *     parameters.</p>
     *          </note>
     * @public
     */
    Parameters?: Record<string, string[]> | undefined;
}
/**
 * <p>The parameters for a <code>LAMBDA</code> task type.</p>
 *          <p>For information about specifying and updating task parameters, see <a>RegisterTaskWithMaintenanceWindow</a> and <a>UpdateMaintenanceWindowTask</a>.</p>
 *          <note>
 *             <p>
 *                <code>LoggingInfo</code> has been deprecated. To specify an Amazon Simple Storage Service (Amazon S3) bucket to contain logs, instead use the
 *       <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure.
 *       For information about how Amazon Web Services Systems Manager handles these options for the supported maintenance
 *       window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
 *             <p>
 *                <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs,
 *       instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information
 *       about how Systems Manager handles these options for the supported maintenance window task
 *       types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
 *             <p>For Lambda tasks, Systems Manager ignores any values specified for TaskParameters and
 *     LoggingInfo.</p>
 *          </note>
 * @public
 */
export interface MaintenanceWindowLambdaParameters {
    /**
     * <p>Pass client-specific information to the Lambda function that you are
     *    invoking. You can then process the client information in your Lambda function as you
     *    choose through the context variable.</p>
     * @public
     */
    ClientContext?: string | undefined;
    /**
     * <p>(Optional) Specify an Lambda function version or alias name. If you specify a
     *    function version, the operation uses the qualified function Amazon Resource Name (ARN) to invoke
     *    a specific Lambda function. If you specify an alias name, the operation uses the
     *    alias ARN to invoke the Lambda function version to which the alias points.</p>
     * @public
     */
    Qualifier?: string | undefined;
    /**
     * <p>JSON to provide to your Lambda function as input.</p>
     * @public
     */
    Payload?: Uint8Array | undefined;
}
/**
 * <p>Configurations for sending notifications.</p>
 * @public
 */
export interface NotificationConfig {
    /**
     * <p>An Amazon Resource Name (ARN) for an Amazon Simple Notification Service (Amazon SNS) topic. Run
     *    Command pushes notifications about command status changes to this topic.</p>
     * @public
     */
    NotificationArn?: string | undefined;
    /**
     * <p>The different events for which you can receive notifications. To learn more about these
     *    events, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/monitoring-sns-notifications.html">Monitoring Systems Manager status
     *     changes using Amazon SNS notifications</a> in the
     *     <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    NotificationEvents?: NotificationEvent[] | undefined;
    /**
     * <p>The type of notification.</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>Command</code>: Receive notification when the status of a command changes.</p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>Invocation</code>: For commands sent to multiple managed nodes, receive notification
     *      on a per-node basis when the status of a command changes. </p>
     *             </li>
     *          </ul>
     * @public
     */
    NotificationType?: NotificationType | undefined;
}
/**
 * <p>The parameters for a <code>RUN_COMMAND</code> task type.</p>
 *          <p>For information about specifying and updating task parameters, see <a>RegisterTaskWithMaintenanceWindow</a> and <a>UpdateMaintenanceWindowTask</a>.</p>
 *          <note>
 *             <p>
 *                <code>LoggingInfo</code> has been deprecated. To specify an Amazon Simple Storage Service (Amazon S3) bucket to contain logs, instead use the
 *       <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure.
 *       For information about how Amazon Web Services Systems Manager handles these options for the supported maintenance
 *       window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
 *             <p>
 *                <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs,
 *       instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information
 *       about how Systems Manager handles these options for the supported maintenance window task
 *       types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
 *             <p>For <code>RUN_COMMAND</code> tasks, Systems Manager uses specified values for
 *      <code>TaskParameters</code> and <code>LoggingInfo</code> only if no values are specified for
 *      <code>TaskInvocationParameters</code>. </p>
 *          </note>
 * @public
 */
export interface MaintenanceWindowRunCommandParameters {
    /**
     * <p>Information about the commands to run.</p>
     * @public
     */
    Comment?: string | undefined;
    /**
     * <p>Configuration options for sending command output to Amazon CloudWatch Logs.</p>
     * @public
     */
    CloudWatchOutputConfig?: CloudWatchOutputConfig | undefined;
    /**
     * <p>The SHA-256 or SHA-1 hash created by the system when the document was created. SHA-1 hashes
     *    have been deprecated.</p>
     * @public
     */
    DocumentHash?: string | undefined;
    /**
     * <p>SHA-256 or SHA-1. SHA-1 hashes have been deprecated.</p>
     * @public
     */
    DocumentHashType?: DocumentHashType | undefined;
    /**
     * <p>The Amazon Web Services Systems Manager document (SSM document) version to use in the request. You can specify
     *     <code>$DEFAULT</code>, <code>$LATEST</code>, or a specific version number. If you run commands
     *    by using the Amazon Web Services CLI, then you must escape the first two options by using a backslash. If you
     *    specify a version number, then you don't need to use the backslash. For example:</p>
     *          <p>
     *             <code>--document-version "\$DEFAULT"</code>
     *          </p>
     *          <p>
     *             <code>--document-version "\$LATEST"</code>
     *          </p>
     *          <p>
     *             <code>--document-version "3"</code>
     *          </p>
     * @public
     */
    DocumentVersion?: string | undefined;
    /**
     * <p>Configurations for sending notifications about command status changes on a per-managed node
     *    basis.</p>
     * @public
     */
    NotificationConfig?: NotificationConfig | undefined;
    /**
     * <p>The name of the Amazon Simple Storage Service (Amazon S3) bucket.</p>
     * @public
     */
    OutputS3BucketName?: string | undefined;
    /**
     * <p>The S3 bucket subfolder.</p>
     * @public
     */
    OutputS3KeyPrefix?: string | undefined;
    /**
     * <p>The parameters for the <code>RUN_COMMAND</code> task execution.</p>
     * @public
     */
    Parameters?: Record<string, string[]> | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the IAM service role for
     *                 Amazon Web Services Systems Manager to assume when running a maintenance window task. If you do not specify a
     *                 service role ARN, Systems Manager uses a service-linked role in your account. If no
     *                 appropriate service-linked role for Systems Manager exists in your account, it is created when
     *                 you run <code>RegisterTaskWithMaintenanceWindow</code>.</p>
     *          <p>However, for an improved security posture, we strongly recommend creating a custom
     *                 policy and custom service role for running your maintenance window tasks. The policy
     *                 can be crafted to provide only the permissions needed for your particular
     *                 maintenance window tasks. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-permissions.html">Setting up Maintenance Windows</a> in the in the
     *                     <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    ServiceRoleArn?: string | undefined;
    /**
     * <p>If this time is reached and the command hasn't already started running, it doesn't
     *    run.</p>
     * @public
     */
    TimeoutSeconds?: number | undefined;
}
/**
 * <p>The parameters for a <code>STEP_FUNCTIONS</code> task.</p>
 *          <p>For information about specifying and updating task parameters, see <a>RegisterTaskWithMaintenanceWindow</a> and <a>UpdateMaintenanceWindowTask</a>.</p>
 *          <note>
 *             <p>
 *                <code>LoggingInfo</code> has been deprecated. To specify an Amazon Simple Storage Service (Amazon S3) bucket to contain logs, instead use the
 *       <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure.
 *       For information about how Amazon Web Services Systems Manager handles these options for the supported maintenance
 *       window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
 *             <p>
 *                <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs,
 *       instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information
 *       about how Systems Manager handles these options for the supported maintenance window task
 *       types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
 *             <p>For Step Functions tasks, Systems Manager ignores any values specified for
 *      <code>TaskParameters</code> and <code>LoggingInfo</code>.</p>
 *          </note>
 * @public
 */
export interface MaintenanceWindowStepFunctionsParameters {
    /**
     * <p>The inputs for the <code>STEP_FUNCTIONS</code> task.</p>
     * @public
     */
    Input?: string | undefined;
    /**
     * <p>The name of the <code>STEP_FUNCTIONS</code> task.</p>
     * @public
     */
    Name?: string | undefined;
}
/**
 * <p>The parameters for task execution.</p>
 * @public
 */
export interface MaintenanceWindowTaskInvocationParameters {
    /**
     * <p>The parameters for a <code>RUN_COMMAND</code> task type.</p>
     * @public
     */
    RunCommand?: MaintenanceWindowRunCommandParameters | undefined;
    /**
     * <p>The parameters for an <code>AUTOMATION</code> task type.</p>
     * @public
     */
    Automation?: MaintenanceWindowAutomationParameters | undefined;
    /**
     * <p>The parameters for a <code>STEP_FUNCTIONS</code> task type.</p>
     * @public
     */
    StepFunctions?: MaintenanceWindowStepFunctionsParameters | undefined;
    /**
     * <p>The parameters for a <code>LAMBDA</code> task type.</p>
     * @public
     */
    Lambda?: MaintenanceWindowLambdaParameters | undefined;
}
/**
 * @public
 */
export interface GetMaintenanceWindowTaskResult {
    /**
     * <p>The retrieved maintenance window ID.</p>
     * @public
     */
    WindowId?: string | undefined;
    /**
     * <p>The retrieved maintenance window task ID.</p>
     * @public
     */
    WindowTaskId?: string | undefined;
    /**
     * <p>The targets where the task should run.</p>
     * @public
     */
    Targets?: Target[] | undefined;
    /**
     * <p>The resource that the task used during execution. For <code>RUN_COMMAND</code> and
     *     <code>AUTOMATION</code> task types, the value of <code>TaskArn</code> is the SSM document
     *    name/ARN. For <code>LAMBDA</code> tasks, the value is the function name/ARN. For
     *     <code>STEP_FUNCTIONS</code> tasks, the value is the state machine ARN.</p>
     * @public
     */
    TaskArn?: string | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the IAM service role for
     *                 Amazon Web Services Systems Manager to assume when running a maintenance window task. If you do not specify a
     *                 service role ARN, Systems Manager uses a service-linked role in your account. If no
     *                 appropriate service-linked role for Systems Manager exists in your account, it is created when
     *                 you run <code>RegisterTaskWithMaintenanceWindow</code>.</p>
     *          <p>However, for an improved security posture, we strongly recommend creating a custom
     *                 policy and custom service role for running your maintenance window tasks. The policy
     *                 can be crafted to provide only the permissions needed for your particular
     *                 maintenance window tasks. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-maintenance-permissions.html">Setting up Maintenance Windows</a> in the in the
     *                     <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    ServiceRoleArn?: string | undefined;
    /**
     * <p>The type of task to run.</p>
     * @public
     */
    TaskType?: MaintenanceWindowTaskType | undefined;
    /**
     * <p>The parameters to pass to the task when it runs.</p>
     *          <note>
     *             <p>
     *                <code>TaskParameters</code> has been deprecated. To specify parameters to pass to a task when it runs,
     *       instead use the <code>Parameters</code> option in the <code>TaskInvocationParameters</code> structure. For information
     *       about how Systems Manager handles these options for the supported maintenance window task
     *       types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
     *          </note>
     * @public
     */
    TaskParameters?: Record<string, MaintenanceWindowTaskParameterValueExpression> | undefined;
    /**
     * <p>The parameters to pass to the task when it runs.</p>
     * @public
     */
    TaskInvocationParameters?: MaintenanceWindowTaskInvocationParameters | undefined;
    /**
     * <p>The priority of the task when it runs. The lower the number, the higher the priority. Tasks
     *    that have the same priority are scheduled in parallel.</p>
     * @public
     */
    Priority?: number | undefined;
    /**
     * <p>The maximum number of targets allowed to run this task in parallel.</p>
     *          <note>
     *             <p>For maintenance window tasks without a target specified, you can't supply a value for this
     *     option. Instead, the system inserts a placeholder value of <code>1</code>, which may be reported
     *     in the response to this command. This value doesn't affect the running of your task and can be
     *     ignored.</p>
     *          </note>
     * @public
     */
    MaxConcurrency?: string | undefined;
    /**
     * <p>The maximum number of errors allowed before the task stops being scheduled.</p>
     *          <note>
     *             <p>For maintenance window tasks without a target specified, you can't supply a value for this
     *     option. Instead, the system inserts a placeholder value of <code>1</code>, which may be reported
     *     in the response to this command. This value doesn't affect the running of your task and can be
     *     ignored.</p>
     *          </note>
     * @public
     */
    MaxErrors?: string | undefined;
    /**
     * <p>The location in Amazon Simple Storage Service (Amazon S3) where the task results are
     *    logged.</p>
     *          <note>
     *             <p>
     *                <code>LoggingInfo</code> has been deprecated. To specify an Amazon Simple Storage Service (Amazon S3) bucket to contain logs, instead use the
     *       <code>OutputS3BucketName</code> and <code>OutputS3KeyPrefix</code> options in the <code>TaskInvocationParameters</code> structure.
     *       For information about how Amazon Web Services Systems Manager handles these options for the supported maintenance
     *       window task types, see <a>MaintenanceWindowTaskInvocationParameters</a>.</p>
     *          </note>
     * @public
     */
    LoggingInfo?: LoggingInfo | undefined;
    /**
     * <p>The retrieved task name.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The retrieved task description.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The action to take on tasks when the maintenance window cutoff time is reached.
     *     <code>CONTINUE_TASK</code> means that tasks continue to run. For Automation, Lambda, Step Functions tasks, <code>CANCEL_TASK</code> means that currently
     *    running task invocations continue, but no new task invocations are started. For Run Command
     *    tasks, <code>CANCEL_TASK</code> means the system attempts to stop the task by sending a
     *     <code>CancelCommand</code> operation.</p>
     * @public
     */
    CutoffBehavior?: MaintenanceWindowTaskCutoffBehavior | undefined;
    /**
     * <p>The details for the CloudWatch alarm you applied to your maintenance window
     *    task.</p>
     * @public
     */
    AlarmConfiguration?: AlarmConfiguration | undefined;
}
/**
 * @public
 */
export interface GetOpsItemRequest {
    /**
     * <p>The ID of the OpsItem that you want to get.</p>
     * @public
     */
    OpsItemId: string | undefined;
    /**
     * <p>The OpsItem Amazon Resource Name (ARN).</p>
     * @public
     */
    OpsItemArn?: string | undefined;
}
/**
 * <p>Operations engineers and IT professionals use Amazon Web Services Systems Manager OpsCenter to view, investigate, and
 *    remediate operational work items (OpsItems) impacting the performance and health of their Amazon Web Services
 *    resources. OpsCenter is integrated with Amazon EventBridge and Amazon CloudWatch. This
 *    means you can configure these services to automatically create an OpsItem in OpsCenter when a
 *     CloudWatch alarm enters the ALARM state or when EventBridge processes an event from
 *    any Amazon Web Services service that publishes events. Configuring Amazon CloudWatch alarms and EventBridge events to automatically create OpsItems allows you to quickly diagnose and remediate
 *    issues with Amazon Web Services resources from a single console.</p>
 *          <p>To help you diagnose issues, each OpsItem includes contextually relevant information such as
 *    the name and ID of the Amazon Web Services resource that generated the OpsItem, alarm or event details, alarm
 *    history, and an alarm timeline graph. For the Amazon Web Services resource, OpsCenter aggregates information
 *    from Config, CloudTrail logs, and EventBridge, so you don't have
 *    to navigate across multiple console pages during your investigation. For more information, see
 *     <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html">Amazon Web Services Systems Manager
 *     OpsCenter</a> in the <i>Amazon Web Services Systems Manager User Guide</i>. </p>
 * @public
 */
export interface OpsItem {
    /**
     * <p>The ARN of the Amazon Web Services account that created the OpsItem.</p>
     * @public
     */
    CreatedBy?: string | undefined;
    /**
     * <p>The type of OpsItem. Systems Manager supports the following types of OpsItems:</p>
     *          <ul>
     *             <li>
     *                <p>
     *                   <code>/aws/issue</code>
     *                </p>
     *                <p>This type of OpsItem is used for default OpsItems created by OpsCenter. </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>/aws/changerequest</code>
     *                </p>
     *                <p>This type of OpsItem is used by Change Manager for reviewing and approving or rejecting change
     *      requests. </p>
     *             </li>
     *             <li>
     *                <p>
     *                   <code>/aws/insight</code>
     *                </p>
     *                <p>This type of OpsItem is used by OpsCenter for aggregating and reporting on duplicate
     *      OpsItems. </p>
     *             </li>
     *          </ul>
     * @public
     */
    OpsItemType?: string | undefined;
    /**
     * <p>The date and time the OpsItem was created.</p>
     * @public
     */
    CreatedTime?: Date | undefined;
    /**
     * <p>The OpsItem description.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The ARN of the Amazon Web Services account that last updated the OpsItem.</p>
     * @public
     */
    LastModifiedBy?: string | undefined;
    /**
     * <p>The date and time the OpsItem was last updated.</p>
     * @public
     */
    LastModifiedTime?: Date | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of an Amazon Simple Notification Service (Amazon SNS) topic where
     *    notifications are sent when this OpsItem is edited or changed.</p>
     * @public
     */
    Notifications?: OpsItemNotification[] | undefined;
    /**
     * <p>The importance of this OpsItem in relation to other OpsItems in the system.</p>
     * @public
     */
    Priority?: number | undefined;
    /**
     * <p>One or more OpsItems that share something in common with the current OpsItem. For example,
     *    related OpsItems can include OpsItems with similar error messages, impacted resources, or
     *    statuses for the impacted resource.</p>
     * @public
     */
    RelatedOpsItems?: RelatedOpsItem[] | undefined;
    /**
     * <p>The OpsItem status. For more information, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-working-with-OpsItems-editing-details.html">Editing OpsItem details</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    Status?: OpsItemStatus | undefined;
    /**
     * <p>The ID of the OpsItem.</p>
     * @public
     */
    OpsItemId?: string | undefined;
    /**
     * <p>The version of this OpsItem. Each time the OpsItem is edited the version number increments
     *    by one.</p>
     * @public
     */
    Version?: string | undefined;
    /**
     * <p>A short heading that describes the nature of the OpsItem and the impacted resource.</p>
     * @public
     */
    Title?: string | undefined;
    /**
     * <p>The origin of the OpsItem, such as Amazon EC2 or Systems Manager. The impacted resource is a subset of
     *    source.</p>
     * @public
     */
    Source?: string | undefined;
    /**
     * <p>Operational data is custom data that provides useful reference details about the OpsItem.
     *    For example, you can specify log files, error strings, license keys, troubleshooting tips, or
     *    other relevant data. You enter operational data as key-value pairs. The key has a maximum length
     *    of 128 characters. The value has a maximum size of 20 KB.</p>
     *          <important>
     *             <p>Operational data keys <i>can't</i> begin with the following:
     *      <code>amazon</code>, <code>aws</code>, <code>amzn</code>, <code>ssm</code>,
     *      <code>/amazon</code>, <code>/aws</code>, <code>/amzn</code>, <code>/ssm</code>.</p>
     *          </important>
     *          <p>You can choose to make the data searchable by other users in the account or you can restrict
     *    search access. Searchable data means that all users with access to the OpsItem Overview page (as
     *    provided by the <a>DescribeOpsItems</a> API operation) can view and search on the
     *    specified data. Operational data that isn't searchable is only viewable by users who have access
     *    to the OpsItem (as provided by the <a>GetOpsItem</a> API operation).</p>
     *          <p>Use the <code>/aws/resources</code> key in OperationalData to specify a related resource in
     *    the request. Use the <code>/aws/automations</code> key in OperationalData to associate an
     *    Automation runbook with the OpsItem. To view Amazon Web Services CLI example commands that use these keys, see
     *     <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-manually-create-OpsItems.html">Creating OpsItems
     *     manually</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    OperationalData?: Record<string, OpsItemDataValue> | undefined;
    /**
     * <p>An OpsItem category. Category options include: Availability, Cost, Performance, Recovery,
     *    Security.</p>
     * @public
     */
    Category?: string | undefined;
    /**
     * <p>The severity of the OpsItem. Severity options range from 1 to 4.</p>
     * @public
     */
    Severity?: string | undefined;
    /**
     * <p>The time a runbook workflow started. Currently reported only for the OpsItem type
     *     <code>/aws/changerequest</code>.</p>
     * @public
     */
    ActualStartTime?: Date | undefined;
    /**
     * <p>The time a runbook workflow ended. Currently reported only for the OpsItem type
     *     <code>/aws/changerequest</code>.</p>
     * @public
     */
    ActualEndTime?: Date | undefined;
    /**
     * <p>The time specified in a change request for a runbook workflow to start. Currently supported
     *    only for the OpsItem type <code>/aws/changerequest</code>.</p>
     * @public
     */
    PlannedStartTime?: Date | undefined;
    /**
     * <p>The time specified in a change request for a runbook workflow to end. Currently supported
     *    only for the OpsItem type <code>/aws/changerequest</code>.</p>
     * @public
     */
    PlannedEndTime?: Date | undefined;
    /**
     * <p>The OpsItem Amazon Resource Name (ARN).</p>
     * @public
     */
    OpsItemArn?: string | undefined;
}
/**
 * @public
 */
export interface GetOpsItemResponse {
    /**
     * <p>The OpsItem.</p>
     * @public
     */
    OpsItem?: OpsItem | undefined;
}
/**
 * @public
 */
export interface GetOpsMetadataRequest {
    /**
     * <p>The Amazon Resource Name (ARN) of an OpsMetadata Object to view.</p>
     * @public
     */
    OpsMetadataArn: string | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>A token to start the list. Use this token to get the next set of results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface GetOpsMetadataResult {
    /**
     * <p>The resource ID of the Application Manager application.</p>
     * @public
     */
    ResourceId?: string | undefined;
    /**
     * <p>OpsMetadata for an Application Manager application.</p>
     * @public
     */
    Metadata?: Record<string, MetadataValue> | undefined;
    /**
     * <p>The token for the next set of items to return. Use this token to get the next set of
     *    results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>A filter for viewing OpsData summaries.</p>
 * @public
 */
export interface OpsFilter {
    /**
     * <p>The name of the filter.</p>
     * @public
     */
    Key: string | undefined;
    /**
     * <p>The filter value.</p>
     * @public
     */
    Values: string[] | undefined;
    /**
     * <p>The type of filter.</p>
     * @public
     */
    Type?: OpsFilterOperatorType | undefined;
}
/**
 * <p>The OpsItem data type to return.</p>
 * @public
 */
export interface OpsResultAttribute {
    /**
     * <p>Name of the data type. Valid value: <code>AWS:OpsItem</code>,
     *     <code>AWS:EC2InstanceInformation</code>, <code>AWS:OpsItemTrendline</code>, or
     *     <code>AWS:ComplianceSummary</code>.</p>
     * @public
     */
    TypeName: string | undefined;
}
/**
 * <p>The OpsData summary.</p>
 * @public
 */
export interface OpsEntityItem {
    /**
     * <p>The time the OpsData was captured.</p>
     * @public
     */
    CaptureTime?: string | undefined;
    /**
     * <p>The details of an OpsData summary.</p>
     * @public
     */
    Content?: Record<string, string>[] | undefined;
}
/**
 * <p>The result of the query.</p>
 * @public
 */
export interface OpsEntity {
    /**
     * <p>The query ID.</p>
     * @public
     */
    Id?: string | undefined;
    /**
     * <p>The data returned by the query.</p>
     * @public
     */
    Data?: Record<string, OpsEntityItem> | undefined;
}
/**
 * @public
 */
export interface GetOpsSummaryResult {
    /**
     * <p>The list of aggregated details and filtered OpsData.</p>
     * @public
     */
    Entities?: OpsEntity[] | undefined;
    /**
     * <p>The token for the next set of items to return. Use this token to get the next set of
     *    results.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface GetParameterRequest {
    /**
     * <p>The name or Amazon Resource Name (ARN) of the parameter that you want to query. For
     *    parameters shared with you from another account, you must use the full ARN.</p>
     *          <p>To query by parameter label, use <code>"Name": "name:label"</code>. To query by parameter
     *    version, use <code>"Name": "name:version"</code>.</p>
     *          <p>For more information about shared parameters, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html">Working with
     *     shared parameters</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>Return decrypted values for secure string parameters. This flag is ignored for
     *     <code>String</code> and <code>StringList</code> parameter types.</p>
     * @public
     */
    WithDecryption?: boolean | undefined;
}
/**
 * <p>An Amazon Web Services Systems Manager parameter in Parameter Store.</p>
 * @public
 */
export interface Parameter {
    /**
     * <p>The name of the parameter.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The type of parameter. Valid values include the following: <code>String</code>,
     *     <code>StringList</code>, and <code>SecureString</code>.</p>
     *          <note>
     *             <p>If type is <code>StringList</code>, the system returns a comma-separated string with no
     *     spaces between commas in the <code>Value</code> field.</p>
     *          </note>
     * @public
     */
    Type?: ParameterType | undefined;
    /**
     * <p>The parameter value.</p>
     *          <note>
     *             <p>If type is <code>StringList</code>, the system returns a comma-separated string with no
     *     spaces between commas in the <code>Value</code> field.</p>
     *          </note>
     * @public
     */
    Value?: string | undefined;
    /**
     * <p>The parameter version.</p>
     * @public
     */
    Version?: number | undefined;
    /**
     * <p>Either the version number or the label used to retrieve the parameter value. Specify
     *    selectors by using one of the following formats:</p>
     *          <p>parameter_name:version</p>
     *          <p>parameter_name:label</p>
     * @public
     */
    Selector?: string | undefined;
    /**
     * <p>Applies to parameters that reference information in other Amazon Web Services services.
     *     <code>SourceResult</code> is the raw result or response from the source.</p>
     * @public
     */
    SourceResult?: string | undefined;
    /**
     * <p>Date the parameter was last changed or updated and the parameter version was created.</p>
     * @public
     */
    LastModifiedDate?: Date | undefined;
    /**
     * <p>The Amazon Resource Name (ARN) of the parameter.</p>
     * @public
     */
    ARN?: string | undefined;
    /**
     * <p>The data type of the parameter, such as <code>text</code> or <code>aws:ec2:image</code>. The
     *    default is <code>text</code>.</p>
     * @public
     */
    DataType?: string | undefined;
}
/**
 * @public
 */
export interface GetParameterResult {
    /**
     * <p>Information about a parameter.</p>
     * @public
     */
    Parameter?: Parameter | undefined;
}
/**
 * @public
 */
export interface GetParameterHistoryRequest {
    /**
     * <p>The name or Amazon Resource Name (ARN) of the parameter for which you want to review
     *    history. For parameters shared with you from another account, you must use the full ARN.</p>
     * @public
     */
    Name: string | undefined;
    /**
     * <p>Return decrypted values for secure string parameters. This flag is ignored for
     *     <code>String</code> and <code>StringList</code> parameter types.</p>
     * @public
     */
    WithDecryption?: boolean | undefined;
    /**
     * <p>The maximum number of items to return for this call. The call also returns a token that you
     *    can specify in a subsequent call to get the next set of results.</p>
     * @public
     */
    MaxResults?: number | undefined;
    /**
     * <p>The token for the next set of items to return. (You received this token from a previous
     *    call.)</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * <p>Information about parameter usage.</p>
 * @public
 */
export interface ParameterHistory {
    /**
     * <p>The name of the parameter.</p>
     * @public
     */
    Name?: string | undefined;
    /**
     * <p>The type of parameter used.</p>
     * @public
     */
    Type?: ParameterType | undefined;
    /**
     * <p>The alias of the Key Management Service (KMS) key used to encrypt the
     *    parameter. Applies to <code>SecureString</code> parameters only</p>
     * @public
     */
    KeyId?: string | undefined;
    /**
     * <p>Date the parameter was last changed or updated.</p>
     * @public
     */
    LastModifiedDate?: Date | undefined;
    /**
     * <p>Amazon Resource Name (ARN) of the Amazon Web Services user who last changed the parameter.</p>
     * @public
     */
    LastModifiedUser?: string | undefined;
    /**
     * <p>Information about the parameter.</p>
     * @public
     */
    Description?: string | undefined;
    /**
     * <p>The parameter value.</p>
     * @public
     */
    Value?: string | undefined;
    /**
     * <p>Parameter names can include the following letters and symbols.</p>
     *          <p>a-zA-Z0-9_.-</p>
     * @public
     */
    AllowedPattern?: string | undefined;
    /**
     * <p>The parameter version.</p>
     * @public
     */
    Version?: number | undefined;
    /**
     * <p>Labels assigned to the parameter version.</p>
     * @public
     */
    Labels?: string[] | undefined;
    /**
     * <p>The parameter tier.</p>
     * @public
     */
    Tier?: ParameterTier | undefined;
    /**
     * <p>Information about the policies assigned to a parameter.</p>
     *          <p>
     *             <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-policies.html">Assigning parameter
     *     policies</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    Policies?: ParameterInlinePolicy[] | undefined;
    /**
     * <p>The data type of the parameter, such as <code>text</code> or <code>aws:ec2:image</code>. The
     *    default is <code>text</code>.</p>
     * @public
     */
    DataType?: string | undefined;
}
/**
 * @public
 */
export interface GetParameterHistoryResult {
    /**
     * <p>A list of parameters returned by the request.</p>
     * @public
     */
    Parameters?: ParameterHistory[] | undefined;
    /**
     * <p>The token to use when requesting the next set of items. If there are no additional items to
     *    return, the string is empty.</p>
     * @public
     */
    NextToken?: string | undefined;
}
/**
 * @public
 */
export interface GetParametersRequest {
    /**
     * <p>The names or Amazon Resource Names (ARNs) of the parameters that you want to query. For
     *    parameters shared with you from another account, you must use the full ARNs.</p>
     *          <p>To query by parameter label, use <code>"Name": "name:label"</code>. To query by parameter
     *    version, use <code>"Name": "name:version"</code>.</p>
     *          <note>
     *             <p>The results for <code>GetParameters</code> requests are listed in alphabetical order in
     *     query responses.</p>
     *          </note>
     *          <p>For information about shared parameters, see <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html">Working with
     *     shared parameters</a> in the <i>Amazon Web Services Systems Manager User Guide</i>.</p>
     * @public
     */
    Names: string[] | undefined;
    /**
     * <p>Return decrypted secure string value. Return decrypted values for secure string parameters.
     *    This flag is ignored for <code>String</code> and <code>StringList</code> parameter types.</p>
     * @public
     */
    WithDecryption?: boolean | undefined;
}
/**
 * @public
 */
export interface GetParametersResult {
    /**
     * <p>A list of details for a parameter.</p>
     * @public
     */
    Parameters?: Parameter[] | undefined;
    /**
     * <p>A list of parameters that aren't formatted correctly or don't run during an
     *    execution.</p>
     * @public
     */
    InvalidParameters?: string[] | undefined;
}