# This file is auto-generated by AWS.jl
using AWS
using AWS.AWSServices: ssm_quicksetup
using AWS.Compat
using AWS.UUIDs

"""
    create_configuration_manager(configuration_definitions)
    create_configuration_manager(configuration_definitions, params::Dict{String,<:Any})

Creates a Quick Setup configuration manager resource. This object is a collection of
desired state configurations for multiple configuration definitions and summaries
describing the deployments of those definitions.

# Arguments
- `configuration_definitions`: The definition of the Quick Setup configuration that the
  configuration manager deploys.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Description"`: A description of the configuration manager.
- `"Name"`: A name for the configuration manager.
- `"Tags"`: Key-value pairs of metadata to assign to the configuration manager.
"""
function create_configuration_manager end

function create_configuration_manager(
    ConfigurationDefinitions; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "POST",
        "/configurationManager",
        Dict{String,Any}("ConfigurationDefinitions" => ConfigurationDefinitions);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function create_configuration_manager(
    ConfigurationDefinitions,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return ssm_quicksetup(
        "POST",
        "/configurationManager",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("ConfigurationDefinitions" => ConfigurationDefinitions),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_configuration_manager(manager_arn)
    delete_configuration_manager(manager_arn, params::Dict{String,<:Any})

Deletes a configuration manager.

# Arguments
- `manager_arn`: The ID of the configuration manager.

"""
function delete_configuration_manager end

function delete_configuration_manager(
    ManagerArn; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "DELETE",
        "/configurationManager/$(ManagerArn)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function delete_configuration_manager(
    ManagerArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return ssm_quicksetup(
        "DELETE",
        "/configurationManager/$(ManagerArn)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_configuration_manager(manager_arn)
    get_configuration_manager(manager_arn, params::Dict{String,<:Any})

Returns a configuration manager.

# Arguments
- `manager_arn`: The ARN of the configuration manager.

"""
function get_configuration_manager end

function get_configuration_manager(
    ManagerArn; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "GET",
        "/configurationManager/$(ManagerArn)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function get_configuration_manager(
    ManagerArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return ssm_quicksetup(
        "GET",
        "/configurationManager/$(ManagerArn)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_service_settings()
    get_service_settings(params::Dict{String,<:Any})

Returns settings configured for Quick Setup in the requesting Amazon Web Services account
and Amazon Web Services Region.

"""
function get_service_settings end

function get_service_settings(; aws_config::AbstractAWSConfig=current_aws_config())
    return ssm_quicksetup(
        "GET", "/serviceSettings"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

function get_service_settings(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "GET",
        "/serviceSettings",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_configuration_managers()
    list_configuration_managers(params::Dict{String,<:Any})

Returns Quick Setup configuration managers.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Filters"`: Filters the results returned by the request.
- `"MaxItems"`: Specifies the maximum number of configuration managers that are returned by
  the request.
- `"StartingToken"`: The token to use when requesting a specific set of items from a list.
"""
function list_configuration_managers end

function list_configuration_managers(; aws_config::AbstractAWSConfig=current_aws_config())
    return ssm_quicksetup(
        "POST",
        "/listConfigurationManagers";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function list_configuration_managers(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "POST",
        "/listConfigurationManagers",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_quick_setup_types()
    list_quick_setup_types(params::Dict{String,<:Any})

Returns the available Quick Setup types.

"""
function list_quick_setup_types end

function list_quick_setup_types(; aws_config::AbstractAWSConfig=current_aws_config())
    return ssm_quicksetup(
        "GET",
        "/listQuickSetupTypes";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function list_quick_setup_types(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "GET",
        "/listQuickSetupTypes",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    list_tags_for_resource(resource_arn)
    list_tags_for_resource(resource_arn, params::Dict{String,<:Any})

Returns tags assigned to the resource.

# Arguments
- `resource_arn`: The ARN of the resource the tag is assigned to.

"""
function list_tags_for_resource end

function list_tags_for_resource(
    ResourceArn; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "GET",
        "/tags/$(ResourceArn)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function list_tags_for_resource(
    ResourceArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return ssm_quicksetup(
        "GET",
        "/tags/$(ResourceArn)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    tag_resource(resource_arn, tags)
    tag_resource(resource_arn, tags, params::Dict{String,<:Any})

Assigns key-value pairs of metadata to Amazon Web Services resources.

# Arguments
- `resource_arn`: The ARN of the resource to tag.
- `tags`: Key-value pairs of metadata to assign to the resource.

"""
function tag_resource end

function tag_resource(ResourceArn, Tags; aws_config::AbstractAWSConfig=current_aws_config())
    return ssm_quicksetup(
        "PUT",
        "/tags/$(ResourceArn)",
        Dict{String,Any}("Tags" => Tags);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function tag_resource(
    ResourceArn,
    Tags,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return ssm_quicksetup(
        "PUT",
        "/tags/$(ResourceArn)",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("Tags" => Tags), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    untag_resource(resource_arn, tag_keys)
    untag_resource(resource_arn, tag_keys, params::Dict{String,<:Any})

Removes tags from the specified resource.

# Arguments
- `resource_arn`: The ARN of the resource to remove tags from.
- `tag_keys`: The keys of the tags to remove from the resource.

"""
function untag_resource end

function untag_resource(
    ResourceArn, tagKeys; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "DELETE",
        "/tags/$(ResourceArn)",
        Dict{String,Any}("tagKeys" => tagKeys);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function untag_resource(
    ResourceArn,
    tagKeys,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return ssm_quicksetup(
        "DELETE",
        "/tags/$(ResourceArn)",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("tagKeys" => tagKeys), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_configuration_definition(id, manager_arn)
    update_configuration_definition(id, manager_arn, params::Dict{String,<:Any})

Updates a Quick Setup configuration definition.

# Arguments
- `id`: The ID of the configuration definition you want to update.
- `manager_arn`: The ARN of the configuration manager associated with the definition to
  update.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"LocalDeploymentAdministrationRoleArn"`: The ARN of the IAM role used to administrate
  local configuration deployments.
- `"LocalDeploymentExecutionRoleName"`: The name of the IAM role used to deploy local
  configurations.
- `"Parameters"`: The parameters for the configuration definition type.
- `"TypeVersion"`: The version of the Quick Setup type to use.
"""
function update_configuration_definition end

function update_configuration_definition(
    Id, ManagerArn; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "PUT",
        "/configurationDefinition/$(ManagerArn)/$(Id)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function update_configuration_definition(
    Id,
    ManagerArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return ssm_quicksetup(
        "PUT",
        "/configurationDefinition/$(ManagerArn)/$(Id)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_configuration_manager(manager_arn)
    update_configuration_manager(manager_arn, params::Dict{String,<:Any})

Updates a Quick Setup configuration manager.

# Arguments
- `manager_arn`: The ARN of the configuration manager.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"Description"`: A description of the configuration manager.
- `"Name"`: A name for the configuration manager.
"""
function update_configuration_manager end

function update_configuration_manager(
    ManagerArn; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "PUT",
        "/configurationManager/$(ManagerArn)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

function update_configuration_manager(
    ManagerArn,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=current_aws_config(),
)
    return ssm_quicksetup(
        "PUT",
        "/configurationManager/$(ManagerArn)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_service_settings()
    update_service_settings(params::Dict{String,<:Any})

Updates settings configured for Quick Setup.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"ExplorerEnablingRoleArn"`: The IAM role used to enable Explorer.
"""
function update_service_settings end

function update_service_settings(; aws_config::AbstractAWSConfig=current_aws_config())
    return ssm_quicksetup(
        "PUT", "/serviceSettings"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

function update_service_settings(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=current_aws_config()
)
    return ssm_quicksetup(
        "PUT",
        "/serviceSettings",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
