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

"""
    associate_assessment_report_evidence_folder(assessment_id, evidence_folder_id)
    associate_assessment_report_evidence_folder(assessment_id, evidence_folder_id, params::Dict{String,<:Any})

 Associates an evidence folder to the specified assessment report in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `evidence_folder_id`:  The identifier for the folder in which evidence is stored.

"""
function associate_assessment_report_evidence_folder(
    assessmentId, evidenceFolderId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/associateToAssessmentReport",
        Dict{String,Any}("evidenceFolderId" => evidenceFolderId);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function associate_assessment_report_evidence_folder(
    assessmentId,
    evidenceFolderId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/associateToAssessmentReport",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("evidenceFolderId" => evidenceFolderId), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    batch_associate_assessment_report_evidence(assessment_id, evidence_folder_id, evidence_ids)
    batch_associate_assessment_report_evidence(assessment_id, evidence_folder_id, evidence_ids, params::Dict{String,<:Any})

 Associates a list of evidence to an assessment report in an Audit Manager assessment.

# Arguments
- `assessment_id`:  The unique identifier for the specified assessment.
- `evidence_folder_id`:  The identifier for the folder in which the evidence is stored.
- `evidence_ids`:  The list of evidence identifiers.

"""
function batch_associate_assessment_report_evidence(
    assessmentId,
    evidenceFolderId,
    evidenceIds;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/batchAssociateToAssessmentReport",
        Dict{String,Any}(
            "evidenceFolderId" => evidenceFolderId, "evidenceIds" => evidenceIds
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function batch_associate_assessment_report_evidence(
    assessmentId,
    evidenceFolderId,
    evidenceIds,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/batchAssociateToAssessmentReport",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "evidenceFolderId" => evidenceFolderId, "evidenceIds" => evidenceIds
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    batch_create_delegation_by_assessment(assessment_id, create_delegation_requests)
    batch_create_delegation_by_assessment(assessment_id, create_delegation_requests, params::Dict{String,<:Any})

 Create a batch of delegations for a specified assessment in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `create_delegation_requests`:  The API request to batch create delegations in Audit
  Manager.

"""
function batch_create_delegation_by_assessment(
    assessmentId,
    createDelegationRequests;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessments/$(assessmentId)/delegations",
        Dict{String,Any}("createDelegationRequests" => createDelegationRequests);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function batch_create_delegation_by_assessment(
    assessmentId,
    createDelegationRequests,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessments/$(assessmentId)/delegations",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("createDelegationRequests" => createDelegationRequests),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    batch_delete_delegation_by_assessment(assessment_id, delegation_ids)
    batch_delete_delegation_by_assessment(assessment_id, delegation_ids, params::Dict{String,<:Any})

 Deletes the delegations in the specified Audit Manager assessment.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `delegation_ids`:  The identifiers for the specified delegations.

"""
function batch_delete_delegation_by_assessment(
    assessmentId, delegationIds; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/delegations",
        Dict{String,Any}("delegationIds" => delegationIds);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function batch_delete_delegation_by_assessment(
    assessmentId,
    delegationIds,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/delegations",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("delegationIds" => delegationIds), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    batch_disassociate_assessment_report_evidence(assessment_id, evidence_folder_id, evidence_ids)
    batch_disassociate_assessment_report_evidence(assessment_id, evidence_folder_id, evidence_ids, params::Dict{String,<:Any})

 Disassociates a list of evidence from the specified assessment report in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `evidence_folder_id`:  The identifier for the folder in which evidence is stored.
- `evidence_ids`:  The list of evidence identifiers.

"""
function batch_disassociate_assessment_report_evidence(
    assessmentId,
    evidenceFolderId,
    evidenceIds;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/batchDisassociateFromAssessmentReport",
        Dict{String,Any}(
            "evidenceFolderId" => evidenceFolderId, "evidenceIds" => evidenceIds
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function batch_disassociate_assessment_report_evidence(
    assessmentId,
    evidenceFolderId,
    evidenceIds,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/batchDisassociateFromAssessmentReport",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "evidenceFolderId" => evidenceFolderId, "evidenceIds" => evidenceIds
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    batch_import_evidence_to_assessment_control(assessment_id, control_id, control_set_id, manual_evidence)
    batch_import_evidence_to_assessment_control(assessment_id, control_id, control_set_id, manual_evidence, params::Dict{String,<:Any})

 Uploads one or more pieces of evidence to the specified control in the assessment in Audit
Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `control_id`:  The identifier for the specified control.
- `control_set_id`:  The identifier for the specified control set.
- `manual_evidence`:  The list of manual evidence objects.

"""
function batch_import_evidence_to_assessment_control(
    assessmentId,
    controlId,
    controlSetId,
    manualEvidence;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/controls/$(controlId)/evidence",
        Dict{String,Any}("manualEvidence" => manualEvidence);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function batch_import_evidence_to_assessment_control(
    assessmentId,
    controlId,
    controlSetId,
    manualEvidence,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/controls/$(controlId)/evidence",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("manualEvidence" => manualEvidence), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_assessment(assessment_reports_destination, framework_id, name, roles, scope)
    create_assessment(assessment_reports_destination, framework_id, name, roles, scope, params::Dict{String,<:Any})

 Creates an assessment in Audit Manager.

# Arguments
- `assessment_reports_destination`:  The assessment report storage destination for the
  specified assessment that is being created.
- `framework_id`:  The identifier for the specified framework.
- `name`:  The name of the assessment to be created.
- `roles`:  The list of roles for the specified assessment.
- `scope`:

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"description"`:  The optional description of the assessment to be created.
- `"tags"`:  The tags associated with the assessment.
"""
function create_assessment(
    assessmentReportsDestination,
    frameworkId,
    name,
    roles,
    scope;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessments",
        Dict{String,Any}(
            "assessmentReportsDestination" => assessmentReportsDestination,
            "frameworkId" => frameworkId,
            "name" => name,
            "roles" => roles,
            "scope" => scope,
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_assessment(
    assessmentReportsDestination,
    frameworkId,
    name,
    roles,
    scope,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessments",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "assessmentReportsDestination" => assessmentReportsDestination,
                    "frameworkId" => frameworkId,
                    "name" => name,
                    "roles" => roles,
                    "scope" => scope,
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_assessment_framework(control_sets, name)
    create_assessment_framework(control_sets, name, params::Dict{String,<:Any})

 Creates a custom framework in Audit Manager.

# Arguments
- `control_sets`:  The control sets to be associated with the framework.
- `name`:  The name of the new custom framework.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"complianceType"`:  The compliance type that the new custom framework supports, such as
  CIS or HIPAA.
- `"description"`:  An optional description for the new custom framework.
- `"tags"`:  The tags associated with the framework.
"""
function create_assessment_framework(
    controlSets, name; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/assessmentFrameworks",
        Dict{String,Any}("controlSets" => controlSets, "name" => name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_assessment_framework(
    controlSets,
    name,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessmentFrameworks",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("controlSets" => controlSets, "name" => name),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_assessment_report(assessment_id, name)
    create_assessment_report(assessment_id, name, params::Dict{String,<:Any})

 Creates an assessment report for the specified assessment.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `name`:  The name of the new assessment report.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"description"`:  The description of the assessment report.
"""
function create_assessment_report(
    assessmentId, name; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/assessments/$(assessmentId)/reports",
        Dict{String,Any}("name" => name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_assessment_report(
    assessmentId,
    name,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessments/$(assessmentId)/reports",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("name" => name), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    create_control(control_mapping_sources, name)
    create_control(control_mapping_sources, name, params::Dict{String,<:Any})

 Creates a new custom control in Audit Manager.

# Arguments
- `control_mapping_sources`:  The data mapping sources for the specified control.
- `name`:  The name of the control.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"actionPlanInstructions"`:  The recommended actions to carry out if the control is not
  fulfilled.
- `"actionPlanTitle"`:  The title of the action plan for remediating the control.
- `"description"`:  The description of the control.
- `"tags"`:  The tags associated with the control.
- `"testingInformation"`:  The steps to follow to determine if the control has been
  satisfied.
"""
function create_control(
    controlMappingSources, name; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/controls",
        Dict{String,Any}("controlMappingSources" => controlMappingSources, "name" => name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function create_control(
    controlMappingSources,
    name,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/controls",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "controlMappingSources" => controlMappingSources, "name" => name
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Deletes an assessment in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.

"""
function delete_assessment(assessmentId; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "DELETE",
        "/assessments/$(assessmentId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_assessment(
    assessmentId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "DELETE",
        "/assessments/$(assessmentId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Deletes a custom framework in Audit Manager.

# Arguments
- `framework_id`:  The identifier for the specified framework.

"""
function delete_assessment_framework(
    frameworkId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "DELETE",
        "/assessmentFrameworks/$(frameworkId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_assessment_framework(
    frameworkId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "DELETE",
        "/assessmentFrameworks/$(frameworkId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    delete_assessment_report(assessment_id, assessment_report_id)
    delete_assessment_report(assessment_id, assessment_report_id, params::Dict{String,<:Any})

 Deletes an assessment report from an assessment in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `assessment_report_id`:  The unique identifier for the assessment report.

"""
function delete_assessment_report(
    assessmentId, assessmentReportId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "DELETE",
        "/assessments/$(assessmentId)/reports/$(assessmentReportId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_assessment_report(
    assessmentId,
    assessmentReportId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "DELETE",
        "/assessments/$(assessmentId)/reports/$(assessmentReportId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Deletes a custom control in Audit Manager.

# Arguments
- `control_id`:  The identifier for the specified control.

"""
function delete_control(controlId; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "DELETE",
        "/controls/$(controlId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function delete_control(
    controlId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "DELETE",
        "/controls/$(controlId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Deregisters an account in Audit Manager.

"""
function deregister_account(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "POST",
        "/account/deregisterAccount";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function deregister_account(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/account/deregisterAccount",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

Removes the specified member account as a delegated administrator for Audit Manager.   When
you remove a delegated administrator from your Audit Manager settings, or when you
deregister a delegated administrator from Organizations, you continue to have access to the
evidence that you previously collected under that account. However, Audit Manager will stop
collecting and attaching evidence to that delegated administrator account moving forward.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"adminAccountId"`:  The identifier for the specified administrator account.
"""
function deregister_organization_admin_account(;
    aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/account/deregisterOrganizationAdminAccount";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function deregister_organization_admin_account(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/account/deregisterOrganizationAdminAccount",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    disassociate_assessment_report_evidence_folder(assessment_id, evidence_folder_id)
    disassociate_assessment_report_evidence_folder(assessment_id, evidence_folder_id, params::Dict{String,<:Any})

 Disassociates an evidence folder from the specified assessment report in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `evidence_folder_id`:  The identifier for the folder in which evidence is stored.

"""
function disassociate_assessment_report_evidence_folder(
    assessmentId, evidenceFolderId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/disassociateFromAssessmentReport",
        Dict{String,Any}("evidenceFolderId" => evidenceFolderId);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function disassociate_assessment_report_evidence_folder(
    assessmentId,
    evidenceFolderId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/disassociateFromAssessmentReport",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("evidenceFolderId" => evidenceFolderId), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns the registration status of an account in Audit Manager.

"""
function get_account_status(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET", "/account/status"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function get_account_status(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/account/status",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns an assessment from Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.

"""
function get_assessment(assessmentId; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_assessment(
    assessmentId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a framework from Audit Manager.

# Arguments
- `framework_id`:  The identifier for the specified framework.

"""
function get_assessment_framework(
    frameworkId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/assessmentFrameworks/$(frameworkId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_assessment_framework(
    frameworkId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessmentFrameworks/$(frameworkId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_assessment_report_url(assessment_id, assessment_report_id)
    get_assessment_report_url(assessment_id, assessment_report_id, params::Dict{String,<:Any})

 Returns the URL of a specified assessment report in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `assessment_report_id`:  The identifier for the assessment report.

"""
function get_assessment_report_url(
    assessmentId, assessmentReportId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/reports/$(assessmentReportId)/url";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_assessment_report_url(
    assessmentId,
    assessmentReportId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/reports/$(assessmentReportId)/url",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of changelogs from Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"controlId"`:  The identifier for the specified control.
- `"controlSetId"`:  The identifier for the specified control set.
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function get_change_logs(assessmentId; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/changelogs";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_change_logs(
    assessmentId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/changelogs",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a control from Audit Manager.

# Arguments
- `control_id`:  The identifier for the specified control.

"""
function get_control(controlId; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET",
        "/controls/$(controlId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_control(
    controlId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/controls/$(controlId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of delegations from an audit owner to a delegate.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function get_delegations(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET", "/delegations"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function get_delegations(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/delegations",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_evidence(assessment_id, control_set_id, evidence_folder_id, evidence_id)
    get_evidence(assessment_id, control_set_id, evidence_folder_id, evidence_id, params::Dict{String,<:Any})

 Returns evidence from Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `control_set_id`:  The identifier for the specified control set.
- `evidence_folder_id`:  The identifier for the folder in which the evidence is stored.
- `evidence_id`:  The identifier for the evidence.

"""
function get_evidence(
    assessmentId,
    controlSetId,
    evidenceFolderId,
    evidenceId;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/evidenceFolders/$(evidenceFolderId)/evidence/$(evidenceId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_evidence(
    assessmentId,
    controlSetId,
    evidenceFolderId,
    evidenceId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/evidenceFolders/$(evidenceFolderId)/evidence/$(evidenceId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_evidence_by_evidence_folder(assessment_id, control_set_id, evidence_folder_id)
    get_evidence_by_evidence_folder(assessment_id, control_set_id, evidence_folder_id, params::Dict{String,<:Any})

 Returns all evidence from a specified evidence folder in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `control_set_id`:  The identifier for the control set.
- `evidence_folder_id`:  The unique identifier for the folder in which the evidence is
  stored.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function get_evidence_by_evidence_folder(
    assessmentId,
    controlSetId,
    evidenceFolderId;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/evidenceFolders/$(evidenceFolderId)/evidence";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_evidence_by_evidence_folder(
    assessmentId,
    controlSetId,
    evidenceFolderId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/evidenceFolders/$(evidenceFolderId)/evidence",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_evidence_folder(assessment_id, control_set_id, evidence_folder_id)
    get_evidence_folder(assessment_id, control_set_id, evidence_folder_id, params::Dict{String,<:Any})

 Returns an evidence folder from the specified assessment in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `control_set_id`:  The identifier for the specified control set.
- `evidence_folder_id`:  The identifier for the folder in which the evidence is stored.

"""
function get_evidence_folder(
    assessmentId,
    controlSetId,
    evidenceFolderId;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/evidenceFolders/$(evidenceFolderId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_evidence_folder(
    assessmentId,
    controlSetId,
    evidenceFolderId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/evidenceFolders/$(evidenceFolderId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns the evidence folders from a specified assessment in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function get_evidence_folders_by_assessment(
    assessmentId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/evidenceFolders";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_evidence_folders_by_assessment(
    assessmentId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/evidenceFolders",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    get_evidence_folders_by_assessment_control(assessment_id, control_id, control_set_id)
    get_evidence_folders_by_assessment_control(assessment_id, control_id, control_set_id, params::Dict{String,<:Any})

 Returns a list of evidence folders associated with a specified control of an assessment in
Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `control_id`:  The identifier for the specified control.
- `control_set_id`:  The identifier for the specified control set.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function get_evidence_folders_by_assessment_control(
    assessmentId, controlId, controlSetId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/evidenceFolders-by-assessment-control/$(controlSetId)/$(controlId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_evidence_folders_by_assessment_control(
    assessmentId,
    controlId,
    controlSetId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessments/$(assessmentId)/evidenceFolders-by-assessment-control/$(controlSetId)/$(controlId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns the name of the delegated Amazon Web Services administrator account for the
organization.

"""
function get_organization_admin_account(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET",
        "/account/organizationAdminAccount";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_organization_admin_account(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/account/organizationAdminAccount",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of the in-scope Amazon Web Services services for the specified assessment.

"""
function get_services_in_scope(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET", "/services"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function get_services_in_scope(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET", "/services", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

 Returns the settings for the specified account.

# Arguments
- `attribute`:  The list of SettingAttribute enum values.

"""
function get_settings(attribute; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET",
        "/settings/$(attribute)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function get_settings(
    attribute,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/settings/$(attribute)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of the frameworks available in the Audit Manager framework library.

# Arguments
- `framework_type`:  The type of framework, such as standard or custom.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function list_assessment_frameworks(
    frameworkType; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/assessmentFrameworks",
        Dict{String,Any}("frameworkType" => frameworkType);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_assessment_frameworks(
    frameworkType,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/assessmentFrameworks",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("frameworkType" => frameworkType), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of assessment reports created in Audit Manager.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function list_assessment_reports(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET", "/assessmentReports"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_assessment_reports(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/assessmentReports",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of current and past assessments from Audit Manager.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function list_assessments(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET", "/assessments"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_assessments(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/assessments",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of controls from Audit Manager.

# Arguments
- `control_type`:  The type of control, such as standard or custom.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function list_controls(controlType; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET",
        "/controls",
        Dict{String,Any}("controlType" => controlType);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_controls(
    controlType,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/controls",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("controlType" => controlType), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of keywords that pre-mapped to the specified control data source.

# Arguments
- `source`:  The control mapping data source to which the keywords apply.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function list_keywords_for_data_source(
    source; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/dataSourceKeywords",
        Dict{String,Any}("source" => source);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function list_keywords_for_data_source(
    source, params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/dataSourceKeywords",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("source" => source), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Returns a list of all Audit Manager notifications.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  Represents the maximum number of results per page, or per API request
  call.
- `"nextToken"`:  The pagination token used to fetch the next set of results.
"""
function list_notifications(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "GET", "/notifications"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function list_notifications(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "GET",
        "/notifications",
        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 a list of tags for the specified resource in Audit Manager.

# Arguments
- `resource_arn`:  The Amazon Resource Name (ARN) of the specified resource.

"""
function list_tags_for_resource(
    resourceArn; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "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=global_aws_config(),
)
    return auditmanager(
        "GET",
        "/tags/$(resourceArn)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Enables Audit Manager for the specified account.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"delegatedAdminAccount"`:  The delegated administrator account for Audit Manager.
- `"kmsKey"`:  The KMS key details.
"""
function register_account(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "POST",
        "/account/registerAccount";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function register_account(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/account/registerAccount",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Enables an account within the organization as the delegated administrator for Audit
Manager.

# Arguments
- `admin_account_id`:  The identifier for the specified delegated administrator account.

"""
function register_organization_admin_account(
    adminAccountId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/account/registerOrganizationAdminAccount",
        Dict{String,Any}("adminAccountId" => adminAccountId);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function register_organization_admin_account(
    adminAccountId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/account/registerOrganizationAdminAccount",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("adminAccountId" => adminAccountId), 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})

 Tags the specified resource in Audit Manager.

# Arguments
- `resource_arn`:  The Amazon Resource Name (ARN) of the specified resource.
- `tags`:  The tags to be associated with the resource.

"""
function tag_resource(resourceArn, tags; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "POST",
        "/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=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/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 a tag from a resource in Audit Manager.

# Arguments
- `resource_arn`:  The Amazon Resource Name (ARN) of the specified resource.
- `tag_keys`:  The name or key of the tag.

"""
function untag_resource(
    resourceArn, tagKeys; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "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=global_aws_config(),
)
    return auditmanager(
        "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_assessment(assessment_id, scope)
    update_assessment(assessment_id, scope, params::Dict{String,<:Any})

 Edits an Audit Manager assessment.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `scope`:  The scope of the specified assessment.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"assessmentDescription"`:  The description of the specified assessment.
- `"assessmentName"`:  The name of the specified assessment to be updated.
- `"assessmentReportsDestination"`:  The assessment report storage destination for the
  specified assessment that is being updated.
- `"roles"`:  The list of roles for the specified assessment.
"""
function update_assessment(
    assessmentId, scope; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)",
        Dict{String,Any}("scope" => scope);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_assessment(
    assessmentId,
    scope,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("scope" => scope), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_assessment_control(assessment_id, control_id, control_set_id)
    update_assessment_control(assessment_id, control_id, control_set_id, params::Dict{String,<:Any})

 Updates a control within an assessment in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `control_id`:  The identifier for the specified control.
- `control_set_id`:  The identifier for the specified control set.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"commentBody"`:  The comment body text for the specified control.
- `"controlStatus"`:  The status of the specified control.
"""
function update_assessment_control(
    assessmentId, controlId, controlSetId; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/controls/$(controlId)";
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_assessment_control(
    assessmentId,
    controlId,
    controlSetId,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/controls/$(controlId)",
        params;
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_assessment_control_set_status(assessment_id, comment, control_set_id, status)
    update_assessment_control_set_status(assessment_id, comment, control_set_id, status, params::Dict{String,<:Any})

 Updates the status of a control set in an Audit Manager assessment.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `comment`:  The comment related to the status update.
- `control_set_id`:  The identifier for the specified control set.
- `status`:  The status of the control set that is being updated.

"""
function update_assessment_control_set_status(
    assessmentId,
    comment,
    controlSetId,
    status;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/status",
        Dict{String,Any}("comment" => comment, "status" => status);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_assessment_control_set_status(
    assessmentId,
    comment,
    controlSetId,
    status,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/controlSets/$(controlSetId)/status",
        Dict{String,Any}(
            mergewith(
                _merge, Dict{String,Any}("comment" => comment, "status" => status), params
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_assessment_framework(control_sets, framework_id, name)
    update_assessment_framework(control_sets, framework_id, name, params::Dict{String,<:Any})

 Updates a custom framework in Audit Manager.

# Arguments
- `control_sets`:  The control sets associated with the framework.
- `framework_id`:  The identifier for the specified framework.
- `name`:  The name of the framework to be updated.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"complianceType"`:  The compliance type that the new custom framework supports, such as
  CIS or HIPAA.
- `"description"`:  The description of the framework that is to be updated.
"""
function update_assessment_framework(
    controlSets, frameworkId, name; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "PUT",
        "/assessmentFrameworks/$(frameworkId)",
        Dict{String,Any}("controlSets" => controlSets, "name" => name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_assessment_framework(
    controlSets,
    frameworkId,
    name,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessmentFrameworks/$(frameworkId)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}("controlSets" => controlSets, "name" => name),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_assessment_status(assessment_id, status)
    update_assessment_status(assessment_id, status, params::Dict{String,<:Any})

 Updates the status of an assessment in Audit Manager.

# Arguments
- `assessment_id`:  The identifier for the specified assessment.
- `status`:  The current status of the specified assessment.

"""
function update_assessment_status(
    assessmentId, status; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/status",
        Dict{String,Any}("status" => status);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_assessment_status(
    assessmentId,
    status,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/assessments/$(assessmentId)/status",
        Dict{String,Any}(mergewith(_merge, Dict{String,Any}("status" => status), params));
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

"""
    update_control(control_id, control_mapping_sources, name)
    update_control(control_id, control_mapping_sources, name, params::Dict{String,<:Any})

 Updates a custom control in Audit Manager.

# Arguments
- `control_id`:  The identifier for the specified control.
- `control_mapping_sources`:  The data mapping sources for the specified control.
- `name`:  The name of the control to be updated.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"actionPlanInstructions"`:  The recommended actions to carry out if the control is not
  fulfilled.
- `"actionPlanTitle"`:  The title of the action plan for remediating the control.
- `"description"`:  The optional description of the control.
- `"testingInformation"`:  The steps that to follow to determine if the control has been
  satisfied.
"""
function update_control(
    controlId,
    controlMappingSources,
    name;
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/controls/$(controlId)",
        Dict{String,Any}("controlMappingSources" => controlMappingSources, "name" => name);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function update_control(
    controlId,
    controlMappingSources,
    name,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "PUT",
        "/controls/$(controlId)",
        Dict{String,Any}(
            mergewith(
                _merge,
                Dict{String,Any}(
                    "controlMappingSources" => controlMappingSources, "name" => name
                ),
                params,
            ),
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end

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

 Updates Audit Manager settings for the current user account.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"defaultAssessmentReportsDestination"`:  The default storage destination for assessment
  reports.
- `"defaultProcessOwners"`:  A list of the default audit owners.
- `"kmsKey"`:  The KMS key details.
- `"snsTopic"`:  The Amazon Simple Notification Service (Amazon SNS) topic to which Audit
  Manager sends notifications.
"""
function update_settings(; aws_config::AbstractAWSConfig=global_aws_config())
    return auditmanager(
        "PUT", "/settings"; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end
function update_settings(
    params::AbstractDict{String}; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "PUT", "/settings", params; aws_config=aws_config, feature_set=SERVICE_FEATURE_SET
    )
end

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

 Validates the integrity of an assessment report in Audit Manager.

# Arguments
- `s3_relative_path`:  The relative path of the specified Amazon S3 bucket in which the
  assessment report is stored.

"""
function validate_assessment_report_integrity(
    s3RelativePath; aws_config::AbstractAWSConfig=global_aws_config()
)
    return auditmanager(
        "POST",
        "/assessmentReports/integrity",
        Dict{String,Any}("s3RelativePath" => s3RelativePath);
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
function validate_assessment_report_integrity(
    s3RelativePath,
    params::AbstractDict{String};
    aws_config::AbstractAWSConfig=global_aws_config(),
)
    return auditmanager(
        "POST",
        "/assessmentReports/integrity",
        Dict{String,Any}(
            mergewith(_merge, Dict{String,Any}("s3RelativePath" => s3RelativePath), params)
        );
        aws_config=aws_config,
        feature_set=SERVICE_FEATURE_SET,
    )
end
