Current section
Files
Jump to
Current section
Files
src/aws_auditmanager.erl
%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
%% See https://github.com/aws-beam/aws-codegen for more details.
%% @doc Welcome to the Audit Manager API reference.
%%
%% This guide is for developers who need detailed information about the Audit
%% Manager API operations, data types, and errors.
%%
%% Audit Manager is a service that provides automated evidence collection so
%% that you can continually audit your Amazon Web Services usage. You can use
%% it to assess the effectiveness of your controls, manage risk, and simplify
%% compliance.
%%
%% Audit Manager provides prebuilt frameworks that structure and automate
%% assessments for a given compliance standard. Frameworks include a prebuilt
%% collection of controls with descriptions and testing procedures. These
%% controls are grouped according to the requirements of the specified
%% compliance standard or regulation. You can also customize frameworks and
%% controls to support internal audits with specific requirements.
%%
%% Use the following links to get started with the Audit Manager API:
%%
%% <ul> <li> Actions:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_Operations.html:
%% An alphabetical list of all Audit Manager API operations.
%%
%% </li> <li> Data types:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_Types.html:
%% An alphabetical list of all Audit Manager data types.
%%
%% </li> <li> Common parameters:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/CommonParameters.html:
%% Parameters that all operations can use.
%%
%% </li> <li> Common errors:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/CommonErrors.html:
%% Client and server errors that all operations can return.
%%
%% </li> </ul> If you're new to Audit Manager, we recommend that you
%% review the Audit Manager User Guide:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/what-is.html.
-module(aws_auditmanager).
-export([associate_assessment_report_evidence_folder/3,
associate_assessment_report_evidence_folder/4,
batch_associate_assessment_report_evidence/3,
batch_associate_assessment_report_evidence/4,
batch_create_delegation_by_assessment/3,
batch_create_delegation_by_assessment/4,
batch_delete_delegation_by_assessment/3,
batch_delete_delegation_by_assessment/4,
batch_disassociate_assessment_report_evidence/3,
batch_disassociate_assessment_report_evidence/4,
batch_import_evidence_to_assessment_control/5,
batch_import_evidence_to_assessment_control/6,
create_assessment/2,
create_assessment/3,
create_assessment_framework/2,
create_assessment_framework/3,
create_assessment_report/3,
create_assessment_report/4,
create_control/2,
create_control/3,
delete_assessment/3,
delete_assessment/4,
delete_assessment_framework/3,
delete_assessment_framework/4,
delete_assessment_framework_share/3,
delete_assessment_framework_share/4,
delete_assessment_report/4,
delete_assessment_report/5,
delete_control/3,
delete_control/4,
deregister_account/2,
deregister_account/3,
deregister_organization_admin_account/2,
deregister_organization_admin_account/3,
disassociate_assessment_report_evidence_folder/3,
disassociate_assessment_report_evidence_folder/4,
get_account_status/1,
get_account_status/3,
get_account_status/4,
get_assessment/2,
get_assessment/4,
get_assessment/5,
get_assessment_framework/2,
get_assessment_framework/4,
get_assessment_framework/5,
get_assessment_report_url/3,
get_assessment_report_url/5,
get_assessment_report_url/6,
get_change_logs/2,
get_change_logs/4,
get_change_logs/5,
get_control/2,
get_control/4,
get_control/5,
get_delegations/1,
get_delegations/3,
get_delegations/4,
get_evidence/5,
get_evidence/7,
get_evidence/8,
get_evidence_by_evidence_folder/4,
get_evidence_by_evidence_folder/6,
get_evidence_by_evidence_folder/7,
get_evidence_file_upload_url/2,
get_evidence_file_upload_url/4,
get_evidence_file_upload_url/5,
get_evidence_folder/4,
get_evidence_folder/6,
get_evidence_folder/7,
get_evidence_folders_by_assessment/2,
get_evidence_folders_by_assessment/4,
get_evidence_folders_by_assessment/5,
get_evidence_folders_by_assessment_control/4,
get_evidence_folders_by_assessment_control/6,
get_evidence_folders_by_assessment_control/7,
get_insights/1,
get_insights/3,
get_insights/4,
get_insights_by_assessment/2,
get_insights_by_assessment/4,
get_insights_by_assessment/5,
get_organization_admin_account/1,
get_organization_admin_account/3,
get_organization_admin_account/4,
get_services_in_scope/1,
get_services_in_scope/3,
get_services_in_scope/4,
get_settings/2,
get_settings/4,
get_settings/5,
list_assessment_control_insights_by_control_domain/3,
list_assessment_control_insights_by_control_domain/5,
list_assessment_control_insights_by_control_domain/6,
list_assessment_framework_share_requests/2,
list_assessment_framework_share_requests/4,
list_assessment_framework_share_requests/5,
list_assessment_frameworks/2,
list_assessment_frameworks/4,
list_assessment_frameworks/5,
list_assessment_reports/1,
list_assessment_reports/3,
list_assessment_reports/4,
list_assessments/1,
list_assessments/3,
list_assessments/4,
list_control_domain_insights/1,
list_control_domain_insights/3,
list_control_domain_insights/4,
list_control_domain_insights_by_assessment/2,
list_control_domain_insights_by_assessment/4,
list_control_domain_insights_by_assessment/5,
list_control_insights_by_control_domain/2,
list_control_insights_by_control_domain/4,
list_control_insights_by_control_domain/5,
list_controls/2,
list_controls/4,
list_controls/5,
list_keywords_for_data_source/2,
list_keywords_for_data_source/4,
list_keywords_for_data_source/5,
list_notifications/1,
list_notifications/3,
list_notifications/4,
list_tags_for_resource/2,
list_tags_for_resource/4,
list_tags_for_resource/5,
register_account/2,
register_account/3,
register_organization_admin_account/2,
register_organization_admin_account/3,
start_assessment_framework_share/3,
start_assessment_framework_share/4,
tag_resource/3,
tag_resource/4,
untag_resource/3,
untag_resource/4,
update_assessment/3,
update_assessment/4,
update_assessment_control/5,
update_assessment_control/6,
update_assessment_control_set_status/4,
update_assessment_control_set_status/5,
update_assessment_framework/3,
update_assessment_framework/4,
update_assessment_framework_share/3,
update_assessment_framework_share/4,
update_assessment_status/3,
update_assessment_status/4,
update_control/3,
update_control/4,
update_settings/2,
update_settings/3,
validate_assessment_report_integrity/2,
validate_assessment_report_integrity/3]).
-include_lib("hackney/include/hackney_lib.hrl").
%%====================================================================
%% API
%%====================================================================
%% @doc Associates an evidence folder to an assessment report in an Audit
%% Manager assessment.
associate_assessment_report_evidence_folder(Client, AssessmentId, Input) ->
associate_assessment_report_evidence_folder(Client, AssessmentId, Input, []).
associate_assessment_report_evidence_folder(Client, AssessmentId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/associateToAssessmentReport"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Associates a list of evidence to an assessment report in an Audit
%% Manager assessment.
batch_associate_assessment_report_evidence(Client, AssessmentId, Input) ->
batch_associate_assessment_report_evidence(Client, AssessmentId, Input, []).
batch_associate_assessment_report_evidence(Client, AssessmentId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/batchAssociateToAssessmentReport"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Creates a batch of delegations for an assessment in Audit Manager.
batch_create_delegation_by_assessment(Client, AssessmentId, Input) ->
batch_create_delegation_by_assessment(Client, AssessmentId, Input, []).
batch_create_delegation_by_assessment(Client, AssessmentId, Input0, Options0) ->
Method = post,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/delegations"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes a batch of delegations for an assessment in Audit Manager.
batch_delete_delegation_by_assessment(Client, AssessmentId, Input) ->
batch_delete_delegation_by_assessment(Client, AssessmentId, Input, []).
batch_delete_delegation_by_assessment(Client, AssessmentId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/delegations"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Disassociates a list of evidence from an assessment report in Audit
%% Manager.
batch_disassociate_assessment_report_evidence(Client, AssessmentId, Input) ->
batch_disassociate_assessment_report_evidence(Client, AssessmentId, Input, []).
batch_disassociate_assessment_report_evidence(Client, AssessmentId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/batchDisassociateFromAssessmentReport"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Adds one or more pieces of evidence to a control in an Audit Manager
%% assessment.
%%
%% You can import manual evidence from any S3 bucket by specifying the S3 URI
%% of the object. You can also upload a file from your browser, or enter
%% plain text in response to a risk assessment question.
%%
%% The following restrictions apply to this action:
%%
%% <ul> <li> `manualEvidence' can be only one of the following:
%% `evidenceFileName', `s3ResourcePath', or `textResponse'
%%
%% </li> <li> Maximum size of an individual evidence file: 100 MB
%%
%% </li> <li> Number of daily manual evidence uploads per control: 100
%%
%% </li> <li> Supported file formats: See Supported file types for manual
%% evidence:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/upload-evidence.html#supported-manual-evidence-files
%% in the Audit Manager User Guide
%%
%% </li> </ul> For more information about Audit Manager service restrictions,
%% see Quotas and restrictions for Audit Manager:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html.
batch_import_evidence_to_assessment_control(Client, AssessmentId, ControlId, ControlSetId, Input) ->
batch_import_evidence_to_assessment_control(Client, AssessmentId, ControlId, ControlSetId, Input, []).
batch_import_evidence_to_assessment_control(Client, AssessmentId, ControlId, ControlSetId, Input0, Options0) ->
Method = post,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/controlSets/", aws_util:encode_uri(ControlSetId), "/controls/", aws_util:encode_uri(ControlId), "/evidence"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Creates an assessment in Audit Manager.
create_assessment(Client, Input) ->
create_assessment(Client, Input, []).
create_assessment(Client, Input0, Options0) ->
Method = post,
Path = ["/assessments"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Creates a custom framework in Audit Manager.
create_assessment_framework(Client, Input) ->
create_assessment_framework(Client, Input, []).
create_assessment_framework(Client, Input0, Options0) ->
Method = post,
Path = ["/assessmentFrameworks"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Creates an assessment report for the specified assessment.
create_assessment_report(Client, AssessmentId, Input) ->
create_assessment_report(Client, AssessmentId, Input, []).
create_assessment_report(Client, AssessmentId, Input0, Options0) ->
Method = post,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/reports"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Creates a new custom control in Audit Manager.
create_control(Client, Input) ->
create_control(Client, Input, []).
create_control(Client, Input0, Options0) ->
Method = post,
Path = ["/controls"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes an assessment in Audit Manager.
delete_assessment(Client, AssessmentId, Input) ->
delete_assessment(Client, AssessmentId, Input, []).
delete_assessment(Client, AssessmentId, Input0, Options0) ->
Method = delete,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes a custom framework in Audit Manager.
delete_assessment_framework(Client, FrameworkId, Input) ->
delete_assessment_framework(Client, FrameworkId, Input, []).
delete_assessment_framework(Client, FrameworkId, Input0, Options0) ->
Method = delete,
Path = ["/assessmentFrameworks/", aws_util:encode_uri(FrameworkId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes a share request for a custom framework in Audit Manager.
delete_assessment_framework_share(Client, RequestId, Input) ->
delete_assessment_framework_share(Client, RequestId, Input, []).
delete_assessment_framework_share(Client, RequestId, Input0, Options0) ->
Method = delete,
Path = ["/assessmentFrameworkShareRequests/", aws_util:encode_uri(RequestId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
QueryMapping = [
{<<"requestType">>, <<"requestType">>}
],
{Query_, Input} = aws_request:build_headers(QueryMapping, Input2),
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes an assessment report in Audit Manager.
%%
%% When you run the `DeleteAssessmentReport' operation, Audit Manager
%% attempts to delete the following data:
%%
%% <ol> <li> The specified assessment report that’s stored in your S3 bucket
%%
%% </li> <li> The associated metadata that’s stored in Audit Manager
%%
%% </li> </ol> If Audit Manager can’t access the assessment report in your S3
%% bucket, the report isn’t deleted. In this event, the
%% `DeleteAssessmentReport' operation doesn’t fail. Instead, it proceeds
%% to delete the associated metadata only. You must then delete the
%% assessment report from the S3 bucket yourself.
%%
%% This scenario happens when Audit Manager receives a `403 (Forbidden)'
%% or `404 (Not Found)' error from Amazon S3. To avoid this, make sure
%% that your S3 bucket is available, and that you configured the correct
%% permissions for Audit Manager to delete resources in your S3 bucket. For
%% an example permissions policy that you can use, see Assessment report
%% destination permissions:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/security_iam_id-based-policy-examples.html#full-administrator-access-assessment-report-destination
%% in the Audit Manager User Guide. For information about the issues that
%% could cause a `403 (Forbidden)' or `404 (Not Found') error from
%% Amazon S3, see List of Error Codes:
%% https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList
%% in the Amazon Simple Storage Service API Reference.
delete_assessment_report(Client, AssessmentId, AssessmentReportId, Input) ->
delete_assessment_report(Client, AssessmentId, AssessmentReportId, Input, []).
delete_assessment_report(Client, AssessmentId, AssessmentReportId, Input0, Options0) ->
Method = delete,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/reports/", aws_util:encode_uri(AssessmentReportId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Deletes a custom control in Audit Manager.
%%
%% When you invoke this operation, the custom control is deleted from any
%% frameworks or assessments that it’s currently part of. As a result, Audit
%% Manager will stop collecting evidence for that custom control in all of
%% your assessments. This includes assessments that you previously created
%% before you deleted the custom control.
delete_control(Client, ControlId, Input) ->
delete_control(Client, ControlId, Input, []).
delete_control(Client, ControlId, Input0, Options0) ->
Method = delete,
Path = ["/controls/", aws_util:encode_uri(ControlId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Deregisters an account in Audit Manager.
%%
%% Before you deregister, you can use the UpdateSettings:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_UpdateSettings.html
%% API operation to set your preferred data retention policy. By default,
%% Audit Manager retains your data. If you want to delete your data, you can
%% use the `DeregistrationPolicy' attribute to request the deletion of
%% your data.
%%
%% For more information about data retention, see Data Protection:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/data-protection.html
%% in the Audit Manager User Guide.
deregister_account(Client, Input) ->
deregister_account(Client, Input, []).
deregister_account(Client, Input0, Options0) ->
Method = post,
Path = ["/account/deregisterAccount"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Removes the specified Amazon Web Services account as a delegated
%% administrator for Audit Manager.
%%
%% When you remove a delegated administrator from your Audit Manager
%% settings, you continue to have access to the evidence that you previously
%% collected under that account. This is also the case when you deregister a
%% delegated administrator from Organizations. However, Audit Manager stops
%% collecting and attaching evidence to that delegated administrator account
%% moving forward.
%%
%% Keep in mind the following cleanup task if you use evidence finder:
%%
%% Before you use your management account to remove a delegated
%% administrator, make sure that the current delegated administrator account
%% signs in to Audit Manager and disables evidence finder first. Disabling
%% evidence finder automatically deletes the event data store that was
%% created in their account when they enabled evidence finder. If this task
%% isn’t completed, the event data store remains in their account. In this
%% case, we recommend that the original delegated administrator goes to
%% CloudTrail Lake and manually deletes the event data store:
%% https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-eds-disable-termination.html.
%%
%% This cleanup task is necessary to ensure that you don't end up with
%% multiple event data stores. Audit Manager ignores an unused event data
%% store after you remove or change a delegated administrator account.
%% However, the unused event data store continues to incur storage costs from
%% CloudTrail Lake if you don't delete it.
%%
%% When you deregister a delegated administrator account for Audit Manager,
%% the data for that account isn’t deleted. If you want to delete resource
%% data for a delegated administrator account, you must perform that task
%% separately before you deregister the account. Either, you can do this in
%% the Audit Manager console. Or, you can use one of the delete API
%% operations that are provided by Audit Manager.
%%
%% To delete your Audit Manager resource data, see the following
%% instructions:
%%
%% <ul> <li> DeleteAssessment:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteAssessment.html
%% (see also: Deleting an assessment:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/delete-assessment.html
%% in the Audit Manager User Guide)
%%
%% </li> <li> DeleteAssessmentFramework:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteAssessmentFramework.html
%% (see also: Deleting a custom framework:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/delete-custom-framework.html
%% in the Audit Manager User Guide)
%%
%% </li> <li> DeleteAssessmentFrameworkShare:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteAssessmentFrameworkShare.html
%% (see also: Deleting a share request:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/deleting-shared-framework-requests.html
%% in the Audit Manager User Guide)
%%
%% </li> <li> DeleteAssessmentReport:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteAssessmentReport.html
%% (see also: Deleting an assessment report:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/generate-assessment-report.html#delete-assessment-report-steps
%% in the Audit Manager User Guide)
%%
%% </li> <li> DeleteControl:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_DeleteControl.html
%% (see also: Deleting a custom control:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/delete-controls.html
%% in the Audit Manager User Guide)
%%
%% </li> </ul> At this time, Audit Manager doesn't provide an option to
%% delete evidence for a specific delegated administrator. Instead, when your
%% management account deregisters Audit Manager, we perform a cleanup for the
%% current delegated administrator account at the time of deregistration.
deregister_organization_admin_account(Client, Input) ->
deregister_organization_admin_account(Client, Input, []).
deregister_organization_admin_account(Client, Input0, Options0) ->
Method = post,
Path = ["/account/deregisterOrganizationAdminAccount"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Disassociates an evidence folder from the specified assessment report
%% in Audit Manager.
disassociate_assessment_report_evidence_folder(Client, AssessmentId, Input) ->
disassociate_assessment_report_evidence_folder(Client, AssessmentId, Input, []).
disassociate_assessment_report_evidence_folder(Client, AssessmentId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/disassociateFromAssessmentReport"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Gets the registration status of an account in Audit Manager.
get_account_status(Client)
when is_map(Client) ->
get_account_status(Client, #{}, #{}).
get_account_status(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_account_status(Client, QueryMap, HeadersMap, []).
get_account_status(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/account/status"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets information about a specified assessment.
get_assessment(Client, AssessmentId)
when is_map(Client) ->
get_assessment(Client, AssessmentId, #{}, #{}).
get_assessment(Client, AssessmentId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_assessment(Client, AssessmentId, QueryMap, HeadersMap, []).
get_assessment(Client, AssessmentId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets information about a specified framework.
get_assessment_framework(Client, FrameworkId)
when is_map(Client) ->
get_assessment_framework(Client, FrameworkId, #{}, #{}).
get_assessment_framework(Client, FrameworkId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_assessment_framework(Client, FrameworkId, QueryMap, HeadersMap, []).
get_assessment_framework(Client, FrameworkId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessmentFrameworks/", aws_util:encode_uri(FrameworkId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets the URL of an assessment report in Audit Manager.
get_assessment_report_url(Client, AssessmentId, AssessmentReportId)
when is_map(Client) ->
get_assessment_report_url(Client, AssessmentId, AssessmentReportId, #{}, #{}).
get_assessment_report_url(Client, AssessmentId, AssessmentReportId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_assessment_report_url(Client, AssessmentId, AssessmentReportId, QueryMap, HeadersMap, []).
get_assessment_report_url(Client, AssessmentId, AssessmentReportId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/reports/", aws_util:encode_uri(AssessmentReportId), "/url"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets a list of changelogs from Audit Manager.
get_change_logs(Client, AssessmentId)
when is_map(Client) ->
get_change_logs(Client, AssessmentId, #{}, #{}).
get_change_logs(Client, AssessmentId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_change_logs(Client, AssessmentId, QueryMap, HeadersMap, []).
get_change_logs(Client, AssessmentId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/changelogs"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"controlId">>, maps:get(<<"controlId">>, QueryMap, undefined)},
{<<"controlSetId">>, maps:get(<<"controlSetId">>, QueryMap, undefined)},
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets information about a specified control.
get_control(Client, ControlId)
when is_map(Client) ->
get_control(Client, ControlId, #{}, #{}).
get_control(Client, ControlId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_control(Client, ControlId, QueryMap, HeadersMap, []).
get_control(Client, ControlId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/controls/", aws_util:encode_uri(ControlId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets a list of delegations from an audit owner to a delegate.
get_delegations(Client)
when is_map(Client) ->
get_delegations(Client, #{}, #{}).
get_delegations(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_delegations(Client, QueryMap, HeadersMap, []).
get_delegations(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/delegations"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets information about a specified evidence item.
get_evidence(Client, AssessmentId, ControlSetId, EvidenceFolderId, EvidenceId)
when is_map(Client) ->
get_evidence(Client, AssessmentId, ControlSetId, EvidenceFolderId, EvidenceId, #{}, #{}).
get_evidence(Client, AssessmentId, ControlSetId, EvidenceFolderId, EvidenceId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_evidence(Client, AssessmentId, ControlSetId, EvidenceFolderId, EvidenceId, QueryMap, HeadersMap, []).
get_evidence(Client, AssessmentId, ControlSetId, EvidenceFolderId, EvidenceId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/controlSets/", aws_util:encode_uri(ControlSetId), "/evidenceFolders/", aws_util:encode_uri(EvidenceFolderId), "/evidence/", aws_util:encode_uri(EvidenceId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets all evidence from a specified evidence folder in Audit Manager.
get_evidence_by_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId)
when is_map(Client) ->
get_evidence_by_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId, #{}, #{}).
get_evidence_by_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_evidence_by_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId, QueryMap, HeadersMap, []).
get_evidence_by_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/controlSets/", aws_util:encode_uri(ControlSetId), "/evidenceFolders/", aws_util:encode_uri(EvidenceFolderId), "/evidence"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Creates a presigned Amazon S3 URL that can be used to upload a file
%% as manual evidence.
%%
%% For instructions on how to use this operation, see Upload a file from your
%% browser :
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/upload-evidence.html#how-to-upload-manual-evidence-files
%% in the Audit Manager User Guide.
%%
%% The following restrictions apply to this operation:
%%
%% <ul> <li> Maximum size of an individual evidence file: 100 MB
%%
%% </li> <li> Number of daily manual evidence uploads per control: 100
%%
%% </li> <li> Supported file formats: See Supported file types for manual
%% evidence:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/upload-evidence.html#supported-manual-evidence-files
%% in the Audit Manager User Guide
%%
%% </li> </ul> For more information about Audit Manager service restrictions,
%% see Quotas and restrictions for Audit Manager:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/service-quotas.html.
get_evidence_file_upload_url(Client, FileName)
when is_map(Client) ->
get_evidence_file_upload_url(Client, FileName, #{}, #{}).
get_evidence_file_upload_url(Client, FileName, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_evidence_file_upload_url(Client, FileName, QueryMap, HeadersMap, []).
get_evidence_file_upload_url(Client, FileName, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/evidenceFileUploadUrl"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"fileName">>, FileName}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets an evidence folder from a specified assessment in Audit Manager.
get_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId)
when is_map(Client) ->
get_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId, #{}, #{}).
get_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId, QueryMap, HeadersMap, []).
get_evidence_folder(Client, AssessmentId, ControlSetId, EvidenceFolderId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/controlSets/", aws_util:encode_uri(ControlSetId), "/evidenceFolders/", aws_util:encode_uri(EvidenceFolderId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets the evidence folders from a specified assessment in Audit
%% Manager.
get_evidence_folders_by_assessment(Client, AssessmentId)
when is_map(Client) ->
get_evidence_folders_by_assessment(Client, AssessmentId, #{}, #{}).
get_evidence_folders_by_assessment(Client, AssessmentId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_evidence_folders_by_assessment(Client, AssessmentId, QueryMap, HeadersMap, []).
get_evidence_folders_by_assessment(Client, AssessmentId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/evidenceFolders"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets a list of evidence folders that are associated with a specified
%% control in an Audit Manager assessment.
get_evidence_folders_by_assessment_control(Client, AssessmentId, ControlId, ControlSetId)
when is_map(Client) ->
get_evidence_folders_by_assessment_control(Client, AssessmentId, ControlId, ControlSetId, #{}, #{}).
get_evidence_folders_by_assessment_control(Client, AssessmentId, ControlId, ControlSetId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_evidence_folders_by_assessment_control(Client, AssessmentId, ControlId, ControlSetId, QueryMap, HeadersMap, []).
get_evidence_folders_by_assessment_control(Client, AssessmentId, ControlId, ControlSetId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/evidenceFolders-by-assessment-control/", aws_util:encode_uri(ControlSetId), "/", aws_util:encode_uri(ControlId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets the latest analytics data for all your current active
%% assessments.
get_insights(Client)
when is_map(Client) ->
get_insights(Client, #{}, #{}).
get_insights(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_insights(Client, QueryMap, HeadersMap, []).
get_insights(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/insights"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets the latest analytics data for a specific active assessment.
get_insights_by_assessment(Client, AssessmentId)
when is_map(Client) ->
get_insights_by_assessment(Client, AssessmentId, #{}, #{}).
get_insights_by_assessment(Client, AssessmentId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_insights_by_assessment(Client, AssessmentId, QueryMap, HeadersMap, []).
get_insights_by_assessment(Client, AssessmentId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/insights/assessments/", aws_util:encode_uri(AssessmentId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets the name of the delegated Amazon Web Services administrator
%% account for a specified organization.
get_organization_admin_account(Client)
when is_map(Client) ->
get_organization_admin_account(Client, #{}, #{}).
get_organization_admin_account(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_organization_admin_account(Client, QueryMap, HeadersMap, []).
get_organization_admin_account(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/account/organizationAdminAccount"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets a list of all of the Amazon Web Services that you can choose to
%% include in your assessment.
%%
%% When you create an assessment:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_CreateAssessment.html,
%% specify which of these services you want to include to narrow the
%% assessment's scope:
%% https://docs.aws.amazon.com/audit-manager/latest/APIReference/API_Scope.html.
get_services_in_scope(Client)
when is_map(Client) ->
get_services_in_scope(Client, #{}, #{}).
get_services_in_scope(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_services_in_scope(Client, QueryMap, HeadersMap, []).
get_services_in_scope(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/services"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Gets the settings for a specified Amazon Web Services account.
get_settings(Client, Attribute)
when is_map(Client) ->
get_settings(Client, Attribute, #{}, #{}).
get_settings(Client, Attribute, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
get_settings(Client, Attribute, QueryMap, HeadersMap, []).
get_settings(Client, Attribute, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/settings/", aws_util:encode_uri(Attribute), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Lists the latest analytics data for controls within a specific
%% control domain and a specific active assessment.
%%
%% Control insights are listed only if the control belongs to the control
%% domain and assessment that was specified. Moreover, the control must have
%% collected evidence on the `lastUpdated' date of
%% `controlInsightsByAssessment'. If neither of these conditions are met,
%% no data is listed for that control.
list_assessment_control_insights_by_control_domain(Client, AssessmentId, ControlDomainId)
when is_map(Client) ->
list_assessment_control_insights_by_control_domain(Client, AssessmentId, ControlDomainId, #{}, #{}).
list_assessment_control_insights_by_control_domain(Client, AssessmentId, ControlDomainId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_assessment_control_insights_by_control_domain(Client, AssessmentId, ControlDomainId, QueryMap, HeadersMap, []).
list_assessment_control_insights_by_control_domain(Client, AssessmentId, ControlDomainId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/insights/controls-by-assessment"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"assessmentId">>, AssessmentId},
{<<"controlDomainId">>, ControlDomainId},
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of sent or received share requests for custom
%% frameworks in Audit Manager.
list_assessment_framework_share_requests(Client, RequestType)
when is_map(Client) ->
list_assessment_framework_share_requests(Client, RequestType, #{}, #{}).
list_assessment_framework_share_requests(Client, RequestType, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_assessment_framework_share_requests(Client, RequestType, QueryMap, HeadersMap, []).
list_assessment_framework_share_requests(Client, RequestType, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessmentFrameworkShareRequests"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)},
{<<"requestType">>, RequestType}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of the frameworks that are available in the Audit
%% Manager framework library.
list_assessment_frameworks(Client, FrameworkType)
when is_map(Client) ->
list_assessment_frameworks(Client, FrameworkType, #{}, #{}).
list_assessment_frameworks(Client, FrameworkType, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_assessment_frameworks(Client, FrameworkType, QueryMap, HeadersMap, []).
list_assessment_frameworks(Client, FrameworkType, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessmentFrameworks"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"frameworkType">>, FrameworkType},
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of assessment reports created in Audit Manager.
list_assessment_reports(Client)
when is_map(Client) ->
list_assessment_reports(Client, #{}, #{}).
list_assessment_reports(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_assessment_reports(Client, QueryMap, HeadersMap, []).
list_assessment_reports(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessmentReports"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of current and past assessments from Audit Manager.
list_assessments(Client)
when is_map(Client) ->
list_assessments(Client, #{}, #{}).
list_assessments(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_assessments(Client, QueryMap, HeadersMap, []).
list_assessments(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/assessments"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)},
{<<"status">>, maps:get(<<"status">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Lists the latest analytics data for control domains across all of
%% your active assessments.
%%
%% A control domain is listed only if at least one of the controls within
%% that domain collected evidence on the `lastUpdated' date of
%% `controlDomainInsights'. If this condition isn’t met, no data is
%% listed for that control domain.
list_control_domain_insights(Client)
when is_map(Client) ->
list_control_domain_insights(Client, #{}, #{}).
list_control_domain_insights(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_control_domain_insights(Client, QueryMap, HeadersMap, []).
list_control_domain_insights(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/insights/control-domains"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Lists analytics data for control domains within a specified active
%% assessment.
%%
%% A control domain is listed only if at least one of the controls within
%% that domain collected evidence on the `lastUpdated' date of
%% `controlDomainInsights'. If this condition isn’t met, no data is
%% listed for that domain.
list_control_domain_insights_by_assessment(Client, AssessmentId)
when is_map(Client) ->
list_control_domain_insights_by_assessment(Client, AssessmentId, #{}, #{}).
list_control_domain_insights_by_assessment(Client, AssessmentId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_control_domain_insights_by_assessment(Client, AssessmentId, QueryMap, HeadersMap, []).
list_control_domain_insights_by_assessment(Client, AssessmentId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/insights/control-domains-by-assessment"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"assessmentId">>, AssessmentId},
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Lists the latest analytics data for controls within a specific
%% control domain across all active assessments.
%%
%% Control insights are listed only if the control belongs to the control
%% domain that was specified and the control collected evidence on the
%% `lastUpdated' date of `controlInsightsMetadata'. If neither of
%% these conditions are met, no data is listed for that control.
list_control_insights_by_control_domain(Client, ControlDomainId)
when is_map(Client) ->
list_control_insights_by_control_domain(Client, ControlDomainId, #{}, #{}).
list_control_insights_by_control_domain(Client, ControlDomainId, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_control_insights_by_control_domain(Client, ControlDomainId, QueryMap, HeadersMap, []).
list_control_insights_by_control_domain(Client, ControlDomainId, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/insights/controls"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"controlDomainId">>, ControlDomainId},
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of controls from Audit Manager.
list_controls(Client, ControlType)
when is_map(Client) ->
list_controls(Client, ControlType, #{}, #{}).
list_controls(Client, ControlType, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_controls(Client, ControlType, QueryMap, HeadersMap, []).
list_controls(Client, ControlType, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/controls"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"controlType">>, ControlType},
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of keywords that are pre-mapped to the specified
%% control data source.
list_keywords_for_data_source(Client, Source)
when is_map(Client) ->
list_keywords_for_data_source(Client, Source, #{}, #{}).
list_keywords_for_data_source(Client, Source, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_keywords_for_data_source(Client, Source, QueryMap, HeadersMap, []).
list_keywords_for_data_source(Client, Source, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/dataSourceKeywords"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)},
{<<"source">>, Source}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of all Audit Manager notifications.
list_notifications(Client)
when is_map(Client) ->
list_notifications(Client, #{}, #{}).
list_notifications(Client, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_notifications(Client, QueryMap, HeadersMap, []).
list_notifications(Client, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/notifications"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query0_ =
[
{<<"maxResults">>, maps:get(<<"maxResults">>, QueryMap, undefined)},
{<<"nextToken">>, maps:get(<<"nextToken">>, QueryMap, undefined)}
],
Query_ = [H || {_, V} = H <- Query0_, V =/= undefined],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Returns a list of tags for the specified resource in Audit Manager.
list_tags_for_resource(Client, ResourceArn)
when is_map(Client) ->
list_tags_for_resource(Client, ResourceArn, #{}, #{}).
list_tags_for_resource(Client, ResourceArn, QueryMap, HeadersMap)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap) ->
list_tags_for_resource(Client, ResourceArn, QueryMap, HeadersMap, []).
list_tags_for_resource(Client, ResourceArn, QueryMap, HeadersMap, Options0)
when is_map(Client), is_map(QueryMap), is_map(HeadersMap), is_list(Options0) ->
Path = ["/tags/", aws_util:encode_uri(ResourceArn), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false}
| Options0],
Headers = [],
Query_ = [],
request(Client, get, Path, Query_, Headers, undefined, Options, SuccessStatusCode).
%% @doc Enables Audit Manager for the specified Amazon Web Services account.
register_account(Client, Input) ->
register_account(Client, Input, []).
register_account(Client, Input0, Options0) ->
Method = post,
Path = ["/account/registerAccount"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Enables an Amazon Web Services account within the organization as the
%% delegated administrator for Audit Manager.
register_organization_admin_account(Client, Input) ->
register_organization_admin_account(Client, Input, []).
register_organization_admin_account(Client, Input0, Options0) ->
Method = post,
Path = ["/account/registerOrganizationAdminAccount"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Creates a share request for a custom framework in Audit Manager.
%%
%% The share request specifies a recipient and notifies them that a custom
%% framework is available. Recipients have 120 days to accept or decline the
%% request. If no action is taken, the share request expires.
%%
%% When you create a share request, Audit Manager stores a snapshot of your
%% custom framework in the US East (N. Virginia) Amazon Web Services Region.
%% Audit Manager also stores a backup of the same snapshot in the US West
%% (Oregon) Amazon Web Services Region.
%%
%% Audit Manager deletes the snapshot and the backup snapshot when one of the
%% following events occurs:
%%
%% <ul> <li> The sender revokes the share request.
%%
%% </li> <li> The recipient declines the share request.
%%
%% </li> <li> The recipient encounters an error and doesn't successfully
%% accept the share request.
%%
%% </li> <li> The share request expires before the recipient responds to the
%% request.
%%
%% </li> </ul> When a sender resends a share request:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/framework-sharing.html#framework-sharing-resend,
%% the snapshot is replaced with an updated version that corresponds with the
%% latest version of the custom framework.
%%
%% When a recipient accepts a share request, the snapshot is replicated into
%% their Amazon Web Services account under the Amazon Web Services Region
%% that was specified in the share request.
%%
%% When you invoke the `StartAssessmentFrameworkShare' API, you are about
%% to share a custom framework with another Amazon Web Services account. You
%% may not share a custom framework that is derived from a standard framework
%% if the standard framework is designated as not eligible for sharing by
%% Amazon Web Services, unless you have obtained permission to do so from the
%% owner of the standard framework. To learn more about which standard
%% frameworks are eligible for sharing, see Framework sharing eligibility:
%% https://docs.aws.amazon.com/audit-manager/latest/userguide/share-custom-framework-concepts-and-terminology.html#eligibility
%% in the Audit Manager User Guide.
start_assessment_framework_share(Client, FrameworkId, Input) ->
start_assessment_framework_share(Client, FrameworkId, Input, []).
start_assessment_framework_share(Client, FrameworkId, Input0, Options0) ->
Method = post,
Path = ["/assessmentFrameworks/", aws_util:encode_uri(FrameworkId), "/shareRequests"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Tags the specified resource in Audit Manager.
tag_resource(Client, ResourceArn, Input) ->
tag_resource(Client, ResourceArn, Input, []).
tag_resource(Client, ResourceArn, Input0, Options0) ->
Method = post,
Path = ["/tags/", aws_util:encode_uri(ResourceArn), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Removes a tag from a resource in Audit Manager.
untag_resource(Client, ResourceArn, Input) ->
untag_resource(Client, ResourceArn, Input, []).
untag_resource(Client, ResourceArn, Input0, Options0) ->
Method = delete,
Path = ["/tags/", aws_util:encode_uri(ResourceArn), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
QueryMapping = [
{<<"tagKeys">>, <<"tagKeys">>}
],
{Query_, Input} = aws_request:build_headers(QueryMapping, Input2),
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Edits an Audit Manager assessment.
update_assessment(Client, AssessmentId, Input) ->
update_assessment(Client, AssessmentId, Input, []).
update_assessment(Client, AssessmentId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Updates a control within an assessment in Audit Manager.
update_assessment_control(Client, AssessmentId, ControlId, ControlSetId, Input) ->
update_assessment_control(Client, AssessmentId, ControlId, ControlSetId, Input, []).
update_assessment_control(Client, AssessmentId, ControlId, ControlSetId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/controlSets/", aws_util:encode_uri(ControlSetId), "/controls/", aws_util:encode_uri(ControlId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Updates the status of a control set in an Audit Manager assessment.
update_assessment_control_set_status(Client, AssessmentId, ControlSetId, Input) ->
update_assessment_control_set_status(Client, AssessmentId, ControlSetId, Input, []).
update_assessment_control_set_status(Client, AssessmentId, ControlSetId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/controlSets/", aws_util:encode_uri(ControlSetId), "/status"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Updates a custom framework in Audit Manager.
update_assessment_framework(Client, FrameworkId, Input) ->
update_assessment_framework(Client, FrameworkId, Input, []).
update_assessment_framework(Client, FrameworkId, Input0, Options0) ->
Method = put,
Path = ["/assessmentFrameworks/", aws_util:encode_uri(FrameworkId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Updates a share request for a custom framework in Audit Manager.
update_assessment_framework_share(Client, RequestId, Input) ->
update_assessment_framework_share(Client, RequestId, Input, []).
update_assessment_framework_share(Client, RequestId, Input0, Options0) ->
Method = put,
Path = ["/assessmentFrameworkShareRequests/", aws_util:encode_uri(RequestId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Updates the status of an assessment in Audit Manager.
update_assessment_status(Client, AssessmentId, Input) ->
update_assessment_status(Client, AssessmentId, Input, []).
update_assessment_status(Client, AssessmentId, Input0, Options0) ->
Method = put,
Path = ["/assessments/", aws_util:encode_uri(AssessmentId), "/status"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Updates a custom control in Audit Manager.
update_control(Client, ControlId, Input) ->
update_control(Client, ControlId, Input, []).
update_control(Client, ControlId, Input0, Options0) ->
Method = put,
Path = ["/controls/", aws_util:encode_uri(ControlId), ""],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Updates Audit Manager settings for the current account.
update_settings(Client, Input) ->
update_settings(Client, Input, []).
update_settings(Client, Input0, Options0) ->
Method = put,
Path = ["/settings"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%% @doc Validates the integrity of an assessment report in Audit Manager.
validate_assessment_report_integrity(Client, Input) ->
validate_assessment_report_integrity(Client, Input, []).
validate_assessment_report_integrity(Client, Input0, Options0) ->
Method = post,
Path = ["/assessmentReports/integrity"],
SuccessStatusCode = undefined,
Options = [{send_body_as_binary, false},
{receive_body_as_binary, false},
{append_sha256_content_hash, false}
| Options0],
Headers = [],
Input1 = Input0,
CustomHeaders = [],
Input2 = Input1,
Query_ = [],
Input = Input2,
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode).
%%====================================================================
%% Internal functions
%%====================================================================
-spec request(aws_client:aws_client(), atom(), iolist(), list(),
list(), map() | undefined, list(), pos_integer() | undefined) ->
{ok, {integer(), list()}} |
{ok, Result, {integer(), list(), hackney:client()}} |
{error, Error, {integer(), list(), hackney:client()}} |
{error, term()} when
Result :: map(),
Error :: map().
request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusCode) ->
RequestFun = fun() -> do_request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusCode) end,
aws_request:request(RequestFun, Options).
do_request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusCode) ->
Client1 = Client#{service => <<"auditmanager">>},
Host = build_host(<<"auditmanager">>, Client1),
URL0 = build_url(Host, Path, Client1),
URL = aws_request:add_query(URL0, Query),
AdditionalHeaders1 = [ {<<"Host">>, Host}
, {<<"Content-Type">>, <<"application/x-amz-json-1.1">>}
],
Payload =
case proplists:get_value(send_body_as_binary, Options) of
true ->
maps:get(<<"Body">>, Input, <<"">>);
false ->
encode_payload(Input)
end,
AdditionalHeaders = case proplists:get_value(append_sha256_content_hash, Options, false) of
true ->
add_checksum_hash_header(AdditionalHeaders1, Payload);
false ->
AdditionalHeaders1
end,
Headers1 = aws_request:add_headers(AdditionalHeaders, Headers0),
MethodBin = aws_request:method_to_binary(Method),
SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload),
Response = hackney:request(Method, URL, SignedHeaders, Payload, Options),
DecodeBody = not proplists:get_value(receive_body_as_binary, Options),
handle_response(Response, SuccessStatusCode, DecodeBody).
add_checksum_hash_header(Headers, Body) ->
[ {<<"X-Amz-CheckSum-SHA256">>, base64:encode(crypto:hash(sha256, Body))}
| Headers
].
handle_response({ok, StatusCode, ResponseHeaders}, SuccessStatusCode, _DecodeBody)
when StatusCode =:= 200;
StatusCode =:= 202;
StatusCode =:= 204;
StatusCode =:= 206;
StatusCode =:= SuccessStatusCode ->
{ok, {StatusCode, ResponseHeaders}};
handle_response({ok, StatusCode, ResponseHeaders}, _, _DecodeBody) ->
{error, {StatusCode, ResponseHeaders}};
handle_response({ok, StatusCode, ResponseHeaders, Client}, SuccessStatusCode, DecodeBody)
when StatusCode =:= 200;
StatusCode =:= 202;
StatusCode =:= 204;
StatusCode =:= 206;
StatusCode =:= SuccessStatusCode ->
case hackney:body(Client) of
{ok, <<>>} when StatusCode =:= 200;
StatusCode =:= SuccessStatusCode ->
{ok, #{}, {StatusCode, ResponseHeaders, Client}};
{ok, Body} ->
Result = case DecodeBody of
true ->
try
jsx:decode(Body)
catch
Error:Reason:Stack ->
erlang:raise(error, {body_decode_failed, Error, Reason, StatusCode, Body}, Stack)
end;
false -> #{<<"Body">> => Body}
end,
{ok, Result, {StatusCode, ResponseHeaders, Client}}
end;
handle_response({ok, StatusCode, _ResponseHeaders, _Client}, _, _DecodeBody)
when StatusCode =:= 503 ->
%% Retriable error if retries are enabled
{error, service_unavailable};
handle_response({ok, StatusCode, ResponseHeaders, Client}, _, _DecodeBody) ->
{ok, Body} = hackney:body(Client),
try
DecodedError = jsx:decode(Body),
{error, DecodedError, {StatusCode, ResponseHeaders, Client}}
catch
Error:Reason:Stack ->
erlang:raise(error, {body_decode_failed, Error, Reason, StatusCode, Body}, Stack)
end;
handle_response({error, Reason}, _, _DecodeBody) ->
{error, Reason}.
build_host(_EndpointPrefix, #{region := <<"local">>, endpoint := Endpoint}) ->
Endpoint;
build_host(_EndpointPrefix, #{region := <<"local">>}) ->
<<"localhost">>;
build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) ->
aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>).
build_url(Host, Path0, Client) ->
Proto = aws_client:proto(Client),
Path = erlang:iolist_to_binary(Path0),
Port = aws_client:port(Client),
aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, Path], <<"">>).
-spec encode_payload(undefined | map()) -> binary().
encode_payload(undefined) ->
<<>>;
encode_payload(Input) ->
jsx:encode(Input).