%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE! %% See https://github.com/aws-beam/aws-codegen for more details. %% @doc AWS Support %% %% The AWS Support API reference is intended for programmers who need %% detailed information about the AWS Support operations and data types. This %% service enables you to manage your AWS Support cases programmatically. It %% uses HTTP methods that return results in JSON format. %% %% The AWS Support service also exposes a set of AWS Trusted %% Advisor features. You can retrieve a list of checks and their %% descriptions, get check results, specify checks to refresh, and get the %% refresh status of checks. %% %% The following list describes the AWS Support case management operations: %% %% The following list describes the operations available from the %% AWS Support service for Trusted Advisor: %% %% For authentication of requests, AWS Support uses Signature %% Version 4 Signing Process. %% %% See About %% the AWS Support API in the AWS Support User Guide for %% information about how to use this service to create and manage your %% support cases, and how to call Trusted Advisor for results of checks on %% your resources. -module(aws_support). -export([add_attachments_to_set/2, add_attachments_to_set/3, add_communication_to_case/2, add_communication_to_case/3, create_case/2, create_case/3, describe_attachment/2, describe_attachment/3, describe_cases/2, describe_cases/3, describe_communications/2, describe_communications/3, describe_services/2, describe_services/3, describe_severity_levels/2, describe_severity_levels/3, describe_trusted_advisor_check_refresh_statuses/2, describe_trusted_advisor_check_refresh_statuses/3, describe_trusted_advisor_check_result/2, describe_trusted_advisor_check_result/3, describe_trusted_advisor_check_summaries/2, describe_trusted_advisor_check_summaries/3, describe_trusted_advisor_checks/2, describe_trusted_advisor_checks/3, refresh_trusted_advisor_check/2, refresh_trusted_advisor_check/3, resolve_case/2, resolve_case/3]). -include_lib("hackney/include/hackney_lib.hrl"). %%==================================================================== %% API %%==================================================================== %% @doc Adds one or more attachments to an attachment set. %% %% An attachment set is a temporary container for attachments that you add to %% a case or case communication. The set is available for 1 hour after it's %% created. The expiryTime returned in the response is when the %% set expires. %% %% 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. Use %% the caseId parameter to identify the case to which to add %% communication. You can list a set of email addresses to copy on the %% communication by using the ccEmailAddresses parameter. The %% communicationBody value contains the text of the %% communication. %% %% 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 case in the AWS Support Center. This operation is similar %% to how you create a case in the AWS Support Center Create %% Case page. %% %% The AWS Support API doesn't support requesting service limit increases. %% You can submit a service limit increase in the following ways: %% %% A successful CreateCase request returns an AWS %% Support case number. You can use the DescribeCases operation and %% specify the case number to get existing AWS Support cases. After you %% create a case, use the AddCommunicationToCase operation to add %% additional communication or attachments to an existing case. %% %% The caseId is separate from the displayId that %% appears in the AWS %% Support Center. Use the DescribeCases operation to get the %% displayId. %% %% create_case(Client, Input) when is_map(Client), is_map(Input) -> create_case(Client, Input, []). create_case(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"CreateCase">>, Input, Options). %% @doc Returns the attachment that has the specified ID. Attachments can %% include screenshots, error logs, or other files that describe your issue. %% Attachment IDs are generated by the case management system when you add an %% attachment to a case or case communication. Attachment IDs are returned in %% the AttachmentDetails objects that are returned by the %% DescribeCommunications operation. %% %% describe_attachment(Client, Input) when is_map(Client), is_map(Input) -> describe_attachment(Client, Input, []). describe_attachment(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeAttachment">>, Input, Options). %% @doc Returns a list of cases that you specify by passing one or more case %% IDs. You can use the afterTime and beforeTime %% parameters to filter the cases by date. You can set values for the %% includeResolvedCases and includeCommunications %% parameters to specify how much information to return. %% %% The response returns the following in JSON format: %% %% Case data is available for 12 months after creation. If a case %% was created more than 12 months ago, a request might return an error. %% %% describe_cases(Client, Input) when is_map(Client), is_map(Input) -> describe_cases(Client, Input, []). describe_cases(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeCases">>, Input, Options). %% @doc Returns communications and attachments for one or more support cases. %% Use the afterTime and beforeTime parameters to %% filter by date. You can use the caseId parameter to restrict %% the results to a specific 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 results. Set %% maxResults to the number of cases that you want to display 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 for each service. 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 appear %% in the Service and Category lists on the AWS Support Center %% Create %% Case page. The values in those fields don't necessarily match the %% service codes and categories returned by the DescribeServices %% operation. Always use the service codes and categories that the %% DescribeServices operation returns, so that you 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 that you include for a 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 AWS Trusted Advisor checks that %% have the specified check IDs. You can get the check IDs by calling the %% DescribeTrustedAdvisorChecks operation. %% %% Some checks are refreshed automatically, and you can't return their %% refresh statuses by using the %% DescribeTrustedAdvisorCheckRefreshStatuses operation. If you %% call this operation for these checks, you might see an %% InvalidParameterValue error. %% %% 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 AWS Trusted Advisor check that has the %% specified check ID. You can get the check IDs by calling the %% DescribeTrustedAdvisorChecks operation. %% %% The response contains a TrustedAdvisorCheckResult object, which %% contains these three objects: %% %% In addition, the response contains these fields: %% %% describe_trusted_advisor_check_result(Client, Input) when is_map(Client), is_map(Input) -> describe_trusted_advisor_check_result(Client, Input, []). describe_trusted_advisor_check_result(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeTrustedAdvisorCheckResult">>, Input, Options). %% @doc Returns the results for the AWS Trusted Advisor check summaries for %% the check IDs that you specified. You can get the check IDs by calling the %% DescribeTrustedAdvisorChecks operation. %% %% The response contains an array of TrustedAdvisorCheckSummary %% objects. %% %% describe_trusted_advisor_check_summaries(Client, Input) when is_map(Client), is_map(Input) -> describe_trusted_advisor_check_summaries(Client, Input, []). describe_trusted_advisor_check_summaries(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeTrustedAdvisorCheckSummaries">>, Input, Options). %% @doc Returns information about all available AWS Trusted Advisor checks, %% including the name, ID, category, description, and metadata. You must %% specify a language code. The AWS Support API currently supports English %% ("en") and Japanese ("ja"). The response contains a %% TrustedAdvisorCheckDescription object for each check. You must set %% the AWS Region to us-east-1. %% %% describe_trusted_advisor_checks(Client, Input) when is_map(Client), is_map(Input) -> describe_trusted_advisor_checks(Client, Input, []). describe_trusted_advisor_checks(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeTrustedAdvisorChecks">>, Input, Options). %% @doc Refreshes the AWS Trusted Advisor check that you specify using the %% check ID. You can get the check IDs by calling the %% DescribeTrustedAdvisorChecks operation. %% %% Some checks are refreshed automatically. If you call the %% RefreshTrustedAdvisorCheck operation to refresh them, you %% might see the InvalidParameterValue error. %% %% The response contains a TrustedAdvisorCheckRefreshStatus %% object. %% %% refresh_trusted_advisor_check(Client, Input) when is_map(Client), is_map(Input) -> refresh_trusted_advisor_check(Client, Input, []). refresh_trusted_advisor_check(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"RefreshTrustedAdvisorCheck">>, Input, Options). %% @doc Resolves a support case. This operation takes a caseId %% and returns the initial and final state of the case. %% %% 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), SignedHeaders = aws_request:sign_request(Client1, <<"POST">>, URL, Headers, Payload), Response = hackney:request(post, URL, SignedHeaders, 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, <<"/">>], <<"">>).