/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace Health { /** * Health

The Health API provides access to the Health * information that appears in the Health Dashboard. You can * use the API operations to get information about events that might affect your * Amazon Web 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.

For * API access, you need an access key ID and a secret access key. Use temporary * credentials instead of long-term access keys when possible. Temporary * credentials include an access key ID, a secret access key, and a security token * that indicates when the credentials expire. For more information, see Best * practices for managing Amazon Web Services access keys in the Amazon Web * Services General Reference.

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.

  • *
*/ class AWS_HEALTH_API HealthClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods { public: typedef Aws::Client::AWSJsonClient BASECLASS; static const char* SERVICE_NAME; static const char* ALLOCATION_TAG; typedef HealthClientConfiguration ClientConfigurationType; typedef HealthEndpointProvider EndpointProviderType; /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ HealthClient(const Aws::Health::HealthClientConfiguration& clientConfiguration = Aws::Health::HealthClientConfiguration(), std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG)); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ HealthClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::Health::HealthClientConfiguration& clientConfiguration = Aws::Health::HealthClientConfiguration()); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ HealthClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::Health::HealthClientConfiguration& clientConfiguration = Aws::Health::HealthClientConfiguration()); /* Legacy constructors due deprecation */ /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ HealthClient(const Aws::Client::ClientConfiguration& clientConfiguration); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ HealthClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ HealthClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~HealthClient(); /** *

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.

See Also:

AWS * API Reference

*/ virtual Model::DescribeAffectedAccountsForOrganizationOutcome DescribeAffectedAccountsForOrganization(const Model::DescribeAffectedAccountsForOrganizationRequest& request) const; /** * A Callable wrapper for DescribeAffectedAccountsForOrganization that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAffectedAccountsForOrganizationOutcomeCallable DescribeAffectedAccountsForOrganizationCallable(const DescribeAffectedAccountsForOrganizationRequestT& request) const { return SubmitCallable(&HealthClient::DescribeAffectedAccountsForOrganization, request); } /** * An Async wrapper for DescribeAffectedAccountsForOrganization that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAffectedAccountsForOrganizationAsync(const DescribeAffectedAccountsForOrganizationRequestT& request, const DescribeAffectedAccountsForOrganizationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeAffectedAccountsForOrganization, request, handler, context); } /** *

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 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.

*

See Also:

AWS * API Reference

*/ virtual Model::DescribeAffectedEntitiesOutcome DescribeAffectedEntities(const Model::DescribeAffectedEntitiesRequest& request) const; /** * A Callable wrapper for DescribeAffectedEntities that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAffectedEntitiesOutcomeCallable DescribeAffectedEntitiesCallable(const DescribeAffectedEntitiesRequestT& request) const { return SubmitCallable(&HealthClient::DescribeAffectedEntities, request); } /** * An Async wrapper for DescribeAffectedEntities that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAffectedEntitiesAsync(const DescribeAffectedEntitiesRequestT& request, const DescribeAffectedEntitiesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeAffectedEntities, request, handler, context); } /** *

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 * 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.

*

See Also:

AWS * API Reference

*/ virtual Model::DescribeAffectedEntitiesForOrganizationOutcome DescribeAffectedEntitiesForOrganization(const Model::DescribeAffectedEntitiesForOrganizationRequest& request) const; /** * A Callable wrapper for DescribeAffectedEntitiesForOrganization that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeAffectedEntitiesForOrganizationOutcomeCallable DescribeAffectedEntitiesForOrganizationCallable(const DescribeAffectedEntitiesForOrganizationRequestT& request) const { return SubmitCallable(&HealthClient::DescribeAffectedEntitiesForOrganization, request); } /** * An Async wrapper for DescribeAffectedEntitiesForOrganization that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeAffectedEntitiesForOrganizationAsync(const DescribeAffectedEntitiesForOrganizationRequestT& request, const DescribeAffectedEntitiesForOrganizationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeAffectedEntitiesForOrganization, request, handler, context); } /** *

Returns the number of entities that are affected by each of the specified * events.

See Also:

AWS * API Reference

*/ virtual Model::DescribeEntityAggregatesOutcome DescribeEntityAggregates(const Model::DescribeEntityAggregatesRequest& request) const; /** * A Callable wrapper for DescribeEntityAggregates that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeEntityAggregatesOutcomeCallable DescribeEntityAggregatesCallable(const DescribeEntityAggregatesRequestT& request) const { return SubmitCallable(&HealthClient::DescribeEntityAggregates, request); } /** * An Async wrapper for DescribeEntityAggregates that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeEntityAggregatesAsync(const DescribeEntityAggregatesRequestT& request, const DescribeEntityAggregatesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeEntityAggregates, request, handler, context); } /** *

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.

See Also:

AWS * API Reference

*/ virtual Model::DescribeEventAggregatesOutcome DescribeEventAggregates(const Model::DescribeEventAggregatesRequest& request) const; /** * A Callable wrapper for DescribeEventAggregates that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeEventAggregatesOutcomeCallable DescribeEventAggregatesCallable(const DescribeEventAggregatesRequestT& request) const { return SubmitCallable(&HealthClient::DescribeEventAggregates, request); } /** * An Async wrapper for DescribeEventAggregates that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeEventAggregatesAsync(const DescribeEventAggregatesRequestT& request, const DescribeEventAggregatesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeEventAggregates, request, handler, context); } /** *

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.

*

See Also:

AWS * API Reference

*/ virtual Model::DescribeEventDetailsOutcome DescribeEventDetails(const Model::DescribeEventDetailsRequest& request) const; /** * A Callable wrapper for DescribeEventDetails that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeEventDetailsOutcomeCallable DescribeEventDetailsCallable(const DescribeEventDetailsRequestT& request) const { return SubmitCallable(&HealthClient::DescribeEventDetails, request); } /** * An Async wrapper for DescribeEventDetails that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeEventDetailsAsync(const DescribeEventDetailsRequestT& request, const DescribeEventDetailsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeEventDetails, request, handler, context); } /** *

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:

  • To * return event details for a public event, you must specify a null value for the * awsAccountId parameter. If you specify an account ID for a public * event, Health returns an error message because public events aren't specific to * an account.

  • To return event details for an event that is * specific to an account in your organization, you must specify the * awsAccountId parameter in the request. If you don't specify an * account ID, Health returns an error message because the event is specific to an * account in your organization.

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.

*

See Also:

AWS * API Reference

*/ virtual Model::DescribeEventDetailsForOrganizationOutcome DescribeEventDetailsForOrganization(const Model::DescribeEventDetailsForOrganizationRequest& request) const; /** * A Callable wrapper for DescribeEventDetailsForOrganization that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeEventDetailsForOrganizationOutcomeCallable DescribeEventDetailsForOrganizationCallable(const DescribeEventDetailsForOrganizationRequestT& request) const { return SubmitCallable(&HealthClient::DescribeEventDetailsForOrganization, request); } /** * An Async wrapper for DescribeEventDetailsForOrganization that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeEventDetailsForOrganizationAsync(const DescribeEventDetailsForOrganizationRequestT& request, const DescribeEventDetailsForOrganizationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeEventDetailsForOrganization, request, handler, context); } /** *

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 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.

See Also:

AWS * API Reference

*/ virtual Model::DescribeEventTypesOutcome DescribeEventTypes(const Model::DescribeEventTypesRequest& request) const; /** * A Callable wrapper for DescribeEventTypes that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeEventTypesOutcomeCallable DescribeEventTypesCallable(const DescribeEventTypesRequestT& request) const { return SubmitCallable(&HealthClient::DescribeEventTypes, request); } /** * An Async wrapper for DescribeEventTypes that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeEventTypesAsync(const DescribeEventTypesRequestT& request, const DescribeEventTypesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeEventTypes, request, handler, context); } /** *

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.

    *

See Also:

AWS * API Reference

*/ virtual Model::DescribeEventsOutcome DescribeEvents(const Model::DescribeEventsRequest& request) const; /** * A Callable wrapper for DescribeEvents that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeEventsOutcomeCallable DescribeEventsCallable(const DescribeEventsRequestT& request) const { return SubmitCallable(&HealthClient::DescribeEvents, request); } /** * An Async wrapper for DescribeEvents that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeEventsAsync(const DescribeEventsRequestT& request, const DescribeEventsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeEvents, request, handler, context); } /** *

Returns information about events across your organization in Organizations. * You can use thefilters 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.

See Also:

AWS * API Reference

*/ virtual Model::DescribeEventsForOrganizationOutcome DescribeEventsForOrganization(const Model::DescribeEventsForOrganizationRequest& request) const; /** * A Callable wrapper for DescribeEventsForOrganization that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeEventsForOrganizationOutcomeCallable DescribeEventsForOrganizationCallable(const DescribeEventsForOrganizationRequestT& request) const { return SubmitCallable(&HealthClient::DescribeEventsForOrganization, request); } /** * An Async wrapper for DescribeEventsForOrganization that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeEventsForOrganizationAsync(const DescribeEventsForOrganizationRequestT& request, const DescribeEventsForOrganizationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeEventsForOrganization, request, handler, context); } /** *

This operation provides status information on enabling or disabling Health to * work with your organization. To call this operation, you must use the * organization's management account.

See Also:

AWS * API Reference

*/ virtual Model::DescribeHealthServiceStatusForOrganizationOutcome DescribeHealthServiceStatusForOrganization() const; /** * A Callable wrapper for DescribeHealthServiceStatusForOrganization that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeHealthServiceStatusForOrganizationOutcomeCallable DescribeHealthServiceStatusForOrganizationCallable() const { return SubmitCallable(&HealthClient::DescribeHealthServiceStatusForOrganization); } /** * An Async wrapper for DescribeHealthServiceStatusForOrganization that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeHealthServiceStatusForOrganizationAsync(const DescribeHealthServiceStatusForOrganizationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DescribeHealthServiceStatusForOrganization, handler, context); } /** *

Disables Health from working with Organizations. To call this operation, you * must sign in to 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.

*

See Also:

AWS * API Reference

*/ virtual Model::DisableHealthServiceAccessForOrganizationOutcome DisableHealthServiceAccessForOrganization() const; /** * A Callable wrapper for DisableHealthServiceAccessForOrganization that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DisableHealthServiceAccessForOrganizationOutcomeCallable DisableHealthServiceAccessForOrganizationCallable() const { return SubmitCallable(&HealthClient::DisableHealthServiceAccessForOrganization); } /** * An Async wrapper for DisableHealthServiceAccessForOrganization that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DisableHealthServiceAccessForOrganizationAsync(const DisableHealthServiceAccessForOrganizationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::DisableHealthServiceAccessForOrganization, handler, context); } /** *

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.

See Also:

AWS * API Reference

*/ virtual Model::EnableHealthServiceAccessForOrganizationOutcome EnableHealthServiceAccessForOrganization() const; /** * A Callable wrapper for EnableHealthServiceAccessForOrganization that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::EnableHealthServiceAccessForOrganizationOutcomeCallable EnableHealthServiceAccessForOrganizationCallable() const { return SubmitCallable(&HealthClient::EnableHealthServiceAccessForOrganization); } /** * An Async wrapper for EnableHealthServiceAccessForOrganization that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void EnableHealthServiceAccessForOrganizationAsync(const EnableHealthServiceAccessForOrganizationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&HealthClient::EnableHealthServiceAccessForOrganization, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const HealthClientConfiguration& clientConfiguration); HealthClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace Health } // namespace Aws