R/ssm_operations.R

Defines functions ssm_update_service_setting ssm_update_resource_data_sync ssm_update_patch_baseline ssm_update_ops_metadata ssm_update_ops_item ssm_update_managed_instance_role ssm_update_maintenance_window_task ssm_update_maintenance_window_target ssm_update_maintenance_window ssm_update_document_metadata ssm_update_document_default_version ssm_update_document ssm_update_association_status ssm_update_association ssm_terminate_session ssm_stop_automation_execution ssm_start_session ssm_start_change_request_execution ssm_start_automation_execution ssm_start_associations_once ssm_send_command ssm_send_automation_signal ssm_resume_session ssm_reset_service_setting ssm_remove_tags_from_resource ssm_register_task_with_maintenance_window ssm_register_target_with_maintenance_window ssm_register_patch_baseline_for_patch_group ssm_register_default_patch_baseline ssm_put_parameter ssm_put_inventory ssm_put_compliance_items ssm_modify_document_permission ssm_list_tags_for_resource ssm_list_resource_data_sync ssm_list_resource_compliance_summaries ssm_list_ops_metadata ssm_list_ops_item_events ssm_list_inventory_entries ssm_list_documents ssm_list_document_versions ssm_list_document_metadata_history ssm_list_compliance_summaries ssm_list_compliance_items ssm_list_commands ssm_list_command_invocations ssm_list_associations ssm_list_association_versions ssm_label_parameter_version ssm_get_service_setting ssm_get_patch_baseline_for_patch_group ssm_get_patch_baseline ssm_get_parameters_by_path ssm_get_parameters ssm_get_parameter_history ssm_get_parameter ssm_get_ops_summary ssm_get_ops_metadata ssm_get_ops_item ssm_get_maintenance_window_task ssm_get_maintenance_window_execution_task_invocation ssm_get_maintenance_window_execution_task ssm_get_maintenance_window_execution ssm_get_maintenance_window ssm_get_inventory_schema ssm_get_inventory ssm_get_document ssm_get_deployable_patch_snapshot_for_instance ssm_get_default_patch_baseline ssm_get_connection_status ssm_get_command_invocation ssm_get_calendar_state ssm_get_automation_execution ssm_describe_sessions ssm_describe_patch_properties ssm_describe_patch_groups ssm_describe_patch_group_state ssm_describe_patch_baselines ssm_describe_parameters ssm_describe_ops_items ssm_describe_maintenance_windows_for_target ssm_describe_maintenance_windows ssm_describe_maintenance_window_tasks ssm_describe_maintenance_window_targets ssm_describe_maintenance_window_schedule ssm_describe_maintenance_window_executions ssm_describe_maintenance_window_execution_tasks ssm_describe_maintenance_window_execution_task_invocations ssm_describe_inventory_deletions ssm_describe_instance_patches ssm_describe_instance_patch_states_for_patch_group ssm_describe_instance_patch_states ssm_describe_instance_information ssm_describe_instance_associations_status ssm_describe_effective_patches_for_patch_baseline ssm_describe_effective_instance_associations ssm_describe_document_permission ssm_describe_document ssm_describe_available_patches ssm_describe_automation_step_executions ssm_describe_automation_executions ssm_describe_association_executions ssm_describe_association_execution_targets ssm_describe_association ssm_describe_activations ssm_deregister_task_from_maintenance_window ssm_deregister_target_from_maintenance_window ssm_deregister_patch_baseline_for_patch_group ssm_deregister_managed_instance ssm_delete_resource_data_sync ssm_delete_patch_baseline ssm_delete_parameters ssm_delete_parameter ssm_delete_ops_metadata ssm_delete_maintenance_window ssm_delete_inventory ssm_delete_document ssm_delete_association ssm_delete_activation ssm_create_resource_data_sync ssm_create_patch_baseline ssm_create_ops_metadata ssm_create_ops_item ssm_create_maintenance_window ssm_create_document ssm_create_association_batch ssm_create_association ssm_create_activation ssm_cancel_maintenance_window_execution ssm_cancel_command ssm_add_tags_to_resource

Documented in ssm_add_tags_to_resource ssm_cancel_command ssm_cancel_maintenance_window_execution ssm_create_activation ssm_create_association ssm_create_association_batch ssm_create_document ssm_create_maintenance_window ssm_create_ops_item ssm_create_ops_metadata ssm_create_patch_baseline ssm_create_resource_data_sync ssm_delete_activation ssm_delete_association ssm_delete_document ssm_delete_inventory ssm_delete_maintenance_window ssm_delete_ops_metadata ssm_delete_parameter ssm_delete_parameters ssm_delete_patch_baseline ssm_delete_resource_data_sync ssm_deregister_managed_instance ssm_deregister_patch_baseline_for_patch_group ssm_deregister_target_from_maintenance_window ssm_deregister_task_from_maintenance_window ssm_describe_activations ssm_describe_association ssm_describe_association_executions ssm_describe_association_execution_targets ssm_describe_automation_executions ssm_describe_automation_step_executions ssm_describe_available_patches ssm_describe_document ssm_describe_document_permission ssm_describe_effective_instance_associations ssm_describe_effective_patches_for_patch_baseline ssm_describe_instance_associations_status ssm_describe_instance_information ssm_describe_instance_patches ssm_describe_instance_patch_states ssm_describe_instance_patch_states_for_patch_group ssm_describe_inventory_deletions ssm_describe_maintenance_window_executions ssm_describe_maintenance_window_execution_task_invocations ssm_describe_maintenance_window_execution_tasks ssm_describe_maintenance_windows ssm_describe_maintenance_window_schedule ssm_describe_maintenance_windows_for_target ssm_describe_maintenance_window_targets ssm_describe_maintenance_window_tasks ssm_describe_ops_items ssm_describe_parameters ssm_describe_patch_baselines ssm_describe_patch_groups ssm_describe_patch_group_state ssm_describe_patch_properties ssm_describe_sessions ssm_get_automation_execution ssm_get_calendar_state ssm_get_command_invocation ssm_get_connection_status ssm_get_default_patch_baseline ssm_get_deployable_patch_snapshot_for_instance ssm_get_document ssm_get_inventory ssm_get_inventory_schema ssm_get_maintenance_window ssm_get_maintenance_window_execution ssm_get_maintenance_window_execution_task ssm_get_maintenance_window_execution_task_invocation ssm_get_maintenance_window_task ssm_get_ops_item ssm_get_ops_metadata ssm_get_ops_summary ssm_get_parameter ssm_get_parameter_history ssm_get_parameters ssm_get_parameters_by_path ssm_get_patch_baseline ssm_get_patch_baseline_for_patch_group ssm_get_service_setting ssm_label_parameter_version ssm_list_associations ssm_list_association_versions ssm_list_command_invocations ssm_list_commands ssm_list_compliance_items ssm_list_compliance_summaries ssm_list_document_metadata_history ssm_list_documents ssm_list_document_versions ssm_list_inventory_entries ssm_list_ops_item_events ssm_list_ops_metadata ssm_list_resource_compliance_summaries ssm_list_resource_data_sync ssm_list_tags_for_resource ssm_modify_document_permission ssm_put_compliance_items ssm_put_inventory ssm_put_parameter ssm_register_default_patch_baseline ssm_register_patch_baseline_for_patch_group ssm_register_target_with_maintenance_window ssm_register_task_with_maintenance_window ssm_remove_tags_from_resource ssm_reset_service_setting ssm_resume_session ssm_send_automation_signal ssm_send_command ssm_start_associations_once ssm_start_automation_execution ssm_start_change_request_execution ssm_start_session ssm_stop_automation_execution ssm_terminate_session ssm_update_association ssm_update_association_status ssm_update_document ssm_update_document_default_version ssm_update_document_metadata ssm_update_maintenance_window ssm_update_maintenance_window_target ssm_update_maintenance_window_task ssm_update_managed_instance_role ssm_update_ops_item ssm_update_ops_metadata ssm_update_patch_baseline ssm_update_resource_data_sync ssm_update_service_setting

# This file is generated by make.paws. Please do not edit here.
#' @importFrom paws.common get_config new_operation new_request send_request
#' @include ssm_service.R
NULL

#' Adds or overwrites one or more tags for the specified resource
#'
#' @description
#' Adds or overwrites one or more tags for the specified resource. Tags are
#' metadata that you can assign to your documents, managed instances,
#' maintenance windows, Parameter Store parameters, and patch baselines.
#' 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. For example, you could
#' define a set of tags for your account's managed instances that helps you
#' track each instance's owner and stack level. For example: Key=Owner and
#' Value=DbAdmin, SysAdmin, or Dev. Or Key=Stack and Value=Production,
#' Pre-Production, or Test.
#' 
#' Each resource can have a maximum of 50 tags.
#' 
#' We recommend that you devise a set of tag keys that meets your needs for
#' each resource type. Using a consistent set of tag keys makes it easier
#' for you to manage your resources. You can search and filter the
#' resources based on the tags you add. Tags don't have any semantic
#' meaning to and are interpreted strictly as a string of characters.
#' 
#' For more information about using tags with EC2 instances, see [Tagging
#' your Amazon EC2
#' resources](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)
#' in the *Amazon EC2 User Guide*.
#'
#' @usage
#' ssm_add_tags_to_resource(ResourceType, ResourceId, Tags)
#'
#' @param ResourceType [required] Specifies the type of resource you are tagging.
#' 
#' The ManagedInstance type for this API action is for on-premises managed
#' instances. You must specify the name of the managed instance in the
#' following format: mi-ID_number. For example, mi-1a2b3c4d5e6f.
#' @param ResourceId [required] The resource ID you want to tag.
#' 
#' Use the ID of the resource. Here are some examples:
#' 
#' ManagedInstance: mi-012345abcde
#' 
#' MaintenanceWindow: mw-012345abcde
#' 
#' PatchBaseline: pb-012345abcde
#' 
#' For the Document and Parameter values, use the name of the resource.
#' 
#' The ManagedInstance type for this API action is only for on-premises
#' managed instances. You must specify the name of the managed instance in
#' the following format: mi-ID_number. For example, mi-1a2b3c4d5e6f.
#' @param Tags [required] One or more tags. The value parameter is required, but if you don't want
#' the tag to have a value, specify the parameter with no value, and we set
#' the value to an empty string.
#' 
#' Do not enter personally identifiable information in this field.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$add_tags_to_resource(
#'   ResourceType = "Document"|"ManagedInstance"|"MaintenanceWindow"|"Parameter"|"PatchBaseline"|"OpsItem",
#'   ResourceId = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_add_tags_to_resource
ssm_add_tags_to_resource <- function(ResourceType, ResourceId, Tags) {
  op <- new_operation(
    name = "AddTagsToResource",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$add_tags_to_resource_input(ResourceType = ResourceType, ResourceId = ResourceId, Tags = Tags)
  output <- .ssm$add_tags_to_resource_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$add_tags_to_resource <- ssm_add_tags_to_resource

#' Attempts to cancel the command specified by the Command ID
#'
#' @description
#' Attempts to cancel the command specified by the Command ID. There is no
#' guarantee that the command will be terminated and the underlying process
#' stopped.
#'
#' @usage
#' ssm_cancel_command(CommandId, InstanceIds)
#'
#' @param CommandId &#91;required&#93; The ID of the command you want to cancel.
#' @param InstanceIds (Optional) A list of instance IDs on which you want to cancel the
#' command. If not provided, the command is canceled on every instance on
#' which it was requested.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$cancel_command(
#'   CommandId = "string",
#'   InstanceIds = list(
#'     "string"
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_cancel_command
ssm_cancel_command <- function(CommandId, InstanceIds = NULL) {
  op <- new_operation(
    name = "CancelCommand",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$cancel_command_input(CommandId = CommandId, InstanceIds = InstanceIds)
  output <- .ssm$cancel_command_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$cancel_command <- ssm_cancel_command

#' Stops a maintenance window execution that is already in progress and
#' cancels any tasks in the window that have not already starting running
#'
#' @description
#' Stops a maintenance window execution that is already in progress and
#' cancels any tasks in the window that have not already starting running.
#' (Tasks already in progress will continue to completion.)
#'
#' @usage
#' ssm_cancel_maintenance_window_execution(WindowExecutionId)
#'
#' @param WindowExecutionId &#91;required&#93; The ID of the maintenance window execution to stop.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowExecutionId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$cancel_maintenance_window_execution(
#'   WindowExecutionId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_cancel_maintenance_window_execution
ssm_cancel_maintenance_window_execution <- function(WindowExecutionId) {
  op <- new_operation(
    name = "CancelMaintenanceWindowExecution",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$cancel_maintenance_window_execution_input(WindowExecutionId = WindowExecutionId)
  output <- .ssm$cancel_maintenance_window_execution_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$cancel_maintenance_window_execution <- ssm_cancel_maintenance_window_execution

#' Generates an activation code and activation ID you can use to register
#' your on-premises server or virtual machine (VM) with Systems Manager
#'
#' @description
#' Generates an activation code and activation ID you can use to register
#' your on-premises server or virtual machine (VM) with Systems Manager.
#' Registering these machines with Systems Manager makes it possible to
#' manage them using Systems Manager capabilities. You use the activation
#' code and ID when installing SSM Agent on machines in your hybrid
#' environment. For more information about requirements for managing
#' on-premises instances and VMs using Systems Manager, see [Setting up AWS
#' Systems Manager for hybrid
#' environments](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html)
#' in the *AWS Systems Manager User Guide*.
#' 
#' On-premises servers or VMs that are registered with Systems Manager and
#' EC2 instances that you manage with Systems Manager are all called
#' *managed instances*.
#'
#' @usage
#' ssm_create_activation(Description, DefaultInstanceName, IamRole,
#'   RegistrationLimit, ExpirationDate, Tags)
#'
#' @param Description A user-defined description of the resource that you want to register
#' with Systems Manager.
#' 
#' Do not enter personally identifiable information in this field.
#' @param DefaultInstanceName The name of the registered, managed instance as it will appear in the
#' Systems Manager console or when you use the AWS command line tools to
#' list Systems Manager resources.
#' 
#' Do not enter personally identifiable information in this field.
#' @param IamRole &#91;required&#93; The Amazon Identity and Access Management (IAM) role that you want to
#' assign to the managed instance. This IAM role must provide AssumeRole
#' permissions for the Systems Manager service principal
#' `ssm.amazonaws.com`. For more information, see [Create an IAM service
#' role for a hybrid
#' environment](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-service-role.html)
#' in the *AWS Systems Manager User Guide*.
#' @param RegistrationLimit Specify the maximum number of managed instances you want to register.
#' The default value is 1 instance.
#' @param ExpirationDate The date by which this activation request should expire. The default
#' value is 24 hours.
#' @param Tags 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 name/value pairs:
#' 
#' -   `Key=OS,Value=Windows`
#' 
#' -   `Key=Environment,Value=Production`
#' 
#' 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.
#' 
#' You can't add tags to or delete tags from an existing activation. You
#' can tag your on-premises servers and VMs after they connect to Systems
#' Manager for the first time and are assigned a managed instance ID. This
#' means they are listed in the AWS Systems Manager console with an ID that
#' is prefixed with "mi-". For information about how to add tags to your
#' managed instances, see
#' [`add_tags_to_resource`][ssm_add_tags_to_resource]. For information
#' about how to remove tags from your managed instances, see
#' [`remove_tags_from_resource`][ssm_remove_tags_from_resource].
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ActivationId = "string",
#'   ActivationCode = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_activation(
#'   Description = "string",
#'   DefaultInstanceName = "string",
#'   IamRole = "string",
#'   RegistrationLimit = 123,
#'   ExpirationDate = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_activation
ssm_create_activation <- function(Description = NULL, DefaultInstanceName = NULL, IamRole, RegistrationLimit = NULL, ExpirationDate = NULL, Tags = NULL) {
  op <- new_operation(
    name = "CreateActivation",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_activation_input(Description = Description, DefaultInstanceName = DefaultInstanceName, IamRole = IamRole, RegistrationLimit = RegistrationLimit, ExpirationDate = ExpirationDate, Tags = Tags)
  output <- .ssm$create_activation_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_activation <- ssm_create_activation

#' A State Manager association defines the state that you want to maintain
#' on your instances
#'
#' @description
#' A State Manager association defines the state that you want to maintain
#' on your instances. For example, an association can specify that
#' anti-virus software must be installed and running on your instances, or
#' that certain ports must be closed. For static targets, the association
#' specifies a schedule for when the configuration is reapplied. For
#' dynamic targets, such as an AWS Resource Group or an AWS Autoscaling
#' Group, State Manager applies the configuration when new instances are
#' added to the group. The association also specifies actions to take when
#' applying the configuration. For example, an association for anti-virus
#' software might run once a day. If the software is not installed, then
#' State Manager installs it. If the software is installed, but the service
#' is not running, then the association might instruct State Manager to
#' start the service.
#'
#' @usage
#' ssm_create_association(Name, DocumentVersion, InstanceId, Parameters,
#'   Targets, ScheduleExpression, OutputLocation, AssociationName,
#'   AutomationTargetParameterName, MaxErrors, MaxConcurrency,
#'   ComplianceSeverity, SyncCompliance, ApplyOnlyAtCronInterval,
#'   TargetLocations)
#'
#' @param Name &#91;required&#93; The name of the SSM document that contains the configuration information
#' for the instance. You can specify Command or Automation documents.
#' 
#' You can specify AWS-predefined documents, documents you created, or a
#' document that is shared with you from another account.
#' 
#' For SSM documents that are shared with you from other AWS accounts, you
#' must specify the complete SSM document ARN, in the following format:
#' 
#' `arn:partition:ssm:region:account-id:document/document-name `
#' 
#' For example:
#' 
#' `arn:aws:ssm:us-east-2:12345678912:document/My-Shared-Document`
#' 
#' For AWS-predefined documents and SSM documents you created in your
#' account, you only need to specify the document name. For example,
#' `AWS-ApplyPatchBaseline` or `My-Document`.
#' @param DocumentVersion The document version you want to associate with the target(s). Can be a
#' specific version or the default version.
#' @param InstanceId The instance ID.
#' 
#' `InstanceId` has been deprecated. To specify an instance ID for an
#' association, use the `Targets` parameter. Requests that include the
#' parameter `InstanceID` with SSM documents that use schema version 2.0 or
#' later will fail. In addition, if you use the parameter `InstanceId`, you
#' cannot use the parameters `AssociationName`, `DocumentVersion`,
#' `MaxErrors`, `MaxConcurrency`, `OutputLocation`, or
#' `ScheduleExpression`. To use these parameters, you must use the
#' `Targets` parameter.
#' @param Parameters The parameters for the runtime configuration of the document.
#' @param Targets The targets for the association. You can target instances by using tags,
#' AWS Resource Groups, all instances in an AWS account, or individual
#' instance IDs. For more information about choosing targets for an
#' association, see [Using targets and rate controls with State Manager
#' associations](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-state-manager-targets-and-rate-controls.html)
#' in the *AWS Systems Manager User Guide*.
#' @param ScheduleExpression A cron expression when the association will be applied to the target(s).
#' @param OutputLocation An S3 bucket where you want to store the output details of the request.
#' @param AssociationName Specify a descriptive name for the association.
#' @param AutomationTargetParameterName Specify the target for the association. This target is required for
#' associations that use an Automation document and target resources by
#' using rate controls.
#' @param MaxErrors 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 instances and set MaxError
#' to 10%, then the system stops sending the request when the sixth error
#' is received.
#' 
#' Executions that are already running an association when MaxErrors 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 MaxConcurrency to 1 so that executions proceed
#' one at a time.
#' @param MaxConcurrency 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.
#' 
#' If a new instance starts and attempts to run an association while
#' Systems Manager is running MaxConcurrency associations, the association
#' is allowed to run. During the next association interval, the new
#' instance will process its association within the limit specified for
#' MaxConcurrency.
#' @param ComplianceSeverity The severity level to assign to the association.
#' @param SyncCompliance The mode for generating association compliance. You can specify `AUTO`
#' or `MANUAL`. In `AUTO` 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
#' `COMPLIANT`. If the association execution doesn't run successfully, the
#' association is `NON-COMPLIANT`.
#' 
#' In `MANUAL` mode, you must specify the `AssociationId` as a parameter
#' for the [`put_compliance_items`][ssm_put_compliance_items] API action.
#' In this case, compliance data is not managed by State Manager. It is
#' managed by your direct call to the
#' [`put_compliance_items`][ssm_put_compliance_items] API action.
#' 
#' By default, all associations use `AUTO` mode.
#' @param ApplyOnlyAtCronInterval 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 is not supported for
#' rate expressions.
#' @param TargetLocations A location is a combination of AWS Regions and AWS accounts where you
#' want to run the association. Use this action to create an association in
#' multiple Regions and multiple accounts.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AssociationDescription = list(
#'     Name = "string",
#'     InstanceId = "string",
#'     AssociationVersion = "string",
#'     Date = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     LastUpdateAssociationDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Status = list(
#'       Date = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Name = "Pending"|"Success"|"Failed",
#'       Message = "string",
#'       AdditionalInfo = "string"
#'     ),
#'     Overview = list(
#'       Status = "string",
#'       DetailedStatus = "string",
#'       AssociationStatusAggregatedCount = list(
#'         123
#'       )
#'     ),
#'     DocumentVersion = "string",
#'     AutomationTargetParameterName = "string",
#'     Parameters = list(
#'       list(
#'         "string"
#'       )
#'     ),
#'     AssociationId = "string",
#'     Targets = list(
#'       list(
#'         Key = "string",
#'         Values = list(
#'           "string"
#'         )
#'       )
#'     ),
#'     ScheduleExpression = "string",
#'     OutputLocation = list(
#'       S3Location = list(
#'         OutputS3Region = "string",
#'         OutputS3BucketName = "string",
#'         OutputS3KeyPrefix = "string"
#'       )
#'     ),
#'     LastExecutionDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     LastSuccessfulExecutionDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     AssociationName = "string",
#'     MaxErrors = "string",
#'     MaxConcurrency = "string",
#'     ComplianceSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"UNSPECIFIED",
#'     SyncCompliance = "AUTO"|"MANUAL",
#'     ApplyOnlyAtCronInterval = TRUE|FALSE,
#'     TargetLocations = list(
#'       list(
#'         Accounts = list(
#'           "string"
#'         ),
#'         Regions = list(
#'           "string"
#'         ),
#'         TargetLocationMaxConcurrency = "string",
#'         TargetLocationMaxErrors = "string",
#'         ExecutionRoleName = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_association(
#'   Name = "string",
#'   DocumentVersion = "string",
#'   InstanceId = "string",
#'   Parameters = list(
#'     list(
#'       "string"
#'     )
#'   ),
#'   Targets = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   ScheduleExpression = "string",
#'   OutputLocation = list(
#'     S3Location = list(
#'       OutputS3Region = "string",
#'       OutputS3BucketName = "string",
#'       OutputS3KeyPrefix = "string"
#'     )
#'   ),
#'   AssociationName = "string",
#'   AutomationTargetParameterName = "string",
#'   MaxErrors = "string",
#'   MaxConcurrency = "string",
#'   ComplianceSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"UNSPECIFIED",
#'   SyncCompliance = "AUTO"|"MANUAL",
#'   ApplyOnlyAtCronInterval = TRUE|FALSE,
#'   TargetLocations = list(
#'     list(
#'       Accounts = list(
#'         "string"
#'       ),
#'       Regions = list(
#'         "string"
#'       ),
#'       TargetLocationMaxConcurrency = "string",
#'       TargetLocationMaxErrors = "string",
#'       ExecutionRoleName = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_association
ssm_create_association <- function(Name, DocumentVersion = NULL, InstanceId = NULL, Parameters = NULL, Targets = NULL, ScheduleExpression = NULL, OutputLocation = NULL, AssociationName = NULL, AutomationTargetParameterName = NULL, MaxErrors = NULL, MaxConcurrency = NULL, ComplianceSeverity = NULL, SyncCompliance = NULL, ApplyOnlyAtCronInterval = NULL, TargetLocations = NULL) {
  op <- new_operation(
    name = "CreateAssociation",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_association_input(Name = Name, DocumentVersion = DocumentVersion, InstanceId = InstanceId, Parameters = Parameters, Targets = Targets, ScheduleExpression = ScheduleExpression, OutputLocation = OutputLocation, AssociationName = AssociationName, AutomationTargetParameterName = AutomationTargetParameterName, MaxErrors = MaxErrors, MaxConcurrency = MaxConcurrency, ComplianceSeverity = ComplianceSeverity, SyncCompliance = SyncCompliance, ApplyOnlyAtCronInterval = ApplyOnlyAtCronInterval, TargetLocations = TargetLocations)
  output <- .ssm$create_association_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_association <- ssm_create_association

#' Associates the specified Systems Manager document with the specified
#' instances or targets
#'
#' @description
#' Associates the specified Systems Manager document with the specified
#' instances or targets.
#' 
#' When you associate a document with one or more instances using instance
#' IDs or tags, SSM Agent running on the instance processes the document
#' and configures the instance as specified.
#' 
#' If you associate a document with an instance that already has an
#' associated document, the system returns the AssociationAlreadyExists
#' exception.
#'
#' @usage
#' ssm_create_association_batch(Entries)
#'
#' @param Entries &#91;required&#93; One or more associations.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Successful = list(
#'     list(
#'       Name = "string",
#'       InstanceId = "string",
#'       AssociationVersion = "string",
#'       Date = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastUpdateAssociationDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Status = list(
#'         Date = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         Name = "Pending"|"Success"|"Failed",
#'         Message = "string",
#'         AdditionalInfo = "string"
#'       ),
#'       Overview = list(
#'         Status = "string",
#'         DetailedStatus = "string",
#'         AssociationStatusAggregatedCount = list(
#'           123
#'         )
#'       ),
#'       DocumentVersion = "string",
#'       AutomationTargetParameterName = "string",
#'       Parameters = list(
#'         list(
#'           "string"
#'         )
#'       ),
#'       AssociationId = "string",
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       ScheduleExpression = "string",
#'       OutputLocation = list(
#'         S3Location = list(
#'           OutputS3Region = "string",
#'           OutputS3BucketName = "string",
#'           OutputS3KeyPrefix = "string"
#'         )
#'       ),
#'       LastExecutionDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastSuccessfulExecutionDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       AssociationName = "string",
#'       MaxErrors = "string",
#'       MaxConcurrency = "string",
#'       ComplianceSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"UNSPECIFIED",
#'       SyncCompliance = "AUTO"|"MANUAL",
#'       ApplyOnlyAtCronInterval = TRUE|FALSE,
#'       TargetLocations = list(
#'         list(
#'           Accounts = list(
#'             "string"
#'           ),
#'           Regions = list(
#'             "string"
#'           ),
#'           TargetLocationMaxConcurrency = "string",
#'           TargetLocationMaxErrors = "string",
#'           ExecutionRoleName = "string"
#'         )
#'       )
#'     )
#'   ),
#'   Failed = list(
#'     list(
#'       Entry = list(
#'         Name = "string",
#'         InstanceId = "string",
#'         Parameters = list(
#'           list(
#'             "string"
#'           )
#'         ),
#'         AutomationTargetParameterName = "string",
#'         DocumentVersion = "string",
#'         Targets = list(
#'           list(
#'             Key = "string",
#'             Values = list(
#'               "string"
#'             )
#'           )
#'         ),
#'         ScheduleExpression = "string",
#'         OutputLocation = list(
#'           S3Location = list(
#'             OutputS3Region = "string",
#'             OutputS3BucketName = "string",
#'             OutputS3KeyPrefix = "string"
#'           )
#'         ),
#'         AssociationName = "string",
#'         MaxErrors = "string",
#'         MaxConcurrency = "string",
#'         ComplianceSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"UNSPECIFIED",
#'         SyncCompliance = "AUTO"|"MANUAL",
#'         ApplyOnlyAtCronInterval = TRUE|FALSE,
#'         TargetLocations = list(
#'           list(
#'             Accounts = list(
#'               "string"
#'             ),
#'             Regions = list(
#'               "string"
#'             ),
#'             TargetLocationMaxConcurrency = "string",
#'             TargetLocationMaxErrors = "string",
#'             ExecutionRoleName = "string"
#'           )
#'         )
#'       ),
#'       Message = "string",
#'       Fault = "Client"|"Server"|"Unknown"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_association_batch(
#'   Entries = list(
#'     list(
#'       Name = "string",
#'       InstanceId = "string",
#'       Parameters = list(
#'         list(
#'           "string"
#'         )
#'       ),
#'       AutomationTargetParameterName = "string",
#'       DocumentVersion = "string",
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       ScheduleExpression = "string",
#'       OutputLocation = list(
#'         S3Location = list(
#'           OutputS3Region = "string",
#'           OutputS3BucketName = "string",
#'           OutputS3KeyPrefix = "string"
#'         )
#'       ),
#'       AssociationName = "string",
#'       MaxErrors = "string",
#'       MaxConcurrency = "string",
#'       ComplianceSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"UNSPECIFIED",
#'       SyncCompliance = "AUTO"|"MANUAL",
#'       ApplyOnlyAtCronInterval = TRUE|FALSE,
#'       TargetLocations = list(
#'         list(
#'           Accounts = list(
#'             "string"
#'           ),
#'           Regions = list(
#'             "string"
#'           ),
#'           TargetLocationMaxConcurrency = "string",
#'           TargetLocationMaxErrors = "string",
#'           ExecutionRoleName = "string"
#'         )
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_association_batch
ssm_create_association_batch <- function(Entries) {
  op <- new_operation(
    name = "CreateAssociationBatch",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_association_batch_input(Entries = Entries)
  output <- .ssm$create_association_batch_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_association_batch <- ssm_create_association_batch

#' Creates a Systems Manager (SSM) document
#'
#' @description
#' Creates a Systems Manager (SSM) document. An SSM document defines the
#' actions that Systems Manager performs on your managed instances. For
#' more information about SSM documents, including information about
#' supported schemas, features, and syntax, see [AWS Systems Manager
#' Documents](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)
#' in the *AWS Systems Manager User Guide*.
#'
#' @usage
#' ssm_create_document(Content, Requires, Attachments, Name, VersionName,
#'   DocumentType, DocumentFormat, TargetType, Tags)
#'
#' @param Content &#91;required&#93; The content for the new SSM document in JSON or YAML format. We
#' recommend storing the contents for your new document in an external JSON
#' or YAML file and referencing the file in a command.
#' 
#' For examples, see the following topics in the *AWS Systems Manager User
#' Guide*.
#' 
#' -   [Create an SSM document (AWS
#'     API)](https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-api.html)
#' 
#' -   [Create an SSM document
#'     (AWS CLI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-cli.html)
#' 
#' -   [Create an SSM document
#'     (API)](https://docs.aws.amazon.com/systems-manager/latest/userguide/create-ssm-document-api.html)
#' @param Requires A list of SSM documents required by a document. This parameter is used
#' exclusively by AWS 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
#' `ApplicationConfiguration` document requires an
#' `ApplicationConfigurationSchema` document for validation purposes. For
#' more information, see [AWS
#' AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html)
#' in the *AWS Systems Manager User Guide*.
#' @param Attachments A list of key and value pairs that describe attachments to a version of
#' a document.
#' @param Name &#91;required&#93; A name for the Systems Manager document.
#' 
#' You can't use the following strings as document name prefixes. These are
#' reserved by AWS for use as document name prefixes:
#' 
#' -   `aws-`
#' 
#' -   `amazon`
#' 
#' -   `amzn`
#' @param VersionName An optional field specifying the version of the artifact you are
#' creating with the document. For example, "Release 12, Update 6". This
#' value is unique across all versions of a document, and cannot be
#' changed.
#' @param DocumentType The type of document to create.
#' @param DocumentFormat Specify the document format for the request. The document format can be
#' JSON, YAML, or TEXT. JSON is the default format.
#' @param TargetType 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: /AWS::EC2::Instance. 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 [AWS resource and property types
#' reference](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html)
#' in the *AWS CloudFormation User Guide*.
#' @param Tags 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 name/value pairs:
#' 
#' -   `Key=OS,Value=Windows`
#' 
#' -   `Key=Environment,Value=Production`
#' 
#' To add tags to an existing SSM document, use the
#' [`add_tags_to_resource`][ssm_add_tags_to_resource] action.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DocumentDescription = list(
#'     Sha1 = "string",
#'     Hash = "string",
#'     HashType = "Sha256"|"Sha1",
#'     Name = "string",
#'     VersionName = "string",
#'     Owner = "string",
#'     CreatedDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Status = "Creating"|"Active"|"Updating"|"Deleting"|"Failed",
#'     StatusInformation = "string",
#'     DocumentVersion = "string",
#'     Description = "string",
#'     Parameters = list(
#'       list(
#'         Name = "string",
#'         Type = "String"|"StringList",
#'         Description = "string",
#'         DefaultValue = "string"
#'       )
#'     ),
#'     PlatformTypes = list(
#'       "Windows"|"Linux"
#'     ),
#'     DocumentType = "Command"|"Policy"|"Automation"|"Session"|"Package"|"ApplicationConfiguration"|"ApplicationConfigurationSchema"|"DeploymentStrategy"|"ChangeCalendar"|"Automation.ChangeTemplate",
#'     SchemaVersion = "string",
#'     LatestVersion = "string",
#'     DefaultVersion = "string",
#'     DocumentFormat = "YAML"|"JSON"|"TEXT",
#'     TargetType = "string",
#'     Tags = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     ),
#'     AttachmentsInformation = list(
#'       list(
#'         Name = "string"
#'       )
#'     ),
#'     Requires = list(
#'       list(
#'         Name = "string",
#'         Version = "string"
#'       )
#'     ),
#'     Author = "string",
#'     ReviewInformation = list(
#'       list(
#'         ReviewedTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         Status = "APPROVED"|"NOT_REVIEWED"|"PENDING"|"REJECTED",
#'         Reviewer = "string"
#'       )
#'     ),
#'     ApprovedVersion = "string",
#'     PendingReviewVersion = "string",
#'     ReviewStatus = "APPROVED"|"NOT_REVIEWED"|"PENDING"|"REJECTED"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_document(
#'   Content = "string",
#'   Requires = list(
#'     list(
#'       Name = "string",
#'       Version = "string"
#'     )
#'   ),
#'   Attachments = list(
#'     list(
#'       Key = "SourceUrl"|"S3FileUrl"|"AttachmentReference",
#'       Values = list(
#'         "string"
#'       ),
#'       Name = "string"
#'     )
#'   ),
#'   Name = "string",
#'   VersionName = "string",
#'   DocumentType = "Command"|"Policy"|"Automation"|"Session"|"Package"|"ApplicationConfiguration"|"ApplicationConfigurationSchema"|"DeploymentStrategy"|"ChangeCalendar"|"Automation.ChangeTemplate",
#'   DocumentFormat = "YAML"|"JSON"|"TEXT",
#'   TargetType = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_document
ssm_create_document <- function(Content, Requires = NULL, Attachments = NULL, Name, VersionName = NULL, DocumentType = NULL, DocumentFormat = NULL, TargetType = NULL, Tags = NULL) {
  op <- new_operation(
    name = "CreateDocument",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_document_input(Content = Content, Requires = Requires, Attachments = Attachments, Name = Name, VersionName = VersionName, DocumentType = DocumentType, DocumentFormat = DocumentFormat, TargetType = TargetType, Tags = Tags)
  output <- .ssm$create_document_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_document <- ssm_create_document

#' Creates a new maintenance window
#'
#' @description
#' Creates a new maintenance window.
#' 
#' The value you specify for `Duration` determines the specific end time
#' for the maintenance window based on the time it begins. No maintenance
#' window tasks are permitted to start after the resulting endtime minus
#' the number of hours you specify for `Cutoff`. For example, if the
#' maintenance window starts at 3 PM, the duration is three hours, and the
#' value you specify for `Cutoff` is one hour, no maintenance window tasks
#' can start after 5 PM.
#'
#' @usage
#' ssm_create_maintenance_window(Name, Description, StartDate, EndDate,
#'   Schedule, ScheduleTimezone, ScheduleOffset, Duration, Cutoff,
#'   AllowUnassociatedTargets, ClientToken, Tags)
#'
#' @param Name &#91;required&#93; The name of the maintenance window.
#' @param Description An optional description for the maintenance window. We recommend
#' specifying a description to help you organize your maintenance windows.
#' @param StartDate The date and time, in ISO-8601 Extended format, for when you want the
#' maintenance window to become active. StartDate allows you to delay
#' activation of the maintenance window until the specified future date.
#' @param EndDate The date and time, in ISO-8601 Extended format, for when you want the
#' maintenance window to become inactive. EndDate allows you to set a date
#' and time in the future when the maintenance window will no longer run.
#' @param Schedule &#91;required&#93; The schedule of the maintenance window in the form of a cron or rate
#' expression.
#' @param ScheduleTimezone 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 [Time Zone Database](https://www.iana.org/time-zones) on the
#' IANA website.
#' @param ScheduleOffset The number of days to wait after the date and time specified by a CRON
#' expression before running the maintenance window.
#' 
#' For example, the following cron expression schedules a maintenance
#' window to run on the third Tuesday of every month at 11:30 PM.
#' 
#' `cron(30 23 ? * TUE#3 *)`
#' 
#' If the schedule offset is `2`, the maintenance window won't run until
#' two days later.
#' @param Duration &#91;required&#93; The duration of the maintenance window in hours.
#' @param Cutoff &#91;required&#93; The number of hours before the end of the maintenance window that
#' Systems Manager stops scheduling new tasks for execution.
#' @param AllowUnassociatedTargets &#91;required&#93; Enables a maintenance window task to run on managed instances, even if
#' you have not registered those instances as targets. If enabled, then you
#' must specify the unregistered instances (by instance ID) when you
#' register a task with the maintenance window.
#' 
#' If you don't enable this option, then you must specify
#' previously-registered targets when you register a task with the
#' maintenance window.
#' @param ClientToken User-provided idempotency token.
#' @param Tags 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 name/value pairs:
#' 
#' -   `Key=TaskType,Value=AgentUpdate`
#' 
#' -   `Key=OS,Value=Windows`
#' 
#' -   `Key=Environment,Value=Production`
#' 
#' To add tags to an existing maintenance window, use the
#' [`add_tags_to_resource`][ssm_add_tags_to_resource] action.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_maintenance_window(
#'   Name = "string",
#'   Description = "string",
#'   StartDate = "string",
#'   EndDate = "string",
#'   Schedule = "string",
#'   ScheduleTimezone = "string",
#'   ScheduleOffset = 123,
#'   Duration = 123,
#'   Cutoff = 123,
#'   AllowUnassociatedTargets = TRUE|FALSE,
#'   ClientToken = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_maintenance_window
ssm_create_maintenance_window <- function(Name, Description = NULL, StartDate = NULL, EndDate = NULL, Schedule, ScheduleTimezone = NULL, ScheduleOffset = NULL, Duration, Cutoff, AllowUnassociatedTargets, ClientToken = NULL, Tags = NULL) {
  op <- new_operation(
    name = "CreateMaintenanceWindow",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_maintenance_window_input(Name = Name, Description = Description, StartDate = StartDate, EndDate = EndDate, Schedule = Schedule, ScheduleTimezone = ScheduleTimezone, ScheduleOffset = ScheduleOffset, Duration = Duration, Cutoff = Cutoff, AllowUnassociatedTargets = AllowUnassociatedTargets, ClientToken = ClientToken, Tags = Tags)
  output <- .ssm$create_maintenance_window_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_maintenance_window <- ssm_create_maintenance_window

#' Creates a new OpsItem
#'
#' @description
#' Creates a new OpsItem. You must have permission in AWS Identity and
#' Access Management (IAM) to create a new OpsItem. For more information,
#' see [Getting started with
#' OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html)
#' in the *AWS Systems Manager User Guide*.
#' 
#' Operations engineers and IT professionals use OpsCenter to view,
#' investigate, and remediate operational issues impacting the performance
#' and health of their AWS resources. For more information, see [AWS
#' Systems Manager
#' OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)
#' in the *AWS Systems Manager User Guide*.
#'
#' @usage
#' ssm_create_ops_item(Description, OpsItemType, OperationalData,
#'   Notifications, Priority, RelatedOpsItems, Source, Title, Tags, Category,
#'   Severity, ActualStartTime, ActualEndTime, PlannedStartTime,
#'   PlannedEndTime)
#'
#' @param Description &#91;required&#93; Information about the OpsItem.
#' @param OpsItemType The type of OpsItem to create. Currently, the only valid values are
#' `/aws/changerequest` and `/aws/issue`.
#' @param OperationalData 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.
#' 
#' Operational data keys *can't* begin with the following: amazon, aws,
#' amzn, ssm, /amazon, /aws, /amzn, /ssm.
#' 
#' 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
#' [`describe_ops_items`][ssm_describe_ops_items] API action) can view and
#' search on the specified data. Operational data that is not searchable is
#' only viewable by users who have access to the OpsItem (as provided by
#' the [`get_ops_item`][ssm_get_ops_item] API action).
#' 
#' Use the `/aws/resources` key in OperationalData to specify a related
#' resource in the request. Use the `/aws/automations` key in
#' OperationalData to associate an Automation runbook with the OpsItem. To
#' view AWS CLI example commands that use these keys, see [Creating
#' OpsItems
#' manually](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-creating-OpsItems.html#OpsCenter-manually-create-OpsItems)
#' in the *AWS Systems Manager User Guide*.
#' @param Notifications The Amazon Resource Name (ARN) of an SNS topic where notifications are
#' sent when this OpsItem is edited or changed.
#' @param Priority The importance of this OpsItem in relation to other OpsItems in the
#' system.
#' @param RelatedOpsItems 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.
#' @param Source &#91;required&#93; The origin of the OpsItem, such as Amazon EC2 or Systems Manager.
#' 
#' The source name can't contain the following strings: aws, amazon, and
#' amzn.
#' @param Title &#91;required&#93; A short heading that describes the nature of the OpsItem and the
#' impacted resource.
#' @param Tags Optional metadata that you assign to a resource. You can restrict access
#' to OpsItems by using an inline IAM policy that specifies tags. For more
#' information, see [Getting started with
#' OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html#OpsCenter-getting-started-user-permissions)
#' in the *AWS Systems Manager User Guide*.
#' 
#' Tags use a key-value pair. For example:
#' 
#' `Key=Department,Value=Finance`
#' 
#' To add tags to an existing OpsItem, use the
#' [`add_tags_to_resource`][ssm_add_tags_to_resource] action.
#' @param Category Specify a category to assign to an OpsItem.
#' @param Severity Specify a severity to assign to an OpsItem.
#' @param ActualStartTime The time a runbook workflow started. Currently reported only for the
#' OpsItem type `/aws/changerequest`.
#' @param ActualEndTime The time a runbook workflow ended. Currently reported only for the
#' OpsItem type `/aws/changerequest`.
#' @param PlannedStartTime The time specified in a change request for a runbook workflow to start.
#' Currently supported only for the OpsItem type `/aws/changerequest`.
#' @param PlannedEndTime The time specified in a change request for a runbook workflow to end.
#' Currently supported only for the OpsItem type `/aws/changerequest`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   OpsItemId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_ops_item(
#'   Description = "string",
#'   OpsItemType = "string",
#'   OperationalData = list(
#'     list(
#'       Value = "string",
#'       Type = "SearchableString"|"String"
#'     )
#'   ),
#'   Notifications = list(
#'     list(
#'       Arn = "string"
#'     )
#'   ),
#'   Priority = 123,
#'   RelatedOpsItems = list(
#'     list(
#'       OpsItemId = "string"
#'     )
#'   ),
#'   Source = "string",
#'   Title = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   ),
#'   Category = "string",
#'   Severity = "string",
#'   ActualStartTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   ActualEndTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   PlannedStartTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   PlannedEndTime = as.POSIXct(
#'     "2015-01-01"
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_ops_item
ssm_create_ops_item <- function(Description, OpsItemType = NULL, OperationalData = NULL, Notifications = NULL, Priority = NULL, RelatedOpsItems = NULL, Source, Title, Tags = NULL, Category = NULL, Severity = NULL, ActualStartTime = NULL, ActualEndTime = NULL, PlannedStartTime = NULL, PlannedEndTime = NULL) {
  op <- new_operation(
    name = "CreateOpsItem",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_ops_item_input(Description = Description, OpsItemType = OpsItemType, OperationalData = OperationalData, Notifications = Notifications, Priority = Priority, RelatedOpsItems = RelatedOpsItems, Source = Source, Title = Title, Tags = Tags, Category = Category, Severity = Severity, ActualStartTime = ActualStartTime, ActualEndTime = ActualEndTime, PlannedStartTime = PlannedStartTime, PlannedEndTime = PlannedEndTime)
  output <- .ssm$create_ops_item_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_ops_item <- ssm_create_ops_item

#' If you create a new application in Application Manager, Systems Manager
#' calls this API action to specify information about the new application,
#' including the application type
#'
#' @description
#' If you create a new application in Application Manager, Systems Manager
#' calls this API action to specify information about the new application,
#' including the application type.
#'
#' @usage
#' ssm_create_ops_metadata(ResourceId, Metadata)
#'
#' @param ResourceId &#91;required&#93; A resource ID for a new Application Manager application.
#' @param Metadata Metadata for a new Application Manager application.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   OpsMetadataArn = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_ops_metadata(
#'   ResourceId = "string",
#'   Metadata = list(
#'     list(
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_ops_metadata
ssm_create_ops_metadata <- function(ResourceId, Metadata = NULL) {
  op <- new_operation(
    name = "CreateOpsMetadata",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_ops_metadata_input(ResourceId = ResourceId, Metadata = Metadata)
  output <- .ssm$create_ops_metadata_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_ops_metadata <- ssm_create_ops_metadata

#' Creates a patch baseline
#'
#' @description
#' Creates a patch baseline.
#' 
#' For information about valid key and value pairs in `PatchFilters` for
#' each supported operating system type, see
#' [PatchFilter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PatchFilter.html).
#'
#' @usage
#' ssm_create_patch_baseline(OperatingSystem, Name, GlobalFilters,
#'   ApprovalRules, ApprovedPatches, ApprovedPatchesComplianceLevel,
#'   ApprovedPatchesEnableNonSecurity, RejectedPatches,
#'   RejectedPatchesAction, Description, Sources, ClientToken, Tags)
#'
#' @param OperatingSystem Defines the operating system the patch baseline applies to. The Default
#' value is WINDOWS.
#' @param Name &#91;required&#93; The name of the patch baseline.
#' @param GlobalFilters A set of global filters used to include patches in the baseline.
#' @param ApprovalRules A set of rules used to include patches in the baseline.
#' @param ApprovedPatches A list of explicitly approved patches for the baseline.
#' 
#' For information about accepted formats for lists of approved patches and
#' rejected patches, see [About package name formats for approved and
#' rejected patch
#' lists](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html)
#' in the *AWS Systems Manager User Guide*.
#' @param ApprovedPatchesComplianceLevel Defines the compliance level for approved patches. This means that if an
#' approved patch is reported as missing, this is the severity of the
#' compliance violation. The default value is UNSPECIFIED.
#' @param ApprovedPatchesEnableNonSecurity Indicates whether the list of approved patches includes non-security
#' updates that should be applied to the instances. The default value is
#' 'false'. Applies to Linux instances only.
#' @param RejectedPatches A list of explicitly rejected patches for the baseline.
#' 
#' For information about accepted formats for lists of approved patches and
#' rejected patches, see [About package name formats for approved and
#' rejected patch
#' lists](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager-approved-rejected-package-name-formats.html)
#' in the *AWS Systems Manager User Guide*.
#' @param RejectedPatchesAction The action for Patch Manager to take on patches included in the
#' RejectedPackages list.
#' 
#' -   **ALLOW_AS_DEPENDENCY**: 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 *InstalledOther*. This is the default action if no
#'     option is specified.
#' 
#' -   **BLOCK**: Packages in the RejectedPatches list, and packages that
#'     include them as dependencies, are not installed under any
#'     circumstances. If a package was installed before it was added to the
#'     Rejected patches list, it is considered non-compliant with the patch
#'     baseline, and its status is reported as *InstalledRejected*.
#' @param Description A description of the patch baseline.
#' @param Sources Information about the patches to use to update the instances, including
#' target operating systems and source repositories. Applies to Linux
#' instances only.
#' @param ClientToken User-provided idempotency token.
#' @param Tags 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 name/value pairs:
#' 
#' -   `Key=PatchSeverity,Value=Critical`
#' 
#' -   `Key=OS,Value=Windows`
#' 
#' To add tags to an existing patch baseline, use the
#' [`add_tags_to_resource`][ssm_add_tags_to_resource] action.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   BaselineId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$create_patch_baseline(
#'   OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS",
#'   Name = "string",
#'   GlobalFilters = list(
#'     PatchFilters = list(
#'       list(
#'         Key = "ARCH"|"ADVISORY_ID"|"BUGZILLA_ID"|"PATCH_SET"|"PRODUCT"|"PRODUCT_FAMILY"|"CLASSIFICATION"|"CVE_ID"|"EPOCH"|"MSRC_SEVERITY"|"NAME"|"PATCH_ID"|"SECTION"|"PRIORITY"|"REPOSITORY"|"RELEASE"|"SEVERITY"|"SECURITY"|"VERSION",
#'         Values = list(
#'           "string"
#'         )
#'       )
#'     )
#'   ),
#'   ApprovalRules = list(
#'     PatchRules = list(
#'       list(
#'         PatchFilterGroup = list(
#'           PatchFilters = list(
#'             list(
#'               Key = "ARCH"|"ADVISORY_ID"|"BUGZILLA_ID"|"PATCH_SET"|"PRODUCT"|"PRODUCT_FAMILY"|"CLASSIFICATION"|"CVE_ID"|"EPOCH"|"MSRC_SEVERITY"|"NAME"|"PATCH_ID"|"SECTION"|"PRIORITY"|"REPOSITORY"|"RELEASE"|"SEVERITY"|"SECURITY"|"VERSION",
#'               Values = list(
#'                 "string"
#'               )
#'             )
#'           )
#'         ),
#'         ComplianceLevel = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED",
#'         ApproveAfterDays = 123,
#'         ApproveUntilDate = "string",
#'         EnableNonSecurity = TRUE|FALSE
#'       )
#'     )
#'   ),
#'   ApprovedPatches = list(
#'     "string"
#'   ),
#'   ApprovedPatchesComplianceLevel = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED",
#'   ApprovedPatchesEnableNonSecurity = TRUE|FALSE,
#'   RejectedPatches = list(
#'     "string"
#'   ),
#'   RejectedPatchesAction = "ALLOW_AS_DEPENDENCY"|"BLOCK",
#'   Description = "string",
#'   Sources = list(
#'     list(
#'       Name = "string",
#'       Products = list(
#'         "string"
#'       ),
#'       Configuration = "string"
#'     )
#'   ),
#'   ClientToken = "string",
#'   Tags = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_patch_baseline
ssm_create_patch_baseline <- function(OperatingSystem = NULL, Name, GlobalFilters = NULL, ApprovalRules = NULL, ApprovedPatches = NULL, ApprovedPatchesComplianceLevel = NULL, ApprovedPatchesEnableNonSecurity = NULL, RejectedPatches = NULL, RejectedPatchesAction = NULL, Description = NULL, Sources = NULL, ClientToken = NULL, Tags = NULL) {
  op <- new_operation(
    name = "CreatePatchBaseline",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_patch_baseline_input(OperatingSystem = OperatingSystem, Name = Name, GlobalFilters = GlobalFilters, ApprovalRules = ApprovalRules, ApprovedPatches = ApprovedPatches, ApprovedPatchesComplianceLevel = ApprovedPatchesComplianceLevel, ApprovedPatchesEnableNonSecurity = ApprovedPatchesEnableNonSecurity, RejectedPatches = RejectedPatches, RejectedPatchesAction = RejectedPatchesAction, Description = Description, Sources = Sources, ClientToken = ClientToken, Tags = Tags)
  output <- .ssm$create_patch_baseline_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_patch_baseline <- ssm_create_patch_baseline

#' A resource data sync helps you view data from multiple sources in a
#' single location
#'
#' @description
#' A resource data sync helps you view data from multiple sources in a
#' single location. Systems Manager offers two types of resource data sync:
#' `SyncToDestination` and `SyncFromSource`.
#' 
#' You can configure Systems Manager Inventory to use the
#' `SyncToDestination` type to synchronize Inventory data from multiple AWS
#' Regions to a single S3 bucket. For more information, see [Configuring
#' Resource Data Sync for
#' Inventory](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-datasync.html)
#' in the *AWS Systems Manager User Guide*.
#' 
#' You can configure Systems Manager Explorer to use the `SyncFromSource`
#' type to synchronize operational work items (OpsItems) and operational
#' data (OpsData) from multiple AWS Regions to a single S3 bucket. This
#' type can synchronize OpsItems and OpsData from multiple AWS accounts and
#' Regions or `EntireOrganization` by using AWS Organizations. For more
#' information, see [Setting up Systems Manager Explorer to display data
#' from multiple accounts and
#' Regions](https://docs.aws.amazon.com/systems-manager/latest/userguide/Explorer-resource-data-sync.html)
#' in the *AWS Systems Manager User Guide*.
#' 
#' A resource data sync is an asynchronous operation that returns
#' immediately. After a successful initial sync is completed, the system
#' continuously syncs data. To check the status of a sync, use the
#' [`list_resource_data_sync`][ssm_list_resource_data_sync].
#' 
#' By default, data is not encrypted in Amazon S3. We strongly recommend
#' that you enable encryption in Amazon S3 to ensure secure data storage.
#' We also recommend that you secure access to the Amazon S3 bucket by
#' creating a restrictive bucket policy.
#'
#' @usage
#' ssm_create_resource_data_sync(SyncName, S3Destination, SyncType,
#'   SyncSource)
#'
#' @param SyncName &#91;required&#93; A name for the configuration.
#' @param S3Destination Amazon S3 configuration details for the sync. This parameter is required
#' if the `SyncType` value is SyncToDestination.
#' @param SyncType Specify `SyncToDestination` to create a resource data sync that
#' synchronizes data to an S3 bucket for Inventory. If you specify
#' `SyncToDestination`, you must provide a value for `S3Destination`.
#' Specify `SyncFromSource` to synchronize data from a single account and
#' multiple Regions, or multiple AWS accounts and Regions, as listed in AWS
#' Organizations for Explorer. If you specify `SyncFromSource`, you must
#' provide a value for `SyncSource`. The default value is
#' `SyncToDestination`.
#' @param SyncSource Specify information about the data sources to synchronize. This
#' parameter is required if the `SyncType` value is SyncFromSource.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$create_resource_data_sync(
#'   SyncName = "string",
#'   S3Destination = list(
#'     BucketName = "string",
#'     Prefix = "string",
#'     SyncFormat = "JsonSerDe",
#'     Region = "string",
#'     AWSKMSKeyARN = "string",
#'     DestinationDataSharing = list(
#'       DestinationDataSharingType = "string"
#'     )
#'   ),
#'   SyncType = "string",
#'   SyncSource = list(
#'     SourceType = "string",
#'     AwsOrganizationsSource = list(
#'       OrganizationSourceType = "string",
#'       OrganizationalUnits = list(
#'         list(
#'           OrganizationalUnitId = "string"
#'         )
#'       )
#'     ),
#'     SourceRegions = list(
#'       "string"
#'     ),
#'     IncludeFutureRegions = TRUE|FALSE
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_create_resource_data_sync
ssm_create_resource_data_sync <- function(SyncName, S3Destination = NULL, SyncType = NULL, SyncSource = NULL) {
  op <- new_operation(
    name = "CreateResourceDataSync",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$create_resource_data_sync_input(SyncName = SyncName, S3Destination = S3Destination, SyncType = SyncType, SyncSource = SyncSource)
  output <- .ssm$create_resource_data_sync_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$create_resource_data_sync <- ssm_create_resource_data_sync

#' Deletes an activation
#'
#' @description
#' Deletes an activation. You are not required to delete an activation. If
#' you delete an activation, you can no longer use it to register
#' additional managed instances. Deleting an activation does not
#' de-register managed instances. You must manually de-register managed
#' instances.
#'
#' @usage
#' ssm_delete_activation(ActivationId)
#'
#' @param ActivationId &#91;required&#93; The ID of the activation that you want to delete.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_activation(
#'   ActivationId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_activation
ssm_delete_activation <- function(ActivationId) {
  op <- new_operation(
    name = "DeleteActivation",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_activation_input(ActivationId = ActivationId)
  output <- .ssm$delete_activation_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_activation <- ssm_delete_activation

#' Disassociates the specified Systems Manager document from the specified
#' instance
#'
#' @description
#' Disassociates the specified Systems Manager document from the specified
#' instance.
#' 
#' When you disassociate a document from an instance, it does not change
#' the configuration of the instance. To change the configuration state of
#' an instance after you disassociate a document, you must create a new
#' document with the desired configuration and associate it with the
#' instance.
#'
#' @usage
#' ssm_delete_association(Name, InstanceId, AssociationId)
#'
#' @param Name The name of the Systems Manager document.
#' @param InstanceId The ID of the instance.
#' @param AssociationId The association ID that you want to delete.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_association(
#'   Name = "string",
#'   InstanceId = "string",
#'   AssociationId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_association
ssm_delete_association <- function(Name = NULL, InstanceId = NULL, AssociationId = NULL) {
  op <- new_operation(
    name = "DeleteAssociation",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_association_input(Name = Name, InstanceId = InstanceId, AssociationId = AssociationId)
  output <- .ssm$delete_association_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_association <- ssm_delete_association

#' Deletes the Systems Manager document and all instance associations to
#' the document
#'
#' @description
#' Deletes the Systems Manager document and all instance associations to
#' the document.
#' 
#' Before you delete the document, we recommend that you use
#' [`delete_association`][ssm_delete_association] to disassociate all
#' instances that are associated with the document.
#'
#' @usage
#' ssm_delete_document(Name, DocumentVersion, VersionName, Force)
#'
#' @param Name &#91;required&#93; The name of the document.
#' @param DocumentVersion The version of the document that you want to delete. If not provided,
#' all versions of the document are deleted.
#' @param VersionName The version name of the document that you want to delete. If not
#' provided, all versions of the document are deleted.
#' @param Force Some SSM document types require that you specify a `Force` flag before
#' you can delete the document. For example, you must specify a `Force`
#' flag to delete a document of type `ApplicationConfigurationSchema`. You
#' can restrict access to the `Force` flag in an AWS Identity and Access
#' Management (IAM) policy.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_document(
#'   Name = "string",
#'   DocumentVersion = "string",
#'   VersionName = "string",
#'   Force = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_document
ssm_delete_document <- function(Name, DocumentVersion = NULL, VersionName = NULL, Force = NULL) {
  op <- new_operation(
    name = "DeleteDocument",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_document_input(Name = Name, DocumentVersion = DocumentVersion, VersionName = VersionName, Force = Force)
  output <- .ssm$delete_document_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_document <- ssm_delete_document

#' Delete a custom inventory type or the data associated with a custom
#' Inventory type
#'
#' @description
#' Delete a custom inventory type or the data associated with a custom
#' Inventory type. Deleting a custom inventory type is also referred to as
#' deleting a custom inventory schema.
#'
#' @usage
#' ssm_delete_inventory(TypeName, SchemaDeleteOption, DryRun, ClientToken)
#'
#' @param TypeName &#91;required&#93; The name of the custom inventory type for which you want to delete
#' either all previously collected data or the inventory type itself.
#' @param SchemaDeleteOption Use the `SchemaDeleteOption` 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:
#' 
#' 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
#' [`put_inventory`][ssm_put_inventory] action for a version greater than
#' the disabled version.
#' 
#' DeleteSchema: This option deletes the specified custom type from the
#' Inventory service. You can recreate the schema later, if you want.
#' @param DryRun 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 `DryRun` option.
#' @param ClientToken User-provided idempotency token.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DeletionId = "string",
#'   TypeName = "string",
#'   DeletionSummary = list(
#'     TotalCount = 123,
#'     RemainingCount = 123,
#'     SummaryItems = list(
#'       list(
#'         Version = "string",
#'         Count = 123,
#'         RemainingCount = 123
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_inventory(
#'   TypeName = "string",
#'   SchemaDeleteOption = "DisableSchema"|"DeleteSchema",
#'   DryRun = TRUE|FALSE,
#'   ClientToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_inventory
ssm_delete_inventory <- function(TypeName, SchemaDeleteOption = NULL, DryRun = NULL, ClientToken = NULL) {
  op <- new_operation(
    name = "DeleteInventory",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_inventory_input(TypeName = TypeName, SchemaDeleteOption = SchemaDeleteOption, DryRun = DryRun, ClientToken = ClientToken)
  output <- .ssm$delete_inventory_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_inventory <- ssm_delete_inventory

#' Deletes a maintenance window
#'
#' @description
#' Deletes a maintenance window.
#'
#' @usage
#' ssm_delete_maintenance_window(WindowId)
#'
#' @param WindowId &#91;required&#93; The ID of the maintenance window to delete.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_maintenance_window(
#'   WindowId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_maintenance_window
ssm_delete_maintenance_window <- function(WindowId) {
  op <- new_operation(
    name = "DeleteMaintenanceWindow",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_maintenance_window_input(WindowId = WindowId)
  output <- .ssm$delete_maintenance_window_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_maintenance_window <- ssm_delete_maintenance_window

#' Delete OpsMetadata related to an application
#'
#' @description
#' Delete OpsMetadata related to an application.
#'
#' @usage
#' ssm_delete_ops_metadata(OpsMetadataArn)
#'
#' @param OpsMetadataArn &#91;required&#93; The Amazon Resource Name (ARN) of an OpsMetadata Object to delete.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_ops_metadata(
#'   OpsMetadataArn = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_ops_metadata
ssm_delete_ops_metadata <- function(OpsMetadataArn) {
  op <- new_operation(
    name = "DeleteOpsMetadata",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_ops_metadata_input(OpsMetadataArn = OpsMetadataArn)
  output <- .ssm$delete_ops_metadata_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_ops_metadata <- ssm_delete_ops_metadata

#' Delete a parameter from the system
#'
#' @description
#' Delete a parameter from the system.
#'
#' @usage
#' ssm_delete_parameter(Name)
#'
#' @param Name &#91;required&#93; The name of the parameter to delete.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_parameter(
#'   Name = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_parameter
ssm_delete_parameter <- function(Name) {
  op <- new_operation(
    name = "DeleteParameter",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_parameter_input(Name = Name)
  output <- .ssm$delete_parameter_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_parameter <- ssm_delete_parameter

#' Delete a list of parameters
#'
#' @description
#' Delete a list of parameters.
#'
#' @usage
#' ssm_delete_parameters(Names)
#'
#' @param Names &#91;required&#93; The names of the parameters to delete.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DeletedParameters = list(
#'     "string"
#'   ),
#'   InvalidParameters = list(
#'     "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_parameters(
#'   Names = list(
#'     "string"
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_parameters
ssm_delete_parameters <- function(Names) {
  op <- new_operation(
    name = "DeleteParameters",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_parameters_input(Names = Names)
  output <- .ssm$delete_parameters_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_parameters <- ssm_delete_parameters

#' Deletes a patch baseline
#'
#' @description
#' Deletes a patch baseline.
#'
#' @usage
#' ssm_delete_patch_baseline(BaselineId)
#'
#' @param BaselineId &#91;required&#93; The ID of the patch baseline to delete.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   BaselineId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$delete_patch_baseline(
#'   BaselineId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_patch_baseline
ssm_delete_patch_baseline <- function(BaselineId) {
  op <- new_operation(
    name = "DeletePatchBaseline",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_patch_baseline_input(BaselineId = BaselineId)
  output <- .ssm$delete_patch_baseline_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_patch_baseline <- ssm_delete_patch_baseline

#' Deletes a Resource Data Sync configuration
#'
#' @description
#' Deletes a Resource Data Sync configuration. After the configuration is
#' deleted, changes to data on managed instances are no longer synced to or
#' from the target. Deleting a sync configuration does not delete data.
#'
#' @usage
#' ssm_delete_resource_data_sync(SyncName, SyncType)
#'
#' @param SyncName &#91;required&#93; The name of the configuration to delete.
#' @param SyncType Specify the type of resource data sync to delete.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$delete_resource_data_sync(
#'   SyncName = "string",
#'   SyncType = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_delete_resource_data_sync
ssm_delete_resource_data_sync <- function(SyncName, SyncType = NULL) {
  op <- new_operation(
    name = "DeleteResourceDataSync",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$delete_resource_data_sync_input(SyncName = SyncName, SyncType = SyncType)
  output <- .ssm$delete_resource_data_sync_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$delete_resource_data_sync <- ssm_delete_resource_data_sync

#' Removes the server or virtual machine from the list of registered
#' servers
#'
#' @description
#' Removes the server or virtual machine from the list of registered
#' servers. You can reregister the instance again at any time. If you don't
#' plan to use Run Command on the server, we suggest uninstalling SSM Agent
#' first.
#'
#' @usage
#' ssm_deregister_managed_instance(InstanceId)
#'
#' @param InstanceId &#91;required&#93; The ID assigned to the managed instance when you registered it using the
#' activation process.
#'
#' @return
#' An empty list.
#'
#' @section Request syntax:
#' ```
#' svc$deregister_managed_instance(
#'   InstanceId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_deregister_managed_instance
ssm_deregister_managed_instance <- function(InstanceId) {
  op <- new_operation(
    name = "DeregisterManagedInstance",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$deregister_managed_instance_input(InstanceId = InstanceId)
  output <- .ssm$deregister_managed_instance_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$deregister_managed_instance <- ssm_deregister_managed_instance

#' Removes a patch group from a patch baseline
#'
#' @description
#' Removes a patch group from a patch baseline.
#'
#' @usage
#' ssm_deregister_patch_baseline_for_patch_group(BaselineId, PatchGroup)
#'
#' @param BaselineId &#91;required&#93; The ID of the patch baseline to deregister the patch group from.
#' @param PatchGroup &#91;required&#93; The name of the patch group that should be deregistered from the patch
#' baseline.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   BaselineId = "string",
#'   PatchGroup = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$deregister_patch_baseline_for_patch_group(
#'   BaselineId = "string",
#'   PatchGroup = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_deregister_patch_baseline_for_patch_group
ssm_deregister_patch_baseline_for_patch_group <- function(BaselineId, PatchGroup) {
  op <- new_operation(
    name = "DeregisterPatchBaselineForPatchGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$deregister_patch_baseline_for_patch_group_input(BaselineId = BaselineId, PatchGroup = PatchGroup)
  output <- .ssm$deregister_patch_baseline_for_patch_group_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$deregister_patch_baseline_for_patch_group <- ssm_deregister_patch_baseline_for_patch_group

#' Removes a target from a maintenance window
#'
#' @description
#' Removes a target from a maintenance window.
#'
#' @usage
#' ssm_deregister_target_from_maintenance_window(WindowId, WindowTargetId,
#'   Safe)
#'
#' @param WindowId &#91;required&#93; The ID of the maintenance window the target should be removed from.
#' @param WindowTargetId &#91;required&#93; The ID of the target definition to remove.
#' @param Safe The system checks if the target is being referenced by a task. If the
#' target is being referenced, the system returns an error and does not
#' deregister the target from the maintenance window.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowId = "string",
#'   WindowTargetId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$deregister_target_from_maintenance_window(
#'   WindowId = "string",
#'   WindowTargetId = "string",
#'   Safe = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_deregister_target_from_maintenance_window
ssm_deregister_target_from_maintenance_window <- function(WindowId, WindowTargetId, Safe = NULL) {
  op <- new_operation(
    name = "DeregisterTargetFromMaintenanceWindow",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$deregister_target_from_maintenance_window_input(WindowId = WindowId, WindowTargetId = WindowTargetId, Safe = Safe)
  output <- .ssm$deregister_target_from_maintenance_window_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$deregister_target_from_maintenance_window <- ssm_deregister_target_from_maintenance_window

#' Removes a task from a maintenance window
#'
#' @description
#' Removes a task from a maintenance window.
#'
#' @usage
#' ssm_deregister_task_from_maintenance_window(WindowId, WindowTaskId)
#'
#' @param WindowId &#91;required&#93; The ID of the maintenance window the task should be removed from.
#' @param WindowTaskId &#91;required&#93; The ID of the task to remove from the maintenance window.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowId = "string",
#'   WindowTaskId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$deregister_task_from_maintenance_window(
#'   WindowId = "string",
#'   WindowTaskId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_deregister_task_from_maintenance_window
ssm_deregister_task_from_maintenance_window <- function(WindowId, WindowTaskId) {
  op <- new_operation(
    name = "DeregisterTaskFromMaintenanceWindow",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$deregister_task_from_maintenance_window_input(WindowId = WindowId, WindowTaskId = WindowTaskId)
  output <- .ssm$deregister_task_from_maintenance_window_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$deregister_task_from_maintenance_window <- ssm_deregister_task_from_maintenance_window

#' Describes details about the activation, such as the date and time the
#' activation was created, its expiration date, the IAM role assigned to
#' the instances in the activation, and the number of instances registered
#' by using this activation
#'
#' @description
#' Describes details about the activation, such as the date and time the
#' activation was created, its expiration date, the IAM role assigned to
#' the instances in the activation, and the number of instances registered
#' by using this activation.
#'
#' @usage
#' ssm_describe_activations(Filters, MaxResults, NextToken)
#'
#' @param Filters A filter to view information about your activations.
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ActivationList = list(
#'     list(
#'       ActivationId = "string",
#'       Description = "string",
#'       DefaultInstanceName = "string",
#'       IamRole = "string",
#'       RegistrationLimit = 123,
#'       RegistrationsCount = 123,
#'       ExpirationDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Expired = TRUE|FALSE,
#'       CreatedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Tags = list(
#'         list(
#'           Key = "string",
#'           Value = "string"
#'         )
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_activations(
#'   Filters = list(
#'     list(
#'       FilterKey = "ActivationIds"|"DefaultInstanceName"|"IamRole",
#'       FilterValues = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_activations
ssm_describe_activations <- function(Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeActivations",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_activations_input(Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_activations_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_activations <- ssm_describe_activations

#' Describes the association for the specified target or instance
#'
#' @description
#' Describes the association for the specified target or instance. If you
#' created the association by using the `Targets` parameter, then you must
#' retrieve the association by using the association ID. If you created the
#' association by specifying an instance ID and a Systems Manager document,
#' then you retrieve the association by specifying the document name and
#' the instance ID.
#'
#' @usage
#' ssm_describe_association(Name, InstanceId, AssociationId,
#'   AssociationVersion)
#'
#' @param Name The name of the Systems Manager document.
#' @param InstanceId The instance ID.
#' @param AssociationId The association ID for which you want information.
#' @param AssociationVersion Specify the association version to retrieve. To view the latest version,
#' either specify `$LATEST` for this parameter, or omit this parameter. To
#' view a list of all associations for an instance, use
#' [`list_associations`][ssm_list_associations]. To get a list of versions
#' for a specific association, use
#' [`list_association_versions`][ssm_list_association_versions].
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AssociationDescription = list(
#'     Name = "string",
#'     InstanceId = "string",
#'     AssociationVersion = "string",
#'     Date = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     LastUpdateAssociationDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Status = list(
#'       Date = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Name = "Pending"|"Success"|"Failed",
#'       Message = "string",
#'       AdditionalInfo = "string"
#'     ),
#'     Overview = list(
#'       Status = "string",
#'       DetailedStatus = "string",
#'       AssociationStatusAggregatedCount = list(
#'         123
#'       )
#'     ),
#'     DocumentVersion = "string",
#'     AutomationTargetParameterName = "string",
#'     Parameters = list(
#'       list(
#'         "string"
#'       )
#'     ),
#'     AssociationId = "string",
#'     Targets = list(
#'       list(
#'         Key = "string",
#'         Values = list(
#'           "string"
#'         )
#'       )
#'     ),
#'     ScheduleExpression = "string",
#'     OutputLocation = list(
#'       S3Location = list(
#'         OutputS3Region = "string",
#'         OutputS3BucketName = "string",
#'         OutputS3KeyPrefix = "string"
#'       )
#'     ),
#'     LastExecutionDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     LastSuccessfulExecutionDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     AssociationName = "string",
#'     MaxErrors = "string",
#'     MaxConcurrency = "string",
#'     ComplianceSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"UNSPECIFIED",
#'     SyncCompliance = "AUTO"|"MANUAL",
#'     ApplyOnlyAtCronInterval = TRUE|FALSE,
#'     TargetLocations = list(
#'       list(
#'         Accounts = list(
#'           "string"
#'         ),
#'         Regions = list(
#'           "string"
#'         ),
#'         TargetLocationMaxConcurrency = "string",
#'         TargetLocationMaxErrors = "string",
#'         ExecutionRoleName = "string"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_association(
#'   Name = "string",
#'   InstanceId = "string",
#'   AssociationId = "string",
#'   AssociationVersion = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_association
ssm_describe_association <- function(Name = NULL, InstanceId = NULL, AssociationId = NULL, AssociationVersion = NULL) {
  op <- new_operation(
    name = "DescribeAssociation",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_association_input(Name = Name, InstanceId = InstanceId, AssociationId = AssociationId, AssociationVersion = AssociationVersion)
  output <- .ssm$describe_association_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_association <- ssm_describe_association

#' Use this API action to view information about a specific execution of a
#' specific association
#'
#' @description
#' Use this API action to view information about a specific execution of a
#' specific association.
#'
#' @usage
#' ssm_describe_association_execution_targets(AssociationId, ExecutionId,
#'   Filters, MaxResults, NextToken)
#'
#' @param AssociationId &#91;required&#93; The association ID that includes the execution for which you want to
#' view details.
#' @param ExecutionId &#91;required&#93; The execution ID for which you want to view details.
#' @param Filters Filters for the request. You can specify the following filters and
#' values.
#' 
#' Status (EQUAL)
#' 
#' ResourceId (EQUAL)
#' 
#' ResourceType (EQUAL)
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AssociationExecutionTargets = list(
#'     list(
#'       AssociationId = "string",
#'       AssociationVersion = "string",
#'       ExecutionId = "string",
#'       ResourceId = "string",
#'       ResourceType = "string",
#'       Status = "string",
#'       DetailedStatus = "string",
#'       LastExecutionDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       OutputSource = list(
#'         OutputSourceId = "string",
#'         OutputSourceType = "string"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_association_execution_targets(
#'   AssociationId = "string",
#'   ExecutionId = "string",
#'   Filters = list(
#'     list(
#'       Key = "Status"|"ResourceId"|"ResourceType",
#'       Value = "string"
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_association_execution_targets
ssm_describe_association_execution_targets <- function(AssociationId, ExecutionId, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeAssociationExecutionTargets",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_association_execution_targets_input(AssociationId = AssociationId, ExecutionId = ExecutionId, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_association_execution_targets_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_association_execution_targets <- ssm_describe_association_execution_targets

#' Use this API action to view all executions for a specific association ID
#'
#' @description
#' Use this API action to view all executions for a specific association
#' ID.
#'
#' @usage
#' ssm_describe_association_executions(AssociationId, Filters, MaxResults,
#'   NextToken)
#'
#' @param AssociationId &#91;required&#93; The association ID for which you want to view execution history details.
#' @param Filters Filters for the request. You can specify the following filters and
#' values.
#' 
#' ExecutionId (EQUAL)
#' 
#' Status (EQUAL)
#' 
#' CreatedTime (EQUAL, GREATER_THAN, LESS_THAN)
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AssociationExecutions = list(
#'     list(
#'       AssociationId = "string",
#'       AssociationVersion = "string",
#'       ExecutionId = "string",
#'       Status = "string",
#'       DetailedStatus = "string",
#'       CreatedTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastExecutionDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ResourceCountByStatus = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_association_executions(
#'   AssociationId = "string",
#'   Filters = list(
#'     list(
#'       Key = "ExecutionId"|"Status"|"CreatedTime",
#'       Value = "string",
#'       Type = "EQUAL"|"LESS_THAN"|"GREATER_THAN"
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_association_executions
ssm_describe_association_executions <- function(AssociationId, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeAssociationExecutions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_association_executions_input(AssociationId = AssociationId, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_association_executions_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_association_executions <- ssm_describe_association_executions

#' Provides details about all active and terminated Automation executions
#'
#' @description
#' Provides details about all active and terminated Automation executions.
#'
#' @usage
#' ssm_describe_automation_executions(Filters, MaxResults, NextToken)
#'
#' @param Filters Filters used to limit the scope of executions that are requested.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AutomationExecutionMetadataList = list(
#'     list(
#'       AutomationExecutionId = "string",
#'       DocumentName = "string",
#'       DocumentVersion = "string",
#'       AutomationExecutionStatus = "Pending"|"InProgress"|"Waiting"|"Success"|"TimedOut"|"Cancelling"|"Cancelled"|"Failed"|"PendingApproval"|"Approved"|"Rejected"|"Scheduled"|"RunbookInProgress"|"PendingChangeCalendarOverride"|"ChangeCalendarOverrideApproved"|"ChangeCalendarOverrideRejected"|"CompletedWithSuccess"|"CompletedWithFailure",
#'       ExecutionStartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ExecutionEndTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ExecutedBy = "string",
#'       LogFile = "string",
#'       Outputs = list(
#'         list(
#'           "string"
#'         )
#'       ),
#'       Mode = "Auto"|"Interactive",
#'       ParentAutomationExecutionId = "string",
#'       CurrentStepName = "string",
#'       CurrentAction = "string",
#'       FailureMessage = "string",
#'       TargetParameterName = "string",
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       TargetMaps = list(
#'         list(
#'           list(
#'             "string"
#'           )
#'         )
#'       ),
#'       ResolvedTargets = list(
#'         ParameterValues = list(
#'           "string"
#'         ),
#'         Truncated = TRUE|FALSE
#'       ),
#'       MaxConcurrency = "string",
#'       MaxErrors = "string",
#'       Target = "string",
#'       AutomationType = "CrossAccount"|"Local",
#'       AutomationSubtype = "ChangeRequest",
#'       ScheduledTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Runbooks = list(
#'         list(
#'           DocumentName = "string",
#'           DocumentVersion = "string",
#'           Parameters = list(
#'             list(
#'               "string"
#'             )
#'           ),
#'           TargetParameterName = "string",
#'           Targets = list(
#'             list(
#'               Key = "string",
#'               Values = list(
#'                 "string"
#'               )
#'             )
#'           ),
#'           MaxConcurrency = "string",
#'           MaxErrors = "string",
#'           TargetLocations = list(
#'             list(
#'               Accounts = list(
#'                 "string"
#'               ),
#'               Regions = list(
#'                 "string"
#'               ),
#'               TargetLocationMaxConcurrency = "string",
#'               TargetLocationMaxErrors = "string",
#'               ExecutionRoleName = "string"
#'             )
#'           )
#'         )
#'       ),
#'       OpsItemId = "string",
#'       AssociationId = "string",
#'       ChangeRequestName = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_automation_executions(
#'   Filters = list(
#'     list(
#'       Key = "DocumentNamePrefix"|"ExecutionStatus"|"ExecutionId"|"ParentExecutionId"|"CurrentAction"|"StartTimeBefore"|"StartTimeAfter"|"AutomationType"|"TagKey"|"TargetResourceGroup"|"AutomationSubtype"|"OpsItemId",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_automation_executions
ssm_describe_automation_executions <- function(Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeAutomationExecutions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_automation_executions_input(Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_automation_executions_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_automation_executions <- ssm_describe_automation_executions

#' Information about all active and terminated step executions in an
#' Automation workflow
#'
#' @description
#' Information about all active and terminated step executions in an
#' Automation workflow.
#'
#' @usage
#' ssm_describe_automation_step_executions(AutomationExecutionId, Filters,
#'   NextToken, MaxResults, ReverseOrder)
#'
#' @param AutomationExecutionId &#91;required&#93; The Automation execution ID for which you want step execution
#' descriptions.
#' @param Filters One or more filters to limit the number of step executions returned by
#' the request.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param MaxResults 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.
#' @param ReverseOrder A boolean that indicates whether to list step executions in reverse
#' order by start time. The default value is false.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   StepExecutions = list(
#'     list(
#'       StepName = "string",
#'       Action = "string",
#'       TimeoutSeconds = 123,
#'       OnFailure = "string",
#'       MaxAttempts = 123,
#'       ExecutionStartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ExecutionEndTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       StepStatus = "Pending"|"InProgress"|"Waiting"|"Success"|"TimedOut"|"Cancelling"|"Cancelled"|"Failed"|"PendingApproval"|"Approved"|"Rejected"|"Scheduled"|"RunbookInProgress"|"PendingChangeCalendarOverride"|"ChangeCalendarOverrideApproved"|"ChangeCalendarOverrideRejected"|"CompletedWithSuccess"|"CompletedWithFailure",
#'       ResponseCode = "string",
#'       Inputs = list(
#'         "string"
#'       ),
#'       Outputs = list(
#'         list(
#'           "string"
#'         )
#'       ),
#'       Response = "string",
#'       FailureMessage = "string",
#'       FailureDetails = list(
#'         FailureStage = "string",
#'         FailureType = "string",
#'         Details = list(
#'           list(
#'             "string"
#'           )
#'         )
#'       ),
#'       StepExecutionId = "string",
#'       OverriddenParameters = list(
#'         list(
#'           "string"
#'         )
#'       ),
#'       IsEnd = TRUE|FALSE,
#'       NextStep = "string",
#'       IsCritical = TRUE|FALSE,
#'       ValidNextSteps = list(
#'         "string"
#'       ),
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       TargetLocation = list(
#'         Accounts = list(
#'           "string"
#'         ),
#'         Regions = list(
#'           "string"
#'         ),
#'         TargetLocationMaxConcurrency = "string",
#'         TargetLocationMaxErrors = "string",
#'         ExecutionRoleName = "string"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_automation_step_executions(
#'   AutomationExecutionId = "string",
#'   Filters = list(
#'     list(
#'       Key = "StartTimeBefore"|"StartTimeAfter"|"StepExecutionStatus"|"StepExecutionId"|"StepName"|"Action",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123,
#'   ReverseOrder = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_automation_step_executions
ssm_describe_automation_step_executions <- function(AutomationExecutionId, Filters = NULL, NextToken = NULL, MaxResults = NULL, ReverseOrder = NULL) {
  op <- new_operation(
    name = "DescribeAutomationStepExecutions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_automation_step_executions_input(AutomationExecutionId = AutomationExecutionId, Filters = Filters, NextToken = NextToken, MaxResults = MaxResults, ReverseOrder = ReverseOrder)
  output <- .ssm$describe_automation_step_executions_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_automation_step_executions <- ssm_describe_automation_step_executions

#' Lists all patches eligible to be included in a patch baseline
#'
#' @description
#' Lists all patches eligible to be included in a patch baseline.
#'
#' @usage
#' ssm_describe_available_patches(Filters, MaxResults, NextToken)
#'
#' @param Filters Filters used to scope down the returned patches.
#' @param MaxResults The maximum number of patches to return (per page).
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Patches = list(
#'     list(
#'       Id = "string",
#'       ReleaseDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Title = "string",
#'       Description = "string",
#'       ContentUrl = "string",
#'       Vendor = "string",
#'       ProductFamily = "string",
#'       Product = "string",
#'       Classification = "string",
#'       MsrcSeverity = "string",
#'       KbNumber = "string",
#'       MsrcNumber = "string",
#'       Language = "string",
#'       AdvisoryIds = list(
#'         "string"
#'       ),
#'       BugzillaIds = list(
#'         "string"
#'       ),
#'       CVEIds = list(
#'         "string"
#'       ),
#'       Name = "string",
#'       Epoch = 123,
#'       Version = "string",
#'       Release = "string",
#'       Arch = "string",
#'       Severity = "string",
#'       Repository = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_available_patches(
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_available_patches
ssm_describe_available_patches <- function(Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeAvailablePatches",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_available_patches_input(Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_available_patches_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_available_patches <- ssm_describe_available_patches

#' Describes the specified Systems Manager document
#'
#' @description
#' Describes the specified Systems Manager document.
#'
#' @usage
#' ssm_describe_document(Name, DocumentVersion, VersionName)
#'
#' @param Name &#91;required&#93; The name of the Systems Manager document.
#' @param DocumentVersion The document version for which you want information. Can be a specific
#' version or the default version.
#' @param VersionName An optional field specifying the version of the artifact associated with
#' the document. For example, "Release 12, Update 6". This value is unique
#' across all versions of a document, and cannot be changed.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Document = list(
#'     Sha1 = "string",
#'     Hash = "string",
#'     HashType = "Sha256"|"Sha1",
#'     Name = "string",
#'     VersionName = "string",
#'     Owner = "string",
#'     CreatedDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Status = "Creating"|"Active"|"Updating"|"Deleting"|"Failed",
#'     StatusInformation = "string",
#'     DocumentVersion = "string",
#'     Description = "string",
#'     Parameters = list(
#'       list(
#'         Name = "string",
#'         Type = "String"|"StringList",
#'         Description = "string",
#'         DefaultValue = "string"
#'       )
#'     ),
#'     PlatformTypes = list(
#'       "Windows"|"Linux"
#'     ),
#'     DocumentType = "Command"|"Policy"|"Automation"|"Session"|"Package"|"ApplicationConfiguration"|"ApplicationConfigurationSchema"|"DeploymentStrategy"|"ChangeCalendar"|"Automation.ChangeTemplate",
#'     SchemaVersion = "string",
#'     LatestVersion = "string",
#'     DefaultVersion = "string",
#'     DocumentFormat = "YAML"|"JSON"|"TEXT",
#'     TargetType = "string",
#'     Tags = list(
#'       list(
#'         Key = "string",
#'         Value = "string"
#'       )
#'     ),
#'     AttachmentsInformation = list(
#'       list(
#'         Name = "string"
#'       )
#'     ),
#'     Requires = list(
#'       list(
#'         Name = "string",
#'         Version = "string"
#'       )
#'     ),
#'     Author = "string",
#'     ReviewInformation = list(
#'       list(
#'         ReviewedTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         Status = "APPROVED"|"NOT_REVIEWED"|"PENDING"|"REJECTED",
#'         Reviewer = "string"
#'       )
#'     ),
#'     ApprovedVersion = "string",
#'     PendingReviewVersion = "string",
#'     ReviewStatus = "APPROVED"|"NOT_REVIEWED"|"PENDING"|"REJECTED"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_document(
#'   Name = "string",
#'   DocumentVersion = "string",
#'   VersionName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_document
ssm_describe_document <- function(Name, DocumentVersion = NULL, VersionName = NULL) {
  op <- new_operation(
    name = "DescribeDocument",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_document_input(Name = Name, DocumentVersion = DocumentVersion, VersionName = VersionName)
  output <- .ssm$describe_document_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_document <- ssm_describe_document

#' Describes the permissions for a Systems Manager document
#'
#' @description
#' Describes the permissions for a Systems Manager document. If you created
#' the document, you are the owner. If a document is shared, it can either
#' be shared privately (by specifying a user's AWS account ID) or publicly
#' (*All*).
#'
#' @usage
#' ssm_describe_document_permission(Name, PermissionType)
#'
#' @param Name &#91;required&#93; The name of the document for which you are the owner.
#' @param PermissionType &#91;required&#93; The permission type for the document. The permission type can be
#' *Share*.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AccountIds = list(
#'     "string"
#'   ),
#'   AccountSharingInfoList = list(
#'     list(
#'       AccountId = "string",
#'       SharedDocumentVersion = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_document_permission(
#'   Name = "string",
#'   PermissionType = "Share"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_document_permission
ssm_describe_document_permission <- function(Name, PermissionType) {
  op <- new_operation(
    name = "DescribeDocumentPermission",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_document_permission_input(Name = Name, PermissionType = PermissionType)
  output <- .ssm$describe_document_permission_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_document_permission <- ssm_describe_document_permission

#' All associations for the instance(s)
#'
#' @description
#' All associations for the instance(s).
#'
#' @usage
#' ssm_describe_effective_instance_associations(InstanceId, MaxResults,
#'   NextToken)
#'
#' @param InstanceId &#91;required&#93; The instance ID for which you want to view all associations.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Associations = list(
#'     list(
#'       AssociationId = "string",
#'       InstanceId = "string",
#'       Content = "string",
#'       AssociationVersion = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_effective_instance_associations(
#'   InstanceId = "string",
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_effective_instance_associations
ssm_describe_effective_instance_associations <- function(InstanceId, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeEffectiveInstanceAssociations",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_effective_instance_associations_input(InstanceId = InstanceId, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_effective_instance_associations_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_effective_instance_associations <- ssm_describe_effective_instance_associations

#' Retrieves the current effective patches (the patch and the approval
#' state) for the specified patch baseline
#'
#' @description
#' Retrieves the current effective patches (the patch and the approval
#' state) for the specified patch baseline. Note that this API applies only
#' to Windows patch baselines.
#'
#' @usage
#' ssm_describe_effective_patches_for_patch_baseline(BaselineId,
#'   MaxResults, NextToken)
#'
#' @param BaselineId &#91;required&#93; The ID of the patch baseline to retrieve the effective patches for.
#' @param MaxResults The maximum number of patches to return (per page).
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   EffectivePatches = list(
#'     list(
#'       Patch = list(
#'         Id = "string",
#'         ReleaseDate = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         Title = "string",
#'         Description = "string",
#'         ContentUrl = "string",
#'         Vendor = "string",
#'         ProductFamily = "string",
#'         Product = "string",
#'         Classification = "string",
#'         MsrcSeverity = "string",
#'         KbNumber = "string",
#'         MsrcNumber = "string",
#'         Language = "string",
#'         AdvisoryIds = list(
#'           "string"
#'         ),
#'         BugzillaIds = list(
#'           "string"
#'         ),
#'         CVEIds = list(
#'           "string"
#'         ),
#'         Name = "string",
#'         Epoch = 123,
#'         Version = "string",
#'         Release = "string",
#'         Arch = "string",
#'         Severity = "string",
#'         Repository = "string"
#'       ),
#'       PatchStatus = list(
#'         DeploymentStatus = "APPROVED"|"PENDING_APPROVAL"|"EXPLICIT_APPROVED"|"EXPLICIT_REJECTED",
#'         ComplianceLevel = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED",
#'         ApprovalDate = as.POSIXct(
#'           "2015-01-01"
#'         )
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_effective_patches_for_patch_baseline(
#'   BaselineId = "string",
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_effective_patches_for_patch_baseline
ssm_describe_effective_patches_for_patch_baseline <- function(BaselineId, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeEffectivePatchesForPatchBaseline",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_effective_patches_for_patch_baseline_input(BaselineId = BaselineId, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_effective_patches_for_patch_baseline_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_effective_patches_for_patch_baseline <- ssm_describe_effective_patches_for_patch_baseline

#' The status of the associations for the instance(s)
#'
#' @description
#' The status of the associations for the instance(s).
#'
#' @usage
#' ssm_describe_instance_associations_status(InstanceId, MaxResults,
#'   NextToken)
#'
#' @param InstanceId &#91;required&#93; The instance IDs for which you want association status information.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   InstanceAssociationStatusInfos = list(
#'     list(
#'       AssociationId = "string",
#'       Name = "string",
#'       DocumentVersion = "string",
#'       AssociationVersion = "string",
#'       InstanceId = "string",
#'       ExecutionDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Status = "string",
#'       DetailedStatus = "string",
#'       ExecutionSummary = "string",
#'       ErrorCode = "string",
#'       OutputUrl = list(
#'         S3OutputUrl = list(
#'           OutputUrl = "string"
#'         )
#'       ),
#'       AssociationName = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_instance_associations_status(
#'   InstanceId = "string",
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_instance_associations_status
ssm_describe_instance_associations_status <- function(InstanceId, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeInstanceAssociationsStatus",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_instance_associations_status_input(InstanceId = InstanceId, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_instance_associations_status_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_instance_associations_status <- ssm_describe_instance_associations_status

#' Describes one or more of your instances, including information about the
#' operating system platform, the version of SSM Agent installed on the
#' instance, instance status, and so on
#'
#' @description
#' Describes one or more of your instances, including information about the
#' operating system platform, the version of SSM Agent installed on the
#' instance, instance status, and so on.
#' 
#' If you specify one or more instance IDs, it returns information for
#' those instances. If you do not specify instance IDs, it returns
#' information for all your instances. If you specify an instance ID that
#' is not valid or an instance that you do not own, you receive an error.
#' 
#' The IamRole field for this API action is the Amazon Identity and Access
#' Management (IAM) role assigned to on-premises instances. This call does
#' not return the IAM role for EC2 instances.
#'
#' @usage
#' ssm_describe_instance_information(InstanceInformationFilterList,
#'   Filters, MaxResults, NextToken)
#'
#' @param InstanceInformationFilterList This is a legacy method. We recommend that you don't use this method.
#' Instead, use the `Filters` data type. `Filters` enables you to return
#' instance information by filtering based on tags applied to managed
#' instances.
#' 
#' Attempting to use `InstanceInformationFilterList` and `Filters` leads to
#' an exception error.
#' @param Filters One or more filters. Use a filter to return a more specific list of
#' instances. You can filter based on tags applied to EC2 instances. Use
#' this `Filters` data type instead of `InstanceInformationFilterList`,
#' which is deprecated.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   InstanceInformationList = list(
#'     list(
#'       InstanceId = "string",
#'       PingStatus = "Online"|"ConnectionLost"|"Inactive",
#'       LastPingDateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       AgentVersion = "string",
#'       IsLatestVersion = TRUE|FALSE,
#'       PlatformType = "Windows"|"Linux",
#'       PlatformName = "string",
#'       PlatformVersion = "string",
#'       ActivationId = "string",
#'       IamRole = "string",
#'       RegistrationDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ResourceType = "ManagedInstance"|"Document"|"EC2Instance",
#'       Name = "string",
#'       IPAddress = "string",
#'       ComputerName = "string",
#'       AssociationStatus = "string",
#'       LastAssociationExecutionDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastSuccessfulAssociationExecutionDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       AssociationOverview = list(
#'         DetailedStatus = "string",
#'         InstanceAssociationStatusAggregatedCount = list(
#'           123
#'         )
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_instance_information(
#'   InstanceInformationFilterList = list(
#'     list(
#'       key = "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|"AssociationStatus",
#'       valueSet = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_instance_information
ssm_describe_instance_information <- function(InstanceInformationFilterList = NULL, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeInstanceInformation",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_instance_information_input(InstanceInformationFilterList = InstanceInformationFilterList, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_instance_information_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_instance_information <- ssm_describe_instance_information

#' Retrieves the high-level patch state of one or more instances
#'
#' @description
#' Retrieves the high-level patch state of one or more instances.
#'
#' @usage
#' ssm_describe_instance_patch_states(InstanceIds, NextToken, MaxResults)
#'
#' @param InstanceIds &#91;required&#93; The ID of the instance whose patch state information should be
#' retrieved.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param MaxResults The maximum number of instances to return (per page).
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   InstancePatchStates = list(
#'     list(
#'       InstanceId = "string",
#'       PatchGroup = "string",
#'       BaselineId = "string",
#'       SnapshotId = "string",
#'       InstallOverrideList = "string",
#'       OwnerInformation = "string",
#'       InstalledCount = 123,
#'       InstalledOtherCount = 123,
#'       InstalledPendingRebootCount = 123,
#'       InstalledRejectedCount = 123,
#'       MissingCount = 123,
#'       FailedCount = 123,
#'       UnreportedNotApplicableCount = 123,
#'       NotApplicableCount = 123,
#'       OperationStartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       OperationEndTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Operation = "Scan"|"Install",
#'       LastNoRebootInstallOperationTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       RebootOption = "RebootIfNeeded"|"NoReboot"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_instance_patch_states(
#'   InstanceIds = list(
#'     "string"
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_instance_patch_states
ssm_describe_instance_patch_states <- function(InstanceIds, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "DescribeInstancePatchStates",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_instance_patch_states_input(InstanceIds = InstanceIds, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$describe_instance_patch_states_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_instance_patch_states <- ssm_describe_instance_patch_states

#' Retrieves the high-level patch state for the instances in the specified
#' patch group
#'
#' @description
#' Retrieves the high-level patch state for the instances in the specified
#' patch group.
#'
#' @usage
#' ssm_describe_instance_patch_states_for_patch_group(PatchGroup, Filters,
#'   NextToken, MaxResults)
#'
#' @param PatchGroup &#91;required&#93; The name of the patch group for which the patch state information should
#' be retrieved.
#' @param Filters Each entry in the array is a structure containing:
#' 
#' Key (string between 1 and 200 characters)
#' 
#' Values (array containing a single string)
#' 
#' Type (string "Equal", "NotEqual", "LessThan", "GreaterThan")
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param MaxResults The maximum number of patches to return (per page).
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   InstancePatchStates = list(
#'     list(
#'       InstanceId = "string",
#'       PatchGroup = "string",
#'       BaselineId = "string",
#'       SnapshotId = "string",
#'       InstallOverrideList = "string",
#'       OwnerInformation = "string",
#'       InstalledCount = 123,
#'       InstalledOtherCount = 123,
#'       InstalledPendingRebootCount = 123,
#'       InstalledRejectedCount = 123,
#'       MissingCount = 123,
#'       FailedCount = 123,
#'       UnreportedNotApplicableCount = 123,
#'       NotApplicableCount = 123,
#'       OperationStartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       OperationEndTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Operation = "Scan"|"Install",
#'       LastNoRebootInstallOperationTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       RebootOption = "RebootIfNeeded"|"NoReboot"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_instance_patch_states_for_patch_group(
#'   PatchGroup = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       ),
#'       Type = "Equal"|"NotEqual"|"LessThan"|"GreaterThan"
#'     )
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_instance_patch_states_for_patch_group
ssm_describe_instance_patch_states_for_patch_group <- function(PatchGroup, Filters = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "DescribeInstancePatchStatesForPatchGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_instance_patch_states_for_patch_group_input(PatchGroup = PatchGroup, Filters = Filters, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$describe_instance_patch_states_for_patch_group_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_instance_patch_states_for_patch_group <- ssm_describe_instance_patch_states_for_patch_group

#' Retrieves information about the patches on the specified instance and
#' their state relative to the patch baseline being used for the instance
#'
#' @description
#' Retrieves information about the patches on the specified instance and
#' their state relative to the patch baseline being used for the instance.
#'
#' @usage
#' ssm_describe_instance_patches(InstanceId, Filters, NextToken,
#'   MaxResults)
#'
#' @param InstanceId &#91;required&#93; The ID of the instance whose patch state information should be
#' retrieved.
#' @param Filters An array of structures. Each entry in the array is a structure
#' containing a Key, Value combination. Valid values for Key are
#' `Classification` | `KBId` | `Severity` | `State`.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param MaxResults The maximum number of patches to return (per page).
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Patches = list(
#'     list(
#'       Title = "string",
#'       KBId = "string",
#'       Classification = "string",
#'       Severity = "string",
#'       State = "INSTALLED"|"INSTALLED_OTHER"|"INSTALLED_PENDING_REBOOT"|"INSTALLED_REJECTED"|"MISSING"|"NOT_APPLICABLE"|"FAILED",
#'       InstalledTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       CVEIds = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_instance_patches(
#'   InstanceId = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_instance_patches
ssm_describe_instance_patches <- function(InstanceId, Filters = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "DescribeInstancePatches",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_instance_patches_input(InstanceId = InstanceId, Filters = Filters, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$describe_instance_patches_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_instance_patches <- ssm_describe_instance_patches

#' Describes a specific delete inventory operation
#'
#' @description
#' Describes a specific delete inventory operation.
#'
#' @usage
#' ssm_describe_inventory_deletions(DeletionId, NextToken, MaxResults)
#'
#' @param DeletionId Specify the delete inventory ID for which you want information. This ID
#' was returned by the [`delete_inventory`][ssm_delete_inventory] action.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#' @param MaxResults 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.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   InventoryDeletions = list(
#'     list(
#'       DeletionId = "string",
#'       TypeName = "string",
#'       DeletionStartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastStatus = "InProgress"|"Complete",
#'       LastStatusMessage = "string",
#'       DeletionSummary = list(
#'         TotalCount = 123,
#'         RemainingCount = 123,
#'         SummaryItems = list(
#'           list(
#'             Version = "string",
#'             Count = 123,
#'             RemainingCount = 123
#'           )
#'         )
#'       ),
#'       LastStatusUpdateTime = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_inventory_deletions(
#'   DeletionId = "string",
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_inventory_deletions
ssm_describe_inventory_deletions <- function(DeletionId = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "DescribeInventoryDeletions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_inventory_deletions_input(DeletionId = DeletionId, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$describe_inventory_deletions_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_inventory_deletions <- ssm_describe_inventory_deletions

#' Retrieves the individual task executions (one per target) for a
#' particular task run as part of a maintenance window execution
#'
#' @description
#' Retrieves the individual task executions (one per target) for a
#' particular task run as part of a maintenance window execution.
#'
#' @usage
#' ssm_describe_maintenance_window_execution_task_invocations(
#'   WindowExecutionId, TaskId, Filters, MaxResults, NextToken)
#'
#' @param WindowExecutionId &#91;required&#93; The ID of the maintenance window execution the task is part of.
#' @param TaskId &#91;required&#93; The ID of the specific task in the maintenance window task that should
#' be retrieved.
#' @param Filters Optional filters used to scope down the returned task invocations. The
#' supported filter key is STATUS with the corresponding values PENDING,
#' IN_PROGRESS, SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowExecutionTaskInvocationIdentities = list(
#'     list(
#'       WindowExecutionId = "string",
#'       TaskExecutionId = "string",
#'       InvocationId = "string",
#'       ExecutionId = "string",
#'       TaskType = "RUN_COMMAND"|"AUTOMATION"|"STEP_FUNCTIONS"|"LAMBDA",
#'       Parameters = "string",
#'       Status = "PENDING"|"IN_PROGRESS"|"SUCCESS"|"FAILED"|"TIMED_OUT"|"CANCELLING"|"CANCELLED"|"SKIPPED_OVERLAPPING",
#'       StatusDetails = "string",
#'       StartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       EndTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       OwnerInformation = "string",
#'       WindowTargetId = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_maintenance_window_execution_task_invocations(
#'   WindowExecutionId = "string",
#'   TaskId = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_maintenance_window_execution_task_invocations
ssm_describe_maintenance_window_execution_task_invocations <- function(WindowExecutionId, TaskId, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeMaintenanceWindowExecutionTaskInvocations",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_maintenance_window_execution_task_invocations_input(WindowExecutionId = WindowExecutionId, TaskId = TaskId, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_maintenance_window_execution_task_invocations_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_maintenance_window_execution_task_invocations <- ssm_describe_maintenance_window_execution_task_invocations

#' For a given maintenance window execution, lists the tasks that were run
#'
#' @description
#' For a given maintenance window execution, lists the tasks that were run.
#'
#' @usage
#' ssm_describe_maintenance_window_execution_tasks(WindowExecutionId,
#'   Filters, MaxResults, NextToken)
#'
#' @param WindowExecutionId &#91;required&#93; The ID of the maintenance window execution whose task executions should
#' be retrieved.
#' @param Filters Optional filters used to scope down the returned tasks. The supported
#' filter key is STATUS with the corresponding values PENDING,
#' IN_PROGRESS, SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowExecutionTaskIdentities = list(
#'     list(
#'       WindowExecutionId = "string",
#'       TaskExecutionId = "string",
#'       Status = "PENDING"|"IN_PROGRESS"|"SUCCESS"|"FAILED"|"TIMED_OUT"|"CANCELLING"|"CANCELLED"|"SKIPPED_OVERLAPPING",
#'       StatusDetails = "string",
#'       StartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       EndTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       TaskArn = "string",
#'       TaskType = "RUN_COMMAND"|"AUTOMATION"|"STEP_FUNCTIONS"|"LAMBDA"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_maintenance_window_execution_tasks(
#'   WindowExecutionId = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_maintenance_window_execution_tasks
ssm_describe_maintenance_window_execution_tasks <- function(WindowExecutionId, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeMaintenanceWindowExecutionTasks",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_maintenance_window_execution_tasks_input(WindowExecutionId = WindowExecutionId, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_maintenance_window_execution_tasks_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_maintenance_window_execution_tasks <- ssm_describe_maintenance_window_execution_tasks

#' Lists the executions of a maintenance window
#'
#' @description
#' Lists the executions of a maintenance window. This includes information
#' about when the maintenance window was scheduled to be active, and
#' information about tasks registered and run with the maintenance window.
#'
#' @usage
#' ssm_describe_maintenance_window_executions(WindowId, Filters,
#'   MaxResults, NextToken)
#'
#' @param WindowId &#91;required&#93; The ID of the maintenance window whose executions should be retrieved.
#' @param Filters Each entry in the array is a structure containing:
#' 
#' Key (string, between 1 and 128 characters)
#' 
#' Values (array of strings, each string is between 1 and 256 characters)
#' 
#' The supported Keys are ExecutedBefore and ExecutedAfter with the value
#' being a date/time string such as 2016-11-04T05:00:00Z.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowExecutions = list(
#'     list(
#'       WindowId = "string",
#'       WindowExecutionId = "string",
#'       Status = "PENDING"|"IN_PROGRESS"|"SUCCESS"|"FAILED"|"TIMED_OUT"|"CANCELLING"|"CANCELLED"|"SKIPPED_OVERLAPPING",
#'       StatusDetails = "string",
#'       StartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       EndTime = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_maintenance_window_executions(
#'   WindowId = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_maintenance_window_executions
ssm_describe_maintenance_window_executions <- function(WindowId, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeMaintenanceWindowExecutions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_maintenance_window_executions_input(WindowId = WindowId, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_maintenance_window_executions_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_maintenance_window_executions <- ssm_describe_maintenance_window_executions

#' Retrieves information about upcoming executions of a maintenance window
#'
#' @description
#' Retrieves information about upcoming executions of a maintenance window.
#'
#' @usage
#' ssm_describe_maintenance_window_schedule(WindowId, Targets,
#'   ResourceType, Filters, MaxResults, NextToken)
#'
#' @param WindowId The ID of the maintenance window to retrieve information about.
#' @param Targets The instance ID or key/value pair to retrieve information about.
#' @param ResourceType The type of resource you want to retrieve information about. For
#' example, "INSTANCE".
#' @param Filters 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.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ScheduledWindowExecutions = list(
#'     list(
#'       WindowId = "string",
#'       Name = "string",
#'       ExecutionTime = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_maintenance_window_schedule(
#'   WindowId = "string",
#'   Targets = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   ResourceType = "INSTANCE"|"RESOURCE_GROUP",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_maintenance_window_schedule
ssm_describe_maintenance_window_schedule <- function(WindowId = NULL, Targets = NULL, ResourceType = NULL, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeMaintenanceWindowSchedule",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_maintenance_window_schedule_input(WindowId = WindowId, Targets = Targets, ResourceType = ResourceType, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_maintenance_window_schedule_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_maintenance_window_schedule <- ssm_describe_maintenance_window_schedule

#' Lists the targets registered with the maintenance window
#'
#' @description
#' Lists the targets registered with the maintenance window.
#'
#' @usage
#' ssm_describe_maintenance_window_targets(WindowId, Filters, MaxResults,
#'   NextToken)
#'
#' @param WindowId &#91;required&#93; The ID of the maintenance window whose targets should be retrieved.
#' @param Filters Optional filters that can be used to narrow down the scope of the
#' returned window targets. The supported filter keys are Type,
#' WindowTargetId and OwnerInformation.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Targets = list(
#'     list(
#'       WindowId = "string",
#'       WindowTargetId = "string",
#'       ResourceType = "INSTANCE"|"RESOURCE_GROUP",
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       OwnerInformation = "string",
#'       Name = "string",
#'       Description = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_maintenance_window_targets(
#'   WindowId = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_maintenance_window_targets
ssm_describe_maintenance_window_targets <- function(WindowId, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeMaintenanceWindowTargets",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_maintenance_window_targets_input(WindowId = WindowId, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_maintenance_window_targets_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_maintenance_window_targets <- ssm_describe_maintenance_window_targets

#' Lists the tasks in a maintenance window
#'
#' @description
#' Lists the tasks in a maintenance window.
#' 
#' For maintenance window tasks without a specified target, you cannot
#' supply values for `--max-errors` and `--max-concurrency`. Instead, the
#' system inserts a placeholder value of `1`, which may be reported in the
#' response to this command. These values do not affect the running of your
#' task and can be ignored.
#'
#' @usage
#' ssm_describe_maintenance_window_tasks(WindowId, Filters, MaxResults,
#'   NextToken)
#'
#' @param WindowId &#91;required&#93; The ID of the maintenance window whose tasks should be retrieved.
#' @param Filters Optional filters used to narrow down the scope of the returned tasks.
#' The supported filter keys are WindowTaskId, TaskArn, Priority, and
#' TaskType.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Tasks = list(
#'     list(
#'       WindowId = "string",
#'       WindowTaskId = "string",
#'       TaskArn = "string",
#'       Type = "RUN_COMMAND"|"AUTOMATION"|"STEP_FUNCTIONS"|"LAMBDA",
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       TaskParameters = list(
#'         list(
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       Priority = 123,
#'       LoggingInfo = list(
#'         S3BucketName = "string",
#'         S3KeyPrefix = "string",
#'         S3Region = "string"
#'       ),
#'       ServiceRoleArn = "string",
#'       MaxConcurrency = "string",
#'       MaxErrors = "string",
#'       Name = "string",
#'       Description = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_maintenance_window_tasks(
#'   WindowId = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_maintenance_window_tasks
ssm_describe_maintenance_window_tasks <- function(WindowId, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeMaintenanceWindowTasks",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_maintenance_window_tasks_input(WindowId = WindowId, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_maintenance_window_tasks_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_maintenance_window_tasks <- ssm_describe_maintenance_window_tasks

#' Retrieves the maintenance windows in an AWS account
#'
#' @description
#' Retrieves the maintenance windows in an AWS account.
#'
#' @usage
#' ssm_describe_maintenance_windows(Filters, MaxResults, NextToken)
#'
#' @param Filters Optional filters used to narrow down the scope of the returned
#' maintenance windows. Supported filter keys are **Name** and **Enabled**.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowIdentities = list(
#'     list(
#'       WindowId = "string",
#'       Name = "string",
#'       Description = "string",
#'       Enabled = TRUE|FALSE,
#'       Duration = 123,
#'       Cutoff = 123,
#'       Schedule = "string",
#'       ScheduleTimezone = "string",
#'       ScheduleOffset = 123,
#'       EndDate = "string",
#'       StartDate = "string",
#'       NextExecutionTime = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_maintenance_windows(
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_maintenance_windows
ssm_describe_maintenance_windows <- function(Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeMaintenanceWindows",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_maintenance_windows_input(Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_maintenance_windows_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_maintenance_windows <- ssm_describe_maintenance_windows

#' Retrieves information about the maintenance window targets or tasks that
#' an instance is associated with
#'
#' @description
#' Retrieves information about the maintenance window targets or tasks that
#' an instance is associated with.
#'
#' @usage
#' ssm_describe_maintenance_windows_for_target(Targets, ResourceType,
#'   MaxResults, NextToken)
#'
#' @param Targets &#91;required&#93; The instance ID or key/value pair to retrieve information about.
#' @param ResourceType &#91;required&#93; The type of resource you want to retrieve information about. For
#' example, "INSTANCE".
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowIdentities = list(
#'     list(
#'       WindowId = "string",
#'       Name = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_maintenance_windows_for_target(
#'   Targets = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   ResourceType = "INSTANCE"|"RESOURCE_GROUP",
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_maintenance_windows_for_target
ssm_describe_maintenance_windows_for_target <- function(Targets, ResourceType, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeMaintenanceWindowsForTarget",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_maintenance_windows_for_target_input(Targets = Targets, ResourceType = ResourceType, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_maintenance_windows_for_target_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_maintenance_windows_for_target <- ssm_describe_maintenance_windows_for_target

#' Query a set of OpsItems
#'
#' @description
#' Query a set of OpsItems. You must have permission in AWS Identity and
#' Access Management (IAM) to query a list of OpsItems. For more
#' information, see [Getting started with
#' OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html)
#' in the *AWS Systems Manager User Guide*.
#' 
#' Operations engineers and IT professionals use OpsCenter to view,
#' investigate, and remediate operational issues impacting the performance
#' and health of their AWS resources. For more information, see [AWS
#' Systems Manager
#' OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)
#' in the *AWS Systems Manager User Guide*.
#'
#' @usage
#' ssm_describe_ops_items(OpsItemFilters, MaxResults, NextToken)
#'
#' @param OpsItemFilters One or more filters to limit the response.
#' 
#' -   Key: CreatedTime
#' 
#'     Operations: GreaterThan, LessThan
#' 
#' -   Key: LastModifiedBy
#' 
#'     Operations: Contains, Equals
#' 
#' -   Key: LastModifiedTime
#' 
#'     Operations: GreaterThan, LessThan
#' 
#' -   Key: Priority
#' 
#'     Operations: Equals
#' 
#' -   Key: Source
#' 
#'     Operations: Contains, Equals
#' 
#' -   Key: Status
#' 
#'     Operations: Equals
#' 
#' -   Key: Title
#' 
#'     Operations: Contains
#' 
#' -   Key: OperationalData*
#' 
#'     Operations: Equals
#' 
#' -   Key: OperationalDataKey
#' 
#'     Operations: Equals
#' 
#' -   Key: OperationalDataValue
#' 
#'     Operations: Equals, Contains
#' 
#' -   Key: OpsItemId
#' 
#'     Operations: Equals
#' 
#' -   Key: ResourceId
#' 
#'     Operations: Contains
#' 
#' -   Key: AutomationId
#' 
#'     Operations: Equals
#' 
#' *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"\}
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   NextToken = "string",
#'   OpsItemSummaries = list(
#'     list(
#'       CreatedBy = "string",
#'       CreatedTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastModifiedBy = "string",
#'       LastModifiedTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Priority = 123,
#'       Source = "string",
#'       Status = "Open"|"InProgress"|"Resolved"|"Pending"|"TimedOut"|"Cancelling"|"Cancelled"|"Failed"|"CompletedWithSuccess"|"CompletedWithFailure"|"Scheduled"|"RunbookInProgress"|"PendingChangeCalendarOverride"|"ChangeCalendarOverrideApproved"|"ChangeCalendarOverrideRejected"|"PendingApproval"|"Approved"|"Rejected",
#'       OpsItemId = "string",
#'       Title = "string",
#'       OperationalData = list(
#'         list(
#'           Value = "string",
#'           Type = "SearchableString"|"String"
#'         )
#'       ),
#'       Category = "string",
#'       Severity = "string",
#'       OpsItemType = "string",
#'       ActualStartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ActualEndTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       PlannedStartTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       PlannedEndTime = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_ops_items(
#'   OpsItemFilters = list(
#'     list(
#'       Key = "Status"|"CreatedBy"|"Source"|"Priority"|"Title"|"OpsItemId"|"CreatedTime"|"LastModifiedTime"|"ActualStartTime"|"ActualEndTime"|"PlannedStartTime"|"PlannedEndTime"|"OperationalData"|"OperationalDataKey"|"OperationalDataValue"|"ResourceId"|"AutomationId"|"Category"|"Severity"|"OpsItemType"|"ChangeRequestByRequesterArn"|"ChangeRequestByRequesterName"|"ChangeRequestByApproverArn"|"ChangeRequestByApproverName"|"ChangeRequestByTemplate"|"ChangeRequestByTargetsResourceGroup",
#'       Values = list(
#'         "string"
#'       ),
#'       Operator = "Equal"|"Contains"|"GreaterThan"|"LessThan"
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_ops_items
ssm_describe_ops_items <- function(OpsItemFilters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeOpsItems",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_ops_items_input(OpsItemFilters = OpsItemFilters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_ops_items_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_ops_items <- ssm_describe_ops_items

#' Get information about a parameter
#'
#' @description
#' Get information about a parameter.
#' 
#' Request results are returned on a best-effort basis. If you specify
#' `MaxResults` in the request, the response includes information up to the
#' limit specified. The number of items returned, however, can be between
#' zero and the value of `MaxResults`. If the service reaches an internal
#' limit while processing the results, it stops the operation and returns
#' the matching values up to that point and a `NextToken`. You can specify
#' the `NextToken` in a subsequent call to get the next set of results.
#'
#' @usage
#' ssm_describe_parameters(Filters, ParameterFilters, MaxResults,
#'   NextToken)
#'
#' @param Filters This data type is deprecated. Instead, use `ParameterFilters`.
#' @param ParameterFilters Filters to limit the request results.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Parameters = list(
#'     list(
#'       Name = "string",
#'       Type = "String"|"StringList"|"SecureString",
#'       KeyId = "string",
#'       LastModifiedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastModifiedUser = "string",
#'       Description = "string",
#'       AllowedPattern = "string",
#'       Version = 123,
#'       Tier = "Standard"|"Advanced"|"Intelligent-Tiering",
#'       Policies = list(
#'         list(
#'           PolicyText = "string",
#'           PolicyType = "string",
#'           PolicyStatus = "string"
#'         )
#'       ),
#'       DataType = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_parameters(
#'   Filters = list(
#'     list(
#'       Key = "Name"|"Type"|"KeyId",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   ParameterFilters = list(
#'     list(
#'       Key = "string",
#'       Option = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_parameters
ssm_describe_parameters <- function(Filters = NULL, ParameterFilters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribeParameters",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_parameters_input(Filters = Filters, ParameterFilters = ParameterFilters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_parameters_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_parameters <- ssm_describe_parameters

#' Lists the patch baselines in your AWS account
#'
#' @description
#' Lists the patch baselines in your AWS account.
#'
#' @usage
#' ssm_describe_patch_baselines(Filters, MaxResults, NextToken)
#'
#' @param Filters Each element in the array is a structure containing:
#' 
#' Key: (string, "NAME_PREFIX" or "OWNER")
#' 
#' Value: (array of strings, exactly 1 entry, between 1 and 255 characters)
#' @param MaxResults The maximum number of patch baselines to return (per page).
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   BaselineIdentities = list(
#'     list(
#'       BaselineId = "string",
#'       BaselineName = "string",
#'       OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS",
#'       BaselineDescription = "string",
#'       DefaultBaseline = TRUE|FALSE
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_patch_baselines(
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_patch_baselines
ssm_describe_patch_baselines <- function(Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribePatchBaselines",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_patch_baselines_input(Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_patch_baselines_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_patch_baselines <- ssm_describe_patch_baselines

#' Returns high-level aggregated patch compliance state for a patch group
#'
#' @description
#' Returns high-level aggregated patch compliance state for a patch group.
#'
#' @usage
#' ssm_describe_patch_group_state(PatchGroup)
#'
#' @param PatchGroup &#91;required&#93; The name of the patch group whose patch snapshot should be retrieved.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Instances = 123,
#'   InstancesWithInstalledPatches = 123,
#'   InstancesWithInstalledOtherPatches = 123,
#'   InstancesWithInstalledPendingRebootPatches = 123,
#'   InstancesWithInstalledRejectedPatches = 123,
#'   InstancesWithMissingPatches = 123,
#'   InstancesWithFailedPatches = 123,
#'   InstancesWithNotApplicablePatches = 123,
#'   InstancesWithUnreportedNotApplicablePatches = 123
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_patch_group_state(
#'   PatchGroup = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_patch_group_state
ssm_describe_patch_group_state <- function(PatchGroup) {
  op <- new_operation(
    name = "DescribePatchGroupState",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_patch_group_state_input(PatchGroup = PatchGroup)
  output <- .ssm$describe_patch_group_state_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_patch_group_state <- ssm_describe_patch_group_state

#' Lists all patch groups that have been registered with patch baselines
#'
#' @description
#' Lists all patch groups that have been registered with patch baselines.
#'
#' @usage
#' ssm_describe_patch_groups(MaxResults, Filters, NextToken)
#'
#' @param MaxResults The maximum number of patch groups to return (per page).
#' @param Filters One or more filters. Use a filter to return a more specific list of
#' results.
#' 
#' For [`describe_patch_groups`][ssm_describe_patch_groups],valid filter
#' keys include the following:
#' 
#' -   `NAME_PREFIX`: The name of the patch group. Wildcards (*) are
#'     accepted.
#' 
#' -   `OPERATING_SYSTEM`: The supported operating system type to return
#'     results for. For valid operating system values, see
#'     GetDefaultPatchBaselineRequest$OperatingSystem in
#'     [`create_patch_baseline`][ssm_create_patch_baseline].
#' 
#'     Examples:
#' 
#'     -   `--filters Key=NAME_PREFIX,Values=MyPatchGroup*`
#' 
#'     -   `--filters Key=OPERATING_SYSTEM,Values=AMAZON_LINUX_2`
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Mappings = list(
#'     list(
#'       PatchGroup = "string",
#'       BaselineIdentity = list(
#'         BaselineId = "string",
#'         BaselineName = "string",
#'         OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS",
#'         BaselineDescription = "string",
#'         DefaultBaseline = TRUE|FALSE
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_patch_groups(
#'   MaxResults = 123,
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_patch_groups
ssm_describe_patch_groups <- function(MaxResults = NULL, Filters = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribePatchGroups",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_patch_groups_input(MaxResults = MaxResults, Filters = Filters, NextToken = NextToken)
  output <- .ssm$describe_patch_groups_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_patch_groups <- ssm_describe_patch_groups

#' Lists the properties of available patches organized by product, product
#' family, classification, severity, and other properties of available
#' patches
#'
#' @description
#' Lists the properties of available patches organized by product, product
#' family, classification, severity, and other properties of available
#' patches. You can use the reported properties in the filters you specify
#' in requests for actions such as
#' [`create_patch_baseline`][ssm_create_patch_baseline],
#' [`update_patch_baseline`][ssm_update_patch_baseline],
#' [`describe_available_patches`][ssm_describe_available_patches], and
#' [`describe_patch_baselines`][ssm_describe_patch_baselines].
#' 
#' The following section lists the properties that can be used in filters
#' for each major operating system type:
#' 
#' ### AMAZON_LINUX
#' 
#' Valid properties: PRODUCT, CLASSIFICATION, SEVERITY
#' 
#' ### AMAZON_LINUX_2
#' 
#' Valid properties: PRODUCT, CLASSIFICATION, SEVERITY
#' 
#' ### CENTOS
#' 
#' Valid properties: PRODUCT, CLASSIFICATION, SEVERITY
#' 
#' ### DEBIAN
#' 
#' Valid properties: PRODUCT, PRIORITY
#' 
#' ### MACOS
#' 
#' Valid properties: PRODUCT, CLASSIFICATION
#' 
#' ### ORACLE_LINUX
#' 
#' Valid properties: PRODUCT, CLASSIFICATION, SEVERITY
#' 
#' ### REDHAT_ENTERPRISE_LINUX
#' 
#' Valid properties: PRODUCT, CLASSIFICATION, SEVERITY
#' 
#' ### SUSE
#' 
#' Valid properties: PRODUCT, CLASSIFICATION, SEVERITY
#' 
#' ### UBUNTU
#' 
#' Valid properties: PRODUCT, PRIORITY
#' 
#' ### WINDOWS
#' 
#' Valid properties: PRODUCT, PRODUCT_FAMILY, CLASSIFICATION,
#' MSRC_SEVERITY
#'
#' @usage
#' ssm_describe_patch_properties(OperatingSystem, Property, PatchSet,
#'   MaxResults, NextToken)
#'
#' @param OperatingSystem &#91;required&#93; The operating system type for which to list patches.
#' @param Property &#91;required&#93; The patch property for which you want to view patch details.
#' @param PatchSet Indicates whether to list patches for the Windows operating system or
#' for Microsoft applications. Not applicable for the Linux or macOS
#' operating systems.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Properties = list(
#'     list(
#'       "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_patch_properties(
#'   OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS",
#'   Property = "PRODUCT"|"PRODUCT_FAMILY"|"CLASSIFICATION"|"MSRC_SEVERITY"|"PRIORITY"|"SEVERITY",
#'   PatchSet = "OS"|"APPLICATION",
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_patch_properties
ssm_describe_patch_properties <- function(OperatingSystem, Property, PatchSet = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "DescribePatchProperties",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_patch_properties_input(OperatingSystem = OperatingSystem, Property = Property, PatchSet = PatchSet, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$describe_patch_properties_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_patch_properties <- ssm_describe_patch_properties

#' Retrieves a list of all active sessions (both connected and
#' disconnected) or terminated sessions from the past 30 days
#'
#' @description
#' Retrieves a list of all active sessions (both connected and
#' disconnected) or terminated sessions from the past 30 days.
#'
#' @usage
#' ssm_describe_sessions(State, MaxResults, NextToken, Filters)
#'
#' @param State &#91;required&#93; The session status to retrieve a list of sessions for. For example,
#' "Active".
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param Filters One or more filters to limit the type of sessions returned by the
#' request.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Sessions = list(
#'     list(
#'       SessionId = "string",
#'       Target = "string",
#'       Status = "Connected"|"Connecting"|"Disconnected"|"Terminated"|"Terminating"|"Failed",
#'       StartDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       EndDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       DocumentName = "string",
#'       Owner = "string",
#'       Details = "string",
#'       OutputUrl = list(
#'         S3OutputUrl = "string",
#'         CloudWatchOutputUrl = "string"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$describe_sessions(
#'   State = "Active"|"History",
#'   MaxResults = 123,
#'   NextToken = "string",
#'   Filters = list(
#'     list(
#'       key = "InvokedAfter"|"InvokedBefore"|"Target"|"Owner"|"Status"|"SessionId",
#'       value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_describe_sessions
ssm_describe_sessions <- function(State, MaxResults = NULL, NextToken = NULL, Filters = NULL) {
  op <- new_operation(
    name = "DescribeSessions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$describe_sessions_input(State = State, MaxResults = MaxResults, NextToken = NextToken, Filters = Filters)
  output <- .ssm$describe_sessions_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$describe_sessions <- ssm_describe_sessions

#' Get detailed information about a particular Automation execution
#'
#' @description
#' Get detailed information about a particular Automation execution.
#'
#' @usage
#' ssm_get_automation_execution(AutomationExecutionId)
#'
#' @param AutomationExecutionId &#91;required&#93; The unique identifier for an existing automation execution to examine.
#' The execution ID is returned by StartAutomationExecution when the
#' execution of an Automation document is initiated.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AutomationExecution = list(
#'     AutomationExecutionId = "string",
#'     DocumentName = "string",
#'     DocumentVersion = "string",
#'     ExecutionStartTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     ExecutionEndTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     AutomationExecutionStatus = "Pending"|"InProgress"|"Waiting"|"Success"|"TimedOut"|"Cancelling"|"Cancelled"|"Failed"|"PendingApproval"|"Approved"|"Rejected"|"Scheduled"|"RunbookInProgress"|"PendingChangeCalendarOverride"|"ChangeCalendarOverrideApproved"|"ChangeCalendarOverrideRejected"|"CompletedWithSuccess"|"CompletedWithFailure",
#'     StepExecutions = list(
#'       list(
#'         StepName = "string",
#'         Action = "string",
#'         TimeoutSeconds = 123,
#'         OnFailure = "string",
#'         MaxAttempts = 123,
#'         ExecutionStartTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         ExecutionEndTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         StepStatus = "Pending"|"InProgress"|"Waiting"|"Success"|"TimedOut"|"Cancelling"|"Cancelled"|"Failed"|"PendingApproval"|"Approved"|"Rejected"|"Scheduled"|"RunbookInProgress"|"PendingChangeCalendarOverride"|"ChangeCalendarOverrideApproved"|"ChangeCalendarOverrideRejected"|"CompletedWithSuccess"|"CompletedWithFailure",
#'         ResponseCode = "string",
#'         Inputs = list(
#'           "string"
#'         ),
#'         Outputs = list(
#'           list(
#'             "string"
#'           )
#'         ),
#'         Response = "string",
#'         FailureMessage = "string",
#'         FailureDetails = list(
#'           FailureStage = "string",
#'           FailureType = "string",
#'           Details = list(
#'             list(
#'               "string"
#'             )
#'           )
#'         ),
#'         StepExecutionId = "string",
#'         OverriddenParameters = list(
#'           list(
#'             "string"
#'           )
#'         ),
#'         IsEnd = TRUE|FALSE,
#'         NextStep = "string",
#'         IsCritical = TRUE|FALSE,
#'         ValidNextSteps = list(
#'           "string"
#'         ),
#'         Targets = list(
#'           list(
#'             Key = "string",
#'             Values = list(
#'               "string"
#'             )
#'           )
#'         ),
#'         TargetLocation = list(
#'           Accounts = list(
#'             "string"
#'           ),
#'           Regions = list(
#'             "string"
#'           ),
#'           TargetLocationMaxConcurrency = "string",
#'           TargetLocationMaxErrors = "string",
#'           ExecutionRoleName = "string"
#'         )
#'       )
#'     ),
#'     StepExecutionsTruncated = TRUE|FALSE,
#'     Parameters = list(
#'       list(
#'         "string"
#'       )
#'     ),
#'     Outputs = list(
#'       list(
#'         "string"
#'       )
#'     ),
#'     FailureMessage = "string",
#'     Mode = "Auto"|"Interactive",
#'     ParentAutomationExecutionId = "string",
#'     ExecutedBy = "string",
#'     CurrentStepName = "string",
#'     CurrentAction = "string",
#'     TargetParameterName = "string",
#'     Targets = list(
#'       list(
#'         Key = "string",
#'         Values = list(
#'           "string"
#'         )
#'       )
#'     ),
#'     TargetMaps = list(
#'       list(
#'         list(
#'           "string"
#'         )
#'       )
#'     ),
#'     ResolvedTargets = list(
#'       ParameterValues = list(
#'         "string"
#'       ),
#'       Truncated = TRUE|FALSE
#'     ),
#'     MaxConcurrency = "string",
#'     MaxErrors = "string",
#'     Target = "string",
#'     TargetLocations = list(
#'       list(
#'         Accounts = list(
#'           "string"
#'         ),
#'         Regions = list(
#'           "string"
#'         ),
#'         TargetLocationMaxConcurrency = "string",
#'         TargetLocationMaxErrors = "string",
#'         ExecutionRoleName = "string"
#'       )
#'     ),
#'     ProgressCounters = list(
#'       TotalSteps = 123,
#'       SuccessSteps = 123,
#'       FailedSteps = 123,
#'       CancelledSteps = 123,
#'       TimedOutSteps = 123
#'     ),
#'     AutomationSubtype = "ChangeRequest",
#'     ScheduledTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Runbooks = list(
#'       list(
#'         DocumentName = "string",
#'         DocumentVersion = "string",
#'         Parameters = list(
#'           list(
#'             "string"
#'           )
#'         ),
#'         TargetParameterName = "string",
#'         Targets = list(
#'           list(
#'             Key = "string",
#'             Values = list(
#'               "string"
#'             )
#'           )
#'         ),
#'         MaxConcurrency = "string",
#'         MaxErrors = "string",
#'         TargetLocations = list(
#'           list(
#'             Accounts = list(
#'               "string"
#'             ),
#'             Regions = list(
#'               "string"
#'             ),
#'             TargetLocationMaxConcurrency = "string",
#'             TargetLocationMaxErrors = "string",
#'             ExecutionRoleName = "string"
#'           )
#'         )
#'       )
#'     ),
#'     OpsItemId = "string",
#'     AssociationId = "string",
#'     ChangeRequestName = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_automation_execution(
#'   AutomationExecutionId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_automation_execution
ssm_get_automation_execution <- function(AutomationExecutionId) {
  op <- new_operation(
    name = "GetAutomationExecution",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_automation_execution_input(AutomationExecutionId = AutomationExecutionId)
  output <- .ssm$get_automation_execution_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_automation_execution <- ssm_get_automation_execution

#' Gets the state of the AWS Systems Manager Change Calendar at an
#' optional, specified time
#'
#' @description
#' Gets the state of the AWS Systems Manager Change Calendar at an
#' optional, specified time. If you specify a time,
#' [`get_calendar_state`][ssm_get_calendar_state] returns the state of the
#' calendar at a specific time, and returns the next time that the Change
#' Calendar state will transition. If you do not specify a time,
#' [`get_calendar_state`][ssm_get_calendar_state] assumes the current time.
#' Change Calendar entries have two possible states: `OPEN` or `CLOSED`.
#' 
#' If you specify more than one calendar in a request, the command returns
#' the status of `OPEN` only if all calendars in the request are open. If
#' one or more calendars in the request are closed, the status returned is
#' `CLOSED`.
#' 
#' For more information about Systems Manager Change Calendar, see [AWS
#' Systems Manager Change
#' Calendar](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar.html)
#' in the *AWS Systems Manager User Guide*.
#'
#' @usage
#' ssm_get_calendar_state(CalendarNames, AtTime)
#'
#' @param CalendarNames &#91;required&#93; The names or Amazon Resource Names (ARNs) of the Systems Manager
#' documents that represent the calendar entries for which you want to get
#' the state.
#' @param AtTime (Optional) The specific time for which you want to get calendar state
#' information, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
#' format. If you do not add `AtTime`, the current time is assumed.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   State = "OPEN"|"CLOSED",
#'   AtTime = "string",
#'   NextTransitionTime = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_calendar_state(
#'   CalendarNames = list(
#'     "string"
#'   ),
#'   AtTime = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_calendar_state
ssm_get_calendar_state <- function(CalendarNames, AtTime = NULL) {
  op <- new_operation(
    name = "GetCalendarState",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_calendar_state_input(CalendarNames = CalendarNames, AtTime = AtTime)
  output <- .ssm$get_calendar_state_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_calendar_state <- ssm_get_calendar_state

#' Returns detailed information about command execution for an invocation
#' or plugin
#'
#' @description
#' Returns detailed information about command execution for an invocation
#' or plugin.
#'
#' @usage
#' ssm_get_command_invocation(CommandId, InstanceId, PluginName)
#'
#' @param CommandId &#91;required&#93; (Required) The parent command ID of the invocation plugin.
#' @param InstanceId &#91;required&#93; (Required) The ID of the managed instance targeted by the command. A
#' managed instance can be an EC2 instance or an instance in your hybrid
#' environment that is configured for Systems Manager.
#' @param PluginName (Optional) The name of the plugin for which you want detailed results.
#' If the document contains only one plugin, the name can be omitted and
#' the details will be returned.
#' 
#' Plugin names are also referred to as step names in Systems Manager
#' documents.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   CommandId = "string",
#'   InstanceId = "string",
#'   Comment = "string",
#'   DocumentName = "string",
#'   DocumentVersion = "string",
#'   PluginName = "string",
#'   ResponseCode = 123,
#'   ExecutionStartDateTime = "string",
#'   ExecutionElapsedTime = "string",
#'   ExecutionEndDateTime = "string",
#'   Status = "Pending"|"InProgress"|"Delayed"|"Success"|"Cancelled"|"TimedOut"|"Failed"|"Cancelling",
#'   StatusDetails = "string",
#'   StandardOutputContent = "string",
#'   StandardOutputUrl = "string",
#'   StandardErrorContent = "string",
#'   StandardErrorUrl = "string",
#'   CloudWatchOutputConfig = list(
#'     CloudWatchLogGroupName = "string",
#'     CloudWatchOutputEnabled = TRUE|FALSE
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_command_invocation(
#'   CommandId = "string",
#'   InstanceId = "string",
#'   PluginName = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_command_invocation
ssm_get_command_invocation <- function(CommandId, InstanceId, PluginName = NULL) {
  op <- new_operation(
    name = "GetCommandInvocation",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_command_invocation_input(CommandId = CommandId, InstanceId = InstanceId, PluginName = PluginName)
  output <- .ssm$get_command_invocation_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_command_invocation <- ssm_get_command_invocation

#' Retrieves the Session Manager connection status for an instance to
#' determine whether it is running and ready to receive Session Manager
#' connections
#'
#' @description
#' Retrieves the Session Manager connection status for an instance to
#' determine whether it is running and ready to receive Session Manager
#' connections.
#'
#' @usage
#' ssm_get_connection_status(Target)
#'
#' @param Target &#91;required&#93; The ID of the instance.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Target = "string",
#'   Status = "Connected"|"NotConnected"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_connection_status(
#'   Target = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_connection_status
ssm_get_connection_status <- function(Target) {
  op <- new_operation(
    name = "GetConnectionStatus",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_connection_status_input(Target = Target)
  output <- .ssm$get_connection_status_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_connection_status <- ssm_get_connection_status

#' Retrieves the default patch baseline
#'
#' @description
#' Retrieves the default patch baseline. Note that Systems Manager supports
#' creating multiple default patch baselines. For example, you can create a
#' default patch baseline for each operating system.
#' 
#' If you do not specify an operating system value, the default patch
#' baseline for Windows is returned.
#'
#' @usage
#' ssm_get_default_patch_baseline(OperatingSystem)
#'
#' @param OperatingSystem Returns the default patch baseline for the specified operating system.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   BaselineId = "string",
#'   OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_default_patch_baseline(
#'   OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_default_patch_baseline
ssm_get_default_patch_baseline <- function(OperatingSystem = NULL) {
  op <- new_operation(
    name = "GetDefaultPatchBaseline",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_default_patch_baseline_input(OperatingSystem = OperatingSystem)
  output <- .ssm$get_default_patch_baseline_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_default_patch_baseline <- ssm_get_default_patch_baseline

#' Retrieves the current snapshot for the patch baseline the instance uses
#'
#' @description
#' Retrieves the current snapshot for the patch baseline the instance uses.
#' This API is primarily used by the AWS-RunPatchBaseline Systems Manager
#' document.
#'
#' @usage
#' ssm_get_deployable_patch_snapshot_for_instance(InstanceId, SnapshotId)
#'
#' @param InstanceId &#91;required&#93; The ID of the instance for which the appropriate patch snapshot should
#' be retrieved.
#' @param SnapshotId &#91;required&#93; The user-defined snapshot ID.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   InstanceId = "string",
#'   SnapshotId = "string",
#'   SnapshotDownloadUrl = "string",
#'   Product = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_deployable_patch_snapshot_for_instance(
#'   InstanceId = "string",
#'   SnapshotId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_deployable_patch_snapshot_for_instance
ssm_get_deployable_patch_snapshot_for_instance <- function(InstanceId, SnapshotId) {
  op <- new_operation(
    name = "GetDeployablePatchSnapshotForInstance",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_deployable_patch_snapshot_for_instance_input(InstanceId = InstanceId, SnapshotId = SnapshotId)
  output <- .ssm$get_deployable_patch_snapshot_for_instance_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_deployable_patch_snapshot_for_instance <- ssm_get_deployable_patch_snapshot_for_instance

#' Gets the contents of the specified Systems Manager document
#'
#' @description
#' Gets the contents of the specified Systems Manager document.
#'
#' @usage
#' ssm_get_document(Name, VersionName, DocumentVersion, DocumentFormat)
#'
#' @param Name &#91;required&#93; The name of the Systems Manager document.
#' @param VersionName An optional field specifying the version of the artifact associated with
#' the document. For example, "Release 12, Update 6". This value is unique
#' across all versions of a document and can't be changed.
#' @param DocumentVersion The document version for which you want information.
#' @param DocumentFormat Returns the document in the specified format. The document format can be
#' either JSON or YAML. JSON is the default format.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Name = "string",
#'   VersionName = "string",
#'   DocumentVersion = "string",
#'   Status = "Creating"|"Active"|"Updating"|"Deleting"|"Failed",
#'   StatusInformation = "string",
#'   Content = "string",
#'   DocumentType = "Command"|"Policy"|"Automation"|"Session"|"Package"|"ApplicationConfiguration"|"ApplicationConfigurationSchema"|"DeploymentStrategy"|"ChangeCalendar"|"Automation.ChangeTemplate",
#'   DocumentFormat = "YAML"|"JSON"|"TEXT",
#'   Requires = list(
#'     list(
#'       Name = "string",
#'       Version = "string"
#'     )
#'   ),
#'   AttachmentsContent = list(
#'     list(
#'       Name = "string",
#'       Size = 123,
#'       Hash = "string",
#'       HashType = "Sha256",
#'       Url = "string"
#'     )
#'   ),
#'   ReviewStatus = "APPROVED"|"NOT_REVIEWED"|"PENDING"|"REJECTED"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_document(
#'   Name = "string",
#'   VersionName = "string",
#'   DocumentVersion = "string",
#'   DocumentFormat = "YAML"|"JSON"|"TEXT"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_document
ssm_get_document <- function(Name, VersionName = NULL, DocumentVersion = NULL, DocumentFormat = NULL) {
  op <- new_operation(
    name = "GetDocument",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_document_input(Name = Name, VersionName = VersionName, DocumentVersion = DocumentVersion, DocumentFormat = DocumentFormat)
  output <- .ssm$get_document_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_document <- ssm_get_document

#' Query inventory information
#'
#' @description
#' Query inventory information.
#'
#' @usage
#' ssm_get_inventory(Filters, Aggregators, ResultAttributes, NextToken,
#'   MaxResults)
#'
#' @param Filters One or more filters. Use a filter to return a more specific list of
#' results.
#' @param Aggregators Returns counts of inventory types based on one or more expressions. For
#' example, if you aggregate by using an expression that uses the
#' `AWS:InstanceInformation.PlatformType` type, you can see a count of how
#' many Windows and Linux instances exist in your inventoried fleet.
#' @param ResultAttributes The list of inventory item types to return.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param MaxResults 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.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Entities = list(
#'     list(
#'       Id = "string",
#'       Data = list(
#'         list(
#'           TypeName = "string",
#'           SchemaVersion = "string",
#'           CaptureTime = "string",
#'           ContentHash = "string",
#'           Content = list(
#'             list(
#'               "string"
#'             )
#'           )
#'         )
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_inventory(
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       ),
#'       Type = "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"|"Exists"
#'     )
#'   ),
#'   Aggregators = list(
#'     list(
#'       Expression = "string",
#'       Aggregators = list(),
#'       Groups = list(
#'         list(
#'           Name = "string",
#'           Filters = list(
#'             list(
#'               Key = "string",
#'               Values = list(
#'                 "string"
#'               ),
#'               Type = "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"|"Exists"
#'             )
#'           )
#'         )
#'       )
#'     )
#'   ),
#'   ResultAttributes = list(
#'     list(
#'       TypeName = "string"
#'     )
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_inventory
ssm_get_inventory <- function(Filters = NULL, Aggregators = NULL, ResultAttributes = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "GetInventory",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_inventory_input(Filters = Filters, Aggregators = Aggregators, ResultAttributes = ResultAttributes, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$get_inventory_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_inventory <- ssm_get_inventory

#' Return a list of inventory type names for the account, or return a list
#' of attribute names for a specific Inventory item type
#'
#' @description
#' Return a list of inventory type names for the account, or return a list
#' of attribute names for a specific Inventory item type.
#'
#' @usage
#' ssm_get_inventory_schema(TypeName, NextToken, MaxResults, Aggregator,
#'   SubType)
#'
#' @param TypeName The type of inventory item to return.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param MaxResults 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.
#' @param Aggregator Returns inventory schemas that support aggregation. For example, this
#' call returns the `AWS:InstanceInformation` type, because it supports
#' aggregation based on the `PlatformName`, `PlatformType`, and
#' `PlatformVersion` attributes.
#' @param SubType Returns the sub-type schema for a specified inventory type.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Schemas = list(
#'     list(
#'       TypeName = "string",
#'       Version = "string",
#'       Attributes = list(
#'         list(
#'           Name = "string",
#'           DataType = "string"|"number"
#'         )
#'       ),
#'       DisplayName = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_inventory_schema(
#'   TypeName = "string",
#'   NextToken = "string",
#'   MaxResults = 123,
#'   Aggregator = TRUE|FALSE,
#'   SubType = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_inventory_schema
ssm_get_inventory_schema <- function(TypeName = NULL, NextToken = NULL, MaxResults = NULL, Aggregator = NULL, SubType = NULL) {
  op <- new_operation(
    name = "GetInventorySchema",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_inventory_schema_input(TypeName = TypeName, NextToken = NextToken, MaxResults = MaxResults, Aggregator = Aggregator, SubType = SubType)
  output <- .ssm$get_inventory_schema_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_inventory_schema <- ssm_get_inventory_schema

#' Retrieves a maintenance window
#'
#' @description
#' Retrieves a maintenance window.
#'
#' @usage
#' ssm_get_maintenance_window(WindowId)
#'
#' @param WindowId &#91;required&#93; The ID of the maintenance window for which you want to retrieve
#' information.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowId = "string",
#'   Name = "string",
#'   Description = "string",
#'   StartDate = "string",
#'   EndDate = "string",
#'   Schedule = "string",
#'   ScheduleTimezone = "string",
#'   ScheduleOffset = 123,
#'   NextExecutionTime = "string",
#'   Duration = 123,
#'   Cutoff = 123,
#'   AllowUnassociatedTargets = TRUE|FALSE,
#'   Enabled = TRUE|FALSE,
#'   CreatedDate = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   ModifiedDate = as.POSIXct(
#'     "2015-01-01"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_maintenance_window(
#'   WindowId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_maintenance_window
ssm_get_maintenance_window <- function(WindowId) {
  op <- new_operation(
    name = "GetMaintenanceWindow",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_maintenance_window_input(WindowId = WindowId)
  output <- .ssm$get_maintenance_window_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_maintenance_window <- ssm_get_maintenance_window

#' Retrieves details about a specific a maintenance window execution
#'
#' @description
#' Retrieves details about a specific a maintenance window execution.
#'
#' @usage
#' ssm_get_maintenance_window_execution(WindowExecutionId)
#'
#' @param WindowExecutionId &#91;required&#93; The ID of the maintenance window execution that includes the task.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowExecutionId = "string",
#'   TaskIds = list(
#'     "string"
#'   ),
#'   Status = "PENDING"|"IN_PROGRESS"|"SUCCESS"|"FAILED"|"TIMED_OUT"|"CANCELLING"|"CANCELLED"|"SKIPPED_OVERLAPPING",
#'   StatusDetails = "string",
#'   StartTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   EndTime = as.POSIXct(
#'     "2015-01-01"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_maintenance_window_execution(
#'   WindowExecutionId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_maintenance_window_execution
ssm_get_maintenance_window_execution <- function(WindowExecutionId) {
  op <- new_operation(
    name = "GetMaintenanceWindowExecution",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_maintenance_window_execution_input(WindowExecutionId = WindowExecutionId)
  output <- .ssm$get_maintenance_window_execution_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_maintenance_window_execution <- ssm_get_maintenance_window_execution

#' Retrieves the details about a specific task run as part of a maintenance
#' window execution
#'
#' @description
#' Retrieves the details about a specific task run as part of a maintenance
#' window execution.
#'
#' @usage
#' ssm_get_maintenance_window_execution_task(WindowExecutionId, TaskId)
#'
#' @param WindowExecutionId &#91;required&#93; The ID of the maintenance window execution that includes the task.
#' @param TaskId &#91;required&#93; The ID of the specific task execution in the maintenance window task
#' that should be retrieved.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowExecutionId = "string",
#'   TaskExecutionId = "string",
#'   TaskArn = "string",
#'   ServiceRole = "string",
#'   Type = "RUN_COMMAND"|"AUTOMATION"|"STEP_FUNCTIONS"|"LAMBDA",
#'   TaskParameters = list(
#'     list(
#'       list(
#'         Values = list(
#'           "string"
#'         )
#'       )
#'     )
#'   ),
#'   Priority = 123,
#'   MaxConcurrency = "string",
#'   MaxErrors = "string",
#'   Status = "PENDING"|"IN_PROGRESS"|"SUCCESS"|"FAILED"|"TIMED_OUT"|"CANCELLING"|"CANCELLED"|"SKIPPED_OVERLAPPING",
#'   StatusDetails = "string",
#'   StartTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   EndTime = as.POSIXct(
#'     "2015-01-01"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_maintenance_window_execution_task(
#'   WindowExecutionId = "string",
#'   TaskId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_maintenance_window_execution_task
ssm_get_maintenance_window_execution_task <- function(WindowExecutionId, TaskId) {
  op <- new_operation(
    name = "GetMaintenanceWindowExecutionTask",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_maintenance_window_execution_task_input(WindowExecutionId = WindowExecutionId, TaskId = TaskId)
  output <- .ssm$get_maintenance_window_execution_task_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_maintenance_window_execution_task <- ssm_get_maintenance_window_execution_task

#' Retrieves information about a specific task running on a specific target
#'
#' @description
#' Retrieves information about a specific task running on a specific
#' target.
#'
#' @usage
#' ssm_get_maintenance_window_execution_task_invocation(WindowExecutionId,
#'   TaskId, InvocationId)
#'
#' @param WindowExecutionId &#91;required&#93; The ID of the maintenance window execution for which the task is a part.
#' @param TaskId &#91;required&#93; The ID of the specific task in the maintenance window task that should
#' be retrieved.
#' @param InvocationId &#91;required&#93; The invocation ID to retrieve.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowExecutionId = "string",
#'   TaskExecutionId = "string",
#'   InvocationId = "string",
#'   ExecutionId = "string",
#'   TaskType = "RUN_COMMAND"|"AUTOMATION"|"STEP_FUNCTIONS"|"LAMBDA",
#'   Parameters = "string",
#'   Status = "PENDING"|"IN_PROGRESS"|"SUCCESS"|"FAILED"|"TIMED_OUT"|"CANCELLING"|"CANCELLED"|"SKIPPED_OVERLAPPING",
#'   StatusDetails = "string",
#'   StartTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   EndTime = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   OwnerInformation = "string",
#'   WindowTargetId = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_maintenance_window_execution_task_invocation(
#'   WindowExecutionId = "string",
#'   TaskId = "string",
#'   InvocationId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_maintenance_window_execution_task_invocation
ssm_get_maintenance_window_execution_task_invocation <- function(WindowExecutionId, TaskId, InvocationId) {
  op <- new_operation(
    name = "GetMaintenanceWindowExecutionTaskInvocation",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_maintenance_window_execution_task_invocation_input(WindowExecutionId = WindowExecutionId, TaskId = TaskId, InvocationId = InvocationId)
  output <- .ssm$get_maintenance_window_execution_task_invocation_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_maintenance_window_execution_task_invocation <- ssm_get_maintenance_window_execution_task_invocation

#' Lists the tasks in a maintenance window
#'
#' @description
#' Lists the tasks in a maintenance window.
#' 
#' For maintenance window tasks without a specified target, you cannot
#' supply values for `--max-errors` and `--max-concurrency`. Instead, the
#' system inserts a placeholder value of `1`, which may be reported in the
#' response to this command. These values do not affect the running of your
#' task and can be ignored.
#'
#' @usage
#' ssm_get_maintenance_window_task(WindowId, WindowTaskId)
#'
#' @param WindowId &#91;required&#93; The maintenance window ID that includes the task to retrieve.
#' @param WindowTaskId &#91;required&#93; The maintenance window task ID to retrieve.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   WindowId = "string",
#'   WindowTaskId = "string",
#'   Targets = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   TaskArn = "string",
#'   ServiceRoleArn = "string",
#'   TaskType = "RUN_COMMAND"|"AUTOMATION"|"STEP_FUNCTIONS"|"LAMBDA",
#'   TaskParameters = list(
#'     list(
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   TaskInvocationParameters = list(
#'     RunCommand = list(
#'       Comment = "string",
#'       CloudWatchOutputConfig = list(
#'         CloudWatchLogGroupName = "string",
#'         CloudWatchOutputEnabled = TRUE|FALSE
#'       ),
#'       DocumentHash = "string",
#'       DocumentHashType = "Sha256"|"Sha1",
#'       DocumentVersion = "string",
#'       NotificationConfig = list(
#'         NotificationArn = "string",
#'         NotificationEvents = list(
#'           "All"|"InProgress"|"Success"|"TimedOut"|"Cancelled"|"Failed"
#'         ),
#'         NotificationType = "Command"|"Invocation"
#'       ),
#'       OutputS3BucketName = "string",
#'       OutputS3KeyPrefix = "string",
#'       Parameters = list(
#'         list(
#'           "string"
#'         )
#'       ),
#'       ServiceRoleArn = "string",
#'       TimeoutSeconds = 123
#'     ),
#'     Automation = list(
#'       DocumentVersion = "string",
#'       Parameters = list(
#'         list(
#'           "string"
#'         )
#'       )
#'     ),
#'     StepFunctions = list(
#'       Input = "string",
#'       Name = "string"
#'     ),
#'     Lambda = list(
#'       ClientContext = "string",
#'       Qualifier = "string",
#'       Payload = raw
#'     )
#'   ),
#'   Priority = 123,
#'   MaxConcurrency = "string",
#'   MaxErrors = "string",
#'   LoggingInfo = list(
#'     S3BucketName = "string",
#'     S3KeyPrefix = "string",
#'     S3Region = "string"
#'   ),
#'   Name = "string",
#'   Description = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_maintenance_window_task(
#'   WindowId = "string",
#'   WindowTaskId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_maintenance_window_task
ssm_get_maintenance_window_task <- function(WindowId, WindowTaskId) {
  op <- new_operation(
    name = "GetMaintenanceWindowTask",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_maintenance_window_task_input(WindowId = WindowId, WindowTaskId = WindowTaskId)
  output <- .ssm$get_maintenance_window_task_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_maintenance_window_task <- ssm_get_maintenance_window_task

#' Get information about an OpsItem by using the ID
#'
#' @description
#' Get information about an OpsItem by using the ID. You must have
#' permission in AWS Identity and Access Management (IAM) to view
#' information about an OpsItem. For more information, see [Getting started
#' with
#' OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-getting-started.html)
#' in the *AWS Systems Manager User Guide*.
#' 
#' Operations engineers and IT professionals use OpsCenter to view,
#' investigate, and remediate operational issues impacting the performance
#' and health of their AWS resources. For more information, see [AWS
#' Systems Manager
#' OpsCenter](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter.html)
#' in the *AWS Systems Manager User Guide*.
#'
#' @usage
#' ssm_get_ops_item(OpsItemId)
#'
#' @param OpsItemId &#91;required&#93; The ID of the OpsItem that you want to get.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   OpsItem = list(
#'     CreatedBy = "string",
#'     OpsItemType = "string",
#'     CreatedTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Description = "string",
#'     LastModifiedBy = "string",
#'     LastModifiedTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     Notifications = list(
#'       list(
#'         Arn = "string"
#'       )
#'     ),
#'     Priority = 123,
#'     RelatedOpsItems = list(
#'       list(
#'         OpsItemId = "string"
#'       )
#'     ),
#'     Status = "Open"|"InProgress"|"Resolved"|"Pending"|"TimedOut"|"Cancelling"|"Cancelled"|"Failed"|"CompletedWithSuccess"|"CompletedWithFailure"|"Scheduled"|"RunbookInProgress"|"PendingChangeCalendarOverride"|"ChangeCalendarOverrideApproved"|"ChangeCalendarOverrideRejected"|"PendingApproval"|"Approved"|"Rejected",
#'     OpsItemId = "string",
#'     Version = "string",
#'     Title = "string",
#'     Source = "string",
#'     OperationalData = list(
#'       list(
#'         Value = "string",
#'         Type = "SearchableString"|"String"
#'       )
#'     ),
#'     Category = "string",
#'     Severity = "string",
#'     ActualStartTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     ActualEndTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     PlannedStartTime = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     PlannedEndTime = as.POSIXct(
#'       "2015-01-01"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_ops_item(
#'   OpsItemId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_ops_item
ssm_get_ops_item <- function(OpsItemId) {
  op <- new_operation(
    name = "GetOpsItem",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_ops_item_input(OpsItemId = OpsItemId)
  output <- .ssm$get_ops_item_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_ops_item <- ssm_get_ops_item

#' View operational metadata related to an application in Application
#' Manager
#'
#' @description
#' View operational metadata related to an application in Application
#' Manager.
#'
#' @usage
#' ssm_get_ops_metadata(OpsMetadataArn, MaxResults, NextToken)
#'
#' @param OpsMetadataArn &#91;required&#93; The Amazon Resource Name (ARN) of an OpsMetadata Object to view.
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ResourceId = "string",
#'   Metadata = list(
#'     list(
#'       Value = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_ops_metadata(
#'   OpsMetadataArn = "string",
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_ops_metadata
ssm_get_ops_metadata <- function(OpsMetadataArn, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "GetOpsMetadata",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_ops_metadata_input(OpsMetadataArn = OpsMetadataArn, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$get_ops_metadata_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_ops_metadata <- ssm_get_ops_metadata

#' View a summary of OpsItems based on specified filters and aggregators
#'
#' @description
#' View a summary of OpsItems based on specified filters and aggregators.
#'
#' @usage
#' ssm_get_ops_summary(SyncName, Filters, Aggregators, ResultAttributes,
#'   NextToken, MaxResults)
#'
#' @param SyncName Specify the name of a resource data sync to get.
#' @param Filters Optional filters used to scope down the returned OpsItems.
#' @param Aggregators Optional aggregators that return counts of OpsItems based on one or more
#' expressions.
#' @param ResultAttributes The OpsItem data type to return.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#' @param MaxResults 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.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Entities = list(
#'     list(
#'       Id = "string",
#'       Data = list(
#'         list(
#'           CaptureTime = "string",
#'           Content = list(
#'             list(
#'               "string"
#'             )
#'           )
#'         )
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_ops_summary(
#'   SyncName = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       ),
#'       Type = "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"|"Exists"
#'     )
#'   ),
#'   Aggregators = list(
#'     list(
#'       AggregatorType = "string",
#'       TypeName = "string",
#'       AttributeName = "string",
#'       Values = list(
#'         "string"
#'       ),
#'       Filters = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           ),
#'           Type = "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"|"Exists"
#'         )
#'       ),
#'       Aggregators = list()
#'     )
#'   ),
#'   ResultAttributes = list(
#'     list(
#'       TypeName = "string"
#'     )
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_ops_summary
ssm_get_ops_summary <- function(SyncName = NULL, Filters = NULL, Aggregators = NULL, ResultAttributes = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "GetOpsSummary",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_ops_summary_input(SyncName = SyncName, Filters = Filters, Aggregators = Aggregators, ResultAttributes = ResultAttributes, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$get_ops_summary_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_ops_summary <- ssm_get_ops_summary

#' Get information about a parameter by using the parameter name
#'
#' @description
#' Get information about a parameter by using the parameter name. Don't
#' confuse this API action with the [`get_parameters`][ssm_get_parameters]
#' API action.
#'
#' @usage
#' ssm_get_parameter(Name, WithDecryption)
#'
#' @param Name &#91;required&#93; The name of the parameter you want to query.
#' @param WithDecryption Return decrypted values for secure string parameters. This flag is
#' ignored for String and StringList parameter types.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Parameter = list(
#'     Name = "string",
#'     Type = "String"|"StringList"|"SecureString",
#'     Value = "string",
#'     Version = 123,
#'     Selector = "string",
#'     SourceResult = "string",
#'     LastModifiedDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     ARN = "string",
#'     DataType = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_parameter(
#'   Name = "string",
#'   WithDecryption = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_parameter
ssm_get_parameter <- function(Name, WithDecryption = NULL) {
  op <- new_operation(
    name = "GetParameter",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_parameter_input(Name = Name, WithDecryption = WithDecryption)
  output <- .ssm$get_parameter_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_parameter <- ssm_get_parameter

#' Retrieves the history of all changes to a parameter
#'
#' @description
#' Retrieves the history of all changes to a parameter.
#'
#' @usage
#' ssm_get_parameter_history(Name, WithDecryption, MaxResults, NextToken)
#'
#' @param Name &#91;required&#93; The name of the parameter for which you want to review history.
#' @param WithDecryption Return decrypted values for secure string parameters. This flag is
#' ignored for String and StringList parameter types.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Parameters = list(
#'     list(
#'       Name = "string",
#'       Type = "String"|"StringList"|"SecureString",
#'       KeyId = "string",
#'       LastModifiedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastModifiedUser = "string",
#'       Description = "string",
#'       Value = "string",
#'       AllowedPattern = "string",
#'       Version = 123,
#'       Labels = list(
#'         "string"
#'       ),
#'       Tier = "Standard"|"Advanced"|"Intelligent-Tiering",
#'       Policies = list(
#'         list(
#'           PolicyText = "string",
#'           PolicyType = "string",
#'           PolicyStatus = "string"
#'         )
#'       ),
#'       DataType = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_parameter_history(
#'   Name = "string",
#'   WithDecryption = TRUE|FALSE,
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_parameter_history
ssm_get_parameter_history <- function(Name, WithDecryption = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "GetParameterHistory",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_parameter_history_input(Name = Name, WithDecryption = WithDecryption, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$get_parameter_history_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_parameter_history <- ssm_get_parameter_history

#' Get details of a parameter
#'
#' @description
#' Get details of a parameter. Don't confuse this API action with the
#' [`get_parameter`][ssm_get_parameter] API action.
#'
#' @usage
#' ssm_get_parameters(Names, WithDecryption)
#'
#' @param Names &#91;required&#93; Names of the parameters for which you want to query information.
#' @param WithDecryption Return decrypted secure string value. Return decrypted values for secure
#' string parameters. This flag is ignored for String and StringList
#' parameter types.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Parameters = list(
#'     list(
#'       Name = "string",
#'       Type = "String"|"StringList"|"SecureString",
#'       Value = "string",
#'       Version = 123,
#'       Selector = "string",
#'       SourceResult = "string",
#'       LastModifiedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ARN = "string",
#'       DataType = "string"
#'     )
#'   ),
#'   InvalidParameters = list(
#'     "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_parameters(
#'   Names = list(
#'     "string"
#'   ),
#'   WithDecryption = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_parameters
ssm_get_parameters <- function(Names, WithDecryption = NULL) {
  op <- new_operation(
    name = "GetParameters",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_parameters_input(Names = Names, WithDecryption = WithDecryption)
  output <- .ssm$get_parameters_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_parameters <- ssm_get_parameters

#' Retrieve information about one or more parameters in a specific
#' hierarchy
#'
#' @description
#' Retrieve information about one or more parameters in a specific
#' hierarchy.
#' 
#' Request results are returned on a best-effort basis. If you specify
#' `MaxResults` in the request, the response includes information up to the
#' limit specified. The number of items returned, however, can be between
#' zero and the value of `MaxResults`. If the service reaches an internal
#' limit while processing the results, it stops the operation and returns
#' the matching values up to that point and a `NextToken`. You can specify
#' the `NextToken` in a subsequent call to get the next set of results.
#'
#' @usage
#' ssm_get_parameters_by_path(Path, Recursive, ParameterFilters,
#'   WithDecryption, MaxResults, NextToken)
#'
#' @param Path &#91;required&#93; The hierarchy for the parameter. Hierarchies start with a forward slash
#' (/) and end with the parameter name. A parameter name hierarchy can have
#' a maximum of 15 levels. Here is an example of a hierarchy:
#' `/Finance/Prod/IAD/WinServ2016/license33`
#' @param Recursive Retrieve all parameters within a hierarchy.
#' 
#' If a user has access to a path, then the user can access all levels of
#' that path. For example, if a user has permission to access path `/a`,
#' then the user can also access `/a/b`. Even if a user has explicitly been
#' denied access in IAM for parameter `/a/b`, they can still call the
#' GetParametersByPath API action recursively for `/a` and view `/a/b`.
#' @param ParameterFilters Filters to limit the request results.
#' 
#' For [`get_parameters_by_path`][ssm_get_parameters_by_path], the
#' following filter `Key` names are supported: `Type`, `KeyId`, `Label`,
#' and `DataType`.
#' 
#' The following `Key` values are not supported for
#' [`get_parameters_by_path`][ssm_get_parameters_by_path]: `tag`, `Name`,
#' `Path`, and `Tier`.
#' @param WithDecryption Retrieve all parameters in a hierarchy with their value decrypted.
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Parameters = list(
#'     list(
#'       Name = "string",
#'       Type = "String"|"StringList"|"SecureString",
#'       Value = "string",
#'       Version = 123,
#'       Selector = "string",
#'       SourceResult = "string",
#'       LastModifiedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       ARN = "string",
#'       DataType = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_parameters_by_path(
#'   Path = "string",
#'   Recursive = TRUE|FALSE,
#'   ParameterFilters = list(
#'     list(
#'       Key = "string",
#'       Option = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   WithDecryption = TRUE|FALSE,
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_parameters_by_path
ssm_get_parameters_by_path <- function(Path, Recursive = NULL, ParameterFilters = NULL, WithDecryption = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "GetParametersByPath",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_parameters_by_path_input(Path = Path, Recursive = Recursive, ParameterFilters = ParameterFilters, WithDecryption = WithDecryption, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$get_parameters_by_path_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_parameters_by_path <- ssm_get_parameters_by_path

#' Retrieves information about a patch baseline
#'
#' @description
#' Retrieves information about a patch baseline.
#'
#' @usage
#' ssm_get_patch_baseline(BaselineId)
#'
#' @param BaselineId &#91;required&#93; The ID of the patch baseline to retrieve.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   BaselineId = "string",
#'   Name = "string",
#'   OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS",
#'   GlobalFilters = list(
#'     PatchFilters = list(
#'       list(
#'         Key = "ARCH"|"ADVISORY_ID"|"BUGZILLA_ID"|"PATCH_SET"|"PRODUCT"|"PRODUCT_FAMILY"|"CLASSIFICATION"|"CVE_ID"|"EPOCH"|"MSRC_SEVERITY"|"NAME"|"PATCH_ID"|"SECTION"|"PRIORITY"|"REPOSITORY"|"RELEASE"|"SEVERITY"|"SECURITY"|"VERSION",
#'         Values = list(
#'           "string"
#'         )
#'       )
#'     )
#'   ),
#'   ApprovalRules = list(
#'     PatchRules = list(
#'       list(
#'         PatchFilterGroup = list(
#'           PatchFilters = list(
#'             list(
#'               Key = "ARCH"|"ADVISORY_ID"|"BUGZILLA_ID"|"PATCH_SET"|"PRODUCT"|"PRODUCT_FAMILY"|"CLASSIFICATION"|"CVE_ID"|"EPOCH"|"MSRC_SEVERITY"|"NAME"|"PATCH_ID"|"SECTION"|"PRIORITY"|"REPOSITORY"|"RELEASE"|"SEVERITY"|"SECURITY"|"VERSION",
#'               Values = list(
#'                 "string"
#'               )
#'             )
#'           )
#'         ),
#'         ComplianceLevel = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED",
#'         ApproveAfterDays = 123,
#'         ApproveUntilDate = "string",
#'         EnableNonSecurity = TRUE|FALSE
#'       )
#'     )
#'   ),
#'   ApprovedPatches = list(
#'     "string"
#'   ),
#'   ApprovedPatchesComplianceLevel = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED",
#'   ApprovedPatchesEnableNonSecurity = TRUE|FALSE,
#'   RejectedPatches = list(
#'     "string"
#'   ),
#'   RejectedPatchesAction = "ALLOW_AS_DEPENDENCY"|"BLOCK",
#'   PatchGroups = list(
#'     "string"
#'   ),
#'   CreatedDate = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   ModifiedDate = as.POSIXct(
#'     "2015-01-01"
#'   ),
#'   Description = "string",
#'   Sources = list(
#'     list(
#'       Name = "string",
#'       Products = list(
#'         "string"
#'       ),
#'       Configuration = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_patch_baseline(
#'   BaselineId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_patch_baseline
ssm_get_patch_baseline <- function(BaselineId) {
  op <- new_operation(
    name = "GetPatchBaseline",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_patch_baseline_input(BaselineId = BaselineId)
  output <- .ssm$get_patch_baseline_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_patch_baseline <- ssm_get_patch_baseline

#' Retrieves the patch baseline that should be used for the specified patch
#' group
#'
#' @description
#' Retrieves the patch baseline that should be used for the specified patch
#' group.
#'
#' @usage
#' ssm_get_patch_baseline_for_patch_group(PatchGroup, OperatingSystem)
#'
#' @param PatchGroup &#91;required&#93; The name of the patch group whose patch baseline should be retrieved.
#' @param OperatingSystem Returns he operating system rule specified for patch groups using the
#' patch baseline.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   BaselineId = "string",
#'   PatchGroup = "string",
#'   OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_patch_baseline_for_patch_group(
#'   PatchGroup = "string",
#'   OperatingSystem = "WINDOWS"|"AMAZON_LINUX"|"AMAZON_LINUX_2"|"UBUNTU"|"REDHAT_ENTERPRISE_LINUX"|"SUSE"|"CENTOS"|"ORACLE_LINUX"|"DEBIAN"|"MACOS"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_patch_baseline_for_patch_group
ssm_get_patch_baseline_for_patch_group <- function(PatchGroup, OperatingSystem = NULL) {
  op <- new_operation(
    name = "GetPatchBaselineForPatchGroup",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_patch_baseline_for_patch_group_input(PatchGroup = PatchGroup, OperatingSystem = OperatingSystem)
  output <- .ssm$get_patch_baseline_for_patch_group_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_patch_baseline_for_patch_group <- ssm_get_patch_baseline_for_patch_group

#' ServiceSetting is an account-level setting for an AWS service
#'
#' @description
#' `ServiceSetting` is an account-level setting for an AWS service. This
#' setting defines how a user interacts with or uses a service or a feature
#' of a service. For example, if an AWS service charges money to the
#' account based on feature or service usage, then the AWS service team
#' might create a default setting of "false". This means the user can't use
#' this feature unless they change the setting to "true" and intentionally
#' opt in for a paid feature.
#' 
#' Services map a `SettingId` object to a setting value. AWS services teams
#' define the default value for a `SettingId`. You can't create a new
#' `SettingId`, but you can overwrite the default value if you have the
#' `ssm:UpdateServiceSetting` permission for the setting. Use the
#' [`update_service_setting`][ssm_update_service_setting] API action to
#' change the default setting. Or use the
#' [`reset_service_setting`][ssm_reset_service_setting] to change the value
#' back to the original value defined by the AWS service team.
#' 
#' Query the current service setting for the account.
#'
#' @usage
#' ssm_get_service_setting(SettingId)
#'
#' @param SettingId &#91;required&#93; The ID of the service setting to get. The setting ID can be
#' `/ssm/parameter-store/default-parameter-tier`,
#' `/ssm/parameter-store/high-throughput-enabled`, or
#' `/ssm/managed-instance/activation-tier`.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ServiceSetting = list(
#'     SettingId = "string",
#'     SettingValue = "string",
#'     LastModifiedDate = as.POSIXct(
#'       "2015-01-01"
#'     ),
#'     LastModifiedUser = "string",
#'     ARN = "string",
#'     Status = "string"
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$get_service_setting(
#'   SettingId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_get_service_setting
ssm_get_service_setting <- function(SettingId) {
  op <- new_operation(
    name = "GetServiceSetting",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$get_service_setting_input(SettingId = SettingId)
  output <- .ssm$get_service_setting_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$get_service_setting <- ssm_get_service_setting

#' A parameter label is a user-defined alias to help you manage different
#' versions of a parameter
#'
#' @description
#' A parameter label is a user-defined alias to help you manage different
#' versions of a parameter. When you modify a parameter, Systems Manager
#' automatically saves a new version and increments the version number by
#' one. A label can help you remember the purpose of a parameter when there
#' are multiple versions.
#' 
#' Parameter labels have the following requirements and restrictions.
#' 
#' -   A version of a parameter can have a maximum of 10 labels.
#' 
#' -   You can't attach the same label to different versions of the same
#'     parameter. For example, if version 1 has the label Production, then
#'     you can't attach Production to version 2.
#' 
#' -   You can move a label from one version of a parameter to another.
#' 
#' -   You can't create a label when you create a new parameter. You must
#'     attach a label to a specific version of a parameter.
#' 
#' -   You can't delete a parameter label. If you no longer want to use a
#'     parameter label, then you must move it to a different version of a
#'     parameter.
#' 
#' -   A label can have a maximum of 100 characters.
#' 
#' -   Labels can contain letters (case sensitive), numbers, periods (.),
#'     hyphens (-), or underscores (_).
#' 
#' -   Labels can't begin with a number, "aws," or "ssm" (not case
#'     sensitive). If a label fails to meet these requirements, then the
#'     label is not associated with a parameter and the system displays it
#'     in the list of InvalidLabels.
#'
#' @usage
#' ssm_label_parameter_version(Name, ParameterVersion, Labels)
#'
#' @param Name &#91;required&#93; The parameter name on which you want to attach one or more labels.
#' @param ParameterVersion The specific version of the parameter on which you want to attach one or
#' more labels. If no version is specified, the system attaches the label
#' to the latest version.
#' @param Labels &#91;required&#93; One or more labels to attach to the specified parameter version.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   InvalidLabels = list(
#'     "string"
#'   ),
#'   ParameterVersion = 123
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$label_parameter_version(
#'   Name = "string",
#'   ParameterVersion = 123,
#'   Labels = list(
#'     "string"
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_label_parameter_version
ssm_label_parameter_version <- function(Name, ParameterVersion = NULL, Labels) {
  op <- new_operation(
    name = "LabelParameterVersion",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$label_parameter_version_input(Name = Name, ParameterVersion = ParameterVersion, Labels = Labels)
  output <- .ssm$label_parameter_version_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$label_parameter_version <- ssm_label_parameter_version

#' Retrieves all versions of an association for a specific association ID
#'
#' @description
#' Retrieves all versions of an association for a specific association ID.
#'
#' @usage
#' ssm_list_association_versions(AssociationId, MaxResults, NextToken)
#'
#' @param AssociationId &#91;required&#93; The association ID for which you want to view all versions.
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   AssociationVersions = list(
#'     list(
#'       AssociationId = "string",
#'       AssociationVersion = "string",
#'       CreatedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Name = "string",
#'       DocumentVersion = "string",
#'       Parameters = list(
#'         list(
#'           "string"
#'         )
#'       ),
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       ScheduleExpression = "string",
#'       OutputLocation = list(
#'         S3Location = list(
#'           OutputS3Region = "string",
#'           OutputS3BucketName = "string",
#'           OutputS3KeyPrefix = "string"
#'         )
#'       ),
#'       AssociationName = "string",
#'       MaxErrors = "string",
#'       MaxConcurrency = "string",
#'       ComplianceSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"UNSPECIFIED",
#'       SyncCompliance = "AUTO"|"MANUAL",
#'       ApplyOnlyAtCronInterval = TRUE|FALSE,
#'       TargetLocations = list(
#'         list(
#'           Accounts = list(
#'             "string"
#'           ),
#'           Regions = list(
#'             "string"
#'           ),
#'           TargetLocationMaxConcurrency = "string",
#'           TargetLocationMaxErrors = "string",
#'           ExecutionRoleName = "string"
#'         )
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_association_versions(
#'   AssociationId = "string",
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_association_versions
ssm_list_association_versions <- function(AssociationId, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "ListAssociationVersions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_association_versions_input(AssociationId = AssociationId, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$list_association_versions_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_association_versions <- ssm_list_association_versions

#' Returns all State Manager associations in the current AWS account and
#' Region
#'
#' @description
#' Returns all State Manager associations in the current AWS account and
#' Region. You can limit the results to a specific State Manager
#' association document or instance by specifying a filter.
#'
#' @usage
#' ssm_list_associations(AssociationFilterList, MaxResults, NextToken)
#'
#' @param AssociationFilterList One or more filters. Use a filter to return a more specific list of
#' results.
#' 
#' Filtering associations using the `InstanceID` attribute only returns
#' legacy associations created using the `InstanceID` attribute.
#' Associations targeting the instance that are part of the Target
#' Attributes `ResourceGroup` or `Tags` are not returned.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Associations = list(
#'     list(
#'       Name = "string",
#'       InstanceId = "string",
#'       AssociationId = "string",
#'       AssociationVersion = "string",
#'       DocumentVersion = "string",
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       LastExecutionDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Overview = list(
#'         Status = "string",
#'         DetailedStatus = "string",
#'         AssociationStatusAggregatedCount = list(
#'           123
#'         )
#'       ),
#'       ScheduleExpression = "string",
#'       AssociationName = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_associations(
#'   AssociationFilterList = list(
#'     list(
#'       key = "InstanceId"|"Name"|"AssociationId"|"AssociationStatusName"|"LastExecutedBefore"|"LastExecutedAfter"|"AssociationName"|"ResourceGroupName",
#'       value = "string"
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_associations
ssm_list_associations <- function(AssociationFilterList = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "ListAssociations",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_associations_input(AssociationFilterList = AssociationFilterList, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$list_associations_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_associations <- ssm_list_associations

#' An invocation is copy of a command sent to a specific instance
#'
#' @description
#' An invocation is copy of a command sent to a specific instance. A
#' command can apply to one or more instances. A command invocation applies
#' to one instance. For example, if a user runs SendCommand against three
#' instances, then a command invocation is created for each requested
#' instance ID. ListCommandInvocations provide status about command
#' execution.
#'
#' @usage
#' ssm_list_command_invocations(CommandId, InstanceId, MaxResults,
#'   NextToken, Filters, Details)
#'
#' @param CommandId (Optional) The invocations for a specific command ID.
#' @param InstanceId (Optional) The command execution details for a specific instance ID.
#' @param MaxResults (Optional) 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.
#' @param NextToken (Optional) The token for the next set of items to return. (You received
#' this token from a previous call.)
#' @param Filters (Optional) One or more filters. Use a filter to return a more specific
#' list of results.
#' @param Details (Optional) If set this returns the response of the command executions
#' and any command output. By default this is set to False.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   CommandInvocations = list(
#'     list(
#'       CommandId = "string",
#'       InstanceId = "string",
#'       InstanceName = "string",
#'       Comment = "string",
#'       DocumentName = "string",
#'       DocumentVersion = "string",
#'       RequestedDateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Status = "Pending"|"InProgress"|"Delayed"|"Success"|"Cancelled"|"TimedOut"|"Failed"|"Cancelling",
#'       StatusDetails = "string",
#'       TraceOutput = "string",
#'       StandardOutputUrl = "string",
#'       StandardErrorUrl = "string",
#'       CommandPlugins = list(
#'         list(
#'           Name = "string",
#'           Status = "Pending"|"InProgress"|"Success"|"TimedOut"|"Cancelled"|"Failed",
#'           StatusDetails = "string",
#'           ResponseCode = 123,
#'           ResponseStartDateTime = as.POSIXct(
#'             "2015-01-01"
#'           ),
#'           ResponseFinishDateTime = as.POSIXct(
#'             "2015-01-01"
#'           ),
#'           Output = "string",
#'           StandardOutputUrl = "string",
#'           StandardErrorUrl = "string",
#'           OutputS3Region = "string",
#'           OutputS3BucketName = "string",
#'           OutputS3KeyPrefix = "string"
#'         )
#'       ),
#'       ServiceRole = "string",
#'       NotificationConfig = list(
#'         NotificationArn = "string",
#'         NotificationEvents = list(
#'           "All"|"InProgress"|"Success"|"TimedOut"|"Cancelled"|"Failed"
#'         ),
#'         NotificationType = "Command"|"Invocation"
#'       ),
#'       CloudWatchOutputConfig = list(
#'         CloudWatchLogGroupName = "string",
#'         CloudWatchOutputEnabled = TRUE|FALSE
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_command_invocations(
#'   CommandId = "string",
#'   InstanceId = "string",
#'   MaxResults = 123,
#'   NextToken = "string",
#'   Filters = list(
#'     list(
#'       key = "InvokedAfter"|"InvokedBefore"|"Status"|"ExecutionStage"|"DocumentName",
#'       value = "string"
#'     )
#'   ),
#'   Details = TRUE|FALSE
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_command_invocations
ssm_list_command_invocations <- function(CommandId = NULL, InstanceId = NULL, MaxResults = NULL, NextToken = NULL, Filters = NULL, Details = NULL) {
  op <- new_operation(
    name = "ListCommandInvocations",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_command_invocations_input(CommandId = CommandId, InstanceId = InstanceId, MaxResults = MaxResults, NextToken = NextToken, Filters = Filters, Details = Details)
  output <- .ssm$list_command_invocations_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_command_invocations <- ssm_list_command_invocations

#' Lists the commands requested by users of the AWS account
#'
#' @description
#' Lists the commands requested by users of the AWS account.
#'
#' @usage
#' ssm_list_commands(CommandId, InstanceId, MaxResults, NextToken, Filters)
#'
#' @param CommandId (Optional) If provided, lists only the specified command.
#' @param InstanceId (Optional) Lists commands issued against this instance ID.
#' 
#' You can't specify an instance ID in the same command that you specify
#' `Status` = `Pending`. This is because the command has not reached the
#' instance yet.
#' @param MaxResults (Optional) 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.
#' @param NextToken (Optional) The token for the next set of items to return. (You received
#' this token from a previous call.)
#' @param Filters (Optional) One or more filters. Use a filter to return a more specific
#' list of results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Commands = list(
#'     list(
#'       CommandId = "string",
#'       DocumentName = "string",
#'       DocumentVersion = "string",
#'       Comment = "string",
#'       ExpiresAfter = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Parameters = list(
#'         list(
#'           "string"
#'         )
#'       ),
#'       InstanceIds = list(
#'         "string"
#'       ),
#'       Targets = list(
#'         list(
#'           Key = "string",
#'           Values = list(
#'             "string"
#'           )
#'         )
#'       ),
#'       RequestedDateTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       Status = "Pending"|"InProgress"|"Success"|"Cancelled"|"Failed"|"TimedOut"|"Cancelling",
#'       StatusDetails = "string",
#'       OutputS3Region = "string",
#'       OutputS3BucketName = "string",
#'       OutputS3KeyPrefix = "string",
#'       MaxConcurrency = "string",
#'       MaxErrors = "string",
#'       TargetCount = 123,
#'       CompletedCount = 123,
#'       ErrorCount = 123,
#'       DeliveryTimedOutCount = 123,
#'       ServiceRole = "string",
#'       NotificationConfig = list(
#'         NotificationArn = "string",
#'         NotificationEvents = list(
#'           "All"|"InProgress"|"Success"|"TimedOut"|"Cancelled"|"Failed"
#'         ),
#'         NotificationType = "Command"|"Invocation"
#'       ),
#'       CloudWatchOutputConfig = list(
#'         CloudWatchLogGroupName = "string",
#'         CloudWatchOutputEnabled = TRUE|FALSE
#'       ),
#'       TimeoutSeconds = 123
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_commands(
#'   CommandId = "string",
#'   InstanceId = "string",
#'   MaxResults = 123,
#'   NextToken = "string",
#'   Filters = list(
#'     list(
#'       key = "InvokedAfter"|"InvokedBefore"|"Status"|"ExecutionStage"|"DocumentName",
#'       value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_commands
ssm_list_commands <- function(CommandId = NULL, InstanceId = NULL, MaxResults = NULL, NextToken = NULL, Filters = NULL) {
  op <- new_operation(
    name = "ListCommands",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_commands_input(CommandId = CommandId, InstanceId = InstanceId, MaxResults = MaxResults, NextToken = NextToken, Filters = Filters)
  output <- .ssm$list_commands_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_commands <- ssm_list_commands

#' For a specified resource ID, this API action returns a list of
#' compliance statuses for different resource types
#'
#' @description
#' For a specified resource ID, this API action returns a list of
#' compliance statuses for different resource types. Currently, you can
#' only specify one resource ID per call. List results depend on the
#' criteria specified in the filter.
#'
#' @usage
#' ssm_list_compliance_items(Filters, ResourceIds, ResourceTypes,
#'   NextToken, MaxResults)
#'
#' @param Filters One or more compliance filters. Use a filter to return a more specific
#' list of results.
#' @param ResourceIds The ID for the resources from which to get compliance information.
#' Currently, you can only specify one resource ID.
#' @param ResourceTypes The type of resource from which to get compliance information.
#' Currently, the only supported resource type is `ManagedInstance`.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#' @param MaxResults 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.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ComplianceItems = list(
#'     list(
#'       ComplianceType = "string",
#'       ResourceType = "string",
#'       ResourceId = "string",
#'       Id = "string",
#'       Title = "string",
#'       Status = "COMPLIANT"|"NON_COMPLIANT",
#'       Severity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED",
#'       ExecutionSummary = list(
#'         ExecutionTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         ExecutionId = "string",
#'         ExecutionType = "string"
#'       ),
#'       Details = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_compliance_items(
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       ),
#'       Type = "EQUAL"|"NOT_EQUAL"|"BEGIN_WITH"|"LESS_THAN"|"GREATER_THAN"
#'     )
#'   ),
#'   ResourceIds = list(
#'     "string"
#'   ),
#'   ResourceTypes = list(
#'     "string"
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_compliance_items
ssm_list_compliance_items <- function(Filters = NULL, ResourceIds = NULL, ResourceTypes = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListComplianceItems",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_compliance_items_input(Filters = Filters, ResourceIds = ResourceIds, ResourceTypes = ResourceTypes, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$list_compliance_items_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_compliance_items <- ssm_list_compliance_items

#' Returns a summary count of compliant and non-compliant resources for a
#' compliance type
#'
#' @description
#' Returns a summary count of compliant and non-compliant resources for a
#' compliance type. For example, this call can return State Manager
#' associations, patches, or custom compliance types according to the
#' filter criteria that you specify.
#'
#' @usage
#' ssm_list_compliance_summaries(Filters, NextToken, MaxResults)
#'
#' @param Filters One or more compliance or inventory filters. Use a filter to return a
#' more specific list of results.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#' @param MaxResults The maximum number of items to return for this call. Currently, you can
#' specify null or 50. The call also returns a token that you can specify
#' in a subsequent call to get the next set of results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ComplianceSummaryItems = list(
#'     list(
#'       ComplianceType = "string",
#'       CompliantSummary = list(
#'         CompliantCount = 123,
#'         SeveritySummary = list(
#'           CriticalCount = 123,
#'           HighCount = 123,
#'           MediumCount = 123,
#'           LowCount = 123,
#'           InformationalCount = 123,
#'           UnspecifiedCount = 123
#'         )
#'       ),
#'       NonCompliantSummary = list(
#'         NonCompliantCount = 123,
#'         SeveritySummary = list(
#'           CriticalCount = 123,
#'           HighCount = 123,
#'           MediumCount = 123,
#'           LowCount = 123,
#'           InformationalCount = 123,
#'           UnspecifiedCount = 123
#'         )
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_compliance_summaries(
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       ),
#'       Type = "EQUAL"|"NOT_EQUAL"|"BEGIN_WITH"|"LESS_THAN"|"GREATER_THAN"
#'     )
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_compliance_summaries
ssm_list_compliance_summaries <- function(Filters = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListComplianceSummaries",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_compliance_summaries_input(Filters = Filters, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$list_compliance_summaries_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_compliance_summaries <- ssm_list_compliance_summaries

#' Information about approval reviews for a version of an SSM document
#'
#' @description
#' Information about approval reviews for a version of an SSM document.
#'
#' @usage
#' ssm_list_document_metadata_history(Name, DocumentVersion, Metadata,
#'   NextToken, MaxResults)
#'
#' @param Name &#91;required&#93; The name of the document.
#' @param DocumentVersion The version of the document.
#' @param Metadata &#91;required&#93; The type of data for which details are being requested. Currently, the
#' only supported value is `DocumentReviews`.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param MaxResults 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.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   Name = "string",
#'   DocumentVersion = "string",
#'   Author = "string",
#'   Metadata = list(
#'     ReviewerResponse = list(
#'       list(
#'         CreateTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         UpdatedTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         ReviewStatus = "APPROVED"|"NOT_REVIEWED"|"PENDING"|"REJECTED",
#'         Comment = list(
#'           list(
#'             Type = "Comment",
#'             Content = "string"
#'           )
#'         ),
#'         Reviewer = "string"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_document_metadata_history(
#'   Name = "string",
#'   DocumentVersion = "string",
#'   Metadata = "DocumentReviews",
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_document_metadata_history
ssm_list_document_metadata_history <- function(Name, DocumentVersion = NULL, Metadata, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListDocumentMetadataHistory",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_document_metadata_history_input(Name = Name, DocumentVersion = DocumentVersion, Metadata = Metadata, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$list_document_metadata_history_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_document_metadata_history <- ssm_list_document_metadata_history

#' List all versions for a document
#'
#' @description
#' List all versions for a document.
#'
#' @usage
#' ssm_list_document_versions(Name, MaxResults, NextToken)
#'
#' @param Name &#91;required&#93; The name of the document. You can specify an Amazon Resource Name (ARN).
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DocumentVersions = list(
#'     list(
#'       Name = "string",
#'       DocumentVersion = "string",
#'       VersionName = "string",
#'       CreatedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       IsDefaultVersion = TRUE|FALSE,
#'       DocumentFormat = "YAML"|"JSON"|"TEXT",
#'       Status = "Creating"|"Active"|"Updating"|"Deleting"|"Failed",
#'       StatusInformation = "string",
#'       ReviewStatus = "APPROVED"|"NOT_REVIEWED"|"PENDING"|"REJECTED"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_document_versions(
#'   Name = "string",
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_document_versions
ssm_list_document_versions <- function(Name, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "ListDocumentVersions",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_document_versions_input(Name = Name, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$list_document_versions_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_document_versions <- ssm_list_document_versions

#' Returns all Systems Manager (SSM) documents in the current AWS account
#' and Region
#'
#' @description
#' Returns all Systems Manager (SSM) documents in the current AWS account
#' and Region. You can limit the results of this request by using a filter.
#'
#' @usage
#' ssm_list_documents(DocumentFilterList, Filters, MaxResults, NextToken)
#'
#' @param DocumentFilterList This data type is deprecated. Instead, use `Filters`.
#' @param Filters One or more DocumentKeyValuesFilter objects. Use a filter to return a
#' more specific list of results. For keys, you can specify one or more
#' key-value pair tags that have been applied to a document. Other valid
#' keys include `Owner`, `Name`, `PlatformTypes`, `DocumentType`, and
#' `TargetType`. For example, to return documents you own use
#' `Key=Owner,Values=Self`. To specify a custom key-value pair, use the
#' format `Key=tag:tagName,Values=valueName`.
#' @param MaxResults 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.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   DocumentIdentifiers = list(
#'     list(
#'       Name = "string",
#'       Owner = "string",
#'       VersionName = "string",
#'       PlatformTypes = list(
#'         "Windows"|"Linux"
#'       ),
#'       DocumentVersion = "string",
#'       DocumentType = "Command"|"Policy"|"Automation"|"Session"|"Package"|"ApplicationConfiguration"|"ApplicationConfigurationSchema"|"DeploymentStrategy"|"ChangeCalendar"|"Automation.ChangeTemplate",
#'       SchemaVersion = "string",
#'       DocumentFormat = "YAML"|"JSON"|"TEXT",
#'       TargetType = "string",
#'       Tags = list(
#'         list(
#'           Key = "string",
#'           Value = "string"
#'         )
#'       ),
#'       Requires = list(
#'         list(
#'           Name = "string",
#'           Version = "string"
#'         )
#'       ),
#'       ReviewStatus = "APPROVED"|"NOT_REVIEWED"|"PENDING"|"REJECTED",
#'       Author = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_documents(
#'   DocumentFilterList = list(
#'     list(
#'       key = "Name"|"Owner"|"PlatformTypes"|"DocumentType",
#'       value = "string"
#'     )
#'   ),
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_documents
ssm_list_documents <- function(DocumentFilterList = NULL, Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "ListDocuments",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_documents_input(DocumentFilterList = DocumentFilterList, Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$list_documents_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_documents <- ssm_list_documents

#' A list of inventory items returned by the request
#'
#' @description
#' A list of inventory items returned by the request.
#'
#' @usage
#' ssm_list_inventory_entries(InstanceId, TypeName, Filters, NextToken,
#'   MaxResults)
#'
#' @param InstanceId &#91;required&#93; The instance ID for which you want inventory information.
#' @param TypeName &#91;required&#93; The type of inventory item for which you want information.
#' @param Filters One or more filters. Use a filter to return a more specific list of
#' results.
#' @param NextToken The token for the next set of items to return. (You received this token
#' from a previous call.)
#' @param MaxResults 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.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   TypeName = "string",
#'   InstanceId = "string",
#'   SchemaVersion = "string",
#'   CaptureTime = "string",
#'   Entries = list(
#'     list(
#'       "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_inventory_entries(
#'   InstanceId = "string",
#'   TypeName = "string",
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       ),
#'       Type = "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"|"Exists"
#'     )
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_inventory_entries
ssm_list_inventory_entries <- function(InstanceId, TypeName, Filters = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListInventoryEntries",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_inventory_entries_input(InstanceId = InstanceId, TypeName = TypeName, Filters = Filters, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$list_inventory_entries_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_inventory_entries <- ssm_list_inventory_entries

#' Returns a list of all OpsItem events in the current AWS account and
#' Region
#'
#' @description
#' Returns a list of all OpsItem events in the current AWS account and
#' Region. You can limit the results to events associated with specific
#' OpsItems by specifying a filter.
#'
#' @usage
#' ssm_list_ops_item_events(Filters, MaxResults, NextToken)
#'
#' @param Filters One or more OpsItem filters. Use a filter to return a more specific list
#' of results.
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   NextToken = "string",
#'   Summaries = list(
#'     list(
#'       OpsItemId = "string",
#'       EventId = "string",
#'       Source = "string",
#'       DetailType = "string",
#'       Detail = "string",
#'       CreatedBy = list(
#'         Arn = "string"
#'       ),
#'       CreatedTime = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_ops_item_events(
#'   Filters = list(
#'     list(
#'       Key = "OpsItemId",
#'       Values = list(
#'         "string"
#'       ),
#'       Operator = "Equal"
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_ops_item_events
ssm_list_ops_item_events <- function(Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "ListOpsItemEvents",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_ops_item_events_input(Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$list_ops_item_events_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_ops_item_events <- ssm_list_ops_item_events

#' Systems Manager calls this API action when displaying all Application
#' Manager OpsMetadata objects or blobs
#'
#' @description
#' Systems Manager calls this API action when displaying all Application
#' Manager OpsMetadata objects or blobs.
#'
#' @usage
#' ssm_list_ops_metadata(Filters, MaxResults, NextToken)
#'
#' @param Filters One or more filters to limit the number of OpsMetadata objects returned
#' by the call.
#' @param MaxResults 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.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   OpsMetadataList = list(
#'     list(
#'       ResourceId = "string",
#'       OpsMetadataArn = "string",
#'       LastModifiedDate = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastModifiedUser = "string",
#'       CreationDate = as.POSIXct(
#'         "2015-01-01"
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_ops_metadata(
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       )
#'     )
#'   ),
#'   MaxResults = 123,
#'   NextToken = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_ops_metadata
ssm_list_ops_metadata <- function(Filters = NULL, MaxResults = NULL, NextToken = NULL) {
  op <- new_operation(
    name = "ListOpsMetadata",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_ops_metadata_input(Filters = Filters, MaxResults = MaxResults, NextToken = NextToken)
  output <- .ssm$list_ops_metadata_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_ops_metadata <- ssm_list_ops_metadata

#' Returns a resource-level summary count
#'
#' @description
#' Returns a resource-level summary count. The summary includes information
#' about compliant and non-compliant statuses and detailed compliance-item
#' severity counts, according to the filter criteria you specify.
#'
#' @usage
#' ssm_list_resource_compliance_summaries(Filters, NextToken, MaxResults)
#'
#' @param Filters One or more filters. Use a filter to return a more specific list of
#' results.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#' @param MaxResults 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.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ResourceComplianceSummaryItems = list(
#'     list(
#'       ComplianceType = "string",
#'       ResourceType = "string",
#'       ResourceId = "string",
#'       Status = "COMPLIANT"|"NON_COMPLIANT",
#'       OverallSeverity = "CRITICAL"|"HIGH"|"MEDIUM"|"LOW"|"INFORMATIONAL"|"UNSPECIFIED",
#'       ExecutionSummary = list(
#'         ExecutionTime = as.POSIXct(
#'           "2015-01-01"
#'         ),
#'         ExecutionId = "string",
#'         ExecutionType = "string"
#'       ),
#'       CompliantSummary = list(
#'         CompliantCount = 123,
#'         SeveritySummary = list(
#'           CriticalCount = 123,
#'           HighCount = 123,
#'           MediumCount = 123,
#'           LowCount = 123,
#'           InformationalCount = 123,
#'           UnspecifiedCount = 123
#'         )
#'       ),
#'       NonCompliantSummary = list(
#'         NonCompliantCount = 123,
#'         SeveritySummary = list(
#'           CriticalCount = 123,
#'           HighCount = 123,
#'           MediumCount = 123,
#'           LowCount = 123,
#'           InformationalCount = 123,
#'           UnspecifiedCount = 123
#'         )
#'       )
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_resource_compliance_summaries(
#'   Filters = list(
#'     list(
#'       Key = "string",
#'       Values = list(
#'         "string"
#'       ),
#'       Type = "EQUAL"|"NOT_EQUAL"|"BEGIN_WITH"|"LESS_THAN"|"GREATER_THAN"
#'     )
#'   ),
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_resource_compliance_summaries
ssm_list_resource_compliance_summaries <- function(Filters = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListResourceComplianceSummaries",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_resource_compliance_summaries_input(Filters = Filters, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$list_resource_compliance_summaries_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_resource_compliance_summaries <- ssm_list_resource_compliance_summaries

#' Lists your resource data sync configurations
#'
#' @description
#' Lists your resource data sync configurations. Includes information about
#' the last time a sync attempted to start, the last sync status, and the
#' last time a sync successfully completed.
#' 
#' The number of sync configurations might be too large to return using a
#' single call to [`list_resource_data_sync`][ssm_list_resource_data_sync].
#' You can limit the number of sync configurations returned by using the
#' `MaxResults` parameter. To determine whether there are more sync
#' configurations to list, check the value of `NextToken` in the output. If
#' there are more sync configurations to list, you can request them by
#' specifying the `NextToken` returned in the call to the parameter of a
#' subsequent call.
#'
#' @usage
#' ssm_list_resource_data_sync(SyncType, NextToken, MaxResults)
#'
#' @param SyncType View a list of resource data syncs according to the sync type. Specify
#' `SyncToDestination` to view resource data syncs that synchronize data to
#' an Amazon S3 bucket. Specify `SyncFromSource` to view resource data
#' syncs from AWS Organizations or from multiple AWS Regions.
#' @param NextToken A token to start the list. Use this token to get the next set of
#' results.
#' @param MaxResults 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.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   ResourceDataSyncItems = list(
#'     list(
#'       SyncName = "string",
#'       SyncType = "string",
#'       SyncSource = list(
#'         SourceType = "string",
#'         AwsOrganizationsSource = list(
#'           OrganizationSourceType = "string",
#'           OrganizationalUnits = list(
#'             list(
#'               OrganizationalUnitId = "string"
#'             )
#'           )
#'         ),
#'         SourceRegions = list(
#'           "string"
#'         ),
#'         IncludeFutureRegions = TRUE|FALSE,
#'         State = "string"
#'       ),
#'       S3Destination = list(
#'         BucketName = "string",
#'         Prefix = "string",
#'         SyncFormat = "JsonSerDe",
#'         Region = "string",
#'         AWSKMSKeyARN = "string",
#'         DestinationDataSharing = list(
#'           DestinationDataSharingType = "string"
#'         )
#'       ),
#'       LastSyncTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastSuccessfulSyncTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       SyncLastModifiedTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastStatus = "Successful"|"Failed"|"InProgress",
#'       SyncCreatedTime = as.POSIXct(
#'         "2015-01-01"
#'       ),
#'       LastSyncStatusMessage = "string"
#'     )
#'   ),
#'   NextToken = "string"
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_resource_data_sync(
#'   SyncType = "string",
#'   NextToken = "string",
#'   MaxResults = 123
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_resource_data_sync
ssm_list_resource_data_sync <- function(SyncType = NULL, NextToken = NULL, MaxResults = NULL) {
  op <- new_operation(
    name = "ListResourceDataSync",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_resource_data_sync_input(SyncType = SyncType, NextToken = NextToken, MaxResults = MaxResults)
  output <- .ssm$list_resource_data_sync_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_resource_data_sync <- ssm_list_resource_data_sync

#' Returns a list of the tags assigned to the specified resource
#'
#' @description
#' Returns a list of the tags assigned to the specified resource.
#'
#' @usage
#' ssm_list_tags_for_resource(ResourceType, ResourceId)
#'
#' @param ResourceType &#91;required&#93; Returns a list of tags for a specific resource type.
#' @param ResourceId &#91;required&#93; The resource ID for which you want to see a list of tags.
#'
#' @return
#' A list with the following syntax:
#' ```
#' list(
#'   TagList = list(
#'     list(
#'       Key = "string",
#'       Value = "string"
#'     )
#'   )
#' )
#' ```
#'
#' @section Request syntax:
#' ```
#' svc$list_tags_for_resource(
#'   ResourceType = "Document"|"ManagedInstance"|"MaintenanceWindow"|"Parameter"|"PatchBaseline"|"OpsItem",
#'   ResourceId = "string"
#' )
#' ```
#'
#' @keywords internal
#'
#' @rdname ssm_list_tags_for_resource
ssm_list_tags_for_resource <- function(ResourceType, ResourceId) {
  op <- new_operation(
    name = "ListTagsForResource",
    http_method = "POST",
    http_path = "/",
    paginator = list()
  )
  input <- .ssm$list_tags_for_resource_input(ResourceType = ResourceType, ResourceId = ResourceId)
  output <- .ssm$list_tags_for_resource_output()
  config <- get_config()
  svc <- .ssm$service(config)
  request <- new_request(svc, op, input, output)
  response <- send_request(request)
  return(response)
}
.ssm$operations$list_tags_for_resource <- ssm_list_tags_for_resource

#' Shares a Systems Manager document publicly or privately
#'
#' @description
#' Shares a Systems Manager document publicly or privately. If you share a
#' document privately, you must specify the AWS user account IDs for those
#' people who can use the document. If you share a document publicly, you
#' must specify *All* as the account ID.
#'
#' @usage
#' ssm_modify_document_permission(Name, PermissionType, AccountIdsToAdd,
#'   AccountIdsToRemove, SharedDocumentVersion)