%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE! %% See https://github.com/aws-beam/aws-codegen for more details. %% @doc Health %% %% The Health API provides programmatic access to the Health information that %% appears in the Personal Health Dashboard. %% %% You can use the API operations to get information about events that might %% affect your Amazon Web Services services and resources. %% %% You must have a Business, Enterprise On-Ramp, or Enterprise Support plan %% from Amazon Web Services Support to use the Health API. If you call the %% Health API from an Amazon Web Services account that doesn't have a %% Business, Enterprise On-Ramp, or Enterprise Support plan, you receive a %% `SubscriptionRequiredException' error. %% %% You can use the Health endpoint health.us-east-1.amazonaws.com (HTTPS) to %% call the Health API operations. Health supports a multi-Region application %% architecture and has two regional endpoints in an active-passive %% configuration. You can use the high availability endpoint example to %% determine which Amazon Web Services Region is active, so that you can get %% the latest information from the API. For more information, see Accessing %% the Health API in the Health User Guide. %% %% For authentication of requests, Health uses the Signature Version 4 %% Signing Process. %% %% If your Amazon Web Services account is part of Organizations, you can use %% the Health organizational view feature. This feature provides a %% centralized view of Health events across all accounts in your %% organization. You can aggregate Health events in real time to identify %% accounts in your organization that are affected by an operational event or %% get notified of security vulnerabilities. Use the organizational view API %% operations to enable this feature and return event information. For more %% information, see Aggregating Health events in the Health User Guide. %% %% When you use the Health API operations to return Health events, see the %% following recommendations: %% %% Use the eventScopeCode parameter to specify whether to return Health %% events that are public or account-specific. %% %% Use pagination to view all events from the response. For example, if you %% call the `DescribeEventsForOrganization' operation to get all events %% in your organization, you might receive several page results. Specify the %% `nextToken' in the next request to return more results. -module(aws_health). -export([describe_affected_accounts_for_organization/2, describe_affected_accounts_for_organization/3, describe_affected_entities/2, describe_affected_entities/3, describe_affected_entities_for_organization/2, describe_affected_entities_for_organization/3, describe_entity_aggregates/2, describe_entity_aggregates/3, describe_event_aggregates/2, describe_event_aggregates/3, describe_event_details/2, describe_event_details/3, describe_event_details_for_organization/2, describe_event_details_for_organization/3, describe_event_types/2, describe_event_types/3, describe_events/2, describe_events/3, describe_events_for_organization/2, describe_events_for_organization/3, describe_health_service_status_for_organization/2, describe_health_service_status_for_organization/3, disable_health_service_access_for_organization/2, disable_health_service_access_for_organization/3, enable_health_service_access_for_organization/2, enable_health_service_access_for_organization/3]). -include_lib("hackney/include/hackney_lib.hrl"). %%==================================================================== %% API %%==================================================================== %% @doc Returns a list of accounts in the organization from Organizations %% that are affected by the provided event. %% %% For more information about the different types of Health events, see %% Event. %% %% Before you can call this operation, you must first enable Health to work %% with Organizations. To do this, call the %% EnableHealthServiceAccessForOrganization operation from your %% organization's management account. %% %% This API operation uses pagination. Specify the `nextToken' parameter %% in the next request to return more results. describe_affected_accounts_for_organization(Client, Input) when is_map(Client), is_map(Input) -> describe_affected_accounts_for_organization(Client, Input, []). describe_affected_accounts_for_organization(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeAffectedAccountsForOrganization">>, Input, Options). %% @doc Returns a list of entities that have been affected by the specified %% events, based on the specified filter criteria. %% %% Entities can refer to individual customer resources, groups of customer %% resources, or any other construct, depending on the Amazon Web Services %% service. Events that have impact beyond that of the affected entities, or %% where the extent of impact is unknown, include at least one entity %% indicating this. %% %% At least one event ARN is required. %% %% This API operation uses pagination. Specify the `nextToken' parameter %% in the next request to return more results. %% %% This operation supports resource-level permissions. You can use this %% operation to allow or deny access to specific Health events. For more %% information, see Resource- and action-based conditions in the Health User %% Guide. describe_affected_entities(Client, Input) when is_map(Client), is_map(Input) -> describe_affected_entities(Client, Input, []). describe_affected_entities(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeAffectedEntities">>, Input, Options). %% @doc Returns a list of entities that have been affected by one or more %% events for one or more accounts in your organization in Organizations, %% based on the filter criteria. %% %% Entities can refer to individual customer resources, groups of customer %% resources, or any other construct, depending on the Amazon Web Services %% service. %% %% At least one event Amazon Resource Name (ARN) and account ID are required. %% %% Before you can call this operation, you must first enable Health to work %% with Organizations. To do this, call the %% EnableHealthServiceAccessForOrganization operation from your %% organization's management account. %% %% This API operation uses pagination. Specify the `nextToken' parameter %% in the next request to return more results. %% %% This operation doesn't support resource-level permissions. You %% can't use this operation to allow or deny access to specific Health %% events. For more information, see Resource- and action-based conditions in %% the Health User Guide. describe_affected_entities_for_organization(Client, Input) when is_map(Client), is_map(Input) -> describe_affected_entities_for_organization(Client, Input, []). describe_affected_entities_for_organization(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeAffectedEntitiesForOrganization">>, Input, Options). %% @doc Returns the number of entities that are affected by each of the %% specified events. describe_entity_aggregates(Client, Input) when is_map(Client), is_map(Input) -> describe_entity_aggregates(Client, Input, []). describe_entity_aggregates(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEntityAggregates">>, Input, Options). %% @doc Returns the number of events of each event type (issue, scheduled %% change, and account notification). %% %% If no filter is specified, the counts of all events in each category are %% returned. %% %% This API operation uses pagination. Specify the `nextToken' parameter %% in the next request to return more results. describe_event_aggregates(Client, Input) when is_map(Client), is_map(Input) -> describe_event_aggregates(Client, Input, []). describe_event_aggregates(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEventAggregates">>, Input, Options). %% @doc Returns detailed information about one or more specified events. %% %% Information includes standard event data (Amazon Web Services Region, %% service, and so on, as returned by DescribeEvents), a detailed event %% description, and possible additional metadata that depends upon the nature %% of the event. Affected entities are not included. To retrieve the %% entities, use the DescribeAffectedEntities operation. %% %% If a specified event can't be retrieved, an error message is returned %% for that event. %% %% This operation supports resource-level permissions. You can use this %% operation to allow or deny access to specific Health events. For more %% information, see Resource- and action-based conditions in the Health User %% Guide. describe_event_details(Client, Input) when is_map(Client), is_map(Input) -> describe_event_details(Client, Input, []). describe_event_details(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEventDetails">>, Input, Options). %% @doc Returns detailed information about one or more specified events for %% one or more Amazon Web Services accounts in your organization. %% %% This information includes standard event data (such as the Amazon Web %% Services Region and service), an event description, and (depending on the %% event) possible metadata. This operation doesn't return affected %% entities, such as the resources related to the event. To return affected %% entities, use the DescribeAffectedEntitiesForOrganization operation. %% %% Before you can call this operation, you must first enable Health to work %% with Organizations. To do this, call the %% EnableHealthServiceAccessForOrganization operation from your %% organization's management account. %% %% When you call the `DescribeEventDetailsForOrganization' operation, %% specify the `organizationEventDetailFilters' object in the request. %% Depending on the Health event type, note the following differences: %% %% For more information, see Event. %% %% This operation doesn't support resource-level permissions. You %% can't use this operation to allow or deny access to specific Health %% events. For more information, see Resource- and action-based conditions in %% the Health User Guide. describe_event_details_for_organization(Client, Input) when is_map(Client), is_map(Input) -> describe_event_details_for_organization(Client, Input, []). describe_event_details_for_organization(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEventDetailsForOrganization">>, Input, Options). %% @doc Returns the event types that meet the specified filter criteria. %% %% You can use this API operation to find information about the Health event, %% such as the category, Amazon Web Services service, and event code. The %% metadata for each event appears in the EventType object. %% %% If you don't specify a filter criteria, the API operation returns all %% event types, in no particular order. %% %% This API operation uses pagination. Specify the `nextToken' parameter %% in the next request to return more results. describe_event_types(Client, Input) when is_map(Client), is_map(Input) -> describe_event_types(Client, Input, []). describe_event_types(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEventTypes">>, Input, Options). %% @doc Returns information about events that meet the specified filter %% criteria. %% %% Events are returned in a summary form and do not include the detailed %% description, any additional metadata that depends on the event type, or %% any affected resources. To retrieve that information, use the %% DescribeEventDetails and DescribeAffectedEntities operations. %% %% If no filter criteria are specified, all events are returned. Results are %% sorted by `lastModifiedTime', starting with the most recent event. %% %% When you call the `DescribeEvents' operation and specify an entity for %% the `entityValues' parameter, Health might return public events that %% aren't specific to that resource. For example, if you call %% `DescribeEvents' and specify an ID for an Amazon Elastic Compute Cloud %% (Amazon EC2) instance, Health might return events that aren't specific %% to that resource or service. To get events that are specific to a service, %% use the `services' parameter in the `filter' object. For more %% information, see Event. %% %% This API operation uses pagination. Specify the `nextToken' parameter %% in the next request to return more results. describe_events(Client, Input) when is_map(Client), is_map(Input) -> describe_events(Client, Input, []). describe_events(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEvents">>, Input, Options). %% @doc Returns information about events across your organization in %% Organizations. %% %% You can use the`filters' parameter to specify the events that you want %% to return. Events are returned in a summary form and don't include the %% affected accounts, detailed description, any additional metadata that %% depends on the event type, or any affected resources. To retrieve that %% information, use the following operations: %% %% If you don't specify a `filter', the %% `DescribeEventsForOrganizations' returns all events across your %% organization. Results are sorted by `lastModifiedTime', starting with %% the most recent event. %% %% For more information about the different types of Health events, see %% Event. %% %% Before you can call this operation, you must first enable Health to work %% with Organizations. To do this, call the %% EnableHealthServiceAccessForOrganization operation from your %% organization's management account. %% %% This API operation uses pagination. Specify the `nextToken' parameter %% in the next request to return more results. describe_events_for_organization(Client, Input) when is_map(Client), is_map(Input) -> describe_events_for_organization(Client, Input, []). describe_events_for_organization(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeEventsForOrganization">>, Input, Options). %% @doc This operation provides status information on enabling or disabling %% Health to work with your organization. %% %% To call this operation, you must sign in as an IAM user, assume an IAM %% role, or sign in as the root user (not recommended) in the %% organization's management account. describe_health_service_status_for_organization(Client, Input) when is_map(Client), is_map(Input) -> describe_health_service_status_for_organization(Client, Input, []). describe_health_service_status_for_organization(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DescribeHealthServiceStatusForOrganization">>, Input, Options). %% @doc Disables Health from working with Organizations. %% %% To call this operation, you must sign in as an Identity and Access %% Management (IAM) user, assume an IAM role, or sign in as the root user %% (not recommended) in the organization's management account. For more %% information, see Aggregating Health events in the Health User Guide. %% %% This operation doesn't remove the service-linked role from the %% management account in your organization. You must use the IAM console, %% API, or Command Line Interface (CLI) to remove the service-linked role. %% For more information, see Deleting a Service-Linked Role in the IAM User %% Guide. %% %% You can also disable the organizational feature by using the Organizations %% DisableAWSServiceAccess API operation. After you call this operation, %% Health stops aggregating events for all other Amazon Web Services accounts %% in your organization. If you call the Health API operations for %% organizational view, Health returns an error. Health continues to %% aggregate health events for your Amazon Web Services account. disable_health_service_access_for_organization(Client, Input) when is_map(Client), is_map(Input) -> disable_health_service_access_for_organization(Client, Input, []). disable_health_service_access_for_organization(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"DisableHealthServiceAccessForOrganization">>, Input, Options). %% @doc Enables Health to work with Organizations. %% %% You can use the organizational view feature to aggregate events from all %% Amazon Web Services accounts in your organization in a centralized %% location. %% %% This operation also creates a service-linked role for the management %% account in the organization. %% %% To call this operation, you must meet the following requirements: %% %% You must have a Business, Enterprise On-Ramp, or Enterprise Support plan %% from Amazon Web Services Support to use the Health API. If you call the %% Health API from an Amazon Web Services account that doesn't have a %% Business, Enterprise On-Ramp, or Enterprise Support plan, you receive a %% `SubscriptionRequiredException' error. %% %% You must have permission to call this operation from the %% organization's management account. For example IAM policies, see %% Health identity-based policy examples. %% %% If you don't have the required support plan, you can instead use the %% Health console to enable the organizational view feature. For more %% information, see Aggregating Health events in the Health User Guide. enable_health_service_access_for_organization(Client, Input) when is_map(Client), is_map(Input) -> enable_health_service_access_for_organization(Client, Input, []). enable_health_service_access_for_organization(Client, Input, Options) when is_map(Client), is_map(Input), is_list(Options) -> request(Client, <<"EnableHealthServiceAccessForOrganization">>, 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 :: map(). request(Client, Action, Input, Options) -> RequestFun = fun() -> do_request(Client, Action, Input, Options) end, aws_request:request(RequestFun, Options). do_request(Client, Action, Input0, Options) -> Client1 = Client#{service => <<"health">>, region => <<"us-east-1">>}, Host = build_host(<<"health">>, Client1), URL = build_url(Host, Client1), Headers = [ {<<"Host">>, Host}, {<<"Content-Type">>, <<"application/x-amz-json-1.1">>}, {<<"X-Amz-Target">>, <<"AWSHealth_20160804.", Action/binary>>} ], Input = Input0, 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), {ok, Result, {200, ResponseHeaders, Client}} end; handle_response({ok, StatusCode, ResponseHeaders, Client}) -> {ok, Body} = hackney:body(Client), Error = jsx:decode(Body), {error, Error, {StatusCode, ResponseHeaders, Client}}; handle_response({error, Reason}) -> {error, Reason}. build_host(_EndpointPrefix, #{region := <<"local">>, endpoint := Endpoint}) -> Endpoint; build_host(_EndpointPrefix, #{region := <<"local">>}) -> <<"localhost">>; build_host(EndpointPrefix, #{endpoint := Endpoint}) -> aws_util:binary_join([EndpointPrefix, Endpoint], <<".">>). build_url(Host, Client) -> Proto = maps:get(proto, Client), Port = maps:get(port, Client), aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, <<"/">>], <<"">>).