%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
%% See https://github.com/jkakar/aws-codegen for more details.
%% @doc
CheckId for a specific check returned by
%% DescribeTrustedAdvisorChecks, you can call
%% DescribeTrustedAdvisorCheckResult to obtain the results for the
%% check you specified.AttachmentSetId is not specified, a new attachment set is
%% created, and the ID of the set is returned in the response. If an
%% AttachmentSetId is specified, the attachments are added to
%% the specified set, if it exists.
%%
%% An attachment set is a temporary container for attachments that are to be
%% added to a case or case communication. The set is available for one hour
%% after it is created; the ExpiryTime returned in the response
%% indicates when the set expires. The maximum number of attachments in a set
%% is 3, and the maximum size of any attachment in the set is 5 MB.
add_attachments_to_set(Client, Input)
when is_map(Client), is_map(Input) ->
add_attachments_to_set(Client, Input, []).
add_attachments_to_set(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"AddAttachmentsToSet">>, Input, Options).
%% @doc Adds additional customer communication to an AWS Support case. You
%% use the CaseId value to identify the case to add
%% communication to. You can list a set of email addresses to copy on the
%% communication using the CcEmailAddresses value. The
%% CommunicationBody value contains the text of the
%% communication.
%%
%% The response indicates the success or failure of the request.
%%
%% This operation implements a subset of the features of the AWS Support
%% Center.
add_communication_to_case(Client, Input)
when is_map(Client), is_map(Input) ->
add_communication_to_case(Client, Input, []).
add_communication_to_case(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"AddCommunicationToCase">>, Input, Options).
%% @doc Creates a new case in the AWS Support Center. This operation is
%% modeled on the behavior of the AWS Support Center Create
%% Case page. Its parameters require you to specify the following
%% information:
%%
%% ServiceCode by calling
%% DescribeServices. ServiceCode value. You also
%% obtain the category code for a service by calling DescribeServices.
%% Each AWS service defines its own set of category codes. AfterTime and BeforeTime request parameters.
%% You can set values for the IncludeResolvedCases and
%% IncludeCommunications request parameters to control how much
%% information is returned.
%%
%% Case data is available for 12 months after creation. If a case was created
%% more than 12 months ago, a request for data might cause an error.
%%
%% The response returns the following in JSON format:
%%
%% NextToken values, which specify where to paginate the
%% returned records represented by the CaseDetails objects.AfterTime and BeforeTime
%% parameters to filter by date. You can use the CaseId
%% parameter to restrict the results to a particular case.
%%
%% Case data is available for 12 months after creation. If a case was created
%% more than 12 months ago, a request for data might cause an error.
%%
%% You can use the MaxResults and NextToken
%% parameters to control the pagination of the result set. Set
%% MaxResults to the number of cases you want displayed on each
%% page, and use NextToken to specify the resumption of
%% pagination.
describe_communications(Client, Input)
when is_map(Client), is_map(Input) ->
describe_communications(Client, Input, []).
describe_communications(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DescribeCommunications">>, Input, Options).
%% @doc Returns the current list of AWS services and a list of service
%% categories that applies to each one. You then use service names and
%% categories in your CreateCase requests. Each AWS service has its
%% own set of categories.
%%
%% The service codes and category codes correspond to the values that are
%% displayed in the Service and Category drop-down lists on the
%% AWS Support Center Create
%% Case page. The values in those fields, however, do not necessarily
%% match the service codes and categories returned by the
%% DescribeServices request. Always use the service codes and
%% categories obtained programmatically. This practice ensures that you
%% always have the most recent set of service and category codes.
describe_services(Client, Input)
when is_map(Client), is_map(Input) ->
describe_services(Client, Input, []).
describe_services(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DescribeServices">>, Input, Options).
%% @doc Returns the list of severity levels that you can assign to an AWS
%% Support case. The severity level for a case is also a field in the
%% CaseDetails data type included in any CreateCase request.
describe_severity_levels(Client, Input)
when is_map(Client), is_map(Input) ->
describe_severity_levels(Client, Input, []).
describe_severity_levels(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DescribeSeverityLevels">>, Input, Options).
%% @doc Returns the refresh status of the Trusted Advisor checks that have
%% the specified check IDs. Check IDs can be obtained by calling
%% DescribeTrustedAdvisorChecks.
describe_trusted_advisor_check_refresh_statuses(Client, Input)
when is_map(Client), is_map(Input) ->
describe_trusted_advisor_check_refresh_statuses(Client, Input, []).
describe_trusted_advisor_check_refresh_statuses(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DescribeTrustedAdvisorCheckRefreshStatuses">>, Input, Options).
%% @doc Returns the results of the Trusted Advisor check that has the
%% specified check ID. Check IDs can be obtained by calling
%% DescribeTrustedAdvisorChecks.
%%
%% The response contains a TrustedAdvisorCheckResult object, which
%% contains these three objects:
%%
%% CaseId and returns the initial state of the case
%% along with the state of the case after the call to ResolveCase
%% completed.
resolve_case(Client, Input)
when is_map(Client), is_map(Input) ->
resolve_case(Client, Input, []).
resolve_case(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ResolveCase">>, Input, Options).
%%====================================================================
%% Internal functions
%%====================================================================
-spec request(aws_client:aws_client(), binary(), map(), list()) ->
{ok, Result, {integer(), list(), hackney:client()}} |
{error, Error, {integer(), list(), hackney:client()}} |
{error, term()} when
Result :: map() | undefined,
Error :: {binary(), binary()}.
request(Client, Action, Input, Options) ->
Client1 = Client#{service => <<"support">>},
Host = get_host(<<"support">>, Client1),
URL = get_url(Host, Client1),
Headers = [{<<"Host">>, Host},
{<<"Content-Type">>, <<"application/x-amz-json-1.1">>},
{<<"X-Amz-Target">>, << <<"AWSSupport_20130415.">>/binary, Action/binary>>}],
Payload = jsx:encode(Input),
Headers1 = aws_request:sign_request(Client1, <<"POST">>, URL, Headers, Payload),
Response = hackney:request(post, URL, Headers1, Payload, Options),
handle_response(Response).
handle_response({ok, 200, ResponseHeaders, Client}) ->
case hackney:body(Client) of
{ok, <<>>} ->
{ok, undefined, {200, ResponseHeaders, Client}};
{ok, Body} ->
Result = jsx:decode(Body, [return_maps]),
{ok, Result, {200, ResponseHeaders, Client}}
end;
handle_response({ok, StatusCode, ResponseHeaders, Client}) ->
{ok, Body} = hackney:body(Client),
Error = jsx:decode(Body, [return_maps]),
Exception = maps:get(<<"__type">>, Error, undefined),
Reason = maps:get(<<"message">>, Error, undefined),
{error, {Exception, Reason}, {StatusCode, ResponseHeaders, Client}};
handle_response({error, Reason}) ->
{error, Reason}.
get_host(_EndpointPrefix, #{region := <<"local">>}) ->
<<"localhost">>;
get_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) ->
aws_util:binary_join([EndpointPrefix,
<<".">>,
Region,
<<".">>,
Endpoint],
<<"">>).
get_url(Host, Client) ->
Proto = maps:get(proto, Client),
Port = maps:get(port, Client),
aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, <<"/">>],
<<"">>).